2022年嵌入式复习题(简答)
三、简答题
1、 Linux设备树的目的?
设备树是一种描述硬件的数据结构,它提供了从硬件配置的语言Linux从核源代码中提取出来。设备树使目标板和设备成为数据驱动器,它们必须初始化传输给核的数据,而不是像以前那样使用硬编码。这样可以降低代码重复率,使单个核镜像支持多个硬件平台。
2、 基本移植的基本步骤是什么?
(1)选择参考板 选择参考板的原则如下:
参考板和开发板有相同的处理器,至少类似的处理器; 参考板和开发板外围接口电路相同,至少基本接口相同; Linux内核支持参考板,至少有非官方补丁或BSP 参考 Linux设备驱动正常,至少驱动基本接口。
(2)编译测试参考板Linux内核
为了确信Linux最好验证参考板的支持。配置编译Linux内核,在目标板上运行测试。
(3)切割和添加内核的功能
前面使用了exynos默认配置配置核源代码,但有些配置可能是多余的,不适合我们FS4412开发板。而且有些配置没有选择,需要添加。
3、 Exynos4412内核及设备树启动步骤?
U-Boot的bootm可启动内核和设备树。 U-Boot先通过tftp命令将内核uImage镜像和设备树分别下载到内存0x41000000和0x然后执行4.2万个位置bootm命令启动内核。bootm根据以下参数给出的地址值添加zImage前64字节,验证相应信息。如果验证通过,64字节后zImage复制到指定的加载地址,然后跳转到地址执行代码CPU控制权交给核心。
4、 如何生成可移植的核心和设备树?
1.下载Linux内核文件 2.编译 (1) 清理项目 (2) 设置默认配置文件 (3) 编译生成kernrl文件 (4) 编译生成.dtb文件 3.通过TFTp烧写zImage与.dtb文件
5、 根文件系统目录的含义?
根目录是整个系统中最重要的目录,因为不仅所有目录都来自根目录,而且根目录还与启动/恢复/系统修复等动作有关。
6、 U-Boot启动过程
<1> BL0 阶段 BL0是固化在iram程序,工作是:关闭看门狗,关闭中断和MMU,时钟设置,测试om决定启动模式,复制bl1到iram中。 <2> BL1 阶段(<8k) BL1 主要工作是:初始化环境,如中断初始化、设置堆栈等)bl2代码到RAM中 <3> BL2 阶段(<14k) BL2主要工作是完成基本硬件的初始化(Low_init.s 时钟串口内存flash等), <4> u-boot.bin 从exynos 从4412的启动步骤可以看出,我们单独运行u-boot不行。需要三星提供的。BL1 BL2添加到u-boot.bin包装验证后,前面会生成新的u-boot
7、 ARM 的7 什么是功能模式?
ARM系统结构支持用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式七种处理器模式。
8、 在Linux启动时,这个inittab文件起什么作用?
Linux启动时运行init程序根据操作系统当前运行的功能级别启动后续任务,包括多用户环境、网络等。这个级别是/etc/inittab文件中指定, 从0到6,有不同的功能。本文件为init 程序搜索的主要文件,init配置过程中的每一步都由/etc/initab决定内容。
9、 在Linux启动时,这个etc/fstab文件起什么作用?
指定启动时需要自动挂载的文件系统列表。初始化时需要挂载的文件系统的文件系统的类型、挂载点和可选参数。
10 过程控制块的组成和功能?
过程控制块由PCB、相关程序段和程序段的数据结构由三部分组成。流程名称、特征信息、流程状态信息、调度优先权、通信信息、现场保护区、资源需求、分配控制信息、流程实体信息、民族关系. 每个过程都是唯一的PCB 操作系统依据PCB管理进程 使用操作系统PCB动态并发实现过程 PCB是过程存在的唯一标志
11.解释下列命令的含义?
12.解释以下命令的含义?
13.解释下列命令的含义?
14、在shell脚本中的位置变量是什么?$0,$1的含义?
在Linux在命令行中,当一个命令或脚本执行时,可以跟随多个参数,可以用位置变量表示。$0表示命令本身, $第一个参数代表命令后面的第一个参数
15、解释Shell脚本文件的句子意思?
shell脚本文件的内容是一系列的shell可以被命令shell内容直译后执行;每个句子都可以执行。shell命令。
16、makefile文件的作用是什么?
管理工程文件,通过makefile编写工程下不同目录中文件的编译、链接方式和顺序。在编写中makefile之后,编译工程只需要输入make提高编译效率的命令。
17、 解释Makefile文件中每个句子的含义?
18、 根据嵌入式系统的特点,写出嵌入式系统的定义。
嵌入式系统是指以应用为中心,以计算机技术为基础,可切割软硬件,适应应用系统对功能、可靠性、成本、体积和功耗的严格要求
19、 ARM现在有哪些核?
ARM目前,处理器核有6个系列ARM7, ARM9, ARM9E, ARM10E, SecurCore以及最新的ARM11系列。
20、ARM寻址的方式有哪些?
1.寄存器寻址; 二、立即寻址; 三、寄存器移位寻址; 4.间接寻址寄存器; 5.基址寻址; 6.多寄存器寻址; 7.堆栈寻址; 8.块复制寻址; 9.相对寻址。
试写抢占和非抢占的区别。
在执行过程中,中断处理方法不同,强占:中断执行后,如果有更高的优先任务,将执行更高的优先任务,而不是不同的抢占方式,任务只主动放弃cpu只有控制欲,才能获得其他任务cpu的控制权。
22.试分析嵌入式计算系统的组成主要分为哪些部分,从嵌入式系统底层到上层应用软件,
( 1 )硬件层 ( 2 )中间层(嵌入式系统初始化,硬件驱动程序) ( 3 )软件层(操作系统。文件系统。 GUI ,网络及通用组件) ( 4 )功能层
23、 专业名词解释(写下以下英文简写对应的中文名称
(1)RTOS 实时操作系统 (2)CISC 复杂指令集( 3)Kernel 内核 (4)Scheduler 调度 (5)non-preemptive 非抢占式
24、嵌入式开发环主要包括哪些组件?
嵌入式系统开发需要交叉编译和在线调试的开发环境,主要包括 1.宿主机 2.目标机(评估电路板) 3.基于JTAG的ICD仿真器、或调试监控软件、或在线仿真器ICE 4.运行于宿主机的交叉编译器和链接器、以及开发工具链或软件开发环境 5.嵌入式操作系统。
25. 请描述建立一个嵌入式开发平台的步骤。
(1)连接主机和目标板 (2)使用flash工具烧写bootloader (3)配置并启动主机的bootp服务 (4)配置并启动主机的tftp服务 (5)使用tftp下载内核及根文件系统镜像到目标板,重启目标 (6)配置并启动NFS服务 (7)在目标板使用mount挂载主机的目录 (8)再次使用bootp命令确认bootp服务是否建立,使用tftp命令确认tftp服务建立 (9)将内核镜像和根文件系统cp到tftp根目录 (10)重启目标板,确认嵌入式linux正常启动
26、什么是嵌入式系统?其特点有些什么?
嵌入式系统是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。” 特点:
1)是专用的计算机系统,用于特定的任务; 2)资源较少,可以裁减; 3)功耗低,体积小,集成度高,成本低; 4)使用实时操作系统; 5)可靠性要求更高,具有系统测试和可靠性评估体系; 6)运行环境差异大 7)大部分程序固化在ROM中; 8)较长的生命周期; 9)嵌入式微处理器通常包含专用调试电路
27、嵌入式系统的BooTLoader的功能是什么?
BootLoader是在嵌入式系统复位启动时,操作系统内核运行前,执行的一段程序。通过BootLoader,初始化硬件设备,建立内存和I/O空间映射图,为最终加载操作系统内核调整好适当的系统软硬件环境。
BootLoader的stage1通常包括以下工作 1.硬件设备初始化 2.加载Bootloader的stage2准备ARM空间 3.拷贝Bootloader的stage2到RAM空间中 4设置堆栈 5跳转到stage2的C入口点
BootLoader的stage2通常包括以下工作 1初始化本阶段要使用到的硬件设备 2检测系统内存映射 3将内核映像和根文件系统映像从flash设备上复制到RAM空间中 4设置内核启动参数 5调用启动内核
28、目前嵌入式操作系统有哪些?
1)μC/OS-II嵌入式操作系统内核; 2)VxWorks嵌入式实时操作系统; 3)WinCE操作系统; 4)Linux操作系统; 5)Symbian操作系统
29、构造嵌入式开发环境有哪几种形式?
1)交叉开发环境; 2)软件模拟环境; 3)评估电路板。
30、嵌入式系统开发的基本流程?
系统定义,可行性研究,需求分析,系统总体设计,硬件设计制作,软件设计实现,软硬件集成,功能性能测试。
31、有时要使用Thumb技术的原因
Thumb指令集不完整,它是ARM指令集的子集。但Thumb指令具有更高的代码密度,即占用存储空间小,仅为ARM代码规格的65%,但其性能却下降的很少。所以,Thumb指令集使ARM处理器能应用到有限的存储带宽并且代码密度要求很高的嵌入式系统中去。
32、ARM处理器的工作模式有哪几种?
用户模式、快速中断模式、外部中断模式、特权模式、数据访问中止模式、未定义指令中止模式、系统模式、监控模式
。
33、寄存器R13,R14,R15的专用功能各是什么?
R13作用通常是堆栈指针,SP;用于保存待使用的寄存器的内容 R14用作子程序链接寄存器,LR;当使用BL指令调用子程序时,返回地址将自动存入R14中;发生异常时,将R14对应的异常模式版本设置为异常返回地址 R15的功能是程序计数器,PC。它指向正在“取指”的指
令
34、寄存器CPSR,SPSR的功能各是什么?
CPSR:当前程序状态寄存器,在任何模式下可以被访问。包含条件标志位、中断禁止位、处理器模式标志以及其他的一些控制和状态位 SPSR:程序状态保护寄存器(备份),每种模式下都有一个状态寄存器SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
35、ARM的异常有哪几种,各进入何种工作模式?他们退出各采用什么指令?
七种异常:
复位异常:特权模式,不需要返回 未定义指令异常:未定义指令中止模式,退出指令为MOV PC,LR 软中断异常(SWI):特权模式,退出指令为MOV PC,LR 预取异常:数据访问中止模式,退出指令为MOV PC,LR,SUB#4 数据异常:数据访问中止模式,退出指令为MOV PC,LR,SUB#8 外部中断异常(IRQ):外部中断请求模式,退出指令为MOV PC,LR,SUB#4 快速中断异常(FIQ):快速中断请求模式,退出指令为MOV PC,LR,SUB#4
36、什么是小端和大端存储器组织?
(1)小端存储系统中字的地址对应该字最低有效字节所对应地址;半字的地址对应该半字最低有效字节所对应地址 (2)大端存储系统中字的地址对应该字最高有效字节所对应地址;半字的地址对应该半字最高有效字节所对应地址
37、什么是数据的边界对齐?
默认情况下,ADS编译器使用的是数据类型的自然边界对其方式。数据的自然对其方式是指:如果该数据类型是n个字节的,那么该数据类型就按n字节对齐。
38、ARM核现在有哪几种?
ARM7、ARM9、 ARM9E、ARM1OE,、SecurCore、 StrongARM、 Xscale
39、ARM的寻址方式有哪些?各写一条说明。
(1) 立即寻址: ADD R6,R6, #128 ; R6=R6+128 (2)寄存器寻址: ADD R2,R3,R5 ; R2=R3+R5 (3)寄存器移位寻址: ADD RO,R1, R2. LSL#3 ; R0=R1+8*R2 (4)寄存器间接寻址: LDR R6,[R7] ; R6=[R7] (5)变址寻址: LDR R2,[R3, #128] ; R2= [R3+128] LDR R2, [R3, #4]! ;R2=[R3+4], R3=R3+4 LDR R2, [R3],#4 ;R2=[R3], R3=R3+4 (6)多寄存器寻址: LDMIA R2,{R3, R5,R7} ; R3=[R2], R5=[R2+4], R7=[R2+8] (7)堆栈寻址: STMFD SP! {R1-R7, LR} LDMFD SP! {R1-R7, LR} (8)块拷贝寻址: LDMIA R0! {R2- -R9} STMIA R1,{R2-R9} (9)相对寻址: BEQ LOOP; 条件跳转到LOOP标号处
40、在ARM的立即寻址方式下其立即数如何在指令编码中表示?
在ARM数据处理指令中,当参与数为立即数型时,每个立即数都是采用一个8位的常数循环右移偶数位而间接得到。其中循环右移的位数由一个4位二进制的两倍表示,如果立即数记作,8位常数记作immed_8,4位的循环右移值记.作rotate_ imm,有效的立即数是由一个8位的立即数循环右移偶数位得到。因此有效立即数immediate可以表示成: = immed_8循环右移(2* rotate_ imm)
41、指令ADR,ADRL、LDR、NOP是如何处理地址值读入到寄存器中的?
ADR是将基于PC或者寄存器的地址值读入寄存器,通常被替换成一条ADD指令或SUB指令来实现功能。 ADRL可以读取更大范围内的地址,而且被编译器替换成2条数据处理指令。 LDR将一个32位的立即数或者一个地址值读取到寄存器中,大范围的地址读取。 NOP在汇编时将被替换成ARM中的空操作。
42、指令LDR R1,=0xFFF是如何将立即数0xfff读入到R1的?
由于需要读取的寄存器的地址值超过了MOV及MVN指令可操作的范围,所以编译时其将该常数放在数据缓冲区,同时用一条基于PC的LDR指令读取该常数。
43、如何在c语言程序中内嵌汇编?
P106-P110
44、嵌入式Linux操作系统的特点。
Base:
1.Linux系统是层次结构且内核完全开放。 2.强大的网络支持功能。 3.Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境。 4.Linux具有广泛的硬件支持特性。
Details:
第一,Linux系统是层次结构且内核完全开放。Linux是由很多体积小且性能高的微内核系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。
第二,强大的网络支持功能。Linux诞生于因特网时代并具有Unix的特性,保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。此外,Linux还支持ext2、fat16、fat32、romfs等文件系统,为开发嵌入式系统应用打下了很好的基础。
第三,Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。Linux也符合IEEEPOSIX.1标准,使应用程序具有较好的可移植性。 传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价格比较昂贵,只适合做非常底层的调试。使用嵌入式Linux,一旦软硬件能够支持正常的串口功能,即使不用仿真器,也可以很好地进行开发和调试工作,从而节省一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(toolchain)。它利用GNU的gcc做编译器,用gdb、kgdb、xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。
第四,Linux具有广泛的硬件支持特性。无论是RISC还是CISC、32位还是64位等各种处理器,Linux都能运行。Linux通常使用的微处理器是IntelX86芯片家族,但它同样能运行于Motorola公司的68K系列CPU和IBM、Apple、Motorola公司的PowerPCCPU以及Intel公司的StrongARMCPU等处理器。Linux支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(MMU)的处理器上运行。这意味着嵌入式Linux将具有更广泛的应用前景。
45、简述Linux启动过程。
Base:
Linux系统的启动过程可以分为5个阶段: 1、内核的引导。 2、运行 init。 3、系统初始化。 4、建立终端 。 5、用户登录系统。
Details:
内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入/boot 目录下的内核文件。 运行init init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。init 程序首先是需要读取配置文件 /etc/inittab。 系统初始化 在init的配置文件中有这么一行:si::sysinit:/etc/rc.d/rc.sysinit,它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bashshell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。 建立终端 rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统。 用户登录系统 一般来说,用户的登录方式有三种: 命令行登录 、ssh登录 、图形界面登录.
46、简述网络文件系统 NFS,并说明其作用。
(1)网络文件系统是应用层的一种应用服务,它主要应用于Linux和Linux系统、Linux和Unix系统之间的文件或目录的共享。 (2)对于用户而言可以通过 NFS方便的访问远地的文件系统,使之成为本地文件系统的一部分。 (3)采用NFS之后省去了登录的过程,方便了用户访问系统资源。
47、嵌入式系统的组成,能画出嵌入式系统的组成框架。
嵌入式系统由软件系统和硬件系统两部分组成。
48、 下列ARM条件码的含义是什么?(1) EQ(2) NE(3) GE(4) LT(5) MI
(1) EQ 相等 (2) NE 不相等 (3) GE 带符号数大于或等于 (4) LT 带符号数小于 (5) MI 负数
49、简述BLX、SWI、STM、LDM、MOV、MVN的含义。
BLX 带链接和状态切换的跳转指令 SWI 软件中断指令 STM 批量内存字写入指令 LDM 加载多个寄存器指令 MOV 数据传送指令 MVN 数据取反传送指令
50、Gcc编译时使用静态库与动态库的区别?
静态库在执行程序之前就已经加入到执行代码中,成为执行程序的一部分来执行,后缀为".a";动态库是在执行程序启动时加载到执行代码中,后缀名".so"。静态库生成的文件可执行文件占用内存大、部署文件容易、执行效率好;动态库程序的升级更容易。