更多课程 选择中心

嵌入式培训
达内IT学院

400-111-8989

从宏观到微观逐步解读嵌入式Linux整体框架

  • 发布:嵌入式培训
  • 来源:嵌入式ARM
  • 时间:2018-04-24 17:23

本文邀请的访者从事嵌入式linux工作也几年了,算是个工程师。期间写过底层bootloader、内核的驱动和上层应用程序。对于芯片内部的模块也在大学时候用fpga的verilog应用过,所以对于整个嵌入式的框架也算是有点小小的理解,今天他给我们带来从宏观到微观逐步解读嵌入式Linux整体框架,听他从广入深娓娓道来!

首先还是看下最简单的整个框架。

宏观到微观逐步了解了嵌入式linux的整体框架

关于bootloader

1、当板子一上电,因为芯片有boot的功能,自动会从flash搬启动代码并执行处理。这里的代码其实就是bootloader的第一个阶段。其实bootloader就是具有boot和loarder的功能。Boot就是搬代码,引导,loarder就是加载各个需要的驱动。

2、bootloader第一个阶段做的事情,具体做了什么可以看下图。

宏观到微观逐步了解了嵌入式linux的整体框架

3、 bootloader的第一阶段主要是汇编的代码,接着的第二阶段基本是c代码。这里主要是初始化了需要的外围设备,比如说网卡驱动,串口驱动等等,然后启动内核。

4、 启动内核可以从网络启动,也可以sd/emmc卡启动。其主要就是把内核的代码给loard进DDR中,然后执行。

Bootloader的内存分布如下:

关于芯片内的IP核(各模块控制器)

对于芯片内的一些IP核,也就是各个模块的控制器了,其实都是通过FPGA来实现的。FPGA就是现场可编程门阵列。比如拿I2C控制器来说吧。I2C主要就是SDA和SCL两根线了,实现的功能就是传输数据了。在IP核的内部可以实现很多的逻辑,比如说当要发送一个设备地址的时候,主要配一下寄存器,该模块的状态机获取这个数据,然后发送了SDA线的数据是从设备的设备地址,那么从设备就会回应一个低电平,这时这个模块的SDA线有了这个低电平,那么就可以知道这个设备地址发送正确了。而我们不需要知道IP核内部是怎么去处理的,只需要配置个数据给一个寄存器,然后该模块就会做相应的处理。当然可以用模拟的方法,所以这就是IP核的作用了,用配寄存器来实现功能,从而隐藏了内部的工作时序,封装的很好。

至于其他的模块也是同一个原理。

关于内核

当bootloader把内核代码loard进了DDR之后,那么就要启动内核了。内核的启动简单的如下所示:

宏观到微观逐步了解了嵌入式linux的整体框架

当内核启动完成后,就会调用用户的init守护进程了。

关于linux文件系统

当内核调用到linux的文件系统后,那么在控制台终端就可以运行你要的程序。具体和linux操作系统无多大差异。

宏观到微观逐步了解了嵌入式linux的整体框架

关于android文件系统

当找到了android的init程序后。下面的图很好的分析了android的启动过程。

宏观到微观逐步了解了嵌入式linux的整体框架

恭喜你从宏观到微观逐步了解了嵌入式linux的整体框架,由以上就可以知道我们用得手机或者pad到底是怎么实现的。其实嵌入式linux也就这些内容,不过要学好这些,所需要积累的和学习的还是有很多很多的。通览全局,然后逐步深入,学习起来目标性更强,更有兴趣和信心。如果你还有关于嵌入式的问题,欢迎来达内嵌入式培训班得到答案!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:提升自己的嵌入式技能,从掌握这二十条开始!
下一篇:学习嵌入式,怎么能不清楚嵌入式 Nand 中oob、bbt、ecc含义?

嵌入式工程师都知道的嵌入式C的高级用法

入门嵌入式,看不懂电路原理图怎么办?

易操作的嵌入式系统开发技巧有哪些?

嵌入式硬件电路设计中需要注意什么?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省