Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BHI260 Upload Firmware to Flash - Not Booting from Flash

    BHI260 Upload Firmware to Flash - Not Booting from Flash

    New Poster


    We are using a custom board with BHI260. HOST_BOOT pin is connected to GND on the board. The 4mB flash is connected to QSPI pins of the sensor. I am using micropython and esp32 for I2C communication. I am trying to upload firmware to flash by using commands which are stated in the API and the datasheet. The firmware which I am uploading is Bosch_SHUTTLE_BHI260-flash.fw.

    I followed every step in BHY2-Sensor-API. I imitated the whole operation of bhy2_upload_firmware_to_flash_partly method on my setup. Status code returns STATUS_FLASH_WRITE_COMPLETE, but BHY2_REG_BOOT_STATUS doesn't return BST_HOST_FW_VERIFY_DONE bit as 1 at the end of the upload.

    Basically, I am sending every packet as following. Every packet has the same structure and the sector address field is being updated before sending the package.

    [i2c_address][register_address][command(2bytes)][length of payload(2 bytes)][flash address (4 bytes)][firmware part]
    First packet = [0x28][0x00] [0x05,0x00][0xCC, 0x00][0x84, 0x1F, 0x00, 0x00][200 bytes part of the firmware]

    When I use the upload to ram function command, boot status returns 0x31. It includes BST_HOST_FW_VERIFY_DONE.

    I attached logicdata to this post.

    Can you help me to solve this problem? How can I achieve the upload firmware to flash and boot from flash operations succesfully?

    Moreover, after upload, I am sending BHY2_CMD_BOOT_FLASH, BHY2_REG_CHAN_STATUS, and the status code field points to the error which is [Sensor error] Host Download Channel Empty. Can you tell me what it is supposed to mean?

    Best regards,


    2 REPLIES 2

    Community Moderator
    Community Moderator

    Hello meric,

    Could you provide your schematic, then we review HW schematic first?

    I assume that you already reviewed the logicdata that I uploaded.

    Meanwhile, I solved the problem. After sending boot command, I am sending two additional bytes right now. It is solved in this way. The i2c data is as follows.