• I've compiled a custom, striped down, Espruino binary ~245 KByte. It fails to boot with all lights lit up.
    If I blow up the binary by adding 10 KByte to ~255 with unused .rodata my binary boots as expected. This however defeats the purpose of my build.

    Could someone point me to the flash layout used/expected by Puck.JS?

  • How are you flashing to the Puck? I guess it might change what you need to do.

    It's possible that you've just got saved code and/or bonding info which you're not overwriting and which is confusing it. My guess is bonding info as Nordic's handling of bonding info seems totally intolerant to corrupt data.

    The flash layout is below anyway:

    • 0x00000 -> 0x1f000 = Softdevice + entrypoint
    • 0x1f000 -> 0x73000 = Espruino
    • 0x73000 -> 0x76000 = Saved Code
    • 0x76000 -> 0x78000 = nRF Bonding Information
    • 0x78000 -> 0x80000 = Bootloader
  • Thank your for your timely reply.

    How are you flashing to the Puck?

    Using the NRF Toolbox.
    I'll try to erase 0x1f000-0x78000 by flashing an empty image

    • 0x1f000 -> 0x73000 = Espruino
    • 0x73000 -> 0x76000 = Saved Code

    Isn't the Espruino section followed by free space for arbitrary usage?
    Could moving the Espruino-free space boundary add issues?

  • It works now!

    Erasing everything except Softdevice and Bootloader helped.
    Thanks a lot.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

Custom binary > Boot fails (Puck.js flash layout)

Posted by Avatar for AntiCat @AntiCat