====== PIC32 ====== - the pic32 programming connector (labeled PIC32) matches the PICkit pinout exactly - readback protection is off :) firmware can be trivially extracted. ===== iMX to PIC comms ===== Watchdog initialization and feeding: {{ :kibble.sal |}} Stopping the watchdog (with NxExe watchdog 0): {{ :euthasol.sal |}} Stopping is as simple as echo -ne "\xBC\x01\0\x04\0\x04H@\x03\0\0" > /dev/ttymxc2 Communication uses the same IPP protocol as [[cVEND]]. ==== IPP message types ==== ^ msgType ^ dir ^ name ^ description ^ | 0x02 | -> | ValueRead | accepts a 2-byte key, returns a variable-length value | | 0x03 | <- | ValueReadReply | | | 0x04 | -> | ValueWrite | accepts a 2-byte key followed by a variable-length value, assigns value to key | | 0x05 | <- | ValueWriteReply | | | 0x0a | -> | | ''10000000000080'' reads external EEPROM, ''18000000000080'' reads internal EEPROM | | 0x0c | -> | | empty payload immediately powers the device off | | 0x0e | -> | | empty payload immediately powers the device off | | 0x12 | -> | SetLogLevel | ''0000'' enables some kind of logging behavior, ''8000'' disables it | -> - iMX to PIC\\ <- - PIC to iMX Types 0x80-0xff mirror 0x00-0x7f, but with CRC32 enabled. [[nx]] strings also suggest the existence of: * ValueAttribRead * ValueAttribWrite * DeviceRead (0x0a?) * DeviceWrite * DeviceIoCtl * AppRequest ==== Keys ==== ^ id ^ type ^ description ^ | 0000 | u8 | | | 0001 | u8 | | | 0002 | u8 | | | 0003 | u8 | | | 0004 | u8 | | | 000a | u8 | | | 0100 | u8 | internal power button (0/1) | | 03e8 | u8 | | | 03e9 | u8 | | | 03ea | u8 | | | 03f0 | u8 | | | 03f3 | u8 | | | 03fb | u8 | ignition state (0/1) | | 0428 | u8 | | | 0429 | u8 | | | 042a | u8 | | | 042b | u8 | | | 042c | u8 | | | 0433 | u8 | | | 0434 | u8 | | | 0436 | u8 | | | 0437 | u8 | | | 0438 | u8 | | | 07d0 | u8 | | | 07d1 | u8 | | | 07d2 | u8 | | | 07d3 | u8 | | | 07d4 | u8 | | | 07d5 | u8 | | | 07d6 | u8 | | | 07d7 | u8 | | | 07d8 | u8 | | | 07d9 | u8 | | | 07da | u8 | | | 07db | u8 | | | 07dc | u8 | | | 07dd | u8 | | | 07de | u8 | | | 07df | u8 | | | 07e0 | u8 | | | 07e1 | u8 | | | 07e2 | u8 | | | 07e3 | u8 | | | 07e4 | u8 | | | 07e5 | u8 | | | 07e6 | u8 | | | 07e7 | u8 | | | 07e8 | u8 | | | 07e9 | u8 | | | 07ea | u8 | | | 07eb | u8 | | | 07ec | u8 | | | 07ed | u8 | | | 07ee | u8 | | | 07ef | u8 | | | 07f0 | u8 | | | 07f1 | u8 | | | 07f2 | u8 | | | 07f3 | u8 | | | 07f4 | u8 | | | 07f5 | u8 | | | 07f6 | u8 | | | 4000 | u16 | | | 4001 | u16 | | | 4002 | u16 | watchdog residual (seconds) | | 4003 | u16 | watchdog timeout (seconds), 0 to disable | | 4004 | u16 | boot watchdog timeout (seconds) | | 4005 | u16 | | | 400a | u16 | | | 400b | u16 | | | 400c | u16 | | | 400d | u16 | | | 400e | u16 | | | 400f | u16 | | | 4010 | u16 | | | 4011 | u16 | | | 4030 | u16 | | | 4031 | u16 | | | 4032 | u16 | | | 4033 | u16 | | | 4034 | u16 | | | 4035 | u16 | | | 4036 | u16 | | | 403d | u16 | | | 403e | u16 | | | 403f | u16 | | | 5000 | u16 | | | 5001 | u16 | | | 5002 | u16 | | | 5008 | u16 | | | 500b | u16 | ambient light sensor | | 5013 | u16 | | | 5040 | u16 | input voltage (mV) | | 5041 | u16 | | | 5042 | u16 | | | 5043 | u16 | | | 5044 | u16 | | | 504b | u16 | | | 504c | u16 | | | 504e | u16 | | | 504f | u16 | | | 5050 | u16 | | | 5100 | u16 | | | 5101 | u16 | | | 5102 | u16 | | | 5108 | u16 | | | 510b | u16 | | | 5113 | u16 | | | 5140 | u16 | | | 5141 | u16 | | | 5142 | u16 | | | 5143 | u16 | | | 5144 | u16 | | | 514b | u16 | | | 514c | u16 | | | 514e | u16 | | | 514f | u16 | | | 5150 | u16 | | | 5200 | u16 | | | 5201 | u16 | | | 5202 | u16 | | | 5208 | u16 | | | 520b | u16 | | | 5213 | u16 | | | 5240 | u16 | | | 5241 | u16 | | | 5242 | u16 | | | 5243 | u16 | | | 5244 | u16 | | | 524b | u16 | | | 524c | u16 | | | 524e | u16 | | | 524f | u16 | | | 5250 | u16 | | | 6100 | u16 | | | 6101 | u16 | | | 6102 | u16 | | | 8012 | u32 | | | 8020 | u32 | | | 8030 | u32 | | | 8100 | u32 | PwrOnTime | | 8102 | u32 | PwrOnCnt | | 8103 | u32 | StartCnt | | 8104 | u32 | StartIgnCnt | | 8105 | u32 | | | 8106 | u32 | | | 8107 | u32 | StartButtonCnt | | 8108 | u32 | StartUsbCnt | | 8109 | u32 | UsbConnectCnt | | 810a | u32 | ShutdownCnt | | 8110 | u32 | WdCnt | | 8111 | u32 | WdCpuCnt | | 8112 | u32 | WdCardCnt | | 8114 | u32 | | | 8115 | u32 | WdButtonCnt | | 8116 | u32 | | | 8117 | u32 | | | 8118 | u32 | | | 8119 | u32 | | | c000 | string | pic32 version | | c001 | string | bootloader version | | c010 | string | | | c011 | string | | | c0c0 | string | timer statistics | | d000 | string | | | d001 | string | | | d002 | string | | | d008 | string | | | d00b | string | | | d013 | string | | | d040 | string | | | d041 | string | | | d042 | string | | | d043 | string | | | d044 | string | | | d04b | string | | | d04c | string | | | d04e | string | | | d04f | string | | | d050 | string | | | d100 | string | | | d101 | string | | | d102 | string | | | d108 | string | | | d10b | string | | | d113 | string | | | d140 | string | | | d141 | string | | | d142 | string | | | d143 | string | | | d144 | string | | | d14b | string | | | d14c | string | | | d14e | string | | | d14f | string | | | d150 | string | | | d200 | string | | | d201 | string | | | d202 | string | | | d208 | string | | | d20b | string | | | d213 | string | | | d240 | string | | | d241 | string | | | d242 | string | | | d243 | string | | | d244 | string | | | d24b | string | | | d24c | string | | | d24e | string | | | d24f | string | | | d250 | string | |