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.rhkb.cn/news/38474.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32中断

中断的基本概念 中断具体定义:操作系统课程里有清晰的阐述。 STM32中断:中断来了,主程序都得立即暂停,程序由硬件电路自动跳转到中断程序中。中断执行前,进行现场保护;中断执行后,会再还原现场…

maven在windows系统上的详细安装和配置

下载 Maven 安装包 去官网下载,下载链接 下载到指定位置,解压,之后在该目录下新建一个文件夹 【repository】,作为本地仓库 Maven 的配置 配置本地仓库 ① 打开上一步新建的目录 repository, 复制路径 ② 打开 con…

如何为AI开发选择合适的服务器?

选择适合的服务器可以为您的AI项目带来更高的效率,确保最佳性能、可扩展性和可靠性,从而实现无缝的开发与部署。 选择适合的AI开发服务器可能并不容易。您需要一台能够处理大量计算和大型数据集的服务器,同时它还需要符合您的预算并易于管理…

OpenCV中的矩阵操作

OpenCV中的矩阵操作主要围绕Mat类展开,涵盖创建、访问、运算及变换等。 1. 创建矩阵 ‌零矩阵/单位矩阵‌: Mat zeros Mat::zeros(3, 3, CV_32F); // 3x3浮点零矩阵 Mat eye Mat::eye(3, 3, CV_32F); // 3x3单位矩阵 自定义初始化‌&#xff1a…

【C++进阶】函数:深度解析 C++ 函数的 12 大进化特性

目录 一、函数基础 1.1 函数定义与声明 1.2 函数调用 1.3 引用参数 二、函数重载:同名函数的「多态魔法」(C 特有) 2.1 基础实现 2.2 重载决议流程图 2.3 与 C 语言的本质区别 2.4 实战陷阱 三、默认参数:接口的「弹性设…

spring boot 登入权限RBAC模式

首先准备好5张表 user_info表,用户的信息表 role表,角色表(比如超级管理员、管理员、审核员、采购......) 创建user_role表,user_info表,role表的中间表 注意了,role_id和user_id是 u…

C#里使用libxl来对列或行进行分组显示

有时候由于EXCEL里的行数很多, 需要把某些行进行隐藏起来,那么就需要使用到行或列进行隐藏的操作。 这时候需要使用函数GroupCols和GroupRows来对这些列或行进行分组。 分组不能出现交叉的情况,否则会抛出异常。 如下图所示: 可以使用下面的代码来输出上面的EXCEL: p…

LangChain 基础

一、LangChain 模块和体系 LangChain 是一个用于开发由大型语言模型(LLMs)驱动的应用程序的框架。 官方文档:https://python.langchain.com/docs/introduction/ LangChain 简化了LLM应用程序生命周期的每个阶段: 开发&#xf…

IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法

本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期:2025年3月22日 作者:任聪聪 现象描述: 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…

2025年- G24-Lc98-217.包含重复(使用hashSet解决)-java版

1.题目描述 2.思路 思路一: 我的想法是直接用集合来判断,如果集合的元素不能添加说明之前已经存在这个元素,也就是发现了重复元素,所以返回false。 补充一: Map、ArrayList的定义和声明 3.代码实现 class Soluti…

MySQL事务全解析:从概念到实战

在数据库操作中,事务是一个至关重要的概念,它确保了数据的完整性和一致性。今天,就让我们深入探讨MySQL事务的方方面面,从基础概念到实际应用,全面掌握这一技能。 一、为什么需要事务 假设张三要给李四转账100元&…

CVPR 2025 | 文本和图像引导的高保真3D数字人高效生成GaussianIP

小小宣传一下CVPR 2025的工作GaussianIP。 arXiv:https://arxiv.org/abs/2503.11143 Github:https://github.com/silence-tang/GaussianIP 欢迎star, issue~ 摘要 文本引导的3D人体生成随着高效3D表示及2D升维方法(如SDS)的发展…

Model Context Protocol:下一代AI系统集成范式革命

在2023年全球AI工程化报告中,开发者面临的核心痛点排名前三的分别是:模型与业务系统集成复杂度(58%)、上下文管理碎片化(42%)、工具调用标准化缺失(37%)。传统API集成模式在对接大语言模型时暴露明显短板:RESTful接口无法承载动态上下文,GraphQL缺乏工具编排能力,gR…

多模态大模型常见问题

1.视觉编码器和 LLM 连接时,使用 BLIP2中 Q-Former那种复杂的 Adaptor 好还是 LLaVA中简单的 MLP 好,说说各自的优缺点? Q-Former(BLIP2): 优点:Q-Former 通过查询机制有效融合了视觉和语言特征…

EasyRTC轻量级Webrtc音视频通话SDK,助力带屏IPC在嵌入式设备中的应用

一、市场背景 随着人们生活水平的提高,对于家居安全和远程监控的需求日益增长,带屏IPCam不仅满足了用户实时查看监控画面的需求,还提供了诸如双向语音通话、智能报警等丰富的功能,极大地提升了用户体验。 此外,技术的…

Linux安装JDK

1、下载JDK https://www.oracle.com/cn/java/technologies/downloads/#java11 2、安装 2.1、创建安装目录 mkdir /usr/local/jdk 2.1、将下载的tar.gz上传到服务器 使用tar -zxvf jdk-8u311-linux-x64.tar.gz解压后剪切到 /usr/local/jdk目录:mv xxx /usr/local/j…

基于基于eFish-SBC-RK3576工控板的智慧城市边缘网关

此方案充分挖掘eFish-SBC-RK3576的硬件潜力,可快速复制到智慧园区、交通枢纽等场景。 方案亮点 ‌接口高密度‌:单板集成5GWiFi多路工业接口,减少扩展复杂度。‌AIoT融合‌:边缘端完成传感器数据聚合与AI推理,降低云端…

CSS 学习笔记 - 蓝桥杯重点整理

1. CSS 基础语法 核心知识点 选择器 声明块结构三种引入方式&#xff1a;行内/内部/外部常用选择器类型&#xff1a;标签/类/ID/通配符 <!-- 行内样式 --> <p style"color: red;">红色文字</p><!-- 内部样式 --> <style>/* 标签选…

UML的使用

process on 在线使用 UML概念 UML &#xff1a;统一建模语言(Unified Modeling Language&#xff0c;是用来设计软件的可视化建模语言。 1. 类图 1.1 概念 类图&#xff08;Class Diagram&#xff09;是UML中用于描述系统静态结构的图形化工具。它展示了系统的类、接口、它…

【C++】入门

1.命名空间 1.1 namespace的价值 在C/C中&#xff0c;变量&#xff0c;函数和后面要学到的类都是大量存在的&#xff0c;这些变量&#xff0c;函数和类的名称将存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;…