当前位置: 首页 > news >正文

上位机图像处理和嵌入式模块部署(软硬结合才是嵌入式的精髓)

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

        关于嵌入式,有很多的说法。有的认为stm32 mcu那种才是嵌入式;有的认为嵌入式linux也是嵌入式;也有的同学认为,嵌入式无非就是把pc的东西移植到嵌入式板子而已。这些想法,对,其实也不对。现在的很多linux板子,确实很多代码的确都是从pc电脑移植而来。但是如果仅仅是移植,而不做优化,其实是不合算的。

1、算法不能仅仅依靠cpu

        很多的算法,如果是运行在pc电脑上,问题不大。一方面,pc上面的cpu频率够、算力强;另外pc电脑一般连接着外部电源,没有省电的需求,所以算法跑在pc上面一点问题没有。但是如果算法port到嵌入式板子之后,还是靠cpu来运行的话,可能需要非常好的cpu才行,频率也要足够块。但是好的cpu往往价格不便宜,这是很大的一个限制条件。

2、低功耗要求我们cpu不能太快

        嵌入式很多设备是便携式设备,比如mp3、dv之类的设备。既然如此,那么上面的电池电量就是一定的。这就要求我们开发的时候有必要做好省电处理。大家比较了解的手机,其实就是这么处理的。玩游戏的时候,运行的cpu可能性能比较强;但是如果是平时一般操作,接接电话、发发微信,运行的cpu就会自动切入到低频的cpu来处理。

3、硬件加速是必选项

        很多的应用如果靠cpu运行,很多时候即使靠cpu,也是没有办法做到实时输出的。比如说某些需要定时输出的算法,例如定位、运动控制、图像处理等等。硬件加速具有天然的优势,这个时候如果可能把soc上面的硬件加速用起来,让cpu仅仅是负责控制功能,这还是非常方便的。

        有的同学也许会说,如果没有这样的IP怎么办?答案就是自己写一个,无论是外挂的fpga,还是内嵌fpga的zynq,都是不错的选择。

4、成本控制要求我们必须软硬结合

        前面说过,好的cpu往往都比较贵。如果我们又想性能好,又不想太贵,这个时候只能想尽办法把soc上面的资源都用起来。不管是cpu、gpu、dsp、mcu,还是自带的编码、解码、ai、isp算法,又或者是自己设计的fpga算法,只要是能解决问题,都应该为我们所有。算法如果仅仅可以跑在高端的soc上面,这其实不是自己的优势,而是soc芯片公司的优势。

5、软硬结合就是写驱动、做控制

        怎么做软硬结合,其实就是做驱动。软件从传感器拿到数据,放到指定内存,接下来送给硬件。硬件处理好了,通过中断告诉我们,我们再从指定内存获取结果。这就是一个循环往复的过程。有些同学如果还不理解的话,我们可以以网络为例进行说明,

        读书的时候,一般都认为网络有五层,分别是应用层、传输层、网络层、mac层和物理层。至下而上地去看,物理层是phy芯片完成,mac层是soc内部ip完成。这个时候的驱动,就是配置soc内部的ip,分别去访问mac层和物理层芯片。那传输层和网络层呢,就是kernel内部实现的tcp/ip协议。应用层,就是windows/linux上面写的application程序,这都是常规操作。

        这个时候,大家有没有想过,如果是想加快报文处理的速度,怎么用软硬结合实现呢?其实有一个思路是这样的,传输层只用udp,这样不用超时重传。网络层限制报文大小,这样不用分包。mac层和物理层呢,则不变。有了这个思路,其实就可以把应用层以下的code全部ip话,上层报文分发下来,直接udp送出去,没有了tcp/ip协议栈,每一步都是硬件完成,这样的处理速度,肯定是一般芯片没有办法比拟的。而上层应用来说,除了udp和报文大小做了一点限制之外,其他的使用基本和原来一样。但整体效率高了很多。


http://www.mrgr.cn/news/40726.html

相关文章:

  • 逆向-下字符串查找的条件断点
  • vscode 插件推荐
  • 虚拟机、ubantu不能连接网络,解决办法
  • D. Speedbreaker Codeforces Round 975 (Div. 2)
  • 前端工程化17-邂逅原生的ajax、跨域、JSONP
  • 工具按钮 QToolButton
  • 02.usePrevious
  • pnpm在monorepo架构下不能引用其他模块的问题
  • 第八篇——数列和级数(一):当下很重要,但趋势更重要
  • 【Linux】dd命令
  • 通信工程学习:什么是POP3邮局协议版本3
  • OLED显示屏中常见的3-spi和4-spi
  • 简单的微信小程序个人 个人详情页
  • local minima 的问题如何解决
  • MySQL优化相关(持续积累...)
  • Javascript-标准内置对象-值属性-globalThis-Infinity-Nan-undefined 手写实现globalThis功能
  • 笔墨歌盛世 丹青绘匠心,艺术赋能“百千万工程”
  • 【优选算法之哈希表】No.11--- 经典哈希表算法
  • [Python学习日记-34] 一篇文章让你弄懂 Python 中牛逼的递归函数
  • [Python学习日记-35] Python 中的内置函数(上)