嵌入式系统试卷及答案

更新时间:2024-02-03 00:40:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2014年上学期11级计算机专业嵌入式系统期末试卷

一、选择题(本大题共10个小题,每小题1分,共10分)

1、和PC机系统相比,下列哪点不是嵌入式系统所特有的:( C ) A、系统内核小 B、专用性强 C、可执行多任务 D、系统精简 2、ADD R0,R1,#3属于( A )寻址方式。 A、立即寻址 B、多寄存器寻址 C、寄存器直接寻址 D、相对寻址 3、GET伪指令的含义是:( A ) A、包含一个外部文件 B、定义程序的入口 C、定义一个宏 D、声明一个变量 4、μCOS-II操作系统不属于:( C ) A、RTOS B、占先式实时操作系统 C、非占先式实时操作系统 D、嵌入式实时操作系统 5、FIQ中断的入口地址是:( A ) A、0x0000001C B、0x00000008 C、0x00000018 D、0x00000014 6、ARM指令集和Thumb指令集分别是( D )位的。 A、8位,16位 B、16位,32位 C、16位,16位 D、32位,16位 7、BL和BX的指令的区别是( D )

A、BL是跳转并切换状态;BX带返回的跳转并切换状态。 B、BL是带返回的连接跳转;BX带返回的跳转并切换状态。 C、BL是跳转并切换状态;BX是带返回的连接跳转。 D、BL是带返回的连接跳转;BX是跳转并切换状态。 8、Boot Loader 的启动过程是( A )

A.单阶段 B. 多阶段 C.单阶段和多阶段都有 D.都不是 9、以下说法不正确的是( B )

A 、任务可以有类型说明 B 、任务可以返回一个数值 C 、任务可以有形参变量 D 、任务是一个无限循环

10、若已定义的函数有返回值,则以下关于该函数调用叙述中错误的是( D )

A、函数调用可以作为独立的语句存在 B、函数调用可以作为一个函数的实参 C、函数调用可以出现在表达式中 D、函数调用可以作为一个函数的形参

1.用户编写了一个文本文件a.txt,想将该文件名称改为txt.a,下列命令__D____可以实现。

A. cd a.txt xt.a B. echo a.txt > txt.a C. rm a.txt txt.a D. cat a.txt > txt.a

1

2.Linux文件权限一共10位长度,分成四段,第三段表示的内容是___C___ 。

A. 文件类型 B. 文件所有者的权限 C. 文件所有者所在组的权限 D. 其他用户的权限

3.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是___D__。

A. -m B. -d C. -f D. -p 4.下面关于i节点描述错误的是__A___ 。 A.i节点和文件是一一对应的 B.i节点能描述文件占用的块数

C.i节点描述了文件大小和指向数据块的指针

D.通过i节点实现文件的逻辑结构和物理结构的转换

5.在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用__C____命令。 A. 上箭头 B. 下箭头 C. “.” D. “*”

6.某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为__D____ 。

A. 467 B. 674 C. 476 D. 764

7.在Redhat公司发布的Linux版本中,若要使得用户登录验证,需要修改以下__C____脚本。

A. /etc/inittab B. /etc/passwd C. /etc/shadow D. /etc/group

8.下列不是Linux系统进程类型的是_D_____ 。

A. 交互进程 B. 批处理进程 C. 守护进程 D. 就绪进程 9.下列关于/etc/fstab文件描述,正确的是___D___ 。 A. fstab文件只能描述属于linux的文件系统 B. CD_ROM和软盘必须是自动加载的

C. fstab文件中描述的文件系统不能被卸载 D. 启动时按fstab文件描述内容加载文件系统

10.在Shell脚本中,用来读取文件内各个域的内容并将其赋值给Shell变量的命令是__D___ 。 A. fold B. join C. tr D. read

武汉大学计算机学院

一、选择题(单选题,每小题2分,共20分) 1.Linux系统的开发模型是 __B____ 。

A.教堂模型 B.集市模型 C.层次模型 D.网状模型 2.在Linux中,进程优先级的相关参数有多个,与实时进程优先级相关的参数是 __D____ 。

A.policy B.counter C.priority D.rt_priority 3.__B___ 属于SYSTEM Ⅴ进程间通信方式。

A.管道 B.信号量 C.软中断信号 D.锁机制

4.在Linux系统中,每个进程都有4GB的虚拟地址空间,其中内核空间占用 __C___ 。

2

A.0~2GB-1 B.0~3GB-1 C.3GB~4GB-1 D.2GB~4GB-1 5.Linux文件系统中,文件在外存的物理地址放在 ___A___ 中。 A.i节点 B.用户打开文件表 C.系统打开文件表 D. 进程控制块

