• 上位机图像处理和嵌入式模块部署(树莓派4b与mcu固件升级)


    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

            在一个系统当中,可能不止需要树莓派4b一个设备,有的时候还需要搭载一个mcu,做一些运动控制的事情。比如说,图像处理的结果传给mcu,mcu拿到这个结果之后做一些机械控制的事情。这里面最简单的,就是控制一个电机将残次品推到残次品框里面。

            既然涉及到mcu,那么mcu的版本升级肯定是少不了的。一般的mcu升级,都是通过jtag或者swd烧入的。但是后期维护的时候,总不能让fae或者客户自己用jtag烧入吧,一方面不是很方便,另外一方面很容易烧错。今天,我们就来了解下,怎么用树莓派4b给mcu固件做升级。

    1、mcu启动的原理

            一个mcu想要启动起来,除了电源之外,就是复位、晶振、输入和输出。所以控制好了复位按钮,就可以实现mcu的重启。另外mcu如果需要升级固件,那么就要把原来的固件一分为二,一个是bootloader的部分,一个是应用的部分。我们升级的就是应用的部分。

    2、bootloader由哪些部分构成

            一般bootloader有这么几个部分,首先是上电检测按键是否需要升级;接着就是中断向量表的设置;紧接着就是串口或者usb的读写;然后是flash的烧写;最后是应用程序的跳转。如果bootloader做的比较好一点,还可以增加一个应用固件的crc校验动作,这主要也是为了防止应用固件在运行的过程中被无意改写。

    3、应用固件由哪些部分构成

            应用固件和bootloader部分最大的不同,就是它的启动地址和中断向量地址部分都要被改写。这就意味着link file要重新写。首先肯定是两者的启动地址不一样,其次就是中断向量。假设bootloader的中断向量地址是0x0,那么应用固件的中断向量就是另外一个地址,这点需要注意下。最后的话,就是sram大小、flash大小不太一样。毕竟应用固件功能更多一点,所以编译出来的bin文件也更大一点。

            因此,在前期设计的时候,对于bootloader使用的ram、flash,以及应用固件使用的ram、flash就要做好区分,不然很容易overlap,容易出错。

    4、为什么是soc来做mcu固件升级

            mcu如果要自己做固件升级,那么它就要支持网络连接。但是部分mcu没有这个功能。所以很多时候,都是soc先把固件下载到本地,然后通过串口实现mcu的固件升级,这是比较常用的做法。另外,mcu的资源也是非常有限的,即使有网络通信,那么势必要引入对应的tcp/ip协议代码、下载代码,这部分都比串口要复杂一点,并且不是所有mcu都支持。

            而mcu的固件大小本身并不大,更新的频率并不是那么高,所以这种情况下用soc进行升级是比较合适的做法。一般升级好了之后,直接给mcu一个复位信号即可。

    1. void updateFirmware()
    2. {
    3. triggerMcuReboot();
    4. waitForOKFromMcu();
    5. while(1)
    6. {
    7. SendDataToMcu();
    8. WaitForAck();
    9. if(timeout)
    10. {
    11. return;
    12. }
    13. }
    14. SendFinishCmd();
    15. }

    5、其他要注意的事情

            其他需要注意的事项,就是如何选择升级的时机。刚才讨论的都是mcu启动的时候,实现固件升级,还有一种情况就是soc发起请求进行固件升级,这个时候要确保当前没有任务正在运行才可以。以汽车为例,总不能在开车的时候,升级发动机和变速箱的固件代码吧。

    6、其他升级的通信方式

            除了串口之外,还可以利用can、usb、网络实现固件升级,这取决于对应的mcu是否有相应的资源。用网络肯定是最快的,但复杂性会稍微高一点。usb也不错,特别是高速usb,下载速度也比较快。can的话,主要就是汽车用的比较多。

  • 相关阅读:
    Swift之深入解析子数组提取的性能优化
    JS学习笔记
    自动驾驶(apollo)
    Tomcat的安装与Maven依赖Servlet的使用
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校学生社团管理系统n4pcu
    让你效率飞起的右键工具——超级右键
    无人机影像的空间三维建模:Pix4Dmapper运动结构恢复法
    STM32控制数码管从0显示到99
    论文阅读——InstructGPT
    密码学-SHA-1算法
  • 原文地址:https://blog.csdn.net/feixiaoxing/article/details/138175653