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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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.mzph.cn/bicheng/54556.shtml

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

相关文章

Google 扩展 Chrome 安全和隐私功能

过去一周,谷歌一直在推出新特性和功能,旨在让用户在 Chrome 上的桌面体验更加安全,最新的举措是扩展在多个设备上保存密钥的功能。 到目前为止,Chrome 网络用户只能将密钥保存到 Android 上的 Google 密码管理器,然后…

【学习笔记】STM32F407探索者HAL库开发(四)F103时钟系统配置

【学习笔记】STM32F407探索者HAL库开发(四)F103时钟系统配置 1 STM32F1时钟树1.1 STM32F103时钟系统图1.2 STM32F103时钟树简图1.2.1 高速部分1.2.2 低速部分 1.3 函数配置1.4 时钟输出1.5 STM32CubeMX时钟树配置F11.6 时钟系统对与嵌入式开发的重要性 1…

Spring IDEA 2024 自动生成get和set以及toString方法

1.简介 在IDEA中使用自带功能可以自动生成get和set以及toString方法 2.步骤 在目标类中右键,选择生成 选择Getter和Setter就可以生成每个属性对应的set和get方法, 选择toString就可以生成类的toString方法,

Linux 文件系统(下)

目录 一.文件系统 1.文件在磁盘上的存储方式 a.盘面、磁道和扇区 b.分区和分组 2.有关Block group相关字段详解 a.inode编号 b.inode Table(节点表) c.Data blocks(数据区) d.小结 二.软硬链接 1.软链接 a.软链接的创建…

数据湖 Data Lake-概述

Data Lake 1. 数据湖的定义 数据湖是一种存储系统,用于集中存储大量的原始数据,可以按数据本来的原始格式进行存储,用户可以在需要时提取和分析这些数据。 A data lake is a centralized repository designed to hold vast volumes of data …

OpenCV特征检测(4)检测图像中的角点函数cornerHarris()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 Harris 角点检测器。 该函数在图像上运行 Harris 角点检测器。类似于 cornerMinEigenVal 和 cornerEigenValsAndVecs,对于每个像素 (…

如何将生物序列tokenization为token?

原理讲解 tokenization是自然语言处理领域非常成熟的一项技术,tokenization就是把我们研究的语言转换成计算机能够识别的数字——token。 在生物领域,如何把核苷酸或氨基酸序列tokenization成token呢? 我们可以使用k-mer技术: k-m…

网络设备登录——《路由与交换技术》实验报告

目录 一、实验目的 二、实验设备和环境 三、实验记录 1.通过 Console 登录 步骤1:连接配置电缆。 步骤2:启动PC,运行超级终端。 步骤3:进入Console 配置界面 2.通过 Telnet 登录 步骤1:通过 Console 接口配置 Telnet 用户。 步骤2:配置 super 口令 步骤3:配置登录欢迎…

神经网络构建原理(以MINIST为例)

神经网络构建原理(以MINIST为例) 在 MNIST 手写数字识别任务中,构建神经网络并训练模型来进行分类是经典的深度学习应用。MNIST 数据集包含 28x28 像素的手写数字图像(0-9),任务是构建一个神经网络,能够根据输入的图像…

吉首大学--23级题目讲解

7-1 单链表基本操作 在 C/C 中,.(点)和 ->(箭头)运算符用于访问结构体或类的成员,但它们的使用场景不同。 1. . 运算符 . 运算符用于访问结构体或类的成员,通过对象或结构体变量直接访问。…

es的封装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…

Element Plus 中Input输入框

通过鼠标或键盘输入字符 input为受控组件,他总会显示Vue绑定值,正常情况下,input的输入事件会正常被响应,他的处理程序应该更新组件的绑定值(或使用v-model)。否则,输入框的值将不会改变 不支…

windows环境下配置MySQL主从启动失败 查看data文件夹中.err发现报错unknown variable ‘log‐bin=mysql‐bin‘

文章目录 问题解决方法 问题 今天在windows环境下配置MySQL主从同步,在修改my.ini文件后发现MySQL启动失败了 打开my.ini检查参数发现没有问题 [mysqld] #开启二进制日志,记录了所有更改数据库数据的SQL语句 log‐bin mysql‐bin #设置服务id&#x…

[数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别

重要说明:数据集里面有2/3是增强数据集,请仔细查看图片预览,确认符合要求在下载,分辨率均为640x640 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件…

Python 二级考试

易错点 电脑基础知识 定义学生关系模式如下:Student (S#, Sn, Ssex,class,monitorS#)(其属性分别为学号、学生名、性别、班级和班长学号) 在关系模式中,如果…

python-SZ斐波那契数列/更相减损数

一:SZ斐波那契数列题目描述 你应该很熟悉斐波那契数列,不是吗?现在小理不知在哪里搞了个山寨版斐波拉契数列,如下公式: F(n) { $\ \ \ \ \ \ \ \ \ \ \ \ $ a,( n1) $\ \ \ \ \ \ \ \ \ \ \ \ $ b,( n2) $\ \ \ \ \ \ …

【优选算法之双指针】No.2--- 经典双指针算法(下)

文章目录 前言一、双指针示例:1.1 ⽔果成篮1.2 和为s的两个数字1.3 三数之和1.4 四数之和 二、双指针总结: 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专…

安装黑群晖系统,并使用NAS公网助手访问教程(好文)

由于正版群晖系统的价格不菲,对于预算有限的用户来说,安装黑群晖系统成为了一个不错的选择(如果您预算充足,建议选择白群晖)。如您对宅系科技比较感兴趣,欢迎查看本文,将详细介绍如何安装黑群晖…

allWebPlugin中间件自定义alert、confirm及prompt使用

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

跨游戏引擎的H5渲染解决方案(腾讯)

本文是腾讯的一篇H5 跨引擎解决方案的精炼。 介绍 本文通过实现基于精简版的HTML5(HyperText Mark Language 5)来屏蔽不同引擎,平台底层的差异。 好处: 采用H5的开发方式,可以将开发和运营分离,运营部门自…