嵌入式系统复习1-2章
1.嵌入式系统概念?
以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。本、体积、功耗
2、嵌入式系统组成?
嵌入式系统由硬件系统和软件系统组成。
3、常用的嵌入式操作系统有哪些?
常用的嵌入式操作系统有:Vxworks、μCLinux,μC/OS-Ⅱ、Linux等。
4、嵌入式操作系统有哪些特点?
嵌入式操作系统特点:实时性、可靠性、可移植性、可裁减性、专用性。
5、ARM有什么含义?
ARM首先是一个公司的名字。其次,ARM还是一种技术或一些列产品的总成。
6、ARM有哪几种基本工作模式?
ARM主要有7个基本工作模式
User : 非特权模式,大部分任务执行在这种模式
FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
Supervisor :当复位或软中断指令执行时将会进入这种模式
Abort : 当存取异常时将会进入这种模式
Undef : 当执行未定义指令时会进入这种模式
System : 使用和User模式相同寄存器集的特权模式
7、ARM处理器包含了多少个寄存器?
ARM 处理器内部包含了1 个用作PC( Program Counter),1个用作CPSR(Current Program Status Register),5个用作SPSR(Saved Program Status Registers),30 个通用寄存器,共37个。这37个分别是: R0~R7为未分组的寄存器,R8~R14为分组寄存器,R13常作为堆栈指针(SP),R14为链接寄存器(LR),R15为PC寄存器。
8、ARM体系结构可以用两种方法存储字数据,称为大端格式和小端格式。什么是大端格式?什么是小端格式?
大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中
小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
9、要将0x12345678存储在1000地址处,试分别画出其大端格式和小端格式的存储示意图?
略
10、ARM中哪种工作模式使用的寄存器最少?
user模式与system模式
11、Thumb指令与ARM指令的区别?
ARM指令是32位的,而Thumb指令是16位的。
Thumb是ARM体系结构的扩展。它有从标准32位ARM指令集抽出来的36条指令格式,可以重新编成16位的操作码。这能带来很高的代码密度。
12、RISC与CISC分别表示什么含义?有什么区别?
RISC是精简指令集的简称,CISC是复杂指令集的简称。ARM采用的是RISC技术。
RISC与CISC主要差别:A、寄存器方面。RISC指令集:拥有更多的通用寄存器,每个可以存放数据和地址,寄存器为所有的数据操作提供快速的存储访问。CISC指令集:多用于特定目的的专用寄存器。B、LOAD –STORE结构方面。RISC结构:Cpu 仅处理寄存器中的数据,采用独立的、专用的LOAD –STORE 指令来完成数据在寄存器和外存之间的传送。(访存费时,处理和存储分开,可以反复的使用保存在寄存器中的数据,而避免多次访问外存)。CISC结构:能直接处理存储器中的数据。
13、熟悉常用逻辑指令
and r0,r1,#0xFF // r0 = r1&0xFF
orr r3,r0,#0x0F // r3 = r0|0x0F
bic r0,r0,#0x03 // 清除r0中的0号位和1号位
tst r0,#0x20 //测试第6位是否为0 ,为0则Z标志置1
cmp r1,r0 //将R1与R0相减做比较,并根据结果设置CPSR的标志位
14、b指令与bl指令有何区别?
B或BL指令引起处理器转移到“子程序名”处开始执行。
两者的不同之处在于:
(1)BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。
(2)B指令则无法实现子程序的返回,只能实现单纯的跳转。
15、str r0,[r1,#12]与str r0,[r1],#12以及str r0,[r1,#12]!指令有何区别?(r1=0x200)
见PPT
16、 ldmfd sp!,{r0-r12,pc}^ 指令中的!和^各有何作用?
!表示寄存器会自动更新地址。而^表示会恢复spsr到cpsr.
17、用汇编程序实现求最大公约数(如9,15)
.text
.global _start
_start:
mov r0,#15,
mov r1,#9
loop:
cmp r0,r1
subgt r0,r0,r1
sublt r0,r0,r1
bne loop
stop:
b stop
.end
18、用打擂台算法找出从10个数中的最大值。
.section .text
.global _start
_start:
mov r0,#9
ldr r1,=buf
ldr r2,[r1],#1
loop:
ldrb r3,[r1],#1
cmp r2,r3
movlt r2,r3
sub r0,#1
cmp r0,#0
bne loop
stop:
b stop
.section .data
buf:
.byte 7,6,9,5,3,1,8,4,2,10
.end
19、用循环实现一个字符串的拷贝?例如将"china"从srcbuf,拷贝到dstbuf处。
.text
ldr r5,=srcBuf
ldr r6,=destBuf
loop:
ldrb r4,[r5]
cmp r4,#0
beq main_end
ldrb r0,[r5],#1
strb r0,[r6],#1
b loop
main_end:
b main_end
.data
srcbuf:
.string "china\0"
dstbuf:
.space 8
.end
20、用汇编指令实现将字符串逆序排列?
.text
ldr r5,=srcBuf+4
ldr r6,=destBuf
mov r4=4
loop:
sub r4,#-1
cmp r4,#0
beq main_end
ldrb r0,[r5],-1
strb r0,[r6],#1
b loop
main_end:
b main_end
.data
srcbuf:
.string "china\0"
dstbuf:
.space 8
.end
21、什么是中断?
所谓中断,是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序的过程叫做中断。
22、中断的发生和响应过程是怎样的?
按照事件发生的顺序,中断过程包括
①中断源发出中断请求;
②判断当前处理机是否允许中断和该中断源是否被屏蔽;
③优先权排队;
④CPU执行完当前指令或当前指令无法执行完,则立即停止当前程序,保护断点地址和当前状态,通过中断向量表,跳转到相应的中断服务程序;
⑤执行中断服务程序;
⑥恢复被保护的状态,执行“中断返回”指令回到被中断的程序或转入其他程序。
上述过程中前四项操作是由硬件完成的,后两项是由软件完成的。
23、中断和子函数的区别
中断的发生是随机的,不可预测的。而子函数的调用是在程序中预先安排好的。是确定的。
24、什么是bootloader,其主要功能是什么?
Bootloader是硬件启动的引导程序,是运行操作系统的前提; 在操作系统内核或用户应用程序运行之前运行的一小段代码。对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境;在嵌入式系统中,整个系统的启动加载任务通常由Bootloader来完成。
25、嵌入式系统中的bootloader有何特点?
Bootloader不属于操作系统,一般采用汇编语言和C语言开发。需要针对特定的硬件平台编写。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。
26、Bootloader的操作模式有哪几种?
大多数Bootloader都包含两种不同的操作模式 :
自启动模式:在这种模式下,Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。 交互模式:在这种模式下,目标机上的Bootloader将通过串口或网络等通信手段从开发主机(Host)上下载内核映像和根文件系统映像等到RAM中。可以被 Bootloader写到目标机上的固态存储媒质中,或者直接进行系统的引导。也可以通过串口接收用户的命令。
27、简述在ARM中uboot的启动流程
设置为svc模式-关闭MMU-基本硬件设备初始化(关中断、看门狗,初始化始终,串口,Flash,内存)-自搬移到内存-设置好堆栈-跳转到c程序—大部分硬件初始化——搬移内核到内存运行
28、若PC机的IP地址为192.168.160.252,虚拟机的IP地址为192.168.160.212,试验箱的IP地址为192.168.170.212。在实验室局域网条件下三者能否实现网络连接?若不能,应如何修改试验箱的IP地址?
不能实现网络连接。
setenv serverip 192.168.160.252
setenv ipaddr 192.168.160.172