Errata
Applies to BL702, BL704 and BL706
For some reason, BOOTROM_RUN_IMAGE (0x1A) command in BootROM, doesn’t work properly, and because of it,
eflash_loader have issues with initializing USB (so sometimes in Windows, the UART driver freeze, so it can’t communicate with eflash_loader).
(NOTE: This is observation, other issues are not known yet)
To workaround this, there are three registers set, via BOOTROM_WRITE_MEM (0x50) command in BootROM:
0x4000F100 => 0x4E424845(This setsRSV0toHBN_STATUS_ENTER_FLAGin Deep Sleep Control (Hibernate) core, in SDK it is used as setSTATUSflag. (gamiee: My guess is that BootROM read this after CPU reset?))0x4000F104 => 0x22010000(This setsRSV1register in Hibernate core, in SDK it is used as WakeUp Address, and exactly we write the launch address, where eflash_loader should be) (gamiee: those reserved registers in HBN does nothing at all, just those values are preserved between CPU Resets)0x40000018 => 0x00000002(This setsswrst_cfg2register in Global Control Register, enabling registerreg_ctrl_cpu_reset)
You can find this workaround in bflb_mcu_tool in file bflb_mcu_tool/libs/bl702/chiptype_patch.py.