嵌入式linux基础面试题

时间:2021-09-06 11:57:32

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