1. 嵌入式linux大致启动过程
1)设备上电后CPU启动
2)CPU启动bootloader,bootloader先初始化硬件
3)解压Image并拷贝到内存执行,
4)将内核区的镜像拷贝到内存解压,准备好内核的启动参数
5)内核启动,对各子系统和MMU完成初始化(MMU:cpu用来管理虚拟储存器,物理储存器的控制线路)
6)内核挂载根文件系统
7)内核继续初始化其他驱动程序,第一个进程启动
2. bootloader的工作内容是什么,它需要传递哪些参数给内核
1)bootloader分两部分,第一部分汇编负责初始化CPU,PLL等硬件,第二部分c代码负责串口,网口等驱动的加载,构建shell环境供用户输入。解压镜像准备启动参数
2)传递MTD分区信息和内核启动参数
3.如何把c语言源代码打包成动态库
1) gcc – fPIC -shared -o libxxx.so xxx.c xxx.h
lib后面跟生成的库名 源代码
2)打包静态库:
gcc -c xxx.c //生成.o文件
ar -crlibxxx.a xxx.c //最后面为源文件
gcc -o main main.c-L路径 -l 名字 //使用静态库
3. 说明vmlinux,zImage,uImage的区别
1) ZImage是ARM Linux 常用的压缩映像文件
2) vmlinux 是可引导的,压缩的内核
3) uImage是U-boot专用映像文件(比zImage多了一个0x40的头【说明这个映像文件类型,加载位置,生成时间等】)
4. 在ARM体系中C语言可变参函数的底层实现机制是什么
函数调用的栈结构
5 ARM的处理器模式
有七种模式:常用Usr,IRQ,,svc,abt,und五种模式
(1) Usr用户模式
(2) FIQ快速中断模式
(3) IRQ中断模式
(4) SVC管理模式
(5) SYS系统模式
(6) Abt中止模式
(7) Und未定义模式
6. 什么是RTOS?如何分类?
RTOS:实时操作系统
分类(1)高精度计时系统
(2)多级中断机制
(3)实时调度机制