2022年嵌入式复习题
- 填空题(请将答案填入题后括号中):
1、一般而言,嵌入式系统的构架可以分为4个部分:分别是( 处理器 )、存储器、输入/输出和软件,一般软件亦分为操作系统相关和(应用软件 )两个主要部分。
2、根据嵌入式系统使用的微处理器,可以将嵌入式系统分为嵌入式微控制器,( 嵌入式微处理器 ),(嵌入式DSP处理器)以及片上系统。
3、操作系统是联接硬件与应用程序的系统程序,其基本功能有( 进程管理 )、进程间通信、( 内存管理 )、I/O资源管理。
4、从嵌入式操作系统特点可以将嵌入式操作系统分为( 实时操作系统 )和分时操作系统,其中实时系统亦可分为( 硬实时操作系统 )和软实时系统。
5、内核负责管理各个任务,或者为每个任务分配CPU时间,并且负责任务之间的(通信 ),内核的基本服务是( 任务切换 )。
6、嵌入式开发一般采用(宿主机/目标机)方式,其中宿主机一般是指(PC机/台式机 )。
7、哈佛体系结构数据空间和地址空间( 分开 ),ARM7TDMI采用( 冯诺依曼体系 )的内核架构,ARM920T采用(哈佛)的内核架构。
8. ARM7TDMI采用(3 )级流水线结构,ARM920TDMI采用(5)级流水线。
9 .按操作系统的分类可知,Dos操作系统属于顺序执行操作系统,Unix操作系统属于(分时 )操作系统,VxWorks属于( 实时嵌入式 )操作系统。
10、ARM7TDMI中,T表示支持16位Thumb指令集,D表示(在片可调试 ),M表示内嵌乘法器Multiplier,I表示(嵌入式ICE ),支持在线断点和调试。
二、选择题(请将答案填入题后括号中):
1、要使CPU能够正常工作,下列哪个条件不是处理器必须满足的。 ( D )
(A) 处理器的编译器能够产生可重入代码 (B) 在程序中可以找开或者关闭中断
(C) 处理器支持中断,并且能产生定时中断 (D) 有大量的存储空间
2、下面哪种操作系统最方便移植到嵌入式设备中。 ( D )
(A) DOS (B)unix (C) Windows xp (D)linux
3、下面哪个选项不是SUB设备的特点。 ( B )
(A) 串行通信方式 (B)不可热拨插
(C) 分HOST、DEVICE和HUB (D)通信速率比RS232快
4、下面哪种嵌入式操作系统很少用于手机终端设备上。 ( C )
(A) Symbian (B)WinCE (C) uc/os (D)linux
5、以下哪项关于SRAM和DxRAM的区别是不对 。 ( A )
(A) SRAM比DRAM慢 (B)SRAM比DRAM耗电多
(C) DRAM存储密度比SRAM高得多 (D)DRM需要周期性刷新
6、uc/os操作系统不包含以下哪几种状态。 ( C )
(A) 运行 (B)挂起 (C) 退出 (D)休眠
7、0x07&0x11的运算结果是。 ( A )
(A) 0x01 (B)0x11 (C) 0x17 (D)0x07
8、以下哪种方式不是uc/os操作系统中任务之间通信方式。 ( C )
(A) 信号量 (B)消息队列 (C) 邮件 (D)邮箱
9、以下哪种方式不是文件系统的格式。 ( B )
(A) FAT (B)DOS (C) NTFS (D)Ext
10、在将uc/os操作系统移植到ARM处理器上时,以下哪些文件不需要修改。 ( A )
(A) OS_CORE.C (B)include.h (C) OS_CPU.H (D)OSTaskInit
11. 下面哪点不是嵌入式操作系统的特点。 ( C )
A. 内核精简 B. 专用性强 C. 功能强大 D. 高实时性
12. 在嵌入式ARM处理器中,下面哪种中断方式优先级最高。 ( A )
A. Reset B. 数据中止 C. FIQ D. IRQ
13. NAND FLASH和NOR FLASH的区别正确的是。 ( D )
A. NOR的读速度比NAND稍慢一些 B. NAND的写入速度比NOR慢很多
C. NAND的擦除速度远比NOR的慢 D.大多数写入操作需要先进行擦除操作
14、 当登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么( B )。
A. NID B. PID C. UID D. CID
15、下面哪个系统目录中包含Linux使用的外部设备文件( B )。
A. /bin B. /dev C. /boot D. /home
16、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为( D )。
A.0x21 B.0x68 C.0x65 D.0x02
17、下面指令执行后,改变R1寄存器内容的指令是( D )。
A.TST R1,#2 B.ORR R1,R1,R1
C.CMP R1,#2 D.EOR R1,R1,R1
18、LDR R2,[R3,#128] 的寻址方式是( C )。
A. 寄存器寻址 B. 寄存器移位
C. 变址寻址 D. 间接寻址
19、若要使用进程名来结束进程,应使用( C )命令。
A.pss B.ps C.kill D.pstree
20、欲把当前目录下的 file1.txt 复制为 file2.txt,正确的命令是( D )。
A. copy file1.txt file2.txt B. cp file1.txt | file2.txt
C. cat file2.txt file1.txt D. cat file1.txt > file2.txt
三、简答题
1.Linux设备树的目的?
Linux使用设备树的目的主要由以下三个:
1)平台识别
最重要的是,内核使用设备树去识别特定机器(目标板,在内核中称为machine)。最完美的情况是,内核应该与特定的硬件平台无关,然而,因为所有硬件平台的并不都是完美的。所以内核必须在早期初始化阶段识别机器,这样内核才有机会运行与特定机器相关的初始化序列。
2)实时配置
多数情况下,设备树是固件与内核之间进行数据通信的唯一方式,所以也用于传递实时配置数据给内核,比如内核参数、initrd镜像的地址等。大多数这种数据被包含在设备树的/chosen结点
3)设备植入
经过板子早期配置数据解析之后,内核进一步进行初始化。
2.基本移植内核有哪些步骤,并解释之?
对于内核移植来说,主要是从一种硬件平台转移到另外一种硬件平台上运行。
Linux内核移植工作也就分为了3个层次,首先,内核代码中要添加相应ARM核的支持;其次,内核代码中要添加相应SoC的支持;最后就是内核代码中要添加相应硬件单板的支持。进行板级移植通常要做以下基本工作:(1)选择参考板(2)编译测试参考板的Linux内核(3)对内核进行裁剪和添加功能
3.Exynos4412内核与设备树启动步骤?
Linux内核启动就是引导内核镜像启动的过程。典型的内核镜像是uImage,包含64字节的U-Boot头,启动加载程序和压缩后的内核主体3部分。启动过程中最主要任务的就是解压和启动内核主体。在Linux系统起来后,会将解析完成的设备树导出到用户空间。将uImage内核镜像和设备树下载到内存后,通过U-Boot的bootm命令即可启动内核。Linux内核的主体代码将会执行一系列复杂的初始化过程,然后去挂载根文件系统,最后执行用户空间的第一个初始化程序,从而完成整个内核的启动过程。
4.如何生成可移植的内核与设备树?
板级移植工作通常都不是完全从头开始的,在内核代码中很容易找到一款和自己的目标板配置类似的目标板,所以可以参照该目标板,做一些相应的修改以适合自己的目标板即可。选择参考板,编译测试参考板的Linux内核,将Linux内核源码进行修改,编译生成自己板卡适用的zImage和设备树文件。
5.根文件系统目录的含义?
根文件系统是在内核启动时直接挂载在根目录(/)下的一个文件系统。他包含了Linux系统运行所必须的一些工具、库、脚本、配置文件和设备文件等。没有挂载根文件系统的一个单纯的Linux内核仅仅只是一个内核,没有实际的用处。
6.U-Boot启动过程?
U-Boot 的启动流程一般分为两个阶段的Bootloader:stage1 和 stage2,下面分别对这两个阶段进行讲解:
(1)Bootloader 的 stage1
1.基本的硬件初始化,包括屏蔽所有的中断、设置 CPU 的速度和时钟频率、RAM 初始化、初始化LED、关闭 CPU 内部指令和数据 cache 灯。
2.为加载 stage2 而准备 RAM 空间
3.拷贝 stage2 到 RAM 中,在这里要确定两点:①stage2 的可执行映像在固态存储设备的存放起始地址和终止地址;②RAM 空间的起始地址。
4.设置堆栈指针 sp,为执行 stage2 的 C 语言代码做好准备。
(2)Bootloader 的 stage2
1.用汇编语言跳转到 main 入口函数
2.初始化本阶段要使用到的硬件设备,包括初始化串口、初始化计时器等。在初始化这些设备之前、可以输出一些打印信息。
3.检测系统的内存映射
4.加载内核映像和根文件系统映像。
5.设置内核的启动参数。
7.ARM 的7 种功能模式是什么?
用户模式(usr)、系统模式(sys)、快中断模式(fiq)、中断模式(irq)、管理模式(svc)、中止模式(abt)、未定义模式(und)
8、在Linux启动时,这个inittab文件起什么作用?
Linux启动时,运行一个叫作init的程序,然后根据运行级启动后面的任务,包括多用户环境,网络等。所谓的运行级就是操作系统当前正在运行的功能级别。这个级别从0到6,具有不同的功能。这些级别在/etc/inittab文件里指定。这个文件是init 程序寻找的主要文件,init进程中所做的每一步配置工作都由/etc/initab中的内容来决定的。
9、在Linux启动时,这个etc/fstab文件起什么作用?
指定启动时需要自动挂载的文件系统列表。通常来讲,如果用户在使用过程中需要手动挂载许多文件系统,这会带来不小的工作量。为了避免这样的麻烦,让系统在启动的时候自动挂载这些文件系统,Linux中使用/etc/fstab文件来完成这一功能。fstab文件中列出了初始化时需挂载的文件系统的类型、挂载点及可选参数。所以进行相应的配置即可确定系统初始化时挂载载的文件系统。
10、进程控制块的组成功能?
进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的运动变化过程。它一般包含:进程状态、程序计数器、CPU 寄存器、CPU 调度信息、内存管理信息、记账信息、I/O 状态信息等
11、解释下列命令含义?
以上命令为/proc/cpuinfo文件创建了一个软链接文件。使用“ls –l”命令可以查看到新创建的链接文件所指向的目标文件名。
12、解释下列命令含义?
在执行gzip命令后,它将删除旧的未压缩的文件并只保留已压缩的版本。以下命令以最大的压缩率对文件file_1进行压缩,生成file_1.gz文件。使用“-l”选项可以查看压缩的相关信息。最后使用gunzip命令对文件进行了解压。与压缩时相反,file_1.gz文件会被删除,继之生成file_1。
13、解释下列命令含义?
不带任何参数的route命令,其执行结果显示当前网络的路由表,包括所在子网地址和默认网关地址。第一行表示主机所在网络的地址为192.168.182.0,若数据传送目标是在本局域网内通信,则可直接通过eth0转发数据包;第二行表示数据传送目的是访问Internet,则由接口eth0,将数据包发送到网关192.168.182.2。其中Flags为路由标志,标记当前网络节点的状态。
14、在shell脚本中,什么是位置变量,说明$0,$1的含义?
执行Linux命令或Shell 脚本时可以带有参数。相应地,在Shell脚本中应有变量。执行Shell程序时,用实参去替代这些变量。在Shell脚本中这类变量的名称很特别,分别是0、1、2……这类变量称作位置变量,因为它们与命令行上具体位置的实参相对应。
$0 获取当前执行的shell脚本的文件名,包括路径
$1 获取当前执行的shell脚本的第n个参数值,即第一个命令行参数
15、解释Shell脚本文件的语句含义?
shell语句包括三类:说明性语句、功能性语句和结构性语句。
说明性语句:
以#号开始到该行结束,不被解释执行
功能性语句:
任意的shell命令、用户程序或其它shell程序。
结构性语句:
条件测试语句、多路分支语句、循环语句、循环控制语句等。
16、makefile文件的作用是什么?
管理工程文件,通过makefile的编写,对工程下不同目录中的文件的编译、链接的方式、顺序进行描述。在编写makefile后,编译工程只要求输入make命令,极大的提高了编译效率。
17、解释Makefile文件每条语句的含义?
Makefile格式:
target : dependency_files
需要由make工具创建的目标体(target),通常是目标文件或可执行文件;
要创建的目标体所依赖的文件(dependency_file);
创建每个目标体时需要运行的命令(command),这一行必须以制表符(tab键)开头;
18、根据嵌入式系统的特点,写出嵌入式系统的定义。
嵌入式系统被定义为以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
19、 ARM核现在有哪几种?
ARM7、ARM9、ARM9E、ARM10E、ARM11、Securcore以及最新的ARM11系列
20、ARM的寻址方式有哪些?
立即寻址、寄存器寻址、寄存器间接寻址、寄存器位移寻址、基址变址寻址、多寄存器寻址、相对寻址
21、试写抢占式和非抢占式的区别。
可抢占式内核:即当进程位于内核空间时,有一个更高优先级的任务出现时,如果当前内核允许抢占,则可以将当前任务挂起,执行优先级更高的进程。
非抢占式内核:高优先级的进程不能中止正在内核中运行的低优先级的进程而抢占CPU运行。进程一旦处于核心态(例如用户进程执行系统调用),则除非进程自愿放弃CPU,否则该进程将一直运行下去,直至完成或退出内核
22、从嵌入式系统底层到上层应用软件,试分析嵌入式计算系统的组成主要分为哪几个部分
嵌入式系统由硬件层、中间层、系统软件层和应用软件层组成
(1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。
(2)中间层:它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
(3)系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。
RTOS是嵌入式应用软件的基础和开发平台。
(4)应用软件:由基于实时系统开发的应用程序组成。
23、 专业名词解释(写出以下英文简写对应的中文名称)
(1)RTOS 实时操作系统 (2)CISC 复杂指令集( 3)Kernel 内核 (4)Scheduler 调度 (5)non-preemptive 非抢占式
24、嵌入式开发环境主要包括哪些组件?
嵌入式系统开发需要交叉编译和在线调试的开发环境,主要包括
1)宿主机
2)目标机(评估电路板)
3)基于JTAG 的ICD仿真器、或调试监控软件、或在线仿真器ICE
4)运行于宿主机的交叉编译器和链接器、以及开发工具链或软件开发环境嵌入式操作系统
- 请描述建立一个嵌入式开发平台的步骤。
(1)宿主机架构及开发平台选择(2)目标机架构及操作系统选择(3)交叉编译环境(4)选择虚拟目标开发板(5)进行开发
26、什么是嵌入式系统?其特点有些什么?
嵌入式系统被定义为以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
特点如下:1)具有功能很强的存储区保护功能。2)嵌入式系统的硬件和软件都是高效率地设计。是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。3)可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。4)具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。
27、嵌入式系统的BooTLoader的功能是什么?
BooTLoader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码。通过这段程序,为最终系统调用内核、运行用户应用程序准备正确的环境。
28、目前嵌入式操作系统有哪些?
嵌入式Linux、VxWorks、Windows CE、Palm OS、C/OS
29、构造嵌入式开发环境有哪几种形式?
- 交叉开发环境(2)软件模拟环境(3)评估电路板
30、嵌入式系统开发的基本流程?
(1)系统定义与需求分析(2)系统设计方案的初步确立(3)初步设计方案性价比评估与方案评审论证(4)完善初步方案,初步方案实施(5)软硬件集成测试(6)系统功能性能测试及可靠性测试
31、有时要使用Thumb技术的原因:
(Thumb指令集是把32位的ARM指令集的一个子集重新编码后形成的16位指令集。)
原因:在性能和大小之间取得平衡,用最少的代码量取得最好性能,低功耗、小体积、低成本
32、ARM处理器的工作模式有哪几种?
用户模式、快速中断模式、外部中断模式、管理模式、数据访问终止模式、未定义指令终止模式、系统模式
33、寄存器R13,R14,R15的专用功能各是什么?
R13堆栈指针SP,R14子程序链接器LR,R15程序计数器PC
34、寄存器CPSR,SPSR的功能各是什么?
CPSR:程序状态寄存器 ,cpsr在用户级编程时用于存储条件码。CPSR包含条件码标志,中断禁止位,当前处理器模式以及其他状态和控制信息。
SPSR:程序状态保存寄存器。SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
35、ARM的异常有哪几种,各进入何种工作模式?他们退出各采用什么指令?
ARM处理器中有7种异常情况:
快速中断请求,中断请求,预取指中止,数据中止,软件中断,未定义指令,复位
.快速中断请求异常进入快中断模式 SUBS PC,R14_fiq,#4
.中断请求异常进入中断模式 SUBS PC,R14_irq,#4
.预取指中止异常进入中止模式 SUBS PC,R14_abt,#4
.数据中止异常进入中止模式 SUBS PC,R14_abt,#8
.未定义指令异常进入未定义模式 MOVS PC,R14_und
.软件中断异常进入管理模式 MOVS PC,R14_svc
.复位异常进入管理模式 无
36、什么是小端和大端存储器组织?
小端:数据低位存地址低位 大端:数据低位存地址高位
37、什么是数据的边界对齐?
当数据储存时,会尽量按照数据类型大小的整数倍进行地址分配。如果该数据类型是n字节的,那么该数据类型就会按n字节对齐
38、ARM核现在有哪几种?
见19(重复)
39、ARM的寻址方式有哪些?各写一条说明。
立即寻址、**MOV R0, #123
寄存器寻址、**MOV R1,R0
寄存器间接寻址、**LDR R1,[R0]
寄存器位移寻址、 **MOV R1,R2, LSL#2
基址变址寻址、 **LDR R0,[R1,#4]
多寄存器寻址、**LDMXX R0!,{R1-R5}
相对寻址、** BL NEXT;**
40、在ARM的立即寻址方式下其立即数如何在指令编码中表示?
当参与操作的第二操作数为立即数型时,每个立即数都是采用一个8位的常数循环右移偶数位而间接得到。其中循环右移的位数由一个4位二进制的两倍表示,如果立即数记作
41、指令ADR,ADRL、LDR、NOP是如何处理地址值读入到寄存器中的?
(1)ADR是将基于PC或寄存器的地址读入寄存器的
(2)ADRL与ADR相似,但可以读取更大范围地址且被替换为两条指令
(3)LDR将一个32位的立即数或地址值读取到寄存器中
(4)NOP替换为汇编中的空操作
42、指令LDR R1,=0xFFF是如何将立即数0xfff读入到R1的?
由于需要读取的寄存器的数据超过了MOV及MVN指令可操作的范围,编译器将该常数放在数据缓冲区中,同时用一条基于PC的LDR指令读取该常数。
LDR R1,[PC,offset_to_LPOOL].
…………
LTORG ;声明数据缓冲池
LPOOL DCD OxFFF; OxFFF放在数据缓冲池中。
43、如何在c语言程序中内嵌汇编?
有两种方式:(1)在C程序中填入#asm和#endasm的编译命令,在之中填入汇编代码(2)编写汇编函数,通过链接定位器和特殊的编译方式链接方式加入到所有程序的目标代码中
44、嵌入式Linux操作系统的特点。
见26(重复)
45、简述Linux启动过程。
可分为5个阶段:1、内核的引导,读入/boot目录下的内核文件 2、运行init 3、系统初始化 4、建立终端 5、用户登录系统
46、简述网络文件系统 NFS,并说明其作用。
NFS是一种分布式文件系统协议,其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件。其作用为可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案,节省本地存储空间,使用户不需要在网络中的每个机器上都建有Home目录,减少整个网络上可移动介质设备的数量。
47、嵌入式系统的组成,能画出嵌入式系统的组成框架。
48、 下列ARM条件码的含义是什么?(1) EQ(2) NE(3) GE(4) LT(5) MI
EQ:相等 NE:不相等 GE:有符号数大于或等于 LT:有符号数小于 MI:负数
49、简述BLX、SWI、STM、LDM、MOV、MVN的含义。
BLX:带链接和状态切换的跳转指令 SWI:软件中断指令 STM:批量内存字写入指令 LDM:加载多个寄存器指令 MOV:数据传输指令 MVN:数据取反传送指令
50、Gcc编译时使用静态库与动态库的区别?
静态库: 编译器链接时,把库文件的代码全部加入到可执行文件中 动态库: 编译时并没有把库文件的代码加入到可执行文件中,而是在程序执行时链接文件加载库
51、ARMv8-A的异常等级与安全模型。
EL0、EL1、EL2、EL3
四、程序题
1、程序每句指令后面解释。
AREA COPYBS,CODE,READONLY ;定义一个代码段
ENTRY ;程序入口
LDR RO,=SRC ;取得原数据表的表头
LDR R1,=DST ;取得目标数据表的表头
MOV R2,#20 ;R4作为循环控制
BCOPY MOVS R3,R2,LSR,#3 ;R3=R2 <<3 逻辑右移3位
BEQ CWORD ;若Z=1,跳转到CWORD
OCOPY LDMIA R0!,{R4-R11} ;加载R0指向的地址上的多字数据,保存到R4~R11中,R0值更新
STMIA R1!,{R4-R11} ;将R4-R11的数据存储到R1指向的地址上,R1值更新
SUBS R3,R3,#1 ;R3=R3-1
BNE OCOPY ;若Z=0,跳转到OCOPY
CWORD AND R2,R2,#7 ;R2=R2&7
BEQ STOP ;若Z=1,跳转到STOP
WCOPY LDR R3,{R0},#4 ;将R3中的字数据读入以R0为地址的存储器中,并将新地址R0+4写入R1
STR R3,{R1},#4 ;将R3中的字数据写入以R1为地址的存储器中,并将新地址R1+4写入R1
SUBS R2,R2,#1 ;R2=R2-1
BNE WCOPY ;若Z=0,跳转到WCOPY
STOP ……
2、下面给出了一个SHELL程序。
#!/bin/bash
dir=$1 //获取要打开的目录名字并赋值给dir
if [ -d $dir ] //如果存在该目录
then
cd $dir //进入该目录
for file in * //遍历所有目录中的文件
do
if [-f $file ]
then
cat $file
echo “end of file $file” //输出 end of file $file
fi
done
else //否则
echo “bad directory name $dir” //输出 没有名为“$dir”的目录
fi
3、在ADS编译环境程序如下。
AREA Jump,CODE,READONLY ;设置本程序的名称及属性
NUM EQU 2 ;跳转表中的子程序个数
ENTRY ;程序执行的入口点
Start MOV R0,#0 ;设置3个参数,R0选择调用哪个子程序
MOV R1,#3 ;R1为子程序要用的参数
MOV R2,#2 ;R2为子程序要用的参数
BL Func ;调用子程序Func,进行算术运算
Stop MOV R0 ,#0x18 ;本条与下条指令的作用是参数传递
LDR R1,=&20026
SWI 0x123456 ;将CPU的控制权交给调试器
Func CMP R0,#NUM ;判断R0是否在有效范围之内
MOVHS PC,LR ;如果超出范围则程序返回
ADR R3,JTable ;读取跳转表的基地址
LDR PC,[R3,R0,LSL #2];根据参数R0的值跳转到相应的子程序
JTable DCD DoAdd ;当参数R0为0时上面的代码将选择DoAdd
DCD DoSub ;当参数R0为1时上面的代码将选择DoSub
DoAdd ADD R0,R1,R2 ;子程序DoAdd执行加法操作
MOV PC,LR ;子程序返回
DoSub SUB R0,R1,R2 ;子程序DoSub执行减法操作
MOV PC,LR ;子程序返回
END ;结束汇编
4、根据一段完整的汇编语言代码回答下面的问题。
GLOBAL Reset_Handler
area start,code,readwrite
entry
code32
num EQU 20
Reset_Handler
ldr R0, =src
ldr R1, =dst
mov R2, #num
ldr sp, =0x30200000
blockcopy
movs R3,R2, LSR #3
beq copywords
stmfd sp!, {R4-R11}
octcopy
ldmia R0!, {R4-R11}
stmia R1!, {R4-R11}
subs R3, R3, #1
bne octcopy
ldmfd sp!, {R4-R11}
copywords
ands R2, R2, #7
beq stop
wordcopy
ldr R3, [R0], #4
str R3, [R1], #4
subs R2, R2, #1
bne wordcopy
stop
b stop
ltorg
src dcd 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4
dst dcd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
end
5、解释如下Shell脚本文件的语句含义及完成功能?
例子: shell程序prog3.sh, 用法为:
./prog3.sh file
内容如下:
#The statement of if…then…else…fi
if [ -d $1 ]
then
echo “$1 is a directory”
exit (退出当前的shell程序)
else
if [ -f $1 ]
then
echo “$1 is a common file”
else
echo “unknown”
fi
fi
6、解释如下Shell脚本文件的语句含义及完成功能?
实例. 程序prog4.sh检查用户输入的文件名, 用法为:
./prog4.sh string_name
# The statement of case…esac
if [ $# -eq 0 ]
then
echo “No argument is declared”
exit
fi
case $1 in
file1)
echo “User selects file1”
;;
file2)
echo “User selects file2”
;;
)
echo “You must select either file1 or file2!”
;;
esac
7、解释如下Makefile文件每条语句的含义,目标?
*OBJS = kang.o yul.o
CC=gcc
CFLAGS=-Wall-O-g
sunq:$(OBJS)
$(CC) $(OBJS) -o sunq
kang.o : kang.c kang.h
$(CC) $(CFLAGS) -c kang.c -o kang.o
yul.o : yul.c yul.h
$(CC) $(CFLAGS) -c yul.c -o yul.o
五、实验题
1、实验:LED跑马灯
2、实验;中断
3、实验:串行通讯
这几个实验出现的控制字,状态字及电路图,在试卷内不提供
使用向量中断编写一个平台上其它按键中断的程序,并实现上升沿、下降沿、高电平、低电平等促发方式。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、