2

The ‘code’ doesn’t execute on the OS - the OS provides services to the ‘code’ and schedules its execution. The MMU along with virtual memory create a ‘sandbox’ for the application. If the application tries to access memory it hasn’t been allocated, then an exception occurs that the OS handles. The application can’t get to the outside world (i.e access gpio, ...


1

The easiest way would be to use a master/slave setup and have Peripherals using some sort of BUS (like I2C) and doing monitoring in a closed loop. You can then easily enable/disable the peripheral modules if outputs from them don't match expected results from what they were commanded to do, and you could even switch from one to the other to validate each ...


1

There is nothing really special about this programming in terms of examining inputs and generating outputs. They should all have the same programming for that. The place that this diverges from normal programming is that each "module" needs to back up the other modules, that is examine their calculated output against expected output. If the module ...


1

Note: This answer has been "converted" from the comments after OP @DFunke confirms that issue seems to be fixed by adding the required polling on RDY/nBUSY after issuing "Chip erase" command. You could also overwritten RSTDISBL or clock source fuses to end up the same. Are you sure you've followed a correct programming procedure as ...


Only top voted, non community-wiki answers of a minimum length are eligible