2023年8月2日发(作者:)
参考答案
第一章
一、填空题。
1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。
2、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。
4、嵌入式处理器目前主要有ARM、MIPS、Power PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。
5、常见的嵌入式操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。
6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。
二、选择题
1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备: 、存储器(SDRAM、ROM等)、设备I/O接口等。(A)
A、嵌入式处理器 B、嵌入式控制器
C、单片机 D、集成芯片
2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为 ,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。(D)
A、分时多任务操作系统 B、多任务操作系统
C、实时操作系统 D、实时多任务操作系统
3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是 。(B)
A、Palm B、VxWorks
C、Linux D、WinCE
[在此处键入]
• 2 •
4、嵌入式系统设计过程中一般需要考虑的因素不包括:(D)
A、性能 B、功耗
C、价格 D、大小
5、在嵌入式系统中比较流行的主流程序有:(A)
A、Angel B、Blob
C、Red Boot D、U-Boot
三、叙述题
1、举例说明身边常用的嵌入式系统。
生活中最常见的嵌入式系统恐怕要数智能手机了,包括Symbian、Windows
Mobile、Android等手机嵌入式系统。还有,如路由器也是一个典型的嵌入式系统。
2、如何理解嵌入式系统,谈谈自己的理解。
嵌入式系统是指:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。他具有如下特点: 1、嵌入式系统是面向产品、面向用户、面向应用的。2、嵌入式系统是一个技术密集、集成度高、需要不断创新的集成系统。3、嵌入式系统必须根据应用场合对软硬件进行必要的裁剪已实现需要的功能。
3、简述嵌入式系统的开发方法有哪几种。
目前,嵌入式系统的开发有模拟开发调试、嵌入式在线仿真和远程调试等几种方法。
4、结合当前嵌入式系统的发展,想象一下嵌入式系统的应用前景。
嵌入式系统技术有着非常广泛的应用前景,其领域包括:工业控制领域、信息家电领域、机器人领域、POS网络及电子商务领域、家庭智能管理系统、交通管理领域、环境工程与自然领域等。
第二章
一、填空题。
1、Linux具有UNIX的所有特性并且具有自己独特的魅力,主要表现在:开放性、多用户、多任务、友好的用户界面、设备独立性、丰富的网络功能、文件传输、远程访问、可靠的安全性、良好的可移植性、X Window系统、内存保护模式。
2、Linux一般包括四个主要部分:内核(Kernel)、命令解释层(Shell或其他操作环境)、文件结构(File Structure)和实用工具。 3、目前几乎所有的Linux发行版本中都包含了Gnome和KDE两种图形操作环境。
4、在当前目录下建立目录,应使用命令:mkdir linux;查看当前路径应使用命令:pwd;chmod 765 的作用是:使文件的拥有者权限、文件组权限和其他用户拥有相应的权限。
5、Linux内核主要由:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信五个子系统组成。
二、选择题
1、下列(D)系列处理器是Ubuntu不支持的。
A、ARM B、AMD
C、X86 D、51单片机
2、启动shell环境时,屏幕上显示“[arm@www home]$”,其中的arm的意义是(B)。
A、arm架构 B、用户名
C、文件夹 D、路径
3、使用ls命令时,如果想对文件名中的不可显示字符用八进制逃逸字符显示,则应该选用的参数是(A)。
A、-b B、-a
C、-l D、-R
4、解压文件可使用命令(C)。
A、tar jxvf B、tar jxvf
C、tar zxvf D、tar czvf
5、下列不属于Linux用的文件系统是(D)。
A、ext2 B、ext3
C、nfs D、ntfs
三、叙述题
1、简述linux与windows的主要异同。
Windows操作系统是在个人计算机上发展起来的,在许多方面受到个人计算机硬件条件的限制,这些操作系统必须不断地升级才能跟上个人计算机硬件的进步;而Linux操作系统却是以另外一种形式发展起来的,Linux是UNIX操作系统用于个人计算机上的一个版本,UNIX操作系统已经在大型机和小型机上使用了几十年,直到现在仍然是工作站操作系统的首选平台。
Linux给个人计算机带来了能够与UNIX系统相比的速度、效率和灵活性,使个人计算机所具有的潜力得到了充分发挥。Linux与Windows工作方式存在一些根本的区别,这些区别只有在用户对两者都很熟悉之后才能体会到,但它们却是Linux思想的核心。
• 4 •
2、目前主流的图形界面环境有哪些?它们各有什么有缺点?
目前主流的图形界面环境有KDE和GNOME两种图形环境。
KDE与GNOME项目拥有相同的目标,就是为Linux开发一套高价值的图形操作环境,两者都采用GPL公约发行,不同之处在于KDE基于双重授权的Qt,而GNOME采用遵循 GPL的GTK库开发—后者拥有更广泛的支持。不同的基础决定两者不同的形态:KDE包含大量的应用软件、项目规模庞大,因为没有太多的第三方开发者为 KDE开发重量级软件;由于自带软件众多,KDE比GNOME丰富多彩,加上使用习惯接近Windows,会更容易上手一些。但KDE的毛病在于运行速度 相对较慢,且部分程序容易崩溃(当然整个KDE崩溃的情况极少出现)。GNOME项目专注于桌面环境本身,由于软件较少、运行速度快,且稳定性相当出色, 完全遵循GPL公约的属性让它赢得重量级厂商的支持。从当前的情况来看,GNOME已经成为Novell、RedHat企业发行版的默认桌面,更偏向于商 务领域;而丰富多彩的KDE有朝向家用和娱乐方向发展的趋势,它比GNOME显然更有趣味性一些。
3、在linux中如何使用mount命令挂载U盘?
首先使用fdisk -l查看一下磁盘分区情况:
然后使用命令:mount –t vfat /dev/sdb1 /mnt/USB
4、如何设置linux操作系统的网络参数?
使用类似的命令:
ifconfig eth0:192.168.1.15 netmask 255.255.255.0
其中192.168.1.15为ip,255.255.255.0为子网掩码。
5、简要分析linux内核的各个组成部分。
Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。其中,进程调度(SCHED)控制进程对CPU的访问;内存管理(MM)允许多个进程安全的共享主内存区域;虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统;进程间通讯(IPC) 支持进程间各种通信机制。
第三章
一、填空题。
1、ARM9系列微处理器在高性能和低功耗方面提供最佳的性能:它具有3级整数流水线,指令执行效率更高;提供1.1MIPS/MHz的哈佛总线结构;支持32位ARM指令集和16位Thumb指令集;支持32位的高速AMBA总线接口。 2、ARM芯片的内核一般包括以下几个单元:ARM9TDMI32RISC处理器、数据缓存器(Data Cache)、指令缓存(Instruction Cache)、指令存储管理单元(Instruction MMU)、数据存储管理单元(Data MMU)、写缓冲(Write Buffer)和回写存储单元(Write Back PA TAG RAM)。
3、ARM处理器共有37个寄存器,其中31为通用寄存器,6个状态寄存器,这些寄存器都是32位。
4、ARM系统中寻址方式主要有立即寻址、寄存器寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、相对寻址和堆栈寻址。
5、ARM微处理器的指令集可以分为以下六大类:跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储(Load/Store)指令、协处理器指令和异常中断产生指令。
二、选择题
1.指令ADD R0,R0,#1第三个操作数得寻址方式是(A)
A.立即寻址 B. 寄存器寻址 C. 寄存器间接寻址 D. 基址变址寻址
2.指令LER R3,[R4]第二个操作数的寻址方式是(C)
A. 立即寻址 B. 寄存器寻址 C. 寄存器间接寻址D. 基址变址寻址
R0,[R1,#4] 第二个操作数的寻址方式是(D)
A. 立即寻址 B. 寄存器寻址 C. 寄存器间接寻址D. 基址变址寻址
4.假设R0和R1寄存器中的值分别为8和6,执行指令:LDR R0,[R1,#8]!,则寄存器R0和R1中的值分别为(B)
A. 8,6 B. 14,6 C. 14,14 D. 16,14
5.栈是一种数据结构,本质上是内存中一段连续的地址,对其最常见的操作为“压栈”(PUSH)和“出栈”(POP),以临时保存数据。其出入栈规则是(B)。
A. 先进先出 B. 先进后出 C. 只进不出D. 只出不进
三、叙述题
1、ARM处理器的运行模式有哪几种,各有什么特点?
ARM微处理器的运行模式有7种,分别为:
用户模式(User,usr):正常程序执行时,ARM处理器所处的状态。
快速中断模式(FIQ,fiq):用于快速数据传输和通道处理。
外部中断模式(IRQ,irq):用于通常的中断处理。
特权模式(Supervisor,sve):供操作系统使用的一种保护模式。
数据访问中止模式(Abort,abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护。
未定义指令终止模式(Undefined,und):用于支持硬件协处理器软件仿真。
系统模式(System,sys):用于运行特权级的操作系统任务。 • 6 •
2、ARM存储器的组织主要有哪些类型,各有什么特点?
ARM储存器的组织最要有2大类型,分别为小端格式和大端格式,也称为小端次序(Little endian)和大端次序(Big endian)的字节序(byte order)。两种储存类的区别在于一个32位的数据存放到储存器中的时候,到底是高位字节放在高地址还是低地址的区别。
3、ARM微处理器选型时应注意:
1、ARM微处理器内核的选择
2、系统的工作频率
3、芯片内存储器的容量
4、片内外围电路的选择
第四章0
一、填空题。
1、在ARM/Thumb汇编语言程序中,程序是以程序段的形式呈现的。程序段是具有特有名称的相对独立的指令或数据序号。程序段有两大类型代码段、数据段。
2、基于linux下GCC汇编语言,代码表号必须在一行的顶端,后面要加上 :,注释的内容可以在前面加上@。
3、在ARM的汇编程序中,伪指令种类繁多,可以细分为以下几种伪指令:符号定义伪指令(Symbol Definition)、数据定义伪指令(Data Definition)、汇编控制伪指令(Assembly Control)、宏指令
4、linux下的嵌入式程序开发,主要需要的代码编辑器,如vi和gedit,另外还需要编译器gcc、调试器gdb以及项目管理器make。
5、Vi编辑器基本上有三种基本状态,分别是:命令模式(command mode)、插入模式(insert mode)和底行模式(last line mode)。
6、使用gcc编译文件生成可执行文件要经历四个相互关联的步骤:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。
二、选择题
1、1.假如使用伪指令定义一个局部的数据量,变量名为temp,然后给其赋值为8,汇编代码为(A)
A. LCLA temp;temp SETA 0x08; B. LCLA temp;temp SETL 0x08;
C. GBLA temp;temp SETA 0x08; D. GBLA temp;temp SETL 0x08;
2、在vi处于命令行模式时,如果需要对文本进行修改,欲在光标所在位置的下一个位置开始输入文字,则(B)
A、按下字母“i”进入插入模式 B、按下字母“a”进入插入模式
C、按下字母“o”进入插入模式 D、按下字母“n”进入插入模式 3、当前vi处于插入模式,先放弃对文本的修改,即不保存退出vi,则(C)。
A、使用“:q!”命令
B、使用“:wq!”命令
C、先按下“ESC”后,再使用“:q!”命令
D、先按“ESC”后,再使用“:wq!”命令
4、经过汇编之后,生成的目标文件的后缀名为(C)。
A、.c B、.s
C、.o D、.exe
5、对代码文件code.c进行调试的命令为(A)。
A、$gcc –g code.c –o code B、$gcc code.c –o code
C、$gcc –g code.c code D、$gcc –g code
三、叙述题
1、汇编语言和C的混合编程通常有以下几种方式,各有什么特点?
汇编语言与C的混合编程通常有以下几种方式:在C代码中嵌入汇编指令;在汇编程序和C的程序之间进行变量的互访;汇编程序、C程序间的相互调用。
2、如何使用调试器gdb进行代码调试,具体的调试方法有哪些?
查看文件、设置和查看断点、运行代码、查看变量值、单步运行、恢复程序运行。
3、项目管理器的作用主要是什么?
make就是实现这样的功能:它读入一个文件,叫makefile,这个文件不仅决定了源文件之间的依赖关系,而且还决定了源文件什么时候该编译什么时候不应该编译。
第五章
一、填空题。
1、SMDK2440平台的开发板采用的处理器是S3C2440,其主频一般为400M。
2、windows软件环境的设置一般包括以下几部分:超级终端的设置、DNW设置、GIVEIO驱动的设置和USB驱动
3、在windows系统上建立基于linux嵌入式开发环境一般有三种方案可以选择分别是Windows系统下安装虚拟机Vmware、Windows+Linux双系统安装、基于Windows操作系统下的Cygwin
4、UBUNTU的网络设置可以采用命令行方式、也可以采用图形界面操作方式来配置。5、开发板硬件平台是基于三星S3C2440的SMDK2440平台的目标板,使用的刻录软件为SJF2440。
二、选择题
1、为了通过PC的串口和开发板进行交互,需要使用(C)。 • 8 •
A、USB设置 B、同步
C、超级终端 D、网络连接
2、在嵌入式linux的开发中,能实现上传下载文件、刻录文件、运行映像等功能工具是(D)。
A、DNS B、FTP
C、Telnet D、DNW
3、由普通用户账户转为管理员账户登录,使用的命令为(D)。
A、$sudo root B、$sudo administrator
C、$su administrator D、$su root
4、安装FTP服务器时,在终端输入的命令为(B)。
A、$apt-get install vsftpd B、$sudo apt-get install vsftpd
C、$apt-get install ftp D、$sudo apt-get install ftp
5、安装Telnet服务时,在终端输入的命令为(A)。
A、$sudo apt-get install xinetd telnetd B、$apt-get install
xinetd telnetd
C、$apt-get install telnetd D、$sudo apt-get install
telnetd
三、叙述题
1、建立基于Linux嵌入式开发环境一般有三种方案可以选择:一是在Windows系统下安装虚拟机Vmware。二是Windows系统和Linux系统同时安装。三是基于Windows操作系统下的Cygwin。
2、参看教材5.3。
3、参看教材5.4。
第六章
一、填空题。()
1、交叉开发工具链就是为了编译、链接、处理和调试跨平台体系结构的程序代码。每次执行工具链软件,通过带有不同的参数,可以实现编译、链接、处理、调试等不同的功能。
2、linux经常使用的工具链软件有Binutils、Gcc、Glibc和Gdb。
3、分布构建交叉编译工具链的制作过程需要以下几步:编译binutils、编译辅助gcc编译器、编译glibc库、重新编译完整的gcc。
4、使用crosstool构建交叉编译工具链的制作过程需要以下几步:准备工作、建立脚本文件、建立配置文件、执行脚本文件和编译gdb调试器。
5、使用crosstool构建交叉编译工具链的制作过程中需要的配置文件,其主要作用是定义配置文件、定义生成编译工具链的名称、定义编译选项等。
二、选择题 1. (B) 是二进制程序处理工具,包括连接器,汇编器等目标程序处理的工具。
A. Gcc B. Binutils C. Glibc D. Gdb
2.构建交叉编译器的第一个步骤是(D)。
A. 下载工具 B. 编译所需文件 C.实现平台连接 D. 确定目标平台
3、分析以下代码
#export PRJROOT=/home/arm/armlinux
#export TARGET=arm-linux
#export PREFIX=$PRJROOT/$TARGET
其中,变量PREFIX代表的路径为(B)。
A、/home/arm/armlinux B、/home/arm/armlinux/arm-linux
C、/home/arm/arm-linux D、/home/arm/arm-linux/armlinux
4. Binutils是gnu工具之一,他包括连接器、汇编器和其他用于目标文件和档案的工具,特使二进制代码的处理维护工具。其中包括(A)命令,他是把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。
A. ld B. gprof C. arc D. as
5.分布构建交叉编译链的过程有两次变异gcc,其中第二次进行编译的作用是(获得glibc库的支持)
A.获得newlib库的支持 B. 获得glibe库的支持
C. 获得uClibe库的支持 D. 获得c库的支持
三、叙述题
1、构建交叉工具链有那几种方法?
通常构建交叉工具链有三种方法:
方法一、分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。方法二、通过Crosstool脚本工具来实现一次编译生成交叉编译工具链,该方法相对于方法一要简单许多,并且出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链;方法三、直接通过网上下载已经制作好的交叉编译工具链。
第七章
一、填空题。
1、Bootloader,亦称引导加载程序,是系统加电后运行的第一段软件代码。
2、一般Bootloader包含两种不同的操作模式:启动加载模式(Bootloading)和下载模式(Downloading)。
3、Bootloader的主要功能是引导操作系统启动,它的启动方式有网络启动、磁盘启动和Flash启动三种。
4、Vivi运行的第一阶段主要完成以下工作:屏蔽所有中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED和关闭CPU内部指令/数据cache。 • 10 •
二、选择题
1、在Bootloader的启动方式中,Flash启动方式通常有两种,一种是可以直接从Flash启动,另一种时可以将压缩的内存映像文件从Flash中复制、解压到 C ,再从中启动。
A、ROM B、SDRAM C、RAM D、Flash
2、在各种Bootloader中, B 是以PPCBoot和ARMBoot为基础的通用加载程序,并且在ARM、PowerPC以及MIPS等多种平台上运行。
A、Vivi B、U-boot C、RedBoot D、s-hboot
3、在编译Vivi之前将Vivi里所有的“*.o”和“*.”文件删除,以确保文件编译时没有错误或者警告发生,使用的命令格式为(D)。
A、make distclean B、make clean C、make menuconfig D、make config
4、编译Vivi时,如果编译成功,在/vivi里面会生成三个vivi文件,其中不包括文件(D)。
A、vivi B、 C、vivi-elf D、
5、把二进制文件载入Flash或RAM使用的命令是(A)。
A、load B、part C、boot D、bon
三、叙述题
1、简述Bootloader的主要功能。
BootLoader,亦称引导加载程序,是系统加电后运行的第一段软件代码。它是整个系统执行的第一步,所以它的地位在整个嵌入式软件系统中是非常重要的。
2、Vivi作为一种Bootloader,其运行过程分成两个阶段,第一阶段的代码在Vivi/arch/s3c2440/head.s中定义,大小不超过10 KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C2440的一些寄存器、时钟等的初始化,然后跳转到第二阶段执行;
第二阶段的代码在Viviinitmain.c中,主要进行一些开发板初始化、内存映射和内存管理单元初始化等工作,最后会跳转到boot_or_Vivi()函数中,接收命令并进行处理。需要注意的是在Flash中执行完内存映射后,会将Vivi代码拷贝到SDRAM中执行。
3、U-Boot则支持大多CPU,可以烧写EXT2、JFFS2文件系统映象,支持串口下载、网络下载,并提供了大量的命令。相对于Vivi,它的使用更复杂,但是可以用来更方便地调试程序;
Vivi是Mizi公司针对SAMSUNG的ARM架构CPU专门设计的,基本上可以直接使用,命令简单方便。不过其初始版本只支持串口下载,速度较慢。在网 上出现了各种改进版本:支持网络功能、USB 功能、烧写YAFFS文件系统映象等。
第八章
一、填空题。
1、ARM-Linux内核的配置系统由三个部分组成,它们分别是Makefile、配置文件和配置工具。
2、配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中使用的配置命令进行解释;而后者则是提供基于字符界面、基于Ncurses图形界面以及基于X Window图形界面的用户配置界面。
3、Makefile文件主要包含注释、编译目标定义和适配段。
4、Linux内核常用的配置命令有make oldconfig、make config、make
menuconfig和make xconfig。其中以字符界面配置的命令是make config。
5、内核编译结束后,会在“/arch/arm/boot/”目录下面和根目录下面生成一个名为zImage的内核镜像文件。
二、选择题
内核中的makefile以及与makefile直接相关的文件不包括(C)。
A. B. 子目录下的Makefile C. 后缀名为.in D. 后缀名为.config
2.用户通过make config 配置后,产生了后缀名为(A)。
A. config B. in C. D.
文件定义了许多变量,最重要的是那些编译、连接列表变量,但不包括(D)。
A. MX_OBJX B. O_TARGET C. O_OBJS D. O_OBJL
4.在内核配置过程中,如果需要设置networking support这个选项,进入的菜单项是(D)。
l setup system C. Boot options D. Device derives
5.在linux系统中,我们既需要标记变量的符号,有需要变量的物理地址,两者同时需要的时候可以采用符号表的方式,其对应的文件为(B)。
A. vmlinux B. C. vmlinuz D.
三、叙述题
1、Linux内核各个部分与内核源码的各个目录都是对应起来的,比如有关驱动的内容,内核中就都组织到“drive”这个目录中去,有关网络的代码都集中组织到“net”中。当然,这里有的目录是包含多个部分的内容。具体各个目录的内容组成如下:
arch:arch目录包括了所有和体系结构相关的核心代码。include:include
目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在 • 12 •
include/linux 子目录下; init:init 目录包含核心的初始化代码(不是系统的引导代码),有main.c 和Version.c 两个文件;mm:mm 目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm 目录下;drivers:drivers 目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound;ipc:ipc 目录包含了核心进程间的通信代码;modules:modules 目录存放了已建好的、可动态加载的模块;fs:fs 目录存放Linux
支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext3 文件系统对应的就是ext3 子目录;Kernel:Kernel 内核管理的核心代码放在这里。同时与处理器结构相关代码都放在arch/*/kernel 目录下;net:net 目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面;lib:lib
目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下;scripts:scripts 目录包含用于配置核心的脚本文件;documentation:documentation 目录下是一些文档,是对每个目录作用的具体说明。
2、将自己开发的内核代码加入到 Linux 内核中,需要有三个步骤。首先确定把自己开发代码放入到内核的位置;其次,把自己开发的功能增加到 Linux
内核的配置选项中,使用户能够选择此功能;最后,构建子目录 Makefile,根据用户的选择,将相应的代码编译到最终生成的 Linux 内核中去。主要步骤有:组织目录结构,配置文件,修改makefile文件等。
3、Linux内核的移植过程比较繁琐,具体步骤如下:解压内核文件、修改机器码、修改内核源码根目录下的Makefile文件、修改“arch/arm/plat-s3c24xx/common-smdk.c”文件,修改Nand Flash的分区信息和Nand Flash的硬件信息、修改时钟频率、增加Yaffs2文件系统的支持、配置内核、编译内核等。
4、为什么要进行内核裁剪?
内核裁剪,主要作用就是为了适应嵌入式系统的小体积、小存储的特点,在内核的大小方面进行裁剪。内核编译之前,通过配置内核的选项参数进行设置,将不需要的功能删掉,保留系统需要的部分,这样就在一定程序上缩小了生成的镜像文件大小。
第九章
一、填空题。
1、Linux下的文件系统主要分为三个层次:上层用户的应用程序对文件系统的系统调用、虚拟文件系统VFS和挂载到VFS中的各种实际文件系统。 2、Linux中三常见的块驱动程序:Blkmem驱动层、RAMdisk驱动层、MTD驱动层
3、基于Flash存储常见的文件系统有JFFS2、Yaffs、Romfs和Cramfs。
4、基于RAM的文件系统常见的有Ramdisk和Ramfs/Tmpfs。
5、System V init、Busybox init
二、选择题
1、(A)也支持在一块Flash上建立多个Flash分区,没一个分区作为一个MTD block设备,可以把系统软件数据等分配到不同的分区上,同时也可以在不同的分区采用不同的文件系统格式。
A、MTD驱动层 B、Blkmem驱动层 C、Romdisk驱动层 D、Ramdisk驱动层
2、在Linux系统中,因为Flash可以以分区为单位拆开或者合并后使用,所以文件系统是针对于(B)而言的。
A、存储芯片 B、存储器分区 C、Flash D、RAM
3、(B)是可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电保护,提供了“写平衡”支持,是具有支持多种节点类型,提高了对Flash的利用率等优点的文件系统、
A、Cramfs B、Yaffs C、Romfs D、JFFS2
4、(D)将一部分固定大小的内存当做分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并可以作为根文件系统。
A、JFFS2 B、Yaffs C、Romfs D、Ramdisk
5、目录“rc n.d”(n表示运行级别,值分别取0~6)下存放的文件则是用来定义每个运行级别将会执行的应用程序名,通常情况下它们都是符号链接,具体的文件则位于(B)目录下。
A、 B、init.d C、rc D、rc.d
A B B D B
三、叙述题
1、在Linxu根文件系统中,一般包括这样一些子目录:/etc/、/dev/、/usr/、/usr/bin/、/bin/等。根文件系统的建立需要遵循一定的规则,包括目录的位置及名字等。用来建立根文件系统的规则被称作文件系统分类标准(Filesystem Hierarchy Standard,FHS),该规则定义了在构建Linux根文件系统时文件和目录的名字和存放位置的标准。
2、简述Busybox的主要作用。
Busybox能使用户迅速方便的建立一套相对完整、功能丰富的文件系统,其中包括大量常用的应用程序。Busybox将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。它集成压缩了 Linux 的许多工具和命令。虽 • 14 •
然与相应的GNU工具比较起来,Busybox所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中,这些已经足够用了。
3、简述NFS文件系统的制作过程。
一般只要通过特殊的打包工具将文件系统打包,并刻录到非易失性存储器中中就可以了。
==================================================================
第十章
一、填空题。
1、Linux系统的设备文件分为四类:块设备文件、字符设备文件、网络设备文件、杂项设备文件。
2、设备号是一个数字,它是设备的标志、如前所述,一个设备文件可以通过mknod命令来创建,其中指定了主设备号和次设备号。前者表明某一类设备,用于表示设备对应的驱动程序,一般对应着确定的驱动程序;后者一般用于区分标明不同属性,它标志着某个具体的物理设备。
3、本章中的4种数据结构:file_operations、file、inode和device_struct,其中file_operations存储驱动内核模块提供的对设备进行这种操作的函数指针,file代表一个打开的文件描述符,inode表示具体的文件。
4、创建设备节点的命令是mknod。
5、设备读写操作的功能之一就是控制硬件,最常用的通过设备驱动程序完成控制动作的方法就是实现ioctl方法。
二、选择题
1、磁盘属于(B)。
A、字符设备 B、块设备 C、网络设备 D、杂项设备
2、USB属于(D)。
A、字符设备 B、块设备 C、网络设备 D、杂项设备
3、Linux内核是“单内核”结构,这个单内核由很多(A)构成。
A、模块 B、函数 C、设备 D、驱动程序
4、如果一个模块要实现read、open和release等功能,则将其定义为(A)结构。
A、file_operations B、inode C、file D、devicde_struct
5、数据结构(D),包含两个元素:一个登记的设备驱动程序的指针和一个指向一组文件操作的指针。
A、file_operations B、inode C、file D、device_struct
B D A A D
三、叙述题 1、Linux驱动程序主要有哪些功能?
驱动程序主要提供以下功能:应用程序通过驱动程序安全有效地访问硬件;驱动程序作为嵌入式系统的中间层软件,它隐藏了底层的细节,从而提高了软件的可移植性和可复用性;驱动程序文件节点可以方便地提供访问权限控制。从下层驱动开发人员的角度来看,Linux驱动程序就是通过直接操控硬件的软件,来完成下面的功能:对设备初始化和释放;直接读写硬件寄存器来控制硬件;把数据从内核传送到硬件和从硬件读取数据;操作设备缓冲区设备;操作输入、输出设备,如键盘、打印机等;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。
2、简述字符设备与块设备有什么区别。
块设备文件:通常指一些需要以块(如512字节)的方式写入的设备,如IDE硬盘、SCSI硬盘、光驱等; 字符型设备文件:通常指可以直接读写,没有缓冲区的设备,如并口、虚拟控制台等;
3、Linux驱动程序可以通过哪两种方式集成到内核中?
Linux驱动程序可以通过两种方式集成到内核中去:
一是将其直接编译到内核;
二是将其编写成模块,在需要添加某种硬件的时候,内核可以将其调入。在配置Linux内核时,可以选择“Enable loadable module support”选项,来支持可加载内核模块。
4、Linux设备驱动程序与外界的接口可以分为几个部分?
Linux 设备驱动程序与外界的接口可以分为如下三个部分:
驱动程序与操作系统内核的接口:这是通过数据结构 file_operations来完成的。
驱动程序与系统引导的接口:这部分利用驱动程序对设备进行初始化。
驱动程序与设备的接口:这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。
5、进行模块编程的一般步骤是:首先建立模块文件,然后编写makefile文件,最后使用insmod加载模块文件。
6、编写一个字符设备驱动,主要是下面几步:
编写硬件接口函数;建立文件系统与设备驱动程序的接口变量,类型为struct file_operations结构体,并初始化该变量;注册设备到chrdevs全局数组中;以模块方式编译驱动源码,并将其加载到内核中;创建设备节点;编写应用程序访问底层设备。
• 16 •
2023年8月2日发(作者:)
参考答案
第一章
一、填空题。
1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。
2、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。
4、嵌入式处理器目前主要有ARM、MIPS、Power PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。
5、常见的嵌入式操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。
6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。
二、选择题
1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备: 、存储器(SDRAM、ROM等)、设备I/O接口等。(A)
A、嵌入式处理器 B、嵌入式控制器
C、单片机 D、集成芯片
2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为 ,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。(D)
A、分时多任务操作系统 B、多任务操作系统
C、实时操作系统 D、实时多任务操作系统
3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是 。(B)
A、Palm B、VxWorks
C、Linux D、WinCE
[在此处键入]
• 2 •
4、嵌入式系统设计过程中一般需要考虑的因素不包括:(D)
A、性能 B、功耗
C、价格 D、大小
5、在嵌入式系统中比较流行的主流程序有:(A)
A、Angel B、Blob
C、Red Boot D、U-Boot
三、叙述题
1、举例说明身边常用的嵌入式系统。
生活中最常见的嵌入式系统恐怕要数智能手机了,包括Symbian、Windows
Mobile、Android等手机嵌入式系统。还有,如路由器也是一个典型的嵌入式系统。
2、如何理解嵌入式系统,谈谈自己的理解。
嵌入式系统是指:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。他具有如下特点: 1、嵌入式系统是面向产品、面向用户、面向应用的。2、嵌入式系统是一个技术密集、集成度高、需要不断创新的集成系统。3、嵌入式系统必须根据应用场合对软硬件进行必要的裁剪已实现需要的功能。
3、简述嵌入式系统的开发方法有哪几种。
目前,嵌入式系统的开发有模拟开发调试、嵌入式在线仿真和远程调试等几种方法。
4、结合当前嵌入式系统的发展,想象一下嵌入式系统的应用前景。
嵌入式系统技术有着非常广泛的应用前景,其领域包括:工业控制领域、信息家电领域、机器人领域、POS网络及电子商务领域、家庭智能管理系统、交通管理领域、环境工程与自然领域等。
第二章
一、填空题。
1、Linux具有UNIX的所有特性并且具有自己独特的魅力,主要表现在:开放性、多用户、多任务、友好的用户界面、设备独立性、丰富的网络功能、文件传输、远程访问、可靠的安全性、良好的可移植性、X Window系统、内存保护模式。
2、Linux一般包括四个主要部分:内核(Kernel)、命令解释层(Shell或其他操作环境)、文件结构(File Structure)和实用工具。 3、目前几乎所有的Linux发行版本中都包含了Gnome和KDE两种图形操作环境。
4、在当前目录下建立目录,应使用命令:mkdir linux;查看当前路径应使用命令:pwd;chmod 765 的作用是:使文件的拥有者权限、文件组权限和其他用户拥有相应的权限。
5、Linux内核主要由:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信五个子系统组成。
二、选择题
1、下列(D)系列处理器是Ubuntu不支持的。
A、ARM B、AMD
C、X86 D、51单片机
2、启动shell环境时,屏幕上显示“[arm@www home]$”,其中的arm的意义是(B)。
A、arm架构 B、用户名
C、文件夹 D、路径
3、使用ls命令时,如果想对文件名中的不可显示字符用八进制逃逸字符显示,则应该选用的参数是(A)。
A、-b B、-a
C、-l D、-R
4、解压文件可使用命令(C)。
A、tar jxvf B、tar jxvf
C、tar zxvf D、tar czvf
5、下列不属于Linux用的文件系统是(D)。
A、ext2 B、ext3
C、nfs D、ntfs
三、叙述题
1、简述linux与windows的主要异同。
Windows操作系统是在个人计算机上发展起来的,在许多方面受到个人计算机硬件条件的限制,这些操作系统必须不断地升级才能跟上个人计算机硬件的进步;而Linux操作系统却是以另外一种形式发展起来的,Linux是UNIX操作系统用于个人计算机上的一个版本,UNIX操作系统已经在大型机和小型机上使用了几十年,直到现在仍然是工作站操作系统的首选平台。
Linux给个人计算机带来了能够与UNIX系统相比的速度、效率和灵活性,使个人计算机所具有的潜力得到了充分发挥。Linux与Windows工作方式存在一些根本的区别,这些区别只有在用户对两者都很熟悉之后才能体会到,但它们却是Linux思想的核心。
• 4 •
2、目前主流的图形界面环境有哪些?它们各有什么有缺点?
目前主流的图形界面环境有KDE和GNOME两种图形环境。
KDE与GNOME项目拥有相同的目标,就是为Linux开发一套高价值的图形操作环境,两者都采用GPL公约发行,不同之处在于KDE基于双重授权的Qt,而GNOME采用遵循 GPL的GTK库开发—后者拥有更广泛的支持。不同的基础决定两者不同的形态:KDE包含大量的应用软件、项目规模庞大,因为没有太多的第三方开发者为 KDE开发重量级软件;由于自带软件众多,KDE比GNOME丰富多彩,加上使用习惯接近Windows,会更容易上手一些。但KDE的毛病在于运行速度 相对较慢,且部分程序容易崩溃(当然整个KDE崩溃的情况极少出现)。GNOME项目专注于桌面环境本身,由于软件较少、运行速度快,且稳定性相当出色, 完全遵循GPL公约的属性让它赢得重量级厂商的支持。从当前的情况来看,GNOME已经成为Novell、RedHat企业发行版的默认桌面,更偏向于商 务领域;而丰富多彩的KDE有朝向家用和娱乐方向发展的趋势,它比GNOME显然更有趣味性一些。
3、在linux中如何使用mount命令挂载U盘?
首先使用fdisk -l查看一下磁盘分区情况:
然后使用命令:mount –t vfat /dev/sdb1 /mnt/USB
4、如何设置linux操作系统的网络参数?
使用类似的命令:
ifconfig eth0:192.168.1.15 netmask 255.255.255.0
其中192.168.1.15为ip,255.255.255.0为子网掩码。
5、简要分析linux内核的各个组成部分。
Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。其中,进程调度(SCHED)控制进程对CPU的访问;内存管理(MM)允许多个进程安全的共享主内存区域;虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统;进程间通讯(IPC) 支持进程间各种通信机制。
第三章
一、填空题。
1、ARM9系列微处理器在高性能和低功耗方面提供最佳的性能:它具有3级整数流水线,指令执行效率更高;提供1.1MIPS/MHz的哈佛总线结构;支持32位ARM指令集和16位Thumb指令集;支持32位的高速AMBA总线接口。 2、ARM芯片的内核一般包括以下几个单元:ARM9TDMI32RISC处理器、数据缓存器(Data Cache)、指令缓存(Instruction Cache)、指令存储管理单元(Instruction MMU)、数据存储管理单元(Data MMU)、写缓冲(Write Buffer)和回写存储单元(Write Back PA TAG RAM)。
3、ARM处理器共有37个寄存器,其中31为通用寄存器,6个状态寄存器,这些寄存器都是32位。
4、ARM系统中寻址方式主要有立即寻址、寄存器寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、相对寻址和堆栈寻址。
5、ARM微处理器的指令集可以分为以下六大类:跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储(Load/Store)指令、协处理器指令和异常中断产生指令。
二、选择题
1.指令ADD R0,R0,#1第三个操作数得寻址方式是(A)
A.立即寻址 B. 寄存器寻址 C. 寄存器间接寻址 D. 基址变址寻址
2.指令LER R3,[R4]第二个操作数的寻址方式是(C)
A. 立即寻址 B. 寄存器寻址 C. 寄存器间接寻址D. 基址变址寻址
R0,[R1,#4] 第二个操作数的寻址方式是(D)
A. 立即寻址 B. 寄存器寻址 C. 寄存器间接寻址D. 基址变址寻址
4.假设R0和R1寄存器中的值分别为8和6,执行指令:LDR R0,[R1,#8]!,则寄存器R0和R1中的值分别为(B)
A. 8,6 B. 14,6 C. 14,14 D. 16,14
5.栈是一种数据结构,本质上是内存中一段连续的地址,对其最常见的操作为“压栈”(PUSH)和“出栈”(POP),以临时保存数据。其出入栈规则是(B)。
A. 先进先出 B. 先进后出 C. 只进不出D. 只出不进
三、叙述题
1、ARM处理器的运行模式有哪几种,各有什么特点?
ARM微处理器的运行模式有7种,分别为:
用户模式(User,usr):正常程序执行时,ARM处理器所处的状态。
快速中断模式(FIQ,fiq):用于快速数据传输和通道处理。
外部中断模式(IRQ,irq):用于通常的中断处理。
特权模式(Supervisor,sve):供操作系统使用的一种保护模式。
数据访问中止模式(Abort,abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护。
未定义指令终止模式(Undefined,und):用于支持硬件协处理器软件仿真。
系统模式(System,sys):用于运行特权级的操作系统任务。 • 6 •
2、ARM存储器的组织主要有哪些类型,各有什么特点?
ARM储存器的组织最要有2大类型,分别为小端格式和大端格式,也称为小端次序(Little endian)和大端次序(Big endian)的字节序(byte order)。两种储存类的区别在于一个32位的数据存放到储存器中的时候,到底是高位字节放在高地址还是低地址的区别。
3、ARM微处理器选型时应注意:
1、ARM微处理器内核的选择
2、系统的工作频率
3、芯片内存储器的容量
4、片内外围电路的选择
第四章0
一、填空题。
1、在ARM/Thumb汇编语言程序中,程序是以程序段的形式呈现的。程序段是具有特有名称的相对独立的指令或数据序号。程序段有两大类型代码段、数据段。
2、基于linux下GCC汇编语言,代码表号必须在一行的顶端,后面要加上 :,注释的内容可以在前面加上@。
3、在ARM的汇编程序中,伪指令种类繁多,可以细分为以下几种伪指令:符号定义伪指令(Symbol Definition)、数据定义伪指令(Data Definition)、汇编控制伪指令(Assembly Control)、宏指令
4、linux下的嵌入式程序开发,主要需要的代码编辑器,如vi和gedit,另外还需要编译器gcc、调试器gdb以及项目管理器make。
5、Vi编辑器基本上有三种基本状态,分别是:命令模式(command mode)、插入模式(insert mode)和底行模式(last line mode)。
6、使用gcc编译文件生成可执行文件要经历四个相互关联的步骤:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。
二、选择题
1、1.假如使用伪指令定义一个局部的数据量,变量名为temp,然后给其赋值为8,汇编代码为(A)
A. LCLA temp;temp SETA 0x08; B. LCLA temp;temp SETL 0x08;
C. GBLA temp;temp SETA 0x08; D. GBLA temp;temp SETL 0x08;
2、在vi处于命令行模式时,如果需要对文本进行修改,欲在光标所在位置的下一个位置开始输入文字,则(B)
A、按下字母“i”进入插入模式 B、按下字母“a”进入插入模式
C、按下字母“o”进入插入模式 D、按下字母“n”进入插入模式 3、当前vi处于插入模式,先放弃对文本的修改,即不保存退出vi,则(C)。
A、使用“:q!”命令
B、使用“:wq!”命令
C、先按下“ESC”后,再使用“:q!”命令
D、先按“ESC”后,再使用“:wq!”命令
4、经过汇编之后,生成的目标文件的后缀名为(C)。
A、.c B、.s
C、.o D、.exe
5、对代码文件code.c进行调试的命令为(A)。
A、$gcc –g code.c –o code B、$gcc code.c –o code
C、$gcc –g code.c code D、$gcc –g code
三、叙述题
1、汇编语言和C的混合编程通常有以下几种方式,各有什么特点?
汇编语言与C的混合编程通常有以下几种方式:在C代码中嵌入汇编指令;在汇编程序和C的程序之间进行变量的互访;汇编程序、C程序间的相互调用。
2、如何使用调试器gdb进行代码调试,具体的调试方法有哪些?
查看文件、设置和查看断点、运行代码、查看变量值、单步运行、恢复程序运行。
3、项目管理器的作用主要是什么?
make就是实现这样的功能:它读入一个文件,叫makefile,这个文件不仅决定了源文件之间的依赖关系,而且还决定了源文件什么时候该编译什么时候不应该编译。
第五章
一、填空题。
1、SMDK2440平台的开发板采用的处理器是S3C2440,其主频一般为400M。
2、windows软件环境的设置一般包括以下几部分:超级终端的设置、DNW设置、GIVEIO驱动的设置和USB驱动
3、在windows系统上建立基于linux嵌入式开发环境一般有三种方案可以选择分别是Windows系统下安装虚拟机Vmware、Windows+Linux双系统安装、基于Windows操作系统下的Cygwin
4、UBUNTU的网络设置可以采用命令行方式、也可以采用图形界面操作方式来配置。5、开发板硬件平台是基于三星S3C2440的SMDK2440平台的目标板,使用的刻录软件为SJF2440。
二、选择题
1、为了通过PC的串口和开发板进行交互,需要使用(C)。 • 8 •
A、USB设置 B、同步
C、超级终端 D、网络连接
2、在嵌入式linux的开发中,能实现上传下载文件、刻录文件、运行映像等功能工具是(D)。
A、DNS B、FTP
C、Telnet D、DNW
3、由普通用户账户转为管理员账户登录,使用的命令为(D)。
A、$sudo root B、$sudo administrator
C、$su administrator D、$su root
4、安装FTP服务器时,在终端输入的命令为(B)。
A、$apt-get install vsftpd B、$sudo apt-get install vsftpd
C、$apt-get install ftp D、$sudo apt-get install ftp
5、安装Telnet服务时,在终端输入的命令为(A)。
A、$sudo apt-get install xinetd telnetd B、$apt-get install
xinetd telnetd
C、$apt-get install telnetd D、$sudo apt-get install
telnetd
三、叙述题
1、建立基于Linux嵌入式开发环境一般有三种方案可以选择:一是在Windows系统下安装虚拟机Vmware。二是Windows系统和Linux系统同时安装。三是基于Windows操作系统下的Cygwin。
2、参看教材5.3。
3、参看教材5.4。
第六章
一、填空题。()
1、交叉开发工具链就是为了编译、链接、处理和调试跨平台体系结构的程序代码。每次执行工具链软件,通过带有不同的参数,可以实现编译、链接、处理、调试等不同的功能。
2、linux经常使用的工具链软件有Binutils、Gcc、Glibc和Gdb。
3、分布构建交叉编译工具链的制作过程需要以下几步:编译binutils、编译辅助gcc编译器、编译glibc库、重新编译完整的gcc。
4、使用crosstool构建交叉编译工具链的制作过程需要以下几步:准备工作、建立脚本文件、建立配置文件、执行脚本文件和编译gdb调试器。
5、使用crosstool构建交叉编译工具链的制作过程中需要的配置文件,其主要作用是定义配置文件、定义生成编译工具链的名称、定义编译选项等。
二、选择题 1. (B) 是二进制程序处理工具,包括连接器,汇编器等目标程序处理的工具。
A. Gcc B. Binutils C. Glibc D. Gdb
2.构建交叉编译器的第一个步骤是(D)。
A. 下载工具 B. 编译所需文件 C.实现平台连接 D. 确定目标平台
3、分析以下代码
#export PRJROOT=/home/arm/armlinux
#export TARGET=arm-linux
#export PREFIX=$PRJROOT/$TARGET
其中,变量PREFIX代表的路径为(B)。
A、/home/arm/armlinux B、/home/arm/armlinux/arm-linux
C、/home/arm/arm-linux D、/home/arm/arm-linux/armlinux
4. Binutils是gnu工具之一,他包括连接器、汇编器和其他用于目标文件和档案的工具,特使二进制代码的处理维护工具。其中包括(A)命令,他是把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。
A. ld B. gprof C. arc D. as
5.分布构建交叉编译链的过程有两次变异gcc,其中第二次进行编译的作用是(获得glibc库的支持)
A.获得newlib库的支持 B. 获得glibe库的支持
C. 获得uClibe库的支持 D. 获得c库的支持
三、叙述题
1、构建交叉工具链有那几种方法?
通常构建交叉工具链有三种方法:
方法一、分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。方法二、通过Crosstool脚本工具来实现一次编译生成交叉编译工具链,该方法相对于方法一要简单许多,并且出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链;方法三、直接通过网上下载已经制作好的交叉编译工具链。
第七章
一、填空题。
1、Bootloader,亦称引导加载程序,是系统加电后运行的第一段软件代码。
2、一般Bootloader包含两种不同的操作模式:启动加载模式(Bootloading)和下载模式(Downloading)。
3、Bootloader的主要功能是引导操作系统启动,它的启动方式有网络启动、磁盘启动和Flash启动三种。
4、Vivi运行的第一阶段主要完成以下工作:屏蔽所有中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED和关闭CPU内部指令/数据cache。 • 10 •
二、选择题
1、在Bootloader的启动方式中,Flash启动方式通常有两种,一种是可以直接从Flash启动,另一种时可以将压缩的内存映像文件从Flash中复制、解压到 C ,再从中启动。
A、ROM B、SDRAM C、RAM D、Flash
2、在各种Bootloader中, B 是以PPCBoot和ARMBoot为基础的通用加载程序,并且在ARM、PowerPC以及MIPS等多种平台上运行。
A、Vivi B、U-boot C、RedBoot D、s-hboot
3、在编译Vivi之前将Vivi里所有的“*.o”和“*.”文件删除,以确保文件编译时没有错误或者警告发生,使用的命令格式为(D)。
A、make distclean B、make clean C、make menuconfig D、make config
4、编译Vivi时,如果编译成功,在/vivi里面会生成三个vivi文件,其中不包括文件(D)。
A、vivi B、 C、vivi-elf D、
5、把二进制文件载入Flash或RAM使用的命令是(A)。
A、load B、part C、boot D、bon
三、叙述题
1、简述Bootloader的主要功能。
BootLoader,亦称引导加载程序,是系统加电后运行的第一段软件代码。它是整个系统执行的第一步,所以它的地位在整个嵌入式软件系统中是非常重要的。
2、Vivi作为一种Bootloader,其运行过程分成两个阶段,第一阶段的代码在Vivi/arch/s3c2440/head.s中定义,大小不超过10 KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C2440的一些寄存器、时钟等的初始化,然后跳转到第二阶段执行;
第二阶段的代码在Viviinitmain.c中,主要进行一些开发板初始化、内存映射和内存管理单元初始化等工作,最后会跳转到boot_or_Vivi()函数中,接收命令并进行处理。需要注意的是在Flash中执行完内存映射后,会将Vivi代码拷贝到SDRAM中执行。
3、U-Boot则支持大多CPU,可以烧写EXT2、JFFS2文件系统映象,支持串口下载、网络下载,并提供了大量的命令。相对于Vivi,它的使用更复杂,但是可以用来更方便地调试程序;
Vivi是Mizi公司针对SAMSUNG的ARM架构CPU专门设计的,基本上可以直接使用,命令简单方便。不过其初始版本只支持串口下载,速度较慢。在网 上出现了各种改进版本:支持网络功能、USB 功能、烧写YAFFS文件系统映象等。
第八章
一、填空题。
1、ARM-Linux内核的配置系统由三个部分组成,它们分别是Makefile、配置文件和配置工具。
2、配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中使用的配置命令进行解释;而后者则是提供基于字符界面、基于Ncurses图形界面以及基于X Window图形界面的用户配置界面。
3、Makefile文件主要包含注释、编译目标定义和适配段。
4、Linux内核常用的配置命令有make oldconfig、make config、make
menuconfig和make xconfig。其中以字符界面配置的命令是make config。
5、内核编译结束后,会在“/arch/arm/boot/”目录下面和根目录下面生成一个名为zImage的内核镜像文件。
二、选择题
内核中的makefile以及与makefile直接相关的文件不包括(C)。
A. B. 子目录下的Makefile C. 后缀名为.in D. 后缀名为.config
2.用户通过make config 配置后,产生了后缀名为(A)。
A. config B. in C. D.
文件定义了许多变量,最重要的是那些编译、连接列表变量,但不包括(D)。
A. MX_OBJX B. O_TARGET C. O_OBJS D. O_OBJL
4.在内核配置过程中,如果需要设置networking support这个选项,进入的菜单项是(D)。
l setup system C. Boot options D. Device derives
5.在linux系统中,我们既需要标记变量的符号,有需要变量的物理地址,两者同时需要的时候可以采用符号表的方式,其对应的文件为(B)。
A. vmlinux B. C. vmlinuz D.
三、叙述题
1、Linux内核各个部分与内核源码的各个目录都是对应起来的,比如有关驱动的内容,内核中就都组织到“drive”这个目录中去,有关网络的代码都集中组织到“net”中。当然,这里有的目录是包含多个部分的内容。具体各个目录的内容组成如下:
arch:arch目录包括了所有和体系结构相关的核心代码。include:include
目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在 • 12 •
include/linux 子目录下; init:init 目录包含核心的初始化代码(不是系统的引导代码),有main.c 和Version.c 两个文件;mm:mm 目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm 目录下;drivers:drivers 目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound;ipc:ipc 目录包含了核心进程间的通信代码;modules:modules 目录存放了已建好的、可动态加载的模块;fs:fs 目录存放Linux
支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext3 文件系统对应的就是ext3 子目录;Kernel:Kernel 内核管理的核心代码放在这里。同时与处理器结构相关代码都放在arch/*/kernel 目录下;net:net 目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面;lib:lib
目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下;scripts:scripts 目录包含用于配置核心的脚本文件;documentation:documentation 目录下是一些文档,是对每个目录作用的具体说明。
2、将自己开发的内核代码加入到 Linux 内核中,需要有三个步骤。首先确定把自己开发代码放入到内核的位置;其次,把自己开发的功能增加到 Linux
内核的配置选项中,使用户能够选择此功能;最后,构建子目录 Makefile,根据用户的选择,将相应的代码编译到最终生成的 Linux 内核中去。主要步骤有:组织目录结构,配置文件,修改makefile文件等。
3、Linux内核的移植过程比较繁琐,具体步骤如下:解压内核文件、修改机器码、修改内核源码根目录下的Makefile文件、修改“arch/arm/plat-s3c24xx/common-smdk.c”文件,修改Nand Flash的分区信息和Nand Flash的硬件信息、修改时钟频率、增加Yaffs2文件系统的支持、配置内核、编译内核等。
4、为什么要进行内核裁剪?
内核裁剪,主要作用就是为了适应嵌入式系统的小体积、小存储的特点,在内核的大小方面进行裁剪。内核编译之前,通过配置内核的选项参数进行设置,将不需要的功能删掉,保留系统需要的部分,这样就在一定程序上缩小了生成的镜像文件大小。
第九章
一、填空题。
1、Linux下的文件系统主要分为三个层次:上层用户的应用程序对文件系统的系统调用、虚拟文件系统VFS和挂载到VFS中的各种实际文件系统。 2、Linux中三常见的块驱动程序:Blkmem驱动层、RAMdisk驱动层、MTD驱动层
3、基于Flash存储常见的文件系统有JFFS2、Yaffs、Romfs和Cramfs。
4、基于RAM的文件系统常见的有Ramdisk和Ramfs/Tmpfs。
5、System V init、Busybox init
二、选择题
1、(A)也支持在一块Flash上建立多个Flash分区,没一个分区作为一个MTD block设备,可以把系统软件数据等分配到不同的分区上,同时也可以在不同的分区采用不同的文件系统格式。
A、MTD驱动层 B、Blkmem驱动层 C、Romdisk驱动层 D、Ramdisk驱动层
2、在Linux系统中,因为Flash可以以分区为单位拆开或者合并后使用,所以文件系统是针对于(B)而言的。
A、存储芯片 B、存储器分区 C、Flash D、RAM
3、(B)是可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电保护,提供了“写平衡”支持,是具有支持多种节点类型,提高了对Flash的利用率等优点的文件系统、
A、Cramfs B、Yaffs C、Romfs D、JFFS2
4、(D)将一部分固定大小的内存当做分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并可以作为根文件系统。
A、JFFS2 B、Yaffs C、Romfs D、Ramdisk
5、目录“rc n.d”(n表示运行级别,值分别取0~6)下存放的文件则是用来定义每个运行级别将会执行的应用程序名,通常情况下它们都是符号链接,具体的文件则位于(B)目录下。
A、 B、init.d C、rc D、rc.d
A B B D B
三、叙述题
1、在Linxu根文件系统中,一般包括这样一些子目录:/etc/、/dev/、/usr/、/usr/bin/、/bin/等。根文件系统的建立需要遵循一定的规则,包括目录的位置及名字等。用来建立根文件系统的规则被称作文件系统分类标准(Filesystem Hierarchy Standard,FHS),该规则定义了在构建Linux根文件系统时文件和目录的名字和存放位置的标准。
2、简述Busybox的主要作用。
Busybox能使用户迅速方便的建立一套相对完整、功能丰富的文件系统,其中包括大量常用的应用程序。Busybox将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。它集成压缩了 Linux 的许多工具和命令。虽 • 14 •
然与相应的GNU工具比较起来,Busybox所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中,这些已经足够用了。
3、简述NFS文件系统的制作过程。
一般只要通过特殊的打包工具将文件系统打包,并刻录到非易失性存储器中中就可以了。
==================================================================
第十章
一、填空题。
1、Linux系统的设备文件分为四类:块设备文件、字符设备文件、网络设备文件、杂项设备文件。
2、设备号是一个数字,它是设备的标志、如前所述,一个设备文件可以通过mknod命令来创建,其中指定了主设备号和次设备号。前者表明某一类设备,用于表示设备对应的驱动程序,一般对应着确定的驱动程序;后者一般用于区分标明不同属性,它标志着某个具体的物理设备。
3、本章中的4种数据结构:file_operations、file、inode和device_struct,其中file_operations存储驱动内核模块提供的对设备进行这种操作的函数指针,file代表一个打开的文件描述符,inode表示具体的文件。
4、创建设备节点的命令是mknod。
5、设备读写操作的功能之一就是控制硬件,最常用的通过设备驱动程序完成控制动作的方法就是实现ioctl方法。
二、选择题
1、磁盘属于(B)。
A、字符设备 B、块设备 C、网络设备 D、杂项设备
2、USB属于(D)。
A、字符设备 B、块设备 C、网络设备 D、杂项设备
3、Linux内核是“单内核”结构,这个单内核由很多(A)构成。
A、模块 B、函数 C、设备 D、驱动程序
4、如果一个模块要实现read、open和release等功能,则将其定义为(A)结构。
A、file_operations B、inode C、file D、devicde_struct
5、数据结构(D),包含两个元素:一个登记的设备驱动程序的指针和一个指向一组文件操作的指针。
A、file_operations B、inode C、file D、device_struct
B D A A D
三、叙述题 1、Linux驱动程序主要有哪些功能?
驱动程序主要提供以下功能:应用程序通过驱动程序安全有效地访问硬件;驱动程序作为嵌入式系统的中间层软件,它隐藏了底层的细节,从而提高了软件的可移植性和可复用性;驱动程序文件节点可以方便地提供访问权限控制。从下层驱动开发人员的角度来看,Linux驱动程序就是通过直接操控硬件的软件,来完成下面的功能:对设备初始化和释放;直接读写硬件寄存器来控制硬件;把数据从内核传送到硬件和从硬件读取数据;操作设备缓冲区设备;操作输入、输出设备,如键盘、打印机等;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。
2、简述字符设备与块设备有什么区别。
块设备文件:通常指一些需要以块(如512字节)的方式写入的设备,如IDE硬盘、SCSI硬盘、光驱等; 字符型设备文件:通常指可以直接读写,没有缓冲区的设备,如并口、虚拟控制台等;
3、Linux驱动程序可以通过哪两种方式集成到内核中?
Linux驱动程序可以通过两种方式集成到内核中去:
一是将其直接编译到内核;
二是将其编写成模块,在需要添加某种硬件的时候,内核可以将其调入。在配置Linux内核时,可以选择“Enable loadable module support”选项,来支持可加载内核模块。
4、Linux设备驱动程序与外界的接口可以分为几个部分?
Linux 设备驱动程序与外界的接口可以分为如下三个部分:
驱动程序与操作系统内核的接口:这是通过数据结构 file_operations来完成的。
驱动程序与系统引导的接口:这部分利用驱动程序对设备进行初始化。
驱动程序与设备的接口:这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。
5、进行模块编程的一般步骤是:首先建立模块文件,然后编写makefile文件,最后使用insmod加载模块文件。
6、编写一个字符设备驱动,主要是下面几步:
编写硬件接口函数;建立文件系统与设备驱动程序的接口变量,类型为struct file_operations结构体,并初始化该变量;注册设备到chrdevs全局数组中;以模块方式编译驱动源码,并将其加载到内核中;创建设备节点;编写应用程序访问底层设备。
• 16 •
发布评论