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

Linux上位机开发实战(能用的开发板计算资源)

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

        大家所能想到的嵌入式上位机开发,如果是linux,同时涉及到嵌入式的话,一般都会认为是把pc linux的软件port到板子上,就是嵌入式开发。狭义的说,软件+外设开发就是嵌入式开发的全部。这种想法其实是错误的。嵌入式平台上面,除了cpu之外,其实还有很多的计算资源可以使用。嵌入式开发板并不是只有cpu可以处理数据,其他很多的硬加速都可以的。

        所以大家说的嵌入式开发,并不仅仅是linux+arm+外设接口+开源代码,如果真的那么做,其实做出来的东西是很难有竞争力的。

1、复用多核cpu

        cpu执行数据的时候,不要只用一个core,尽量并发多个core一起使用。io处理的时候,需要并发处理,有数据计算的时候也需要进行并发计算。

2、使用gpu

        现在的gpu并不只是处理3d数据,对于很多应用本身并不需要进行3d渲染,这种情况下就可以用gpu来处理我们需要的数据。一般来说,nvidia的板子用cuda即可;不是nvidia的板子,用opencl也可以进行编程。而且nvidia的板子,通常价格不菲,对于一些国产的板子,其实用gpu来处理是比较合理的做法。

3、mcu

        目前很多soc板子都带有mcu芯片。特别是一些原来车规级的芯片,慢慢转到工业级别之后,上面的mcu也是可以使用的。使用方法一般就是把mcu当成一个特殊的驱动来处理。当然这个mcu也是可以进行编程处理的,编程方法就是正常的keil编程。

4、dsp

        dsp主要是特定公司的soc。比如说ti公司的芯片,很多默认是arm+dsp,这种情况下,除了cpu可以用来进行数据处理,dsp也可以用来处理数据。另外,一些soc带有音频dsp处理的ip,这种情况下也是可以用来进行编程的。

5、npu

        随着ai大模型的引入,运来越多的model被搬到了板子上面。这个时候,如果还是用cpu来处理model数据,是非常不划算的做法。这个时候,应该把model翻译成npu可以识别的model,用npu处理model,要比纯cpu处理的速度,要快很多。

        目前rk的npu使用的比较多,资料也比较多,大家可以学一学。

6、硬件ip加速

        很多常用的功能,其实soc公司都做了硬件加速。这里面包括了图像的编解码、音频的编解码、视频的编解码、图像isp处理、校验crc、加解密处理、数据dma、屏幕显示加速处理等等。这里面,注意图像的编解码和视频编解码是两码事,图像偏重于帧内压缩,视频偏重于帧间压缩。

        总之,板子上能加速的部分,一定要尽量用起来,这样才能把性能做到最优。这个时候还有一种比较讨巧的办法,那就是多使用厂家的sdk。他们的sdk,一般都会把这些加速内容做一个封装,封装之后的接口就是我们需要的东西。

7、fpga加速

        还有一些芯片是包含fpga,类似于xilinx公司的zynq,里面除了arm,还包含了fpga,这个时候就可以把fpga用起来。对于特定的算法,如果能够改写成ip,将会极大提高产品的竞争力。当然,这比较适合附加值比较大的产品。

8、汇编优化

        最后,就算是用cpu处理软件,还是有很多可以做的。比如说,我们可以找到软件的性能瓶颈点,能dma处理的dma处理,遇到io阻塞的及时剥离,能arm neon汇编优化的就汇编优化。这样的话,最终也会极大地提高软件的性能。

相关文章:

  • 3.9 Spring Boot国际化:动态语言切换与数据库存储方案
  • LabVIEW 与 PLC 通讯的常见方式
  • 大数据学习栈记——HBase安装
  • HashMap学习总结——JDK17
  • PHP 应用TP 框架路由访问对象操作内置过滤绕过核心漏洞
  • STM32-ARM
  • 深入理解 Spring 框架中的 IOC 容器
  • 智能AI优化SEO关键词实战
  • LLM(6):理解词嵌入
  • 大白话详细解读React框架的纯函数和高阶函数
  • 京准电钟:NTP网络时间服务器让城市更智慧更精准
  • 快速入手-基于Django的Form和ModelForm操作(七)
  • C++ 介绍STL底层一些数据结构
  • 数据结构(排序(上)):冒泡、选择、插入
  • MySQL 创建用户,建库,建表
  • 红宝书第八讲:箭头函数与高阶函数:厨房工具与智能菜谱的对比
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例6,TableView15_06自定义导出文件名示例
  • ZYNQ的cache原理与一致性操作
  • 跟着StatQuest学知识06-CNN进行图像分类
  • 为容器指定固定IP地址
  • 网络主播直播泄机密,别让这些“小事”成威胁国家安全的“突破口”
  • 美乌基金协议:美国搞了一套可在资源富集地区复刻的商业模式
  • 胳膊一抬就疼,炒菜都成问题?警惕这种“炎症”找上门
  • 纪念|古文字学泰斗裘锡圭:“还有很多事情要做”
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 印度杰纳布河上游两座水电站均已重新开闸