2018-09-06 04:44 AM
Hi,
I'm currently working on a new design using the BlueNRG-132. The Bluetooth chip is wired to our main processor using UART, and I want to use the UART bootloader to flash the BlueNRG-132.
I implemented a basic tool to send and receive commands over the UART bootloader. It works fine for every command (bootloader activation, get version, read memory, erase memory, readout (un)protect,...) BUT I'm not able to use the write command properly.
I used the specs defined in AN4872, and I'm able to write successfully the first 256 bytes of the memory, but as soon as I want to write a higher address, the process fails when I send the next data payload (NACK received).
I tried with 256 bytes length payload, 128 bytes length, 64 bytes length,... and always get the same result: Everything works fine between 0x10040000 and 0x100400FF but I'm unable to write starting at address >= 0x10040100.
Example:
* Erase memory
* Write first 256 bytes:
-> Send command ; get ACK => OK
-> Send address (0x10040000) + checksum ; get ACK => OK
-> Send Length + Bytes + checksum ; get ACK => OK
* Write following 256 bytes:
-> Send command ; get ACK => OK
-> Send address (0x10040100) + checksum ; get ACK => OK
-> Send Length + Bytes + checksum ; get ACK => FAIL!!! NACK received instead !
I double checked the specifications and the checksum I send, everything looks fine on my side. Do you have any suggestion why it could fail ??
Is there something special to do ?
Thanks in advance for the support
2018-09-17 02:19 AM
Hi,
Is there someone that could help me ?
Thanks in advance.
2018-10-19 10:54 AM
Any relation to the Bootloader bug I found described here:
https://community.st.com/s/question/0D50X00009sTqRaSAK/checksum-bug-in-bluenrg2-bootloader