6.以长格式列目录时,若文件test的权限描述为:drwxrw-r--,则文件test的类型及文件主的权限是__A____ 。

A. 目录文件、读写执行 B. 目录文件、读写 C. 普通文件、读写 D.普通文件、读

7.当字符串用单引号(’’)括起来时,SHELL将 __C____ 。 A.解释引号内的特殊字符 B.执行引号中的命令 C.不解释引号内的特殊字符 D.结束进程 8./etc/shadow文件中存放 _B_____ 。

A.用户账号基本信息 B.用户口令的加密信息 C.用户组信息 D.文件系统信息 9.Linux系统中,用户文件描述符0表示 ____A__ 。

A.标准输入设备文件描述符 B.标准输出设备文件描述符 C.管道文件描述符 D.标准错误输出设备文件描述符 10.为卸载一个软件包,应使用 ___B__ 。

A.rpm -i B.rpm -e C.rpm -q D.rpm –V

长沙理工大学考试试卷

一、单项选择题(每题2分,共40分)

1.若当前目录为/home,命令ls –l 将显示home目录下的( D )。 A.所有文件 B.所有隐含文件 C.所有非隐含文件 D.文件的具体信息

2.下面关于文件 \的描述哪个是正确的? ( D )。

A.它是一个系统脚本文件 B.它是可执行文件

C.它存放本机的名字 D.它指定本机eth0的IP地址 3. 如何快速切换到用户John的主目录下?( D )

A.cd @John B.cd #John C.cd &John D.cd ~John 4.启动DNS服务的守护进程( C )

A. httpd start B.httpd stop C. named start D. named stop

5. 若URL地址为http://www.nankai.edu/index.html,请问哪个代表主机名( D )。

A.nankai.edu.cn B.index.html C.www.nankai.edu/index.html D.www.nankai.edu 6.RED HAT LINUX 9默认使用的文件系统类型为( B )

A.ext2 B.ext3 C.FAT D.swap 7.在LINUX中,要查看文件内容,可使用( A )命令。 A.more B.cd C.login D.logout 8.光盘所使用的文件系统类型为( D )。

A.ext2 B.ext3 C.swap D.ISO 9660

3

9.以下命令中,可以将用户身份临时改变为root的是( B )。 A.SU B.su C.login D.logout

10.LINUX所有服务的启动脚本都存放在( A )目录中。

A./etc/rc.d/init.d B./etc/init.d C./etc/rc.d/rc D./etc/rc.d 11.若要使用进程名来结束进程,应使用( A )命令。

A.kill B.ps C.pss D.pstree 12.RED HAT LINUX所提供的安装软件包,默认的打包格式为( C )。 A..tar B..tar.gz C..rpm D..zip

13.若要将当前目录中的myfile.txt文件压缩成myfile.txt.tar.gz,则实现的命令为( C )。

A.tar –cvf myfile.txt myfile.txt.tar.gz B.tar –zcvf myfile.txt myfile.txt.tar.gz C.tar –zcvf myfile.txt.tar.gz myfile.txt D.tar –cvf myfile.txt.tar.gz myfile.txt 14.LINUX交换分区的格式为( D )。

A.ext2 B.ext3 C.FAT D.swap 15.以下文件中,只有root用户才有权存取的是( B ) A.passwd B.shadow C.group D.password 16.usermod命令无法实现的操作是( B )

A.账户重命名 B.删除指定的账户和对应的主目录 C.加锁与解锁用户账户 D.对用户密码进行加锁或解锁 17.LINUX用于启动系统所需加载的内核程序位于( C )

A./ B./lib/modules/2.4.20_8/kernel C./boot D./proc

18.init进程对应的配置文件名为( D ),该进程是LINUX系统的第一个进程,其进程号PID始终为1。

A./etc/fstab B./etc/init.conf C./etc/inittab.conf D./etc/inittab

19.在LINUX运行的7个级别中,X—WINDOWS图形系统的运行级别为( C)。

A.2 B.3 C.5 D.6 20.若在文字界面下,需要键入何种指令才能进入图形界面(Xwindow)。( B )

A. reboot B.startx C.startwindow D.getinto 一、单项选择题(每题2分,共40分)

当安装linux操作系统时将选择下列那一个操作? ( B ) A. 选择 \图形登录方式\设定系统开始运行级为4 B. 选择 \文本登录方式\设定系统开始运行级为3 C. 选择 \文本登录方式\设定系统开始运行级为5 D. 选择 \图形登录方式\设定系统开始运行级为3

2.Linux通过VFS支持多种不同的文件系统。Linux缺省的文件系统是( C )

A.VFAT B.ISO9660 C.Ext系列 D.NTFS

4

3.关闭linux系统(不重新启动)可使用( B )命令。

A.ctrl+alt+del B.halt C.shutdown -r D.reboot

