是在ARM状态执行,还是在Thumb状态执行。 (2)将CPSR复制到相应的SPSR中。
(3)根据异常类型,强制设置CPSR的运行模式位。
(4)强制PC从相应的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。还可以设置中断禁止位,以禁止中断发生。
如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。
16.简述ARM处理器从异常返回的步骤
答:异常处理完毕之后,执行以下操作从异常返回:
(1)将连接寄存器LR的值减去相应的偏移量后送到PC中。 (2)将SPSR复制回CPSR中。
(3)若在进入异常处理时设置了中断禁止位,要在此清除。
17.基于ARM嵌入式系统设计时,应用程序中的异常如何处理?
答:当系统运行时,异常可能会随时发生,为保证在ARM 处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序,当ARM 处理器发生异常时,程序计数器PC 会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。
当多个异常同时发生时,系统根据固定的优先级决定异常的处理顺序。异常优先级由高到低的排列次序为:复位、数据中止、FIQ、IRQ、预取指令中止、未定义指令、SWI。
18.写出基于ARM920T核的处理器的异常优先级(Exception Priorities)。
答:当多个异常同时发生时,系统根据固定的优先级决定异常的处理次序。异常优先级由高到低的排列次序为:复位、数据中止、FIQ、IRQ、预取指令中止、未定义指令、SWI。
第3章
2.简要说明S3C2410X嵌入式应用系统中用8位存储器构建8位存储系统。
答:由于ARM微处理器的体系结构支持8位/16位/32位的存储器系统,相应地可以构建8位的存储器系统、16位的存储器系统或32位的存储器系统,在采用8位存储器构成8位/16位/32位的存储器系统时,除数据总线的连接不同之处,其它的信号线的连接方法基本相同。
采用8位存储器构成8位的存储器系统,要在初始化程序中还必须通过BWSCON寄存器中的DWn 设置为00,选择8位的总线方式。
● 存储器的nOE端接S3C2410X的nOE引脚; ● 存储器的nWE端接S3C2410X的nWE引脚; ● 存储器的nCE端接S3C2410X的nGCSn引脚;
● 存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR15~ADDR0]相连; ● 存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA7~DATA0]相连。 3.简要说明S3C2410X嵌入式应用系统中用8位存储器构建16位的存储器系统。
答:采用两片8位存储器芯片以并联方式可构成16位的存储器系统,要在初始化程序中将
BWSCON寄存器中的DWn 设置为01,选择16位的总线方式。
● 存储器的nOE端接S3C2410X的nOE引脚;
● 低8位的存储器的nWE端接S3C2410X的nWBE0引脚,高8位的存储器的nWE端接S3C2410X的nWBE1引脚;
● 存储器的nCE端接S3C2410X的nGCSn引脚;
● 存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR16~ADDR1]相连; ● 低8位的存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA7~DATA0]相连,高8位的存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA15~DATA8]相连。
4.简要说明S3C2410X嵌入式应用系统中用8位存储器构建32位的存储器系统。
答:采用四片8位存储器芯片以并联方式可构成32位的存储器系统,要在初始化程序中将BWSCON寄存器中的DWn 设置为10,选择32位的总线方式。
● 存储器的nOE端接S3C2410X的nOE引脚;
● 低8位的存储器的nWE端接S3C2410X的nWBE0引脚,次低8位的存储器的nWE端接S3C2410X的nWBE1引脚,次高8位的存储器的nWE端接S3C2410X的nWBE2引脚,高8位的存储器的nWE端接S3C2410X的nWBE3引脚;
● 存储器的nCE端接S3C2410X的nGCSn引脚;
● 存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR17~ADDR2]相连。 5.在ARM嵌入式应用系统使用SDRAM存储器构建存储器系统的作用。
答:在ARM嵌入式应用系统中,SDRAM主要用于程序的运行空间、数据及堆栈区。当系统启动时,CPU首先从复位地址0x0处读取启动程序代码,完成系统的初始化后,为提高系统的运行的速度,程序代码通常装入到SDRAM中运行。在S3C2410X片内具有独立的SDRAM刷新控制逻辑电路,可方便地与SDRAM接口。 6.简述NorFlash和Nand Flash存储器的差别。
答:Flash闪存是非易失存储器,是对其内部块的存储器单元块进行擦写和再编程。Flash芯片主要有NorFlash和Nand Flash两种。它们在某些方面存在一定的差异,如:Nand器件执行擦除操作简单,而Nor则要求在进行写入前先将目标块内所有的位都写为0; Nor的读速度比Nand稍快一些; Nand的写入速度比Nor快很多,Nand需4ms擦除,而Nor需要5s快。Nand Flash的单元尺寸几乎是Nor器件的一半,由于生产过程更为简单,其价格低。在Nand闪存中每个块的最大擦写次数是一百万次,而Nor的擦写次数是十万次。
Nor具有XIP(eXecute In Place,芯片内执行)特性,应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。Nor的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。在接口方面,Nor Flash和Nand Flash也存在着差别。Nor Flash带有SRAM接口,Nand器件使用复杂的I/O口来串行存取数据。
7.S3C2410X提供了几个通道的UART,怎样与PC机接口?
答:S3C2410X提供了3个通道的UART,要使其与PC机通信,必须将其信号电平转换为RS—232C 的电平。RS—232C规定了双极性的信号逻辑电平:-3V 到-25V 之间的电平表示逻辑“1”。+3V 到+25V 之间的电平表示逻辑“0”。因此这是一套负逻辑定义,以上标准称为EIA 电平。S3C2410X与PC机的异步通信接口下图所示。
8.S3C2410X的UART模块中的UART线控制寄存器有何作用?
答:S3C2410X与UART 的UART线控制寄存器包括ULCON0,ULCON1和ULCON2,主要用来选择每帧数据位数、停止位数,奇偶校验模式及是否使用红外模式,如表3.5和表3.6所示。
9.S3C2410X的UART模块中的UART控制寄存器有何作用?
答:UART控制寄存器包括UCON0, UCON1 and UCON2,主要用来选择时钟,接收和发送中断类型(即电平还是脉冲触发类型),接收超时使能,接收错误状态中断使能,回环模式,发送接收模式等。
第6章
一.填空题:(写出下列Linux命令的含义)
1、cd 改变目录位置至用户登录时的工作目录。2、cd dir1 改变目录位置至d i r 1目录下。 3、cd ~user 改变目录位置至用户的工作目录。4、cd .. 改变目录位置至当前目录的父目录。 5、cd ../user 改变目录位置至相对路径user 的目录下。 6、cd /../.. 改变目录位置至绝对路径的目录位置下。 7、cd ~ 改变目录位置至用户登录时的工作目录。 8、ls /root/ -l 的命令是查看当前目录下的文件 9、cat /root/.bash_profile命令是查看文件.bash_profile的内容 10、more /etc/inittab 命令是分页查看inittab文件内容 11、cp file1 file2 将文件file1 复制成f i l e 2。 12、cp file1 dir1 将文件file1 复制到目录dir1 下,文件名仍为f i l e 1。 13、cp /tmp/file1 . 将目录/tmp 下的文件file1 复制到当前目录下,文件名仍为f i l e 1。 14、cp /tmp/file1 file2 将目录/tmp 下的文件file1 复制到当前目录下,文件名为f i l e 2。 15、cp -r dir1 dir2 复制整个目录。 16、mv file1 file2 将文件file1更名为file2。
17、mv file1 dir1 将文件file1移到目录dir1 下,文件名仍为file1。 18、mv dir1 dir2 将目录dir1 更改为目录dir2。 19、mkdir dir1 是建立一新目录d i r 1。
20、rmdir dir1 删除目录dir1,但dir1 下必须没有文件存在,否则无法删除。 21、rm -r dir1 删除目录dir1及其子目录下所有文件。 22、rm file1 删除文件名为file1 的文件。
23、rm file? 删除文件名中有五个字符且前四个字符为file 的所有文件。 24、rm f* 删除文件名中以f 为字首的所有文件。
25、cat file1 以连续显示方式,查看文件名file1 的内容。
26、more file1 以分页方式查看文件名file1 的内容。 27、cat file1 | more 以分页方式查看文件名file1 的内容。
28、du dir1 显示目录dir1 的总容量及其子目录的容量(以KB 为单位)。 29、du -s dir1 显示目录dir1 的总容量。
30、chmod 755 dir1 对于目录d i r 1,设定成任何使用者皆有读取及执行的权利,但只有所
有者可做修改。
31、chmod 700 file1 对于文件f i l e 1,设定只有所有者可以读、写和执行的权利。 32、chmod u+x file2 对于文件f i l e 2,增加当前用户可以执行的权利。 33、chmod g+x file3 对于文件f i l e 3,增加工作组使用者可执行的权利。 34、chmod o-r file4 对于文件f i l e 4,删除其他使用者可读取的权利。 35、chown user file1 将文件file1 改为用户user 所有。
36、chown -R user dir1 将目录d i r 1及其子目录下面的所有文件改为用户user 所有。 37、chgrp vlsi file1 将文件file1 的工作组所有权改为vlsi 工作组所有。
38、chgrp -R image dir1 将目录d i r 1及其子目录下面的所有文件,改为image 工作组所有。 39、ln file1 file2 将文件f i l e 2链接至文件f i l e 1。 40、ln -s file3 file4 将文件file4 链接至文件f i l e 3。
41、grep abc file1 寻找文件f i l e 1中包含字符串abc 所在行的文本内容。 42、find / -name file1 -print 自根目录下寻找文件file1 的路径。 43、diff file1 file2 比较文件file1 与file2 内各行的不同之处。 44、diff -r dir1 dir2 比较目录dir1 与dir2 内各文件的不同之处。
45、$ cat config将会把文件config的内容依次显示到屏幕上。
46、$ ls /usr/tmp 2> err.file 可在屏幕上看到程序的正常输出结果,但又将程序的任何错误信息送到文件err.file中,以备将来检查用。 二、综合题
1、已知以下4个文件:hello.h、starfun.h、hello.c、star.c,它们的原代码如下,试用gcc编译器按下列三种情况进行程序编译。(1)第一种方法:分步进行程序编译; (2)第二种方法:用动态连接库编译程序;(3)第三种方法:用静态连接库编译程序。 Starfun.h 文件内容如下: /*****starfun.h*****/ #ifndef STARFUN_H #define STARFUN_H #define NUM 4 #define NUMBER 3 int star1() { int i,j,k; for(k=1;k<=NUM;++k) { for(i=1;i<=(NUM-k);++i) printf(\ for(j=1;j<=(2*k-1);++j) printf(\ printf(\ } return 0; }
相关推荐: