The NXP QN9090 / QN9030 are ultra-low power, Cortex-M4 based wireless microcontrollers supporting Bluetooth Low Energy 5.0.
The internal flash is divided into 3 different regions:
- Reserved by flash controller (0x9F000 - 0x9FFFF)
- Reserved by boot code (0x9DE00 - 0x9EFFF)
- Application space (0x00000 - 0x9DDFF for JN5189; 0x00000 - 0x50000 for JN5188)
For now, the J-Link supports the application space, only.
Vector Table Remap
The first 512 bytes of the device (0x0000 - 0x01FF) can be mapped to flash, ROM or RAM. When using the J-Link flashloader, this region is mapped to flash. This is done on purpose as the device does not provide a mirror address for the first 512 bytes of flash thus without remapping, the J-Link could not program the first 512 bytes.
The flash seems to be ECC protected. Read fails for sectors with invalid ECC (e.g. erased sectors). In order to prevent errors when reading empty sectors, the DLL do neither perform a blank check nor a compare of the flash content before programming.
The device has a ROM code which needs to be run after reset. The J-Link halts the MCU after executing the ROM code but before starting the application.
- NXP JN5189-DK006 evaluation board: https://wiki.segger.com/NXP_JN5189-DK006
- NXP JN5189-DK006 evaluation board: https://wiki.segger.com/NXP_JN5189-DK006#Example_Project