4.修改以太网mac地址的命令为( B )。

A.ping B.ifconfig C.arp D.traceroute 5.在vi编辑器中的命令模式下,键入( B )可在光标当前所在行下添加一新行。

A. B. C. D.a 6. 以下选项中,哪个命令可以关机? ( A )

A. init 0 B. init 1 C. init 5 D. init 6 7.请选择关于 /etc/fstab 的正确描述。 ( B ) A. 系统启动后,由系统自动产生 B. 用于管理文件系统信息

C. 用于设置命名规则,是否使用可以用 TAB 来命名一个文件 D. 保存硬件信息

8.你使用命令“vi /etc/inittab”查看该文件的内容,你不小心改动了一些内容,为了防止系统出问题,你不想保存所修改内容,你应该如何操作( B )

A.在末行模式下,键入:wq B.在末行模式下,键入:q!

C.在末行模式下,键入:x! D.在编辑模式下,键入“ESC”键直接退出vi

9.删除文件命令为( D )

A.mkdir B.move C.mv D.rm

10.显示已经挂装的文件系统磁盘inode使用状况的命令是( A ) ?

A.df –i B.su –I C.du –I D.free –i 11.网络管理员对www服务器可进行访问、控制存取和运行等控制,这些控

制可在( A )文件中体现。A.httpd.conf B.lilo.conf C.inetd.conf D.resolv.conf

12.如果想在Linux下实现热启,应当修改/etc/inittab下的哪一行( B )。

A.#Trap CTRL-ALT-DELETE

B.#ca::ctrlaltdel :/sbin/shutdown -t3 -r now C.#id:3:initdefault:

D.#10:3:wait:/etc/rc.d/rc 3

13.启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中后者是在( C )文件中以独立进程方式启动。

A./usr/sbin/smbd B./usr/sbin/nmbd C.rc.samba D./etc/inetd.conf

14下列哪个命令在建立一个 tar归档文件的时候列出详细列表( A )。 A.tar -t b)tar -cv c)tar -cvf d)tar –r

15.假设文件fileA的符号链接为fileB,那么删除fileA后,下面的描述正确的是( B ) 。 A.fileB也随之被删除

5

B.fileB仍存在,但是属于无效文件

C.因为fileB未被删除,所以fileA会被系统自动重新建立 D.fileB会随fileA的删除而被系统自动删除 16.一个bash shell脚本的第一行是( D )? A.#/bin/csh B.#/bin/bash C./bin/bash D.#!/bin/bash

17.改变文件所有者的命令为( C )?A.chmod B.touch C.chown D.cat

18.在给定文件中查找与设定条件相符字符串的命令为( A )。 A.grep B.gzip C.find D.sort 19.建立一个新文件可以使用的命令为( D )。

A.chmod B.more C.cp D.touch 20. 存放Linux基本命令的目录是什么( A )?

A. /bin B. /tmp C. /lib D. /root

1、被称作链接寄存器的寄存器是( C );被称作程序计数器的寄存器是(D )。 A、R12 B、R13 C、R14 D、R15 2、ARM 指令集是( C )位宽,Thumb 指令集是( B )位宽的。 A、8位 B、16位 C、32位 D、64位 3、复位后,ARM处理器处于( A )模式、( C )状态。 A、SVC B、System C、ARM D、Thumb 4、ARM处理器中优先级别最高的异常为( D )。 A、IRQ B、SWI C、FIQ D、RESET 5、键盘是( B )类型的设备。 A、块 B、字节 C、网络 D、流

6、S3C2410的( C )具有死区发生器的功能。 A、timer0 B、timer1 C、timer2 D、timer3

7、在嵌入式系统设计中可以通过( A )来测量电池电压,可以用( C )输出来驱动 喇叭发声。A、ADC B、PWM C、DAC D、RTC 8、ADC挂接在( A )总线上。FLASH挂在( B ) A、APB B、AHB C、ASB D、HUB

1、下列哪一项不属于嵌入式系统软件结构一般包含的四个层面。( A ) A. 嵌入式处理器 B. 实时操作系统(RTOS) C. 应用程序接口(API)层 D. 实际应用程序层

2、一条ARM数据处理指令,例如“ADD R0,R1,#immed”中使用的立即数 #immed 是有一定限制的,下列立即 数表示中合法的是( B )。 A.0x00001234 B. 0x F000000F C.0x0000F008 D. 0x F080000

3、μCOS-II操作系统不属于( C )。 A、RTOS B、占先式实时操作系统

6

C、非占先式实时操作系统 D、嵌入式实时操作系统

4、 ARM汇编语句“ADD R0, R2, R3, LSL#1”的作用是( A )。 A. R0 = R2 + (R3 << 1) B. R0 =( R2<< 1) + R3 C. R3= R0+ (R2 << 1) D. (R3 << 1)= R0+ R2

