- Silicon Labs Community
- Welcome and Announcements
- Silicon Labs Knowledge Base
- 8-bit MCU
- 32-bit MCU
- Bluetooth / Wi-Fi
- Other Products Category
- Optical/RH/Temp Sensor
- Other Products
- Hardware and Software Tools
- Simplicity Studio and Software
- General Discussions and Suggestions
- Chinese Forum
- Software Libraries
- Development Kits
- Reference Designs
- Third Party Tools
- White Papers
- Official Blog of Silicon Labs
- Chinese Blog
03-20-2017 07:54 AM
I would like to use DFU over uart with external mcu to update the firmware of a BGM121.
First of all, I flashed the BGM121 with wstk_bgapi example.
I tried to use gecko_cmd_system_reset(1) (correct answer, version = 3)
then gecko_cmd_dfu_flash_set_address(0) (result answer = 0x0181, wrong state)
I think it's because the NCP is not enable so I tried to flash NCP - Empty target example with Simplicity but Bgapi commands don't seem to work.
Can you help me please
Solved! Go to Solution.
03-20-2017 08:26 AM
Have you already read through the UART DFU appnote?
When testing with wstk_bgapi example, did you change the bootloader type to "uart" ? See Chapter 2 of the appnote linked above.
03-20-2017 10:32 AM
OK, seems you are using SDK v2.1.1.
The wstk_bgapi example in that SDK supports UART DFU, there is no need to change anything. Have you tried running the UART DFU host example that is located in:
In your original question you wrote:
>>I think it's because the NCP is not enable so I tried to flash NCP - Empty target example
>> with Simplicity but Bgapi commands don't seem to work.
If NCP is not enabled then you are not able to use ANY BGAPI commands. If you are able to reboot the module with command system_reset(1) then NCP must be enabled.
The "NCP empty" example uses OTA bootloader by default. This is all described in the application note that I mentioned earlier.
Easiest way to get started is to use the wstk_bgapi example and the UART DFU host example that is found in the SDK.
03-20-2017 11:18 AM
Thank for your help.
I don't know what I'm supposed to do with uart_dfu example.
For the moment, I have got an external mcu (frdm-k66f) which is powering a BGM121.
I am able to send bgapi commands with this mcu and the BGM is flashed with wstk_bgapi example.
The bgm is not supposed to answer correctly to cmd_dfu_flash_set_address(0) ?
I noticed something else:
After sending the cmd_dfu_reset(1), some events are generated: 5 evt_endpoint_status and 1 evt_system_boot like if the BGM reboot in normal mode ...
Thank you again !