上位机图像处理和嵌入式模块部署(linux小系统开发)

news2024/11/15 11:02:56

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

        和若干年前相比较,现在嵌入式linux开发要简单得多。稍微贵一点的有树莓派,国产的有各种水果派,基本上都可以按照不太贵的价钱,就可以买到合适的开发板。这些开发板说是开发板,其实大部分内部或多或少都集成了ubuntu系统,本身系统都是带有界面的,使用十分方便。就和我们平时虚拟机安装的Ubuntu系统一样,还是比较容易上手的。

        实际生产中,不管是从成本,还是从需求的角度出来,还有一种linux裸板开发的模式,大家也需要重视一下。和ubuntu上面,大部分第三方库只需要apt-get即可下载不同,裸板里面的很多功能都是需要自己单独开发的,难度上面要稍微复杂一点。

1、大部分裸板开发都是面向单一场景

        很多linux系统只需要满足特定的功能即可,比如说安防里面的linux、数控车床上的linux、唱戏机里面的linux等等。这种情况下,嵌入式系统越简单越好,不需要额外的功能。

2、裸板开发就是最简系统+app

        这里的最简系统包括最小电路+最小软件系统。电路部分的话,就是电源、输入、输出、屏幕、usb、soc、ddr、spi nor、tf卡这些。最小系统的话,就是uboot、device tree、kernel、busybox这些。至于app,要根据客户的需求,进行对应的开发。

3、第三方库一般都需要自己编译

        由于不像ubuntu apt-get那样方便,这个时候很多的第三方库都需要自己编译。比如说常用的boost、opencv、qt等等。这些编译其实也不复杂,就是花费的时间比较长。另外也不是每次都要编译,所以整体上还是能够接受的。

4、编译需要在virtualbox虚拟机完成

        因为系统本身都是最简系统,所以也不要指望我们开发的代码可以直接在板子上编译了。这种情况下,大部分都是ubuntu交叉编译好,然后传到板子上去。编译工具的话,一般都是soc厂家提供的。

5、板子空间有限、大部分用nfs挂载调试

        很多linux裸板开发,本身的flash大小并不宽裕。如果是从tf卡启动,那空间可能还好一点。如果是spi norflash、spi nandflash,一般空间上面都不会很大。这个时候开发的话,通常都是借助于nfs系统,把虚拟机的目录挂载到板子上进行开发。这样,一方面空间没有约束,另外一方面编译和调试也很方便。

6、学会交叉编译调试方法

        之前看到大部分同学嵌入式linux调试都是看log,但是对于复杂的bug,最好还是通过gdb server+gdb的方式进行单步调试,这样效果要好得多。

7、充分发挥硬件自带的加速功能

        虽然linux生态很丰富,很多软件都有开源代码。但是要真正发挥soc的硬件性能,最好还是能够找到官方的驱动代码、官方的文档,利用硬件来做加速,这样不仅速度快,而且效果也比较好,对于cpu来说也没有负担。不同soc之间,在软件层面其实差别不大,最大的区别就是硬件能力,特别是硬件的加速能力,这一点非常重要。

8、充分发挥linux内核的能力

        既然是裸板开发,那么有的时候为了满足客户的需求,需要掌握一点魔改内核的能力。比如是不是可以节省一点内存,专门用于多进程通信使用;是不是可以使用汇编指令加速一下算法的运算;是不是复用一下gpu、dsp、mcu、mpu的资源等等,这些都是可以着墨的地方。

        另外一个常用的优化方法就是dma,这一点大部分soc都是自带的,但是很多同学还是喜欢自己用cpu把数据搬来搬去。

