CH573/CH571 實現用戶bootloader和用戶app


本文目的

  • 本文將記錄如何在沁恆的risc-v平的藍牙芯片上實現用戶bootloader引導用戶app的方式
  • 用戶app包括一般的工程,和藍牙工程
  • 本bootloader跟wch芯片內置的bootloader不同,並不燒錄到芯片自帶的bootloader區域.
  • 在本例程的基礎上經過簡單的修改,既可以實現各種方式的DFU功能,諸如串口/BLE/USB方式等,只要實現傳輸,校驗,跳轉即可

適用芯片

  • CH573/CH571

實現過程

存儲配置

flash地址 備注
user_bootloader 0x0 - 0x3FFF
user_app 0x4000 -

跳轉處理

中斷向量表處理

CH571/CH573 wch 給的例程,中斷向量都是在RAM里面的,一般情況下不用處理中斷向量表的問題.

跳轉方法:

wch 的rsic-v 提供了兩種特權模式:

  • 機器模式
  • 用戶模式

沁恆的例程提供的代碼默認都是跑在用戶模式下,而這種模式下,直接是不能跳轉成功的

方法1. 修改啟動文件,使代碼運行在機器模式下,然后再跳轉

沁恆的例程的.s文件中,有下面兩行

    li t0, 0x88
    csrs mstatus, t0

修改成

    li t0, 0x1888
    csrs mstatus, t0
方法2.在中斷服務程序里面跳轉(本例程使用的方法)

燒錄

使用hex合並工具把hex合並后然后用WCH 的isp工具進行燒錄即可

注意事項

  • wchisptool 對於hex文件處理方式:不連續的hex 填充0x00,而不是0xff,如果涉及到不連續的固件在自己實現的bootloader里進行校驗,可能需要燒錄時候用戶自己進行hex轉成bin文件燒錄.

工程源碼

https://gitee.com/iot-fan/iot-fan_at_cnblogs/tree/master/CH571_CH573/AN/CH573_CH571_user_bootloader_and_app/

擴展資料

實現自定義的BLE OTA

根據blog:CH573/CH571/CH57x 應用與協議棧分離方式實現,在本bootloader中啟動藍牙協議棧,實現藍牙傳輸,即可實現藍牙的DFU.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM