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

news2024/11/19 5:38:03

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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、camera图像、ai、视频编解码、3d、丰富网络协议、复杂图形界面,这些mcu干不了;实时运动控制,树莓派也做不了,除非它其他什么也不干。真的不需要算法计算的话,直接上位机连接mcu就好了,自然就不需要树莓派了。因此在前期验证和调试的时候,两者可以分开来开发。等到最终作为产品调试的时候,再merge到一起,这是比较合适的处理办法。

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

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

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

其他:

        事实上除了mcu之外,有的时候soc还会和fpga进行协作。当然,通信的方式一般就是spi、232这样居多,zynq之类的fpga+soc组合体另当别论。一些对采样、控制和实时性有要求的场合,用fpga还是非常方便的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索设计模式的魅力:权力集中,效率提升,中心化模式的优势与挑战

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索中心化模式之旅✨ 大家好啊!👋 这次我们要聊的是IT界一…

matlab使用教程(66)—在图中绘制多条曲线(2019b以下版本)

您可以采用多种方式合并绘图。利用子图,可在同一坐标区中合并多个图,或在一个图窗中创建多个坐标区。 1.在同一坐标区中合并绘图 默认情况下,新图将清除现有图,并重置标题等坐标区属性。但是,您可以使用 hold on 命令…

Netty HTTP2 示例-响应式编程-013

🤗 ApiHug {Postman|Swagger|Api...} = 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Next Generation API Development Platform …

数据结构复习指导之二叉树的概念

文章目录 二叉树 考纲内容 复习提示 1.二叉树的概念 1.1二叉树的定义及其主要特性 1.1.1二叉树的定义 1.1.2几种特殊的二叉树 1.1.3二叉树的性质 1.2二叉树的存储结构 1.2.1顺序存储结构 1.2.2链式存储结构 知识回顾 二叉树 考纲内容 (一)树…

Rust 使用egui创建一个简单的下载器demo

仓库连接: https://github.com/GaN601/egui-demo-download-util 这是我第一个rust gui demo, 学习rust有挺长时间了, 但是一直没有落实到实践中, 本着对桌面应用的兴趣, 考察了slint、egui两种框架, 最后还是选择了egui. 这篇博客同时包含我当前的一些理解, 但是自身技术有限,…

中职大数据专业介绍:大数据技术应用

近年来,人工智能在经济发展、社会进步、国际政治经济格局等方面已经产生重大而深远的影响。规划纲要对“十四五”及未来十余年我国人工智能的发展目标、核心技术突破、智能化转型与应用,以及保障措施等多个方面都作出了部署。 据2020年全国教育事业发展统…

Python - 金三银四心路历程 之 数据结构与算法 刷题

目录 一.引言 二.心路历程 三.刷题经历 四.刷题历程 五.总结 一.引言 <夜深人静写算法> 是 23 年 12 月底博主打算跳槽时开始做刷题准备做的专栏&#xff0c;前后准备了大约一个月&#xff0c;刷题完毕后简单准备了项目和简历后就开始加入找工作大军了&#xff0c;最…

【DevOps】Jenkins 集成Docker

目录 1. 安装 Docker 和 Jenkins 2. 在 Jenkins 中安装 Docker 插件 3. 配置 Docker 连接 4. 创建 Jenkins Pipeline 5. 示例 Pipeline 脚本 6. 运行 Jenkins Job 7. 扩展功能 8、docker配置测试连接的时候报错处理 将 Docker 与 Jenkins 集成可以实现持续集成和持续交…

介绍 ffmpeg.dll 文件以及ffmpeg.dll丢失怎么办的五种修复方法

ffmpeg.dll 是一个动态链接库文件&#xff0c;属于 FFmpeg运行库。它在计算机上扮演着非常重要的角色&#xff0c;因为它提供了许多应用程序和操作系统所需的功能和组件。当 ffmpeg.dll 文件丢失或损坏时&#xff0c;可能会导致程序无法正常运行&#xff0c;甚至系统崩溃。下面…

box-decoration-break 使用介绍