9、降本和提升性能并行

        目前的形势,都是以将本增效为主。指望不提升软件和嵌入式开发能力,单纯增加soc性能去满足客户需求,操作不可行,成本也没有办法稳住。这个时候,一个比较常用的办法,就是用A行业成熟的方案,去做B行业的细分客户。这个时候如果发挥硬件的能力、如何做好裸板linux的开发,就显得尤为重要了。这需要开发者既知道客户的需求,还能在soc、系统、软件和硬件层面,在成本可控的情况下,最大程度去满足客户的要求,目前来说这是非常考验人能力的。

10、常见的小系统开发

        在Linux开发这部分,目前来说个人开发主要两种类型的板子。一种是带ubuntu系统的板子,这类板子有树莓派、鲁班猫;另外一种就是今天说的linux小系统开发。这部分板子主要是以全志、海思为主。其中海思的soc和板子都不错,非常建议大家学一学,里面有不少硬件加速的资源,对于自己理解海思soc的架构很有帮助。

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

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

相关文章

苍穹外卖学习日志 -----20天项目从零到完结-----含软件下载,环境配置,框架学习,代码编写,报错处理,测试联调,每日总结,心路历程等等......

年份 2024 基础:Javase Javaweb 已完结 2024 8.25---9.14 20天 Day-01 8.25 今天开始学习已经晚了,网盘下载了一下文件,做了一些开始项目的准备工作。 本来其实打算用notepad来写学习日志的,但是那个传…

如何给bat文件替换好看的图标

最近遇到软件运行在Windows系统,通过bat文件启动,但是bat文件的图标不好看,而且作为启动快捷方式放桌面看上去跟其他软件不搭调,于是得给bat文件换个软件图标。 软件ico图标 Windows系统下使用.ico文件作为软件图标。另外favicon…

go libreoffice word 转pdf

一、main.go 关键代码 完整代码 package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""os/exec""path/filepath" ) import _ "github.com/go-sql-driver/mysql"import &q…

Python练习宝典:Day 1 - 选择题 - 基础知识

目录 一、踏上Python之旅二、Python语言基础三、流程控制语句四、序列的应用 一、踏上Python之旅 1.想要输出 I Love Python,应该使用()函数。 A.printf() B.print() C.println() D.Print()2.Python安装成功的标志是在控制台(终端)输入python/python3后,命令提示符变为: A.&…

数业智能心大陆:职场倦怠的新解法

什么是职业倦怠? 在职场中,职业倦怠的表现形式丰富多样。从数业智能心大陆 AI 心理咨询平台的数据来看,职业倦怠呈现出多种状态。教师可能对教学不再满怀热情,精心备课也成为过去式;情绪上容易烦躁、易怒,在…

【d47_2】【Java】【力扣】1791.找出星型图的中心节点

思路 直接判断 edges[0][0] edges[0][1] edges[1][0] edges[1][1] 谁重复了 例如&#xff1a; [ [1,2] [2,3] ....],那么中心节点一定是2 代码 class Solution {public int findCenter(int[][] edges) {for (int i0;i<1;i){if (edges[1][0]edges[0][i]) {return edg…

车载软件调试工具系列---Trace32简介UI界面简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

java项目之常规应急物资管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的常规应急物资管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息。 项目简介&#xff1a; 基于SpringBootVue的…

TikTok流量不佳:是网络环境选择不当还是其他原因?

TikTok&#xff0c;作为全球短视频社交平台的佼佼者&#xff0c;每天都有海量的内容被上传和分享。然而&#xff0c;很多用户和内容创作者发现&#xff0c;他们的TikTok视频流量并不理想。这引发了一个问题&#xff1a;TikTok流量不佳&#xff0c;是因为网络环境选择不当&#…

S3C2440定时器

ee一、构造 二、设置相关位 1、MPLLCON寄存器&#xff08;配置MPLL寄存器&#xff0c;进行倍频&#xff09; 根据下列表格的想要输出的频率进行选择&#xff0c;选择完毕之后&#xff0c;对该寄存器进行设置 2、时钟分频控制&#xff08;CLKDIVN&#xff09;寄存器 根据不…

