Linux开发基本概念

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

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

3、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上跑的一个应用程序。

4、Linux驱动框架:

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

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

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

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

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

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

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

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

      (2)学会烧写系统;

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

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

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

      (6)kernel源码。

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

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

      android系统源码通过jdk和gcc

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

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

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

      

猜你喜欢

转载自blog.csdn.net/santirenpc/article/details/82886883