嵌入式开发入门—Linux
第一部分 嵌入式Linux简介:
首先,不知道大家知不知道嵌入式linux设备运行的话一般需要哪几个组成模块?
一、嵌入式Linux设备如何在运作——Uboot
第一部分是BootLoader,它是作为一个刚刚开机的引导程序。Uboot也是BootLoader的一种,主要有以下几个作用:
- Uboot本质上是一个裸机程序(没有操作系统的程序,开机只能单一运行)
- Uboot主要是用来启动操作系统的内核
- Uboot负责部署整个计算机系统,例如传参、分配OS内存
- Uboot负责硬件初始化。例如串口打印、擦除、烧写flash等
- Uboot提高一个命令行界面供人来操作
总之,Uboot的作用就是启动内核,内核运行起来后,它的任务也就完成了。
二、嵌入式Linux设备如何在运作——Kernel
Uboot加载成功后就到了Kernel这一步,kernel的作用就是将软硬件联系起来。大家都知道光光靠一个CPU硬件是没有什么用的,必须要靠内核去支配。
Kernel(内核)的5个子系统:
- 进程调度:多线程操作以为是并行的,实际上是串行的,根据优先级进行调度,约10ms调度一次
- 内存管理:CPU提供内存管理,操作系统将这块的物理地址和虚拟地址之间做一个映射,我们平时开发的程序操作都是虚拟地址,只有到驱动层开发的时候才是物理地址。
- 虚拟文件系统:嵌入式设备中有很多的文件系统,不过对我们开发者来说,这些文件系统不需要关心怎么去操作,一般都是通过虚拟文件系统来统一操作。
- 网络接口:主要包括网络通信协议和网络设备驱动。
- 进程通信:方式很多,如文件和记录锁定、管道、FIFO、消息队列、信号灯,共享内存。
总之,Kernel(内核)是软件和硬件之间连接的“桥梁”,有了内核才能做应用程序的开发。
三、嵌入式Linux设备如何在运作—— rootfs(文件系统)
平时打包一个设备,发布一个固件、文件系统等一般都是自己独立去做的。比如bin文件,就是做一些二进制文件,像最简单的ios等等就是放在bin文件里面的。再比如dev,他就是动态生成的,像串口和其他的设备会生成在dev里面。还要重点说一下proc,内核以及进程信息的虚拟文件系统都是存在这个里面的。其他的介绍大家可以参考下图:
四、嵌入式Linux软件开发环境
从上图可以看出:嵌入式Linux软件开发环境基本是从PC端开始写软件,编译过后,通过U盘或者网络文件系统放到嵌入式设备中运行。
五、代码编译的流程
- 预处理:展开头文件、宏替换、去掉注释(test.i main .i)
- 编译:检查语法,生成汇编 (test.s main .s)
- 汇编:汇编代码转换机器码 (test.o main.o)
- 链接:接到一起生成可执行程序 (a.out)
六、嵌入式开发的方向
(1)底层驱动的开发(大方向):开发出硬件设备然后调试
(2)中间件的开发:可划分为应用程序里面的一种。海思这块,就是属于中间件的开发。
(3)应用程序的开发
- 界面类 Qt、minigui等
- 流媒体协议RTSP、RTMP、GB28181等
- 行业协议 104/376规约、JT1078/808等
- 交叉编译 opencv等
第二部分 海思平台简介:
一、海思平台概述
海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供MPI(MPP Programe Interface)接口完成相应功能。该平台支持应用软件快速开发以下功能:输入视频捕获、H.264/MJPEG/JPEG/MPEG4 编码、H264/H.265/VC1/MPEG4/MPEG2/AVS 解码、视频输出显示、视频图像前处理(包括去噪、增强、锐化)、编码码流叠加 OSD、视频侦测分析、智能分析、音频捕获及输出、音频编解码等功能。
二、海思媒体处理平台架构
三、海思mpp调试信息
做海思应用开发的时候,这块会用的比较多。
心得与建议:
一个优秀程序的表现:
- 代码可读性要好
- 程序稳定性高、容错机制强
- CPU使用率
- 内存占用率,一定要控制在合理范围内,下面两个图就是看CPU使用率的,一般是10%~20%。
如何提高自己的个人能力:
- 解决问题从原理性的角度出发去解决问题,而不是去“试”
- 多去学习别人的代码、多学习开源项目
- 保证项目进度的前提下,多思考好的设计方式
开发过程中遇到问题怎么办?
- 多思考、多琢磨
- 遇到问题先要自己思考下,每次解决问题的时候要有个积累,需要记笔记
- 用搜索引擎,很多问题网上能找到相似的答案,思路类似
学习书籍或资料推荐:
- C/C++ 经典书籍(必读)
- 鸟哥的Linux私房菜(不熟悉linux的必读)
- Unix环境高级编程(必读)
- C++ GUI Qt4 编程(选读)
- 韦东山的嵌入式linux 学习教程(选看)
本期学习视频分享:
下期学习预告:git使用入门,想要学习的同学可以在评论区留言,告诉我们想听的课程!
- 分享
- 举报
-
浏览量:1644次2020-08-19 16:43:27
-
浏览量:2382次2020-08-20 18:03:14
-
浏览量:2306次2020-06-03 16:23:42
-
浏览量:1521次2020-08-19 16:35:48
-
浏览量:1956次2020-08-20 18:00:36
-
浏览量:1857次2020-08-03 11:18:53
-
浏览量:8790次2019-09-01 11:08:57
-
浏览量:421次2023-10-27 10:03:42
-
浏览量:2424次2020-08-20 17:57:43
-
浏览量:2416次2020-08-19 16:46:46
-
浏览量:2654次2018-01-25 10:32:15
-
浏览量:396次2023-10-30 16:16:11
-
浏览量:682次2023-09-18 16:40:57
-
浏览量:2308次2020-08-17 18:01:42
-
浏览量:815次2023-12-25 15:42:30
-
浏览量:2072次2020-08-17 18:04:26
-
浏览量:2061次2020-08-17 18:06:38
-
浏览量:1935次2020-08-19 16:45:18
-
浏览量:3278次2020-08-17 18:05:11
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
A-小鲸鱼
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明