This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Can not enter application after readback protect?

Hi ,

I wirte a python script to download FW to nRF52832 custom board, the FW is the merged file with softdevice(s132_nrf52_7.0.1_softdevice.hex), bootload, bootload settings, and application,  then setting readback protect. 

After setting readback protect, our board just advertising DfuTarg,it seems enter bootload, didn't enter application.

the python script is as follows,

api = LowLevel.API("NRF52")
sleep(1)
try:
api.open()
api.connect_to_emu_with_snr(jlink_serial, swd_speed)

# Program the parsed hex into the device's memory.
test_program = Hex.Hex(hex_file_path)
print("Writing %s to device..." % hex_file_path)

for segment in test_program:
api.write(segment.address, segment.data, True)

api.sys_reset()
api.go()
api.readback_protect(2) # or api.write_u32(0x10001208, 0x00,True)

api.pin_reset()
api.close()

If I comment out api.readback_protect(2),our board can enter application and works ok .
In addtion, I download the same FW with nRF connect Programmer, our board can enter application and works ok.
I download another FW, which is merge file with eddystone example,bootload,softdevice, and bootload settings,
it has the same problem,always enter the bootload, attached please find this FW.
1602.ed_sd_bl_set_app.hex
Please help analyze the reason, thank you very much.








Parents
  • Hi ,

    I use nrfjprog and nRFConnect programmer, it is no problem, the beacon can boot into application.

    But If I use custom flashing script and Segger JLink, Sometimes, it can boot into application, and sometimes it  cannot boot into application, still advertising DFUtag. 

    It looks there are something different between Nordic flashing tool and our flashing tool.

    I learned the buttonless DFU module uses an MCU register (NRF_POWER->GPREGRET) to decide whether to boot to bootloader or application.

    Does any GPREGRET-flag needs to be set?    How to modify the bootloader firmware ? Thank you very much.

    Best regards,

    Susan

  • Hi Susan,

    The GPREGRET is usally only written to by the CPU when doing buttonless DFU, so I don't think that's related to the problem here. But it's interesting that this occurs only intermidently when programed with your flash tool. Maybe the FW was loaded incorrectly in those cases. As a test, please try to generate the settings page with the --app-boot-validation set to NO_VALIDATION and see if you can replicate the problem then.  This will make the bootloader skip the integrity check of the application image on boot.

    Best regards,

    Vidar

Reply
  • Hi Susan,

    The GPREGRET is usally only written to by the CPU when doing buttonless DFU, so I don't think that's related to the problem here. But it's interesting that this occurs only intermidently when programed with your flash tool. Maybe the FW was loaded incorrectly in those cases. As a test, please try to generate the settings page with the --app-boot-validation set to NO_VALIDATION and see if you can replicate the problem then.  This will make the bootloader skip the integrity check of the application image on boot.

    Best regards,

    Vidar

Children
Related