上位机图像处理和嵌入式模块部署(树莓派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一个复位信号即可。

void updateFirmware()
{
	triggerMcuReboot();
	waitForOKFromMcu();
	
	while(1)
	{
		SendDataToMcu();
		WaitForAck();
		
		if(timeout)
		{
			return;
		}
	}
	
	SendFinishCmd();
}

5、其他要注意的事情

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

6、其他升级的通信方式

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/574990.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SRAM控制原理与读写实例

本文对SRAM进行介绍,并对其内部的存储器矩阵、地址译码器、列I/O及I/O数据电路、控制电路、SRAM的读写流程进行简要介绍,并给出SRAM IS62LV256-45U读写实例。 文章目录 存储容量的计算SRAM控制原理SRAM信号线存储器矩阵地址译码器、列I/O及I/O数据电路控…

陆游只爱前妻唐婉,深情大渣男太虐了

陆游和唐婉的感情太好了,经常写诗逗乐。陆游科举考不上,沉迷儿女情长,被母亲拆散。 秦侩当政,就是害死岳飞的那个秦桧。陆游第二次考进士,被秦侩批复“喜论恢复”,没考上。陆游的母亲生气,找个…

计算机视觉——两视图几何求解投影矩阵

上文我提到了通过图像匹配得到基本矩阵,接下来我们要接着求解投影矩阵。 计算投影矩阵思路 假设两个投影矩阵为规范化相机,因此采用基本矩阵进行恢复。在规范化相机下, P [ I ∣ 0 ] P[I|0] P[I∣0], P ′ [ M ∣ m ] P[M|m] P′[M∣m]。…

【Webgl_glslThreejs】搬运分享shader_飘落心形

来源网站 https://www.shadertoy.com/view/4sccWr效果预览 代码演示 将shadertory上的代码转成了threejs可以直接用的代码,引入文件的material,并在创建mesh或已有物体上使用material即可,使用时请注意uv对齐。 import { DoubleSide, Shad…

视频中为什么需要这么多的颜色空间?

在视频处理中,经常会用到不同色彩空间:非线性RGB,线性 RGB,YUV,XYZ……为什么需要这么多的色彩空间呢? 1、视频采集时的线性RGB颜色空间 由数码相机中的 CMOS 传感器产生并写入原始文件(Raw Fil…

深度学习检测算法YOLOv5的实战应用

在当前的检测项目中,需要一个高效且准确的算法来处理大量的图像数据。经过一番研究和比较,初步选择了YOLOv5作为算法工具。YOLOv5是一个基于深度学习的检测算法,以其快速和准确而闻名。它不仅能够快速处理图像数据,还能提供较高的…

区块链技术与应用学习笔记(12-13节)——北大肖臻课程

目录 12.BTC-匿名性 一、什么是匿名? 1,有可能破坏比特币匿名性的两个方面 2,如何提高匿名性 一个比特币用户能采用什么样的方法尽量提高个人的匿名性? 分解: 1、网络层怎么提高匿名性? 2、应用层怎么提高匿名性? 零知…

揭露 FileSystem 引起的线上 JVM 内存溢出问题

作者:来自 vivo 互联网大数据团队-Ye Jidong 本文主要介绍了由FileSystem类引起的一次线上内存泄漏导致内存溢出的问题分析解决全过程。 内存泄漏定义(memory leak):一个不再被程序使用的对象或变量还在内存中占有存储空间&#x…

无人机生态环境监测、图像处理与 GIS 数据分析

原文链接:无人机生态环境监测、图像处理与 GIS 数据分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247602414&idx6&sn950b55bc2cc4812c838c66af2118d74e&chksmfa821109cdf5981f2af51bd27e459a1c46dd783cdceba5aa3693461260bbf7b0101ac8…

Vim学习笔记01~04

第01章: 遁入空门,模式当道 1.什么是vim Vim是一个高效的文本编辑工具,并且可以在编程开发过程中发挥越来越重要的作用。 事实上,有不少编程高手使用他们来进行代码的开发,并且对此赞不绝口。 2.本系列目的 但是让…

Java作业7-Java异常处理

异常处理这块有些不太理解,看看Bz网课-异常 编程1-计算器输入异常 题目 计算器输入异常 在实验三中实现的命令行计算器已有功能基础上,添加异常处理机制,当用户输入的操作数为非整数时,利用异常处理机制显示错误提示信息。如&a…

网易云热评加密函数逆向(Jsrpc)

今天给大家来个jsrpc实战教程,让大家继续加深对jsrpc的理解和认识。 1、因为网易云音乐热评的加密并不在cookie上,而是参数加密,所以这里就不需要进行hook住cookie了。 2、之前就知道网易云音乐热评的加密存在之地是在下图的位置,是那个函数window.asrsea(JSON.stringify(…

项目实战 | 责任链模式 (下)

案例二:工作流,费用报销审核流程 同事小贾最近刚出差回来,她迫不及待的就提交了费用报销的流程。根据金额不同,分为以下几种审核流程。报销金额低于1000元,三级部门管理者审批即可,1000到5000元除了三级部…

免费分享一套SpringBoot+Vue家政服务管理平台管理系统,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue家政服务管理平台管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue家政服务管理平台系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue家政服务管理平台系统 Ja…

coverage,一个有趣的 Python 库!

更多Python学习内容:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - coveragepy。 Github地址:https://github.com/nedbat/coveragepy 在软件开发中,测试是确保代码质量和稳定性的关键步骤之一。而代码覆盖率则是衡量…

2024新版计算机网络视频教程65集完整版(视频+配套资料)

今日学计算机网络,众生皆叹难理解。 却见老师神乎其技,网络通畅如云烟。 协议层次纷繁复杂,ARP、IP、TCP、UDP。 路由器交换机相连,数据包穿梭无限。 网络安全重于泰山,防火墙、加密都来添。 恶意攻击时刻存在&#xf…

深圳证券交易所Binary行情数据接口规范

对接深圳证券交易所Binary行情数据接口其实并不难,你需要具备以下知识。 1、需要了解Binary报文设计结构,消息头消息体消息尾。 消息体: 如果是纯map结构的比较简单,字段平铺开来即可。如{"id":"1","…

与AI对话:探索最佳国内可用的ChatGPT网站

与AI对话:探索最佳国内可用的ChatGPT网站 🌐 链接: GPTGod 点击可注册 🏷️ 标签: GPT-4 支持API 支持绘图 Claude 📝 简介:GPTGod 是一个功能全面的平台,提供GPT-4的强大功能&…

多线程(安全 同步 线程池)

线程安全问题 多线程给我们的程序带来了很大性能上的提升,但是也可能引发线程安全问题线程安全问题指的是当多个线程同时操作同一个共享资源的时候,可能会出现的操作结果不符预期问题 取钱的线程安全问题 线程安全问题出现的原因? 存在多线…

idea创建完项目如何隐藏不重要的文件

如果您不打算直接使用这些脚本,而是更倾向于通过IDEA的内置工具来运行Maven命令,那么您可以选择隐藏这些文件。但是,隐藏这些文件并不会影响它们的功能,只是在项目视图中不再显示它们。 1.转到 File > Settings(Wi…
最新文章