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