嵌入式Linux系统:基础知识

1、计算机系统=运算器+控制器+存储器+输入设备+输出设备;

      CPU(中央处理器)=运算器+控制器+寄存器+内部总线;

      MPU(微处理器)=CPU;

      MCU(微控制器)=CPU+存储器+外围电路;

      MPU 通常代表一个 CPU(中央处理器),而 MCU 则强调把中央处理器、存储器和外围电路集成在一个芯片中。早期,微控制器被称为单片机,意思是把计算机集成在一个芯片内。嵌入式微控制器也常被称作片上系统(SoC),含义是在一个芯片上设计了整个系统。举个例子, Intel 的 80386 属于微处理器,而内部集成了 80386 处理器、片选单元、中断控制、定时器、看门狗、定时器、串行 I/O、 DMA、总线仲裁、 DRAM 控制器等的 386EX 则是 80386 微处理器的微控制器版本。嵌入式微控制器一般由一个 CPU 核和多个外围电路集成。

2、单片机属于微控制器(MCU),高端的arm(ARM9、ARM11、A8、A9)属于微处理器(MPU)。两者的区别在于MPU多了两个部件高速缓存(CACHE)、内存管理单元(MMU)。

3、裸机程序就是直接对CPU进行编程,Linux编程是基于Linux操作系统进行的编程。

4、Exynos4412启动流程:iROM→BL1→BL2→uboot→zImage(linux 内核)→挂接文件系统。

    0地址就是iROM,iROM在4412内部,是芯片自带的。4412可以从TF卡启动,也可以从EMMC启动,还可以从USB启动,这些都是4412的作用。

      iROM执行以后,会到外部找程序,找到以后,要拷贝8K的程序到内部RAM,这8K的程序就是BL1。

      BL1执行以后加载BL2,然后把uboot.bin加载到内存去运行。

      Linux启动以后,操作系统会把内存管理单元(MMU)打开。uboot和操作系统的区别:uboot是最大的裸机程序,但是没有多任务运行的机制,不能实现任务调度等操作系统应用的功能。

      Linux必须要挂接一个文件系统。Linux启动到最后,等所有驱动初始化完成以后,最后一步才挂接文件系统。Android、QT、Ubuntu都是文件系统,底层都是Linux内核,可以把Android看作是Linux上跑的一个应用程序。

5、Linux驱动框架:

      (1)Linux把所有设备都看成文件;

      (2)做驱动就是做led_open()、led_read()、led_write()等函数;

      (3)设备文件(/dev)包含主设备号和次设备号信息;

      (4)设备文件就是上层应用和底层驱动的桥梁;

      (5)驱动做好以后,要通过register_chrdev()函数注册到系统,这样自己写的驱动函数和设备就关联起来了。

      (6)上层应用通过调用系统函数open()、read()等,再通过设备文件,间解找到led_open()、led_read()等并执行。

6、建议Linux入门学习步骤:

      (1)理解uboot、kernel(内核)、文件系统的概念;

      (2)学会烧写系统;

      (3)学会编译系统,把上述文件编译生成出来;

      (4)学习Linux应用程序的编写和调试;

      (5)学习最简单的字符类驱动的编写和调试;

      (6)kernel源码。

7、uboot、kernel、文件系统在PC机Ubuntu系统上交叉编译。编译后生成uboot镜像、kernel镜像和文件系统镜像。    

      kernel和uboot可通过交叉编译器arm-2009q3

      android系统源码可通过jdk和gcc

8、镜像如何下载到开发板上运行:

      Windows上使用otg接口,使用fastboot烧写;

      Ubuntu上使用tf卡烧写。都要用到串口控制台。

      

发布了8 篇原创文章 · 获赞 18 · 访问量 8872

猜你喜欢

转载自blog.csdn.net/weixin_38054045/article/details/104136194