Hi, I want to port my own AI model on BHI260AP, so my first step is to build the BHI260AP SDK follow the steps from the user guide.
BHI260AB-BHA260AB SDK Quick Start Guide
Platform: Windows 10
HW: Nicla Sense ME
SDK: BHI260AP_SDK 1.1.8.0 (from Bosch Sensortec official site)
Toolchain: GNU Toolchain for ARC Processors 2019.09 (from github provided by Synopsys)
And below is the final part of the log after build in ARC GNU IDE 2019.09 Eclipse:
Spoiler
[158/220] Linking C static library drivers\VirtWakeupPressure\libVirtWakeupPressure.a
[159/220] Linking C static library drivers\VirtWakeupTemperature\libVirtWakeupTemperature.a
[160/220] Linking C static library drivers\VirtWakeupGas\libVirtWakeupGas.a
[161/220] Building C object drivers/VirtLight/CMakeFiles/VirtLight.dir/VirtLight.c.obj
[162/220] Linking C static library drivers\VirtWakeupExLed\libVirtWakeupExLed.a
[163/220] Linking C static library drivers\VirtExLed\libVirtExLed.a
[164/220] Building C object drivers/VirtProximity/CMakeFiles/VirtProximity.dir/VirtProximity.c.obj
[165/220] Linking C static library drivers\VirtLight\libVirtLight.a
[166/220] Generating kernel-flash.fws
[167/220] Building C object drivers/VirtWakeupLight/CMakeFiles/VirtWakeupLight.dir/VirtWakeupLight.c.obj
[168/220] Building C object drivers/VirtWakeupProximity/CMakeFiles/VirtWakeupProximity.dir/VirtWakeupProximity.c.obj
[169/220] Linking C static library drivers\VirtProximity\libVirtProximity.a
[170/220] Building C object drivers/AccelInject/CMakeFiles/AccelInject.dir/AccelInject.c.obj
[171/220] Linking C static library drivers\VirtWakeupLight\libVirtWakeupLight.a
[172/220] Generating hooks.c
-- generating hooks.c from C:/Users/forev/Documents/BHI260AP_SDK_1.1.8.0/user/../kernel/hooks.txt
[173/220] Generating kernel.fws
[174/220] Linking C static library drivers\VirtWakeupProximity\libVirtWakeupProximity.a
[175/220] Linking C static library drivers\AccelInject\libAccelInject.a
[176/220] Building C object user/CMakeFiles/user.dir/stack_check.c.obj
[177/220] Building C object user/RamPatches/CMakeFiles/user-ram-patches.dir/hostboot_pin_pullup_check.c.obj
[178/220] Building C object user/RamPatches/CMakeFiles/user-ram-patches.dir/getBuildTime.c.obj
[179/220] Building C object user/CMakeFiles/user-ram-fb5ff5c38b2ac67549634b88dffcc9b6.dir/config_strings_Bosch_APP30_WRD_BHI260_turbo.c.obj
[180/220] Building C object user/CMakeFiles/user.dir/main.c.obj
[181/220] Building C object user/CMakeFiles/user.dir/hooks.c.obj
[182/220] Building C object user/CMakeFiles/user-flash-fb5ff5c38b2ac67549634b88dffcc9b6.dir/config_strings_Bosch_APP30_WRD_BHI260_turbo.c.obj
[183/220] Building C object user/CMakeFiles/user-ram-ee517083954c97c329e0b0f39a4e2777.dir/config_strings_Bosch_APP30_WRD_BHI260_BMP390.c.obj
[184/220] Building C object user/CMakeFiles/user-ram-7d0cb141a1010d32c4dffe66220a69c3.dir/config_strings_Bosch_APP30_WRD_BHI260_BME68x.c.obj
[185/220] Building C object user/CMakeFiles/user-flash-7d0cb141a1010d32c4dffe66220a69c3.dir/config_strings_Bosch_APP30_WRD_BHI260_BME68x.c.obj
[186/220] Building C object user/CMakeFiles/user-flash-ee517083954c97c329e0b0f39a4e2777.dir/config_strings_Bosch_APP30_WRD_BHI260_BMP390.c.obj
[187/220] Building C object user/CMakeFiles/user-flash-418c4b99eb6f671a9001c6c1d2106937.dir/config_strings_Bosch_APP30_WRD_BHI260_aux_BMM150.c.obj
[188/220] Building C object user/CMakeFiles/user-ram-418c4b99eb6f671a9001c6c1d2106937.dir/config_strings_Bosch_APP30_WRD_BHI260_aux_BMM150.c.obj
[189/220] Building C object user/RamPatches/CMakeFiles/user-ram-patches-flash.dir/getBuildTime.c.obj
[190/220] Linking C static library user\RamPatches\libRamPatches.a
[191/220] Building C object user/RamPatches/CMakeFiles/user-ram-patches-flash.dir/hostboot_pin_pullup_check.c.obj
[192/220] Linking C static library user\RamPatches\libRamPatches-flash.a
[193/220] Linking C executable user\user-ram-fb5ff5c38b2ac67549634b88dffcc9b6
[194/220] Linking C executable user\user-flash-fb5ff5c38b2ac67549634b88dffcc9b6
[195/220] Linking C executable user\user-flash-ee517083954c97c329e0b0f39a4e2777
[196/220] Linking C executable user\user-ram-ee517083954c97c329e0b0f39a4e2777
[197/220] Generating Bosch_APP30_SHUTTLE_BHI260-flash.elf
FAILED: user/Bosch_APP30_SHUTTLE_BHI260-flash.elf
cmd.exe /C "cd /D C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\build\user && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\cmake\bin\cmake.exe -E copy user-flash-fb5ff5c38b2ac67549634b88dffcc9b6 Bosch_APP30_SHUTTLE_BHI260-flash.elf && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\bin\stuffelf -q Bosch_APP30_SHUTTLE_BHI260-flash.elf -fC:/Users/forev/Documents/BHI260AP_SDK_1.1.8.0/boards/Bosch_APP30_SHUTTLE_BHI260.cfg && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\bin\elf2bin Bosch_APP30_SHUTTLE_BHI260-flash.elf Bosch_APP30_SHUTTLE_BHI260-flash.fw.raw && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\bin\cat Bosch_APP30_SHUTTLE_BHI260-flash.fw.tmp C:/Users/forev/Documents/BHI260AP_SDK_1.1.8.0/build/user/../kernel/kernel-flash.fws Bosch_APP30_SHUTTLE_BHI260-flash.fw.raw && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\bin\isign -s -k C:/Users/forev/Documents/BHI260AP_SDK_1.1.8.0/utils/isign/user_ram_default_key.pri --keyloc 3 --keyid 0 --exec --imgIdx 1 -f Bosch_APP30_SHUTTLE_BHI260-flash.fw.tmp -o Bosch_APP30_SHUTTLE_BHI260-flash.fw && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\cmake\bin\cmake.exe -E remove Bosch_APP30_SHUTTLE_BHI260-flash.fw.raw Bosch_APP30_SHUTTLE_BHI260-flash.fw.tmp"
Free code ram for FIFO: 0x00124df8 to 0x00128000 (12808 bytes)
Free data ram for FIFO: 0x00a16560 to 0x00a18000 (6816 bytes)
Optional RAM bank usage: Code banks=0, Data banks=2
Free ram for FIFO: 14772
Estimated Wake FIFO: 7168
Estimated Non-Wake FIFO: 7168
Error signing firmware Bosch_APP30_SHUTTLE_BHI260-flash.fw.tmp: error=18: Invalid signature
[198/220] Generating Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.elf
FAILED: user/Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.elf
cmd.exe /C "cd /D C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\build\user && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\cmake\bin\cmake.exe -E copy user-flash-ee517083954c97c329e0b0f39a4e2777 Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.elf && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\bin\stuffelf -q Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.elf -fC:/Users/forev/Documents/BHI260AP_SDK_1.1.8.0/boards/Bosch_APP30_SHUTTLE_BHI260_BMP390.cfg && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\bin\elf2bin Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.elf Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.fw.raw && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\bin\cat Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.fw.tmp C:/Users/forev/Documents/BHI260AP_SDK_1.1.8.0/build/user/../kernel/kernel-flash.fws Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.fw.raw && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\bin\isign -s -k C:/Users/forev/Documents/BHI260AP_SDK_1.1.8.0/utils/isign/user_ram_default_key.pri --keyloc 3 --keyid 0 --exec --imgIdx 1 -f Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.fw.tmp -o Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.fw && C:\Users\forev\Documents\BHI260AP_SDK_1.1.8.0\win64\cmake\bin\cmake.exe -E remove Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.fw.raw Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.fw.tmp"
Free code ram for FIFO: 0x00124df8 to 0x00128000 (12808 bytes)
Free data ram for FIFO: 0x00a16780 to 0x00a18000 (6272 bytes)
Optional RAM bank usage: Code banks=0, Data banks=2
Free ram for FIFO: 14228
Estimated Wake FIFO: 7168
Estimated Non-Wake FIFO: 6656
Error signing firmware Bosch_APP30_SHUTTLE_BHI260_BMP390-flash.fw.tmp: error=18: Invalid signature
[199/220] Linking C executable user\user-ram-418c4b99eb6f671a9001c6c1d2106937
[200/220] Linking C executable user\user-ram-7d0cb141a1010d32c4dffe66220a69c3
[201/220] Linking C executable user\user-flash-418c4b99eb6f671a9001c6c1d2106937
[202/220] Linking C executable user\user-flash-7d0cb141a1010d32c4dffe66220a69c3
ninja: build stopped: subcommand failed.
Error running cmake build
"build.bat USE_GCC" terminated with exit code 1. Build might be incomplete.
15:06:59 Build Finished. 0 errors, 0 warnings. (took 40s.69ms)
So, here are my questions:
Q1: What does "error=18: Invalid signature" mean? How can I fix it?
Q2: Is it possible to port a simple DNN model with hardware acceleration on BHI260AP? As far as I know, BHI260AP is based on ARC EM4 processor. Does it support hardware acceleration? BHI260AP provides "self-learning AI feature", does it have anything to do with it?
I posted a similar post on Sunday, but I can't find it on the forum. I apologize if my post repeats.
Thanks so much for your help!