linux系统移植答案.doc_第1页
linux系统移植答案.doc_第2页
linux系统移植答案.doc_第3页
linux系统移植答案.doc_第4页
linux系统移植答案.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式Linux系统移植试题(时间:个半小时)一、选择题(每题2分,共50分,包括单选和多选,多选、少选均不得分)1. 嵌入式linux系统一般由哪几部分组成(ABCD)A bootloaderB linux内核 C 根文件系统 D用户应用程序2. 一般情况下,在搭建嵌入式linux开发环境的主要工作中,配置主机必须的软件有(A)A 终端软件B tftp服务器 C nfs服务器 Dusb3. 下列选项中符合gcc的编译流程的是(A)A 预处理-编译-汇编-连接B 预处理-汇编-编译-连接 C 编译-预处理-汇编-连接 D预处理-连接-汇编-编译4. gcc使用下列哪个选项可以查看编译的详细过程(B) A -oB -v C -E D -g 5. 下列二进制工具哪个是丢弃目标文件的全部或者特定符号,减少文件体积的(D) A sizeB as C nm D strip6. 下列二进制工具哪个是用来反汇编的(B) A nmB objdump C objcopy D string7. 下列二进制工具哪个是用来进行目标格式转换的(C) A nmB objdump C objcopy D string8. 下列二进制工具哪个是用来把程序地址转换为文件名和行号的(D) A nmB objdump C objcopy D addr2line9. 下列二进制工具哪个是用来将目标文件生成静态库的(A) A arBnm C objcopy D objdump10. FS2410开发板如果从nand flash启动,启动后(B)访问到nor flash;如果从nor flash启动,启动后(A)访问nand flash。A 可以B 不可以 11. SMDK2410开发平台上,linux要求bootloader将内核参数存储在什么位置(B)A 0x30008000 B 0x30000100 C 0x30004000 D 0x33f8000012. SMDK2410开发平台上,linux要求bootloader将平台号保存在(B) A r0B r1 C r2 D r3 13. SMDK2410开发平台上,linux要求bootloader在运行内核前,让系统进入何种模式(B) A userB svc C system14. u-boot所支持的命令中,哪个是来设置环境变量的(A) A setenv B mm C mtest D bootm15. u-boot支持的命令中,哪个是擦除nor flash的命令( C )A nand eraseB protect C erase D cp16. 在内核配置时,哪个关键词是来包含下一级Kconfig (C) A menu endmenuB source C choice endchoice D depends on17. 内核启动过程中,如果终端出现”Error:a”错误,可能出现的原因是(B) A 内核不支持当前处理器B 内核不支持当前开发平台 C 内核获取不到bootloader传递来的参数 D 内核初始化终端出现错误18. 内核启动过程中,如果终端出现”Error:p”错误,可能出现的原因是(A) A 内核不支持当前处理器B 内核不支持当前开发平台 C 内核获取不到bootloader传递来的参数 D 内核初始化终端出现错误19. 下列函数适合在内核解压后,console初始化以前使用的是(B) A putsB printascii C printk D printf20. 当console初始化以后,一般最为简单的内核调试为 (A)A printkB puts C bdi2000 D kgdb21. 下列哪些文件系统可以运行在nand flash上,并具有可读写特性(AB )(多选)A yaffs2B jffs2 C cramfs D tmpfs Eramfs22. 下列哪些文件系统可以运行在nand flash上,并具只读特性(C )A yaffs2B jffs2 C cramfs D tmpfs Eramfs23. 下列哪些文件系统不占用任何磁盘空间的文件系统是( DE )(多选)A yaffs2B jffs2 C cramfs D tmpfs Eramfs24. 在命令mknod /dev/ttyS0 c 4 64中,c代表(A)A 字符设备B 块设备 C 网络设备25. 在用busybox制作根文件系统时,对inittab文件的action,如果要求在程序执行前按enter键进入终端,符合的是(A)A askfirstB respawn C sysinit Dwait二、简答题(前6题每题6分,后两题每题7分,共50分)1. 简述搭建嵌入式linux开发环境所涉及的工作内容有哪些? 1 制作交叉编译工具链 2 配置超级终端 3 烧写bootloader到flash 4 下载内核映像到开发板(通过tftp) 5 制作文件系统2. 什么是bootloader,linux bootloader的作用是什么,列举几种嵌入式系统中常用的bootloader?1.Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 嵌入式Linux系统中常用的bootloader有armboot、redboot、blob、u-boot等3.简述u-boot启动流程?大多数bootloader都分为stage1和stage2两大部分,uboot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1并且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。2.1 stage1 (start.s代码结构)uboot的stage1代码通常放在start.s文件中,它用汇编语言写成,其主要代码部分如下:(1)定义入口 。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。(2)设置异常向量(ExceptionVector)。(3)设置CPU的速度、时钟频率及中断控制寄存器。(4)初始化内存控制器 。(5)将ROM中的程序复制到RAM中。(6)初始化堆栈 。(7)转到RAM中执行,该工作可使用指令ldrpc来完成。2.2 stage2 C语言代码部分lib arm/board.c中的start armboot是C语言开始的函数,也是整个启动代码中C语言的主函数,同时还是整个uboot(armboot)的主函数,该函数主要完成如下操作:(1)调用一系列的初始化函数。(2)初始化Flash设备。(3)初始化系统内存分配函数。(4)如果目标系统拥有NAND设备,则初始化NAND设备。(5)如果目标系统有显示设备,则初始化该类设备。(6)初始化相关网络设备,填写IP、MAC地址等。(7)进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。4. 简述在fs2410上移植linux-2.6.26内核的一般步骤和注意的事项?1.准备开发板和相关配件要清楚自己的开发板的配置(有那些外围设备等)2.下载内核源码、取得相关工具软件Kernel,gcc,jtag 3.选定参考板选择一个内核中已经支持,且和自己的开发部相似的参考板为原型,进修修改4.修改开发板相关代码完成BSP的修改移植如:arch/arm/mach-s3c2410/ 目录 5.添加驱动先添加基本驱动代码 (如:网卡)6.编译、调试、下载内核内核的配置注意事项 arch/arm/mm/Kconfig: # ARM920T config CPU_ARM920Tbool Support ARM920T processor“ arch/arm/mm/Makefile obj-$(CONFIG_CPU_ARM920T) += proc-arm920.o make menuconfig System Type - * Support ARM920T processor 5.分析一下代码段。int disable_interrupts (void)unsigned long old,temp;_asm_ _volatile_(mrs %0, cpsrn orr %1, %0, #0xc0n msr cpsr_c, %1 : =r (old), =r (temp) : : memory);return (old & 0x80) = 0;Old和temp作为输出变量,用寄存器方式而不是内存方式访问它们。old 作为%0,temp作为%1,memory表示告诉编译器内存被修改过了,这段汇编将cpsr或上0xc0,检查以前的cpsr值,检查第7位,返回的是将第7位取反的结果。6.分析一下连接脚本内容,并大致画出内存分布图:OUTPUT_FORMAT(elf32-littlearm, elf32-littlearm, elf32-littlearm)/*OUTPUT_FORMAT(elf32-arm, elf32-arm, elf32-arm)*/OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS. = 0x00000000;. = ALIGN(4);.text : cpu/arm920t/start.o(.text) *(.text). = ALIGN(4);.rodata : *(.rodata) . = ALIGN(4);.data : *(.data) . = ALIGN(4);_u_boot_cmd_start = .;.u_boot_cmd : *(.u_boot_cmd) _u_boot_cmd_end = .;. = ALIGN(4);_bss_start = .;.bss : *(.bss) _end = .;OUTPUT_FORMAT(elf32­littlearm, elf32­littlearm, elf32­littlearm);指定输出可执行文件是elf格式,32位ARM指令,小端OUTPUT_ARCH(arm);指定输出可执行文件的平台为ARMENTRY(_start);指定输出可执行文件的起始代码段为_start.SECTIONS. = 0x00000000 ; 从0x0位置开始. = ALIGN(4) ; 代码以4字节对齐.text : ;指定代码段cpu/arm920t/start.o (.text) ; 代码的第一个代码部分*(.text) ;其它代码部分. = ALIGN(4) .rodata : *(.rodata) ;指定只读数据段. = ALIGN(4);.data : *(.data) ;指定读/写数据段. = ALIGN(4);.got : *(.got) ;指定got段, got段式是uboot自定义的一个段, 非标准段_u_boot_cmd_start = . ;把_u_boot_cmd_start赋值为当前位置, 即起始位置.u_boot_cmd : *(.u_boot_cmd) ;指定u_boot_cmd段, uboot把所有的uboot命令放在该段._u_boot_cmd_end = .;把_u_boot_cmd_end赋值为当前位置,即结束位置. = ALIGN(4);_bss_start = .; 把_bss_start赋值为当前位置,即bss段的开始位置.bss : *(.bss) ; 指定bss段_end = .; 把_end赋值为当前位置,即bss段的结束位置7. 简述通过busybox制作根文件系统的步骤?1.下载busybox源码包2.解压源码包3.进入busybox的文件夹,使用make menuconfig进入设置,配置需要的功能。4.安装建立busybox文件系统5.建立好自己的文件系统后,用NFS测试 8. 简述制作ramdisk文件系统的步骤

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论