box-decoration-break属性的使用 一、定义 box-decoration-break是CSS片段模块&#xff08;CSS Fragmentation Module Level 3&#xff09;中的一个属性&#xff0c;主要用于指定背景&#xff08;background&#xff09;、内边距&#xff08;padding&#xff09;、边框&#…

Flink container exit 143 问题排查

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

Flask SQLAlchemy 技术指南

文章目录 什么是 Flask SQLAlchemy&#xff1f;安装 Flask SQLAlchemy创建 Flask 应用和数据库模型添加和查询数据运行 Flask 应用总结**数据库迁移&#xff08;Database Migrations&#xff09;****复杂查询****关系模型****事务处理****性能优化****安全性****扩展功能** Fla…

【2024高校网络安全管理运维赛】巨细记录!

2024高校网络安全管理运维赛 文章目录 2024高校网络安全管理运维赛MISC签到考点&#xff1a;动态图片分帧提取 easyshell考点&#xff1a;流量分析 冰蝎3.0 Webphpsql考点&#xff1a;sql万能钥匙 fileit考点&#xff1a;xml注入 外带 Cryptosecretbit考点&#xff1a;代码阅读…

Pyecharts的编程环境准备

一&#xff0c;准备Python编程环境&#xff1a; Python版本&#xff1a;3.10以上&#xff0c;最高版本3.12 https://www.python.org/ 进入官网&#xff0c;点击downloads—>windows进入下载页面&#xff0c;搜索”3.10.6”找到指定版本&#xff0c;下载并安装64位Installer…

可视化-实验四- seaborn工具包绘图基础及关系

一、任务一 1.1 开发环境 多种选择方案&#xff08;大家根据自己的编程习惯&#xff0c;选择适合自己的工具&#xff09;&#xff0c;老师授课如下&#xff1a;Anaconda3Jupter 1.2 特殊包 导入工具包设置中文显示&#xff1a; import matplotlib.pyplot as plt import p…

HTTP常见面试题(二)

3.1 HTTP 常见面试题 HTTP特性 HTTP 常见到版本有 HTTP/1.1&#xff0c;HTTP/2.0&#xff0c;HTTP/3.0&#xff0c;不同版本的 HTTP 特性是不一样的。 HTTP/1.1 的优点有哪些&#xff1f; HTTP 最突出的优点是「简单、灵活和易于扩展、应用广泛和跨平台」。 1. 简单 HTTP…

Metasploit Framework(MSF)从入门到实战(二)

Metasploit Framework&#xff08;MSF&#xff09;从入门到实战&#xff08;一&#xff09;_安装msf更新-CSDN博客 MSF模块介绍 MSF有7个模块&#xff0c;分别对下面目录下的7个子文件夹&#xff1a; auxiliary&#xff08;辅助模块 &#xff09; show auxiliary //查看所有…

vue视图不刷新强制更新数据this.$forceUpdate()

在vue中&#xff0c;更新视图数据&#xff0c;不刷新页面&#xff0c;需要强制更新数据才可以 前言 在对数据就行添加和删除时&#xff0c;发现页面视图不更新&#xff0c;排除发现需要强制更新才可以 点击添加或删除&#xff0c;新增数据和删除就行&#xff0c;但在不使用fo…

二层交换机与路由器连通上网实验

华为二层交换机与路由器连通上网实验 二层交换机是一种网络设备&#xff0c;用于在局域网&#xff08;LAN&#xff09;中转发数据帧。它工作在OSI模型的第二层&#xff0c;即数据链路层。二层交换机通过学习和维护MAC地址表&#xff0c;实现了数据的快速转发和广播域的隔离。 实…

Spring-依赖注入的处理过程

前置知识 1 入口 DefaultListableBeanFactory#resolveDependency 2 每个依赖都有对应的DependencyDescriptor 3 自定绑定候选对象处理器AutowireCapableBeanFactory 注入处理 我们可以看到AutowireCapableBeanFactory中有两个方法&#xff1a; 第一个是单个注入&#xff1a;…