AD19基础应用技巧:交叉选择/跳转到器件/镜像粘贴/元器件矩形区域排列/选择过滤器/捕捉对象等设置

目录 1. 原理图<>PCB跳转2. 镜像粘贴3. 矩形区域排列4.选择过滤器5. 捕捉的对象Object for Snapping的设置 6.Grids/Guides/Axes1. **Grids&#xff08;网格&#xff09;**2. **Guides&#xff08;参考线&#xff09;**3. **Axes&#xff08;坐标轴&#xff09;**捕捉模式…

基于python的文本聚类分析与可视化实现,使用kmeans聚类,手肘法分析

1、数据预处理 由于在数据分析之前数据集通常都存在数据重复、脏数据等问题&#xff0c;所以为了提高 数据分析结果的质量&#xff0c;在应用之前就必须对数据集进行数据预处理。数据预处理的方法通常有清洗、集成、转换、规约这四个方面&#xff0c;接下来详细介绍这对爬取…

学习记录:js算法(四十二): 寻找两个正序数组的中位数

文章目录 寻找两个正序数组的中位数我的思路网上思路 总结 寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], n…

力扣72-编辑距离(Java详细题解)

题目链接&#xff1a;力扣72-编辑距离 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 dp五部曲。 1.确定dp数组和i下标的含义。 2.确定递推公式。 3.dp初始化。 4.确定dp的遍历顺序。 5.如果没有ac打印dp数组 利于debug。 每一个dp…

网络层协议 —— IP协议

目录 0.前言 1.IP协议的格式 2.IP地址 2.1IP地址的划分 国际间IP地址的划分 公有IP 私有IP 特殊的IP地址 国内IP地址的划分 2.2IP地址不足问题 2.3IP地址的功能 2.4如何使用IP地址 2.5IP地址的构成 3.网段划分 以前的方案 现在的方案 4.认识宏观网络 5.路由 …

MySQL篇(事务 - 基础)

目录 一、简介 二、事务操作 1. 数据准备 2. 未控制事务 2.1. 测试正常情况 2.2. 测试异常情况 3. 控制事务 3.1. 控制事务一 查看/设置事务提交方式 提交事务 回滚事务 3.2. 控制事务二 开启事务 提交事务 回滚事务 3.3. 转账案例 四、事务的好处 五、事务四…

入门数据结构JAVA DS——二叉树的介绍 (构建,性质,基本操作等) (1)

前言 二叉树的概念和性质 二叉树的基本概念 二叉树的种类 二叉树的性质 二叉树的构建存储与遍历 存储 构建 遍历 前序遍历 后序遍历 中序遍历 层序遍历 二叉树的基本操作 获取树中结点个数 获取叶子结点个数 获取第K层结点的个数 获取二叉树的高度 检测值为v…

C++ —— vector 的模拟实现

目录 前言 1. vector深度剖析 2. 基础框架 3. 核心接口 3.1 reserve 3.2 push_back 和 pop_back 3.3 print 3.4 insert 3.5 erase 3.6 resize 4. 拷贝构造 4.1 构造与析构 4.2 拷贝构造 4.3 赋值重载 4.4 迭代器区间 5. 使用memcpy拷贝问题 前言 接:C —— 关于…

FX5 CPU模块和以太网模块的以太网通信功能

FX5 CPU模块和以太网模块的以太网通信功能的概要如下所示。 CPU模块的内置以太网端口的通信规格如下所示。 1、与MELSOFT的直接连接 不使用集线器&#xff0c;用1根以太网电缆直接连接以太网搭载模块与工程工具(GX Torks3)。无需设定IP地址&#xff0c;仅连接目标指定即可进行…

学习Java(一)类和对象

package demo.ceshi;public class Puppy {private int age;private String name;//构造器public Puppy( String name){this.name name;System.out.println("公主的名字叫&#xff1a;"name);}//设置age的值public void setAge(int age){this.age age;System.out.pr…