上位机图像处理和嵌入式模块部署(树莓派4b和mcu的分工与配合)

server/2024/9/23 9:23:43/

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

        树莓派4b从广义上来说,它本身就是一个mini小电脑。我们需要什么软件,就可以apt install去下载即可。这和之前嵌入式linux开发方式有很大的不同。因为很早之前的嵌入式linux开发,都是自己从uboot、device tree、kernel、rootfs一步一步编译而来的,甚至于需要什么第三方软件,还要自己去编译、开发。mcu则不同,对于mcu而言,基本上不存在复杂的第三方软件,一般都是个人包圆了,甚至于个人硬件、软件一条龙去实现,也不是不可能。所以这里,我们从树莓派4b的角度看,两者应该怎么配合。

1、通信方式

        要说通信,最主要的通信方式还是232。本着越简单、越稳定的原则,如果对数据量本身没有太大的需求,那么还是用232这种方式进行通信比较稳妥。当然,通信方式只是第一步,通信后面的协议定义也是非常重要的。这里假定mcu也是我们自己开发的,所以协议通信这部分不是什么难点。

2、升级方式

        树莓派4b升级是比较容易的,因为它上面是上位机,上位机和它之间可以通过网络相连。但是mcu不一样,一般来说,树莓派和mcu之间只有串口通信的部分。所以,如果想要对mcu升级,首先是把firmware下载到树莓派上面,然后通过树莓派给mcu升级固件。

        当然这个时候,树莓派一般会对mcu发起一个重启的命令。mcu启动过程中,在确认需要update固件之后,就会进入升级状态,一步一步下载固件,最后重新启动最新的固件代码。当然现在很多的mcu也支持蓝牙,通过蓝牙下载也不是不可以,不过总觉得没有232放心。

3、功能交互

        树莓派上层对mcu的功能访问主要体现在这三个地方。第一个是固件升级,刚才已经讨论过。第二个是状态确认,如果固件有什么问题,那么需要通过树莓派的网络,及时向上report出来,毕竟大部分mcu不会自带网络的。第三个就是控制命令的下发,复杂的算法一般都是树莓派上计算好的,mcu拿到这个结果之后直接做对应的动作就可以了。如果mcu内部也有对应的算法,比如pid、mpc、lqr等等,最好直接通过串口和pc相连,然后进行标定和测试,这个时候就不要借助于树莓派转手一下了。

4、功能划分

        树莓派偏重于网络通信和算法计算,而mcu偏重于运动控制和结果执行。两者的定位是不一样的,两者之间无法相互取代的。像slam、图像、ai、视频编解码、3d,这些mcu干不了;实时运动控制,树莓派也做不了,除非它其他什么也不干。真的不需要算法计算的话,直接上位机连接mcu就好了,自然就不需要树莓派了。因此在前期验证和调试的时候,两者可以分开来开发。等到最终作为产品调试的时候,再merge到一起,这是比较合适的处理办法。

        像树莓派这种板子,自身就是linux系统,上面的软件代码任务会比较重一点,有可能会牵涉到不同的部门和开发人员。而mcu相对而言,功能单一,软件和硬件有可能都是同一个人开发的。所以这个时候,大家只要明确彼此之间的功能接口,就算人员很多,开发起来一般问题不大。

5、把接口的划分落实到文档上面

        树莓派的软件一般比较多,开发人员也就比较多;mcu的软件相对较少,所以开发人员也比较少。但真正树莓派接口层,和mcu的接口层,对接的内容未必有那么多。但是哪怕东西再少,也要转成一个标准的文档。只有变成专业的文档,大家才能对协议、接口、参数、流程等彼此之间需要协同的东西了然于心,而不是你做你的,我做我的。


http://www.ppmy.cn/server/34172.html

相关文章

AI新突破:多标签预测技术助力语言模型提速3倍

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! 引言:多标签预测的新视角 在人工智能领域,尤其是在自然语言处理(NLP)中,预测模型的训练方法一直在…

[微信小程序] 入门笔记1-滚动视图组件

[微信小程序] 入门笔记1-滚动视图组件 1.页面&组件&渲染 在小程序是由一个个页面page组成, 而页面又是由一个个组件component组成.和网页类似,这里的组件指的就是输入框<input>,按钮<button>,文本<text>,图片<image>等元素.如果你学过网页一…

RK3568 学习笔记 : 精简 u-boot env 默认复杂的多种引导启动设置

前言 环境&#xff1a; 正点原子 Atompi-CA1 RK3568 开发板、正点原子 DLRK3568 开发板&#xff0c;&#xff08;一时脑热买了两块 RK3568 开发板&#xff09;&#xff0c;Atompi-CA1 RK3568 开发板比较小巧&#xff0c;利于一些前期的嵌入式 Linux 开发学习与实践。 RK3568 开…

以太网基础-IP、ICMP、ARP协议

一、IP协议 参考&#xff1a;rfc791.txt.pdf (rfc-editor.org) IP协议&#xff08;Internet Protocol&#xff09;是TCP/IP协议族中最核心的协议&#xff0c;提供不可靠的、无连接的、尽力而为的数据报传输服务。 IP报文数据头如下 Version&#xff1a;4bit&#xff0c;4表示…

小白入门 CSS 语法规则

文章导读&#xff1a;AI 辅助学习前端&#xff0c;包含入门、进阶、高级部分前端系列内容&#xff0c;当前是 CSS 的部分&#xff0c;瑶琴会持续更新&#xff0c;适合零基础的朋友&#xff0c;已有前端工作经验的可以不看&#xff0c;也可以当作基础知识回顾。 这篇文章给大家…

【银角大王——Django课程——靓号页面的基本操作(列表,新建,删除)】

靓号管理 靓号列表显示表结构根据表结构的需求&#xff0c;在models.py中创建类URL.py编写views.py中 函数编写列表显示HTML页面效果 新建靓号编写&#xff08;添加&#xff09;URL.py编写views.py中 函数编写新建靓号HTML数据校验方式一&#xff1a;&#xff08;正则表达式&am…

用python画一个正八边形

1 问题 使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长100的正八边形。 2 方法 1、利用for循环解决如何画出图形中相同的八条边的问题。 2、再利用turtle.fd()函数和turtle.seth()函数画出完整的图形。 代码清单 1 import turtleturtle.pensize(2)d0for i in r…

(论文阅读-优化器)A Cost Model for SPARK SQL

目录 Abstract 1 Introduction 2 Related Work 3 Background and Spark Basics 4 Cost Model Basic Bricks 4.1 Cluster Abastraction and Cost Model Parameters 4.2 Read 4.3 Write 4.4 Shuffle Read 4.5 Broadcast 5 Modeling GPSJ Queries 5.1 Statistics and S…