嵌入式开发入门—Linux

A-小鲸鱼 2020-07-17 16:50:14 3831
第一部分 嵌入式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)应用程序的开发

第二部分 海思平台简介:
一、海思平台概述

海思提供的媒体处理软件平台(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使用入门,想要学习的同学可以在评论区留言,告诉我们想听的课程!

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 4 9 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
A-小鲸鱼
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区