您的当前位置:首页正文

08-(嵌入式学院)嵌入式linux系统移植试题答案-1

2023-08-05 来源:意榕旅游网
嵌入式Linux系统移植试题(时间:1个半小时)

一、选择题(每题2分,共50分,包括单选和多选,多选、少选均不得分)

1. 嵌入式linux系统移植包括( ABC )

[A] bootloader [B] linux内核 [C] 根文件系统 [D] 应用程序

2. 一般情况下,在搭建嵌入式linux开发环境时主机需要安装的软件有( ABC )

[A] 串口通信软件 [B] tftp服务器 [C] nfs服务器 [D] http服务器

3. 下列选项中符合gcc的编译流程的是( A )

[A] 预处理->编译->汇编->连接 [B] 预处理->汇编->编译->连接 [C] 编译->预处理->汇编->连接 [D] 预处理->连接->汇编->编译

4. gcc使用下列哪个选项可以查看编译的详细过程( B ) [A] -o [B] -v [C] -E [D] -g

5. 下列二进制工具哪个是丢弃目标文件的全部或者特定符号,减少文件体积的( D ) [A] size [B] as [C] nm [D] strip

6. 下列二进制工具哪个是用来反汇编的( B )

[A] nm [B] objdump [C] objcopy [D] string

7. 下列二进制工具哪个是用来进行目标格式转换的( C ) [A] nm [B] objdump [C] objcopy [D] string

8. 下列二进制工具哪个是用来把程序地址转换为文件名和行号的( D )

[A] nm [B] objdump [C] objcopy [D] addr2line

9. 下列二进制工具哪个是用来将目标文件生成静态库的( A )

[A] ar [B] nm [C] objcopy [D] objdump

10. FSC1000开发平台上,linux要求bootloader将内核参数存储在什么位置( B )

[A] 0x20008000 [B] 0x20000100 [C] 0x20004000 [D] 0x27e0000

11. linux要求bootloader将平台号保存在( B )

[A] r0 [B] r1 [C] r2 [D] r3

12. linux要求bootloader在运行内核前,让系统进入何种模式( B )

1

[A] user [B] svc [C] system

13. bootloader向内核传参的方式有( AD )

[A] param_struct [B] cmd_tbl_t [C] char * [D] tag

14. u-boot的命令中,设置环境变量的命令是( A ) [A] setenv [B] printenv [C] tftp [D] bootm

15. u-boot中存放内核启动参数的环境变量是( C )

[A] bootcmd [B] bootdelay [C] bootargs [D] ipaddr

16. 在内核配置时,哪个关键词是来包含下一级Kconfig ( B )

[A] menu endmenu [B] source [C] choice endchoice [D] depends on

17. 内核启动过程中,如果终端出现”Error:a”错误,可能出现的原因是( B ) [A] 内核不支持当前处理器

[B] 内核不支持当前开发平台

[C] 内核获取不到bootloader传递来的参数 [D] 内核初始化终端出现错误

18. 内核启动过程中,如果终端出现”Error:p”错误,可能出现的原因是( A ) [A] 内核不支持当前处理器

[B] 内核不支持当前开发平台

[C] 内核获取不到bootloader传递来的参数 [D] 内核初始化终端出现错误

19. 下列函数适合在内核解压后,console初始化以前使用的是( B ) [A] puts [B] printascii [C] printk [D] printf

20. 当console初始化以后,一般最为简单的内核调试方式为 ( A ) [A] printk [B] puts [C] bdi2000 [D] kgdb

21. 下列哪些文件系统可以运行在nand flash上,并具有可读写特性( AB )

[A] yaffs2 [B] jffs2 [C] cramfs [D] tmpfs [E] ios9660

22. 下列哪些文件系统可以运行在nand flash上,并具只读特性( C )

[A] yaffs2 [B] jffs2 [C] cramfs [D] tmpfs

23. 下列不占用任何磁盘空间的文件系统是( D )

2

[A] yaffs2 [B] jffs2 [C ] cramfs [D] tmpfs

24. 在命令mknod /dev/ttySAC0 c 4 64中,‘c’代表( A )

