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卡烧写。都要用到串口控制台。
1、计算机系统=运算器+控制器+存储器+输入设备+输出设备;
来源:CSDN
作者:*夜空中最亮的星*
链接:https://blog.csdn.net/weixin_38054045/article/details/104136194