...
Code Block | ||||
---|---|---|---|---|
| ||||
void factory_bootloader() { uint8_t cmd; uint8_t param[MAX_PARAM_SZ] = {0}; gs_dev_state = gsf_dev_state; if (gs_dev_state == STATE_FACTORY) { flash_write(&gsf_dev_state, STATE_SEALED); while (true) { bool rc = read_cmd(&cmd, param); if (rc == OK) { if (cmd == CMD_RESET) { sys_reset(); } else { rc = process_factory_cmd(cmd, param); } } print error(rc); } } NS_entry(); } |
Note that even if TZ is not supported by the MCU, the factor_bootloader() function can still be included, as it the state upon reset would not be STATE_FACTORY and the execution will immediately jump to NS_entry() and run the application. See NS_entry() definition below.
The NS_entry() is the non-secure entry function. Customer may optionally to implement customer bootloader() in NS_entry() or before the application code is called:
...