当前位置: 首页 > 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汇编优化的就汇编优化。这样的话,最终也会极大地提高软件的性能。

http://www.dtcms.com/a/85031.html

相关文章:

  • 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地址
  • 06_数组
  • Android卷笔试题目总结
  • 大模型架构记录 【综述-文字版】
  • WPS排版如何一张纸显示四张纸的内容?
  • 解析DeepSeek的技术内核:混合专家架构如何重塑AI效能
  • 区块链交易所平台开发全解析
  • Systemd 是 Linux 系统的 ‌核心服务管理工具‌,负责管理系统的启动、服务生命周期和资源分配
  • 避雷 :C语言中 scanf() 函数的错误❌使用!!!
  • 高德终端技术总结:高可用架构如何练成?
  • 【MySQL】MySQL如何存储元数据?