嵌入式linux基础面试题

2019-07-12 18:04发布

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)实时调度机制