[A] 字符设备 [B] 块设备 [C] 网络设备

25. 在用busybox制作根文件系统时,对inittab文件中的action,如果要求在程序执行前按enter键进行确认的是( A )

[A] askfirst [B] respawn [C ] sysinit [D] wait

二、简答题(前5题每题8分,最后一题10分,共50分)

1. 简述嵌入式linux系统移植的主要内容有哪些?

1> 搭建交叉开发环境 2> 移植bootloader 3> 移植linux内核 4> 制作根文件系统

2. 什么是bootloader,其作用是什么? 列举三种ARM平台常用的bootloader

bootloader是系统加电或复位时首先运行的一段代码,其作用是对系统的软硬件做相应 的初始化,为操作系统的加载运行做好准备。 u-boot redboot blob vivi

3.描述u-boot启动流程

u-boot启动分为两个阶段:

第一个阶段用汇编实现。设置中断向量表->设置SVC模式、中断和时钟 -> 关闭看门狗、mmu和cache->初始化内存控制器->自搬移->设置堆栈、清空bss段

第二个阶段用C实现。调用一系列初始化函数->初始化Flash设备和环境变量-> 初始化网络设备->进入循环

4.分析以下代码段(逐行分析)。 int disable_interrupts (void) {

unsigned long old,temp; 定义变量 old, temp

__asm__ __volatile__( 声明内嵌汇编,通知编译器不用优化

\"mrs %0, cpsr\\n\" 读取cpsr寄存器的值到参数1

3

\"orr %1, %0, #0xc0\\n\" 参数1的值和0xc0按位或操作后保存到参数2 \"msr cpsr_c, %1\" 参数2的值写入cpsr_c

: \"=r\" (old), \"=r\" (temp) 定义内嵌汇编的输出部分:old是参数1,temp是参数2,均通过寄存器参与运算 :

: \"memory\"); 通知编译器内嵌汇编代码会修改内存

return (old & 0x80) == 0; 判断在原先的状态寄存器中是否开启了中断 }

5.分析以下链接脚本内容,并大致画出内存分布图:

OUTPUT_FORMAT(\"elf32-littlearm\ 指定输出的可执行文件是elf格式,32位ARM指令,小端

OUTPUT_ARCH(arm) 指定输出的可执行文件的平台为ARM ENTRY(_start) 指定输出的可执行文件的入口为_start SECTIONS {

. = 0x00000000; 从0x0位置开始 . = ALIGN(4); 以4字节对齐 .text : 定义代码段 {

arch/arm/cpu/armv7/start.o (.text) 代码段的第一部分 *(.text) 其它代码部分 }

. = ALIGN(4);

.rodata : { *(.rodata*) } 定义只读数据段

. = ALIGN(4);

.data : { *(.data) } 定义数据段

. = ALIGN(4); . = .;

__u_boot_cmd_start = .; 把当前地址赋值给__u_boot_cmd_start

.u_boot_cmd : { *(.u_boot_cmd) } 定义u_boot_cmd段,把所有的uboot命令放在该段

__u_boot_cmd_end = .; 把当前地址赋值给__u_boot_cmd_end

4

. = ALIGN(4); .bss : {

__bss_start = .; 把当前地址赋值给__bss_start,即bss段的开始位置 *(.bss) } 定义bss段

__bss_end__ = .;把当前地址赋值给__bss_end__,即bss段的结束位置 }

6. 回答以下内核相关问题:

⑴ 分别编译内核镜像和模块的命令是什么?

make zImage make modules

⑵ 以SMDKC100平台为例,第一次配置内核时,应使用的缺省内核配置文件是什么?

arch/arm/configs/s5pc100_defconfig

⑶ 以SMDKC100平台为例,存放平台代码的文件是什么(完整路径)?

arch/arm/mach-s5pc100/mach-smdkc100.c

⑷ 内核解压后的入口在哪个文件?

arch/arm/kernel/start.S

⑸ printk支持几种打印级别?

8种(0~7)

5

因篇幅问题不能全部显示,请点此查看更多更全内容