06-25-2020 05:42 PM - edited 06-25-2020 05:44 PM
I am interfacing with the BHI260AB shuttle board over I2C using a Cortex M0 as the host MCU (Adafruit Feather M0 board). I use the 'load_firmware.c' example code provided with the BHY2 Sensor API to upload firmware to the external flash chip on the shuttle board. The firmware file I included in my code is the 'Bosch_SHUTTLE_BHI260_BMM150-flash.fw.h' file supplied with the BHY2 Sensor API. After uploading the firmware and booting the BHI260AB from flash, the Error Value register reports a 0x12 error ("SHA hash mismatch") and the Boot Status register activates the 'Flash Verify Error' bit.
I have made the following modifications to the example code:
I have also created an alternative firmware file using the BHI260 SDK, using the default configuration that comes with the SDK. At 1 point this firmware was uploaded correctly and after booting from flash a valid kernel version was reported, but at the next attempt with the exact same code and firmware it reported the SHA hash mismatch again.
I am suspecting that some bytes are getting lost in data transfer to the flash chip, but I have no clue what could cause that. Any possible clues are appreciated!
For reference, these are my I2C read and write functions:
Solved! Go to Solution.
06-28-2020 02:21 PM
The problem has been solved. I obviously needed to use the level shifter board that came with the shuttle board, so I could simply power the level shifter board at 3V3. Somehow I assumed that the level shifter board was only needed to interface with the application board.
Uploading to the flash memory now works like a charm. Thanks again for your assistance, your replies have led me to the solution.