In normal operation the neuron chip firmware prevents and the application from writing to the system image in memory. However an individual device may have its system image modified by direct memory write commands.
Only NodeUtil 3.23 can do this as it automatically sends an EEPROM unlock command to enable writing to non-volatile memory. However Nodeutil does not update the system image checksum whereas when writing to the Network Image or Application Image areas prompts the user to update the respective checksums. So how do I use Nodetuil to change some bytes in the system image.
The system image checksum is a cumulative number so you need write data that maintains the checksum. Unfortunately NodeUtil can’t do writes but one byte at a time so there is still the potential for the checksum to fail or more exactly will fail. This means that if you modify one byte, the checksum will fail because you need to balance the values out. The way round this If you are modifying location 3001 (reboot options), then modify 3002 as well (which is unused but will have something in it) such that the checksum remains the same.
For example, if 3001 and 3002 are 04, 00 and you want to change the 04 to 05, then the 00 needs to become FF (so that they still add up to 04 since it is an additive checksum). If you want to do this atomically in NodeUtil, then use the Q command. Q is a general command such that you can construct any message with a valid message code. So here is the command line sequence for doing the above.
q
q
n
6e
003001028005FF
Where the last two bytes of the last line are the 2 bytes to write at 3001, 3002.
Comments