5、ARM寄存器组有( D )个寄存器。 A、7 B、32 C、6 D、37

6、 每种嵌入式操作系统都有自身的特点以吸引相关用户,下列说法错误的是( D )。

A. 嵌入式Linux提供了完善的网络技术支持;

是专门为没有MMU的ARM芯片开发的; -Ⅱ操作系统是一种实时操作系统(RTOS);

D. WinCE提供完全开放的源代码

7、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为( D )。 A、0x21 B、0x68 C、0x65 D、0x02 8、下列不是嵌入式系统的特点的是( C )

A.嵌入式系统需要专用开发工具和方法进行设计。

B.嵌入式系统是技术密集、资金密集、高度分散、不断创新的知识集成系统。

C.嵌入式系统使用的操作系统一般不是实时操作系统(RTOS),系统不具有实时约束。

D.嵌入式系统通常是面向特定任务的,而不同于一般通用PC计算平台,是“专用”的计算机系统

9、寄存器R15除了可以做通用寄存器外,还可以做( A ) A. 程序计数器 B. 链接寄存器 C. 堆栈指针寄存器 D. 基址寄存器

10、若R1=2000H,(2000H)=0x28,(2008H)=0x87,则执行指令LDR R0,[R1,#8]!后R0的值为( D )。 A. 0x2000 B. 0x28 C. 0x2008 D. 0x87 11、FIQ中断的入口地址是( A )。 A、0x0000001C B、0x00000008 C、0x00000018 D、0x00000014 12、ARM指令集是( B )位的。 A. 16 B. 32 C. 8 D. 24 1 、ADD R0,R1,#3属于(A )寻址方式。 A. 立即寻址 B. 多寄存器寻址 C. 寄存器直接寻址 D. 相对寻址

2、GET伪指令的含义是( A )

7

A. 包含一个外部文件 B. 定义程序的入口 C. 定义一个宏 D. 声明一个变量1-5:AACCD 6-10:CADDD

3、存储一个32位数0x876165到2000H~2003H四个字节单元中,若以小端模式存

储,则2000H存储单元的内容为( C )。 A、0x00 B、0x87 C、0x65 D、0x61 4、μCOS-II操作系统不属于( C )。

A、RTOS B、占先式实时操作系统 C、非占先式实时操作系统 D、嵌入式实时操作系统

5、若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令LDR R0,[R1,#8]!后R0的值为( D )。 A. 0x2000 B. 0x86 C. 0x2008 D. 0x39

6、寄存器R13除了可以做通用寄存器外,还可以做( C )。 A、程序计数器 B、链接寄存器 C、栈指针寄存器 D、基址寄存器

7、FIQ中断的入口地址是( A )。 A、0x0000001C B、0x00000008 C、0x00000018 D、0x00000014

8、ARM指令集和Thumb指令集分别是( D )位的。 A. 8位,16位 B. 16位,32位 C. 16位,16位 D. 32位,16位

9、ARM寄存器组有( D )个寄存器。 A、7 B、32 C、6 D、37

10、若R1=2000H,(2000H)=0x28,(2008H)=0x87,则执行指令LDR R0,[R1,#8]!后R0的值为( D )。 A. 0x2000 B. 0x28 C. 0x2008 D. 0x87

二、填空题(每题2分,共20分)

1、ARM7 指令系统采用三级流水线指令,分别包括:取 指、译 码、执 行。

2、实现无失真放大,应使晶体三极管工作在 放大 区域。

3、一个嵌入式系统结构有典型的四层组成,包括: 功能层 、 中间层 、 软件层 和 硬件层 。

4、USB 家庭中有三位成员,即 主机(或host) 、 设备(或 device ) 、集线器(或Hub ) 。

5、嵌入式总线按传输方式分有 并行总线 和 串行总线 ,按时钟信号分有 同步总线 和 异步总线 。

1.安装Linux系统对硬盘分区时,必须有两种分区类型:Linux原始分区(根分区) 和Linux交换分区 。

8

2.在Linux的两种链接文件中,只能实现对文件链接的一种方式是:软链接(符号链接)。

3.Linux主要采用了 请求调页 和 写时复制 _两种动态内存管理技术实现了物理内存以On demand方式动态分配。

4.对于System V类型的共享内存页面,Linux基于__Clock____算法决定哪些页面应当被换出物理内存。

5.在Linux与中断相关的三个核心数据结构中,用做抽象的中断控制器的数据结构是_ hw_interrupt_type _____,它包含一系列处理中断控制器特有的操作。

6. 通过将_ request _____动态链入块设备控制结构blk_dev_struct,Linux设备管理器有效的实现了物理设备和缓冲区之间的异步读写通讯。 7.将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式__tar czvf wang.tar.gz /home/stud1/wang____。

8.对于给定的文件file,统计其中所有包含字符串”WHU”的行数的一条命令是_grep WHU file | wc -l

9. 对于Shell脚本程序,若输入参数数量多于9个,则程序遍历每个参数可通过使用__shift__命令实现。

10.在System V进程通讯方式中,ipc_perm结构描述对一个系统IPC对象的存取权限,而用于定位IPC对象的引用标志符key可以依据键值分成_公有____和___私有___两种类型。

1.在Linux2.4.0版本中,进程有 ___6___ 种状态,进程使用 __exit____ 系统调用后进入僵死状态。

2.在Linux 中,管道分为 __2____ 种类型,若创建或打开管道时获得的描述符存放在fd中,则fd[1]是 _管道写描述符_ 。

3.Linux为用户提供的接口有 shell、XWINDOW、系统调用 4.Linux在I386体系结构中支持 __两级____分页机构。

5.每个设备文件名由主设备号和从设备号描述。第二块IDE硬盘的设备名为 __hdb____,它上面的第三个主分区对应的文件名是 __hdb3____ 。

6. 超级块是描述 __文件系统属性____ 信息的数据结构,索引节点是描述 __文件属性____ 信息的数据结构。

7.df命令完成_显示文件系统空间使用情况_____ 功能,du命令完成 _显示目录或文件占用磁盘空间容量_____ 功能。

8.命令组合(命令表)将 _建立新的子进程_____ 来执行命令。

9. 磁盘限额管理可以使用 __quota____ 软件工具,其中硬限额的容量应该__大于____软限额。

10.交换线程通过三种途径来缩减已使用的内存页面:减少buffer cache和page cache的大小、换出系统V类型的内存页面、换出或丢弃进程的页面

1.在Linux系统中,以( 文件 )方式访问设备 。

2. Linux内核引导时,从文件(/etc/fstab )中读取要加载的文件系统。

3.链接分为: 硬链接和( 软链接 )。

9

4.某文件的权限为:drw-r--r--,用数值形式表示该权限,该文件属性是( 目录 ) 。

5.前台起动的进程使用 ( ctrl+c )终止。

6. 设定限制用户使用磁盘空间的命令是( quota )。

7. 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是(/etc )。

8.将前一个命令的标准输出作为后一个命令的标准输入,称之为( 管道 )。

9.为脚本程序指定执行权的命令及参数是( chmod a+x filename )。 10.进行字符串查找,使用( grep )命令。

1.将前一个命令的标准输出作为后一个命令的标准输入,称之为( 管道 )。

2.在shell编程时,使用方括号表示测试条件的规则是:方括号两边必有( 空格)。

3.在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为( hdb )。 4.当系统管理员需升级内核版本和改变系统硬件配置时,应(重新编译内核 )。

5.在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令( nslookup )。

6.启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、batch 和( crontab ) 。

7.在Linux操作系统中,设备都是通过特殊的(文件 )来访问。

8.shell不仅是(用户命令的解释权 ),它同时也是一种功能强大的编程语言。

9.在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是(samba )服务器。

10.结束后台进程的命令是(kill )。

1、cpsr寄存器的作用是_保存当前进程状态__________。

2、ARM926EJ-S中的“9”表示的含义是_版本为9的 ARM_______,“E”表示的含义是_增强型DSP指令_______,“J”表示的含义是_含有java加速器jazelle_______。

3、LINUX下察看当前目录的命令是_ls_,察看文件内容的命令是__cat___,删除目录的命令是__rm____。压缩与解压的命令是__tar____,磁盘、目录挂接命令是__mount__。

4、字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,这样的存储方式我们称之为____大端______格式。

5、ARM9TDMI中的“T”表示的含义是_支持Thumb指令集__,“D”表示的含义是_支持片上Debug__,“M”表示的含义是__ 内嵌硬件乘法器___ ,“I”表示的含义是_支持片上断点调试6、ARM指令中的第二个操作数

“operand2”有_立即数__、_寄存器__、__寄存器移位__三种具体形式。 9、LINUX将设备分成__块设备____和___字符设备_______两大类。

1、ARM9处理器有( 31 )个通用寄存器,有( 6 )个状态寄存器。

10

10、 什么是ARM体系结构中的异常向量表?在应用中有何作用? 答:处理器规定了异常处理程序入口的地址区间,并规定了地址的存放顺序,一 般称为异常向量表。

在异常处理过程中,可以加快异常服务的响应速度。 11、 在ARM体系结构中,异常向量表中存放的是什么内容? 答:异常处理程序的程序入口地址。 12、 在ARM体系结构中,异常向量表中0x0014(保留字)单元存放的是什么内容?有何用途?

答:保留的异常入口,早期的ARM结构中会被用到,而在ARM7中是保留的,以 确保软件能与不同的ARM结构兼容。而在有些处理器芯片中,这4个字节已经有 了非常特殊的用特。 13、 结合GPIO 结构原理图,简述GPIO的工作方式设置内容。

答:芯片某个管脚首先经过unix功能选择,对应PINSELx寄存器选择其功能,如 果选择GPIO功能,在经过MUX2中IOxDIR寄存器对应位选择,控制管脚输入输 出方向,GPIO管脚输入时通过IOxPIN寄存器读入,输出时通过IOxSET或IOxCLR 寄存器控制输出实现对应GPIO管脚的控制。

四、编程题

.一。从一数到十 COUNT

START

LOOP 中

EQU 0x30003100 ;定义变量COUNT的基地址

AREA Example1,CODE,READONLY;声明代码段Example1为只读 ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令 LDR R1,=COUNT ;将0X30003100赋给R1 MOV R0,#0 ;执行R0=0

STR R0,[R1] ;存储R0寄存器的数据到R1指向的存储单元 LDR R1,=COUNT ;将0X30003100赋给R1

LDR R0,[R1] ;将R1中的数值作为地址,取出此地址中的数据保存到R0 ADD R0,R0,#1 ;执行R0=R0+1 CMP R0,#10 ;将R0与10进行比较 MOVHS R0,#0 ;若R0大于等于10,则R0=0

STR R0,[R1] ;存储R0寄存器的数据到R1指向的地址单元

16

B LOOP ;跳转到LOOP END ;汇编文件结束

二,9的8次幂

X EQU 9 ;初始化X为9 n EQU 8 ;初始化N为8

AREA

Example3,CODE,READONLY ;生明代码段Example3为只读

ENTRY ;标识程序入口路 CODE32 ;声明32位ARM指令 LDR S

P,=0x30003F00 ;把0x30003F00 赋给SP(R13)

LDR R0,=X ;把9赋给R0 LDR R1,=n ;把8赋给R1

BL POW ;跳转到POW,并把下一条指令地址存入到R14中 B HALT ;等待跳转

STMFD SP!,{R1-R12,LR} ;将R1-R12入栈,满递减堆栈 MOVS R2,R1 ;将R1赋给R2,并影响标志位 MOVEQ R0,#1 ;若Z=1,则R0=1

BEQ POW_END ;若Z=1,跳转到POW_END MOV R1,R0 ;将R0中值赋给R1 SUB R2,R2,#1 ;将R2-1的只赋给R2

BL DO_MUL ;跳转到DO-MUL,并把下一条指令地址存入R14中 SUBS R2,R2,#1 ;将R2-1的值赋给R2,并影响标志位 BNE POW_L1 ;若Z=0,跳转到POW_L1

START

HALT POW

POW_L1

POW_END LDMFD SP!,{R1-R12,PC} ;数据出栈,存入到R1-R12,PC中 DO_MUL MUL R0,R1,R0 ;把R1*R0的值赋给R0

程序清单(一) C 语言实验参考程序

#define uint8 unsigned char ;定义一个无符号字符常量uint8 #define uint32 unsigned int ;定义一个无符号整形常量unint32 #define N 100 ;定义一个常量N=100(宏定义,100用N代替)

uint32 sum; ;定义sum为无符号整型常量(声明一个unsigned int型的变量sum) void Main(void) ;主函数

{uint32 i; ;定义无符号整型常量i(声明一个unsigned int型的变量i)

17

MOV PC,LR ;LR中的值赋给PC END ;汇编结束

三:从一一直加到一百

sum=0; ;sum初始值为0

for(i=0;i<=N;i++) ;i在N内自增加1(i从0开始,i<=N时循环成立) {sum+=i;} ;把sum+i赋给sum while(1); ;为真循环 }

程序清单(二) 简单的启动代码

IMPORT |Image$$RO$$Limit | ;R0输出段存储区域界限 IMPORT |Image$$RW$$Base | ;RW输出段运行时起始地址 IMPORT |Image$$ZI$$Base | ;ZI输出段运行时起始地址 IMPORT |Image$$ZI$$Limit | ;ZI输出段存储区域界限 IMPORT Main ;主函数

AREA Start,CODE,READONLY ;声明代码段start,为只读 ENTRY ;程序入口

CODE32 ;声明32位ARM指令 Reset

LDR SP,=0x40003f00 ;将0x40003f00赋给SP

LDR R0,=|Image$$RO$$Limit| ;将R0输出段存储区域界限赋给R0 LDR R1,=|Image$$RW$$Base | ;将RW输出段运行时起始地址赋给R1 LDR R3,=|Image$$ZI$$Base | ;将ZI输出段运行时起始地址赋给R3 CMP R0,R1 ;比较R0和R1,相等Z=1,反之Z=0 BEQ LOOP1 ;若Z=1,则跳到LOOP1 CMP R1,R3 ;比较R1和R3,若R1

LDRCC R2,[R0],#4 ;若C=0,读取R0地址单元内容并且存入R2,且STRCC R2,[R1],#4 ;若C=0,读取R2中的数据存入R1,且R1=R1+4 BCC LOOP0 ;若C=0,跳转到LOOP0

LDR R1,=|Image$$ZI$$Limit| ;将ZI输出段存储区域赋给R1 MOV R2,#0 ;把0赋给R2

CMP R3,R1 ;比较R1和R3,若R1

STRCC R2,[R3],#4 ;若C=0,将R2中数据保存到内存单元R3中,且 BCC LOOP2 ;若C=0,跳转到LOOP2 B Main ;跳转到主程序 END ;汇编结束

LOOP0 R0=R0+4 LOOP1

LOOP2 R3=R3+4 实验四

18

程序清单(一) C 语言调用汇编的参考程序

#define uint8 unsigned char ;定义一个无符号字符常量uint8 #define uint32 unsigned int ;定义一个无符号整型常量.uint32

extern uint32 Add(uint32 x,uint32 y); //声明子程序Add为一个无符号整型常量,它为2个无符号整型常量x,y的和

uint32 sum; ;定义sum为无符号整型常量 void Main(void) ;无返回主程序 {sum=Add(555,168); ;sum等于555+168 while(1); ;为真循环 }

程序清单(二) 汇编加法函数程序

EXPORT Add ;声明子程序Add方便调用 AREA Start,CODE,READONLY ;声明代码段start,为只读 ENTRY ;程序入口

CODE32 ;声明32位ARM指令

Add ADD R0,R0,R1 ;将R0+R1值赋给R0

MOV PC,LR ;将LR值赋给PC END ;汇编结束

19

14、 设计编程:LPC2131的P0.7引脚连接了一个蜂鸣器,编程发出等周期的滴滴声。 答: #define

Void DelayNS(int m) { int i;

for(;m>0;m--) for(i = 0;i<50000;i++) }

main() {

PINSEL0 = 0x00000000; IO0DIR = 1 << 7; while (1) { IO0SET = 1 << 7; DelayNS(50); IO0CLR = 1 << 7; DelayNS(50); } }

20

15、 设计编程:LPC2131的P0[1:0] 两引脚分别连接了2个按键K1和K4;P0[7:6] 两引脚分别连接了2个指示灯LED1和LED2;请编制驱动程序,使Kx 按键时,LEDx 灯亮。 答:

#define k1 1<<0 #define k2 1<<1

#define LED1 1<<7 #define LED2 1<<8

main() {

PINSEL0=0x00000000; IO0DIR=IO0DIR & (~k1); IO0DIR=IO0DIR & (~k2); IO0DIR=IO0DIR|LED1; IO0DIR=IO0DIR|LED2;

IO0CLR=IO0CLR|LED1|LED2; While(1) {

If((IO0PIN & k1)==0) IO0SET=LED1; else IO0SET=LED1; If((IO0PIN & k2)==0) IO0SET=LED2; else IO0SET=LED2; } } 16、 ARM 芯片中定时器结构原理如下图,试设计一个周期为2秒的方波发生器。(假设该系统的外围设备时钟频率Fpclk = 10MHz) 答:int mian{

PINSEL0=PINSEL0 & (1(3<<10)) | (2<<10); T0CTCR=0x00; T0TC=0; T0PR=99;

T0MCR=0x02<<3; T0MR1=Fpclk/100; T0EMR | =0xc2; T0TCR=0x01; While(1); }

21

17、 使用学过的知识设计设计一个汽车用“车速表”,写出你的设计方案并编程实现。

提示:可用霍尔元件将车轮的转动转换为脉冲。车轮每转动一圈会产生一个方波脉冲。

答: 转动脉冲:

void __irq IRQ_Timer0 (void) {

if ((IO0SET & BEEP) == 0)

IO0SET = BEEP; /* 关闭BEEP */ else

IO0CLR = BEEP;

T0IR = 0x01; /* 清除中断标志*/

VICVectAddr = 0x00; /* 通知VIC中断处理结束 */ }

int main (void) {

int spped=1;

PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */ IO0DIR = BEEP; /* 设置BEEP控制口输出*/ IRQEnable(); /* IRQ中断使能*/ /* 定时器0初始化 */

T0TC = 0; /* 定时器设置为0*/ T0PR = 0; /* 时钟不分频*/

T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志*/ T0MR0 = Fpclk / spped; /* 0.5秒钟定时*/ T0TCR = 0x01; /* 启动定时器*/

/* 设置定时器0中断IRQ */

VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断*/

VICVectCntl0 = 0x20 | 0x04; /* 设置定时器0中断通道分配最高优先级*/

VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址*/ VICIntEnable = 1 << 0x04; /* 使能定时器0中断*/ while (1){

if ((IO0PIN & KEY1) == 0) { spped=10;

T0MR0 = Fpclk / spped; /* 0.5秒钟定时*/ T0TC = 0; /* 定时器设置为0*/ }

else if ((IO0PIN & KEY2) == 0) { spped=20;

22

T0MR0 = Fpclk / spped; /* 0.5秒钟定时*/ T0TC = 0; /* 定时器设置为0*/ }

else if ((IO0PIN & KEY3) == 0) { spped=30;

T0MR0 = Fpclk / spped; /* 0.5秒钟定时*/ T0TC = 0; /* 定时器设置为0*/ }

else if ((IO0PIN & KEY4) == 0) { spped=40;

T0MR0 = Fpclk / spped; /* 0.5秒钟定时*/ T0TC = 0; /* 定时器设置为0*/ } };

return 0; }

汽车车速:

int main (void) {

int Vx;

PINSEL0 = (PINSEL0&(~(3<<20)))|(2<20); PINSEL0 = PINSEL0&(0<<24); T0CTCR &= 0xf0; T0TC = 0; T0PR = 99; T0MCR = 0x03;

T0MR0 = Fpclk/300;

T1CTCR = (T1CTCR&(~0x0f)|0xf1); T1TC =0;

T1MCR = 0x00; T1CCR &= ~0x07;

T0TCR = 0x01; T1TCR = 0x01; while (1) {

if ((T0IR&0x01) == 1) {

T0IR = 0x01; Vx = T1TC; T1TC = 0;

VtotalLen += Vx;

23

VthisLen += Vx;

Vspeed = (Vx*L*3.6)/HrN; }

if ((IO0PIN & KClr) == 0) VthisLen = 0; }

return 0; }

1、编写一程序,用查询的方式,对S3C2410的A/D转换器的第3通道连续进行100次A/D转换,然后将其结果求平均值。设预分频为49。注意:A/D转换器有独立的模拟信号输入引脚AIN0---AIN9。 ADCCON格式如下: 15 14 13 …… 6 5 4 3 2 1 0 ECFLG PRSCEN PRSCVL SEL_MUX STDBM READ_START ENABLE_START ADCDAT0格式如下: 15 14 13 12 11 10 9 …… 0 UPDOWN AUTO_PST XY_PST 保留(0) 转换结果 ADCCON、ADCDAT0的地址宏定义为: #define rADCCON (*(volatile unsigned *)0x58000000) #define rADCDAT0 (*(volatile unsigned *)0x5800000c) #define pref 49 #define ch 3 int adc(void)

{ rADCCON=(1<<14)|(pref<<6)|(ch<<3)|1; //允许预分频,启动转换

while(rADCCON&0x01==1); //查询是否已经启动转换

while(rADCCON&0x8000==0); //查询转换是否结束 return rADCDAT0&0x3ff; //读取转换结果 }

void main()

{ int adc_data=0, i; for(i=0;i<100;i++) adc_data+=adc(); adc_data=adc_data/100;

printf(\,adc_data); }

24

1、编写程序,将存储器从0x400000开始的200个字数据,传送到0x400600开始的区域。 解: MOV R0,#0x400000 LDR R1,=0x400600 MOV R7,#200 LP: LDR R2,[R0],#4 STR R2,[R1],#4 SUBS R7, R7,#1 BNE LP HERE:B HERE

2、编写一程序,查找存储器从0x500000开始的200个字中为5的数目,将其结果存到0x600000中。 解: MOV R0,#0x500000 MOV R1,#0 MOV R7,#200 LP LDR R2,[R0],#4 CMP R2,#5 BNE NEXT ADD R1,R1,#1 NEXT SUBS R7,R7,#1 BNE LP MOV R0,#0x600000 STR R1,[R0] B $

3、实现1+2+……+N。

N EQU 5; ; 常量的定义

AREA Example,CODE,READONLY ; 定义段名属性等 ENTRY ; 程序入口 CODE32 ; ARM代码 START ; 行标定义

LDR R0,=N ; R0赋值

MOV R2,R0 ; R2充当计数器 MOV R0,#0 ; R0←0 MOV R1,#0 ; R1←0 LOOP ; 行标

CMP R1,R2 ; 比较R1 R2 BHI ADD_END ; 如果R1>R2 跳转到 ADD_END ; 分支的实现 ADD R0,R0,R1 ; R0←R0+R1

25

本文来源:https://www.bwwdw.com/article/n6vw.html

Top