求ARM嵌入式基础教程(第二版)周立功主编 课后习题

作者&投稿:卞印 (若有异议请与网页底部的电邮联系)
ARM嵌入式系统基础教程(第二版)--周立功主编 1到4章的课后答案~

全部的?没有啊,是不是要考试啊?呵呵,我也刚考完。还好,把一些知识点记住就行。

刚开始接触嵌入式,只觉得铺天盖地的资料让我眼花缭乱,自从接触到这本书,感觉终于摸到路了。

这本书写的很好,对于一个还没入门的人来说。 原因如下:

首先,作者把最最基本的东西告诉你;其次,作者善于把复杂的东西用简单、直观的方式表现出来;再次,书中的内容是作者多年的实践经验得来,而不是把别的资料搬过来;最后,作者以实践为主要学习手段。

还有,作者的开发板也太贵了……

我会自己写完书中的例题答案,欢迎批评和建议,只求和大家共同进步,诚惶诚恐,再拜再拜……


第1章 嵌入式系统概述
(1)举出3个本书中未提到的嵌入式系统的例子。
答:键盘、鼠标、扫描仪。

(2)什么叫嵌入式系统?
答:嵌入到对象体系中的专用计算机应用系统。

(3)什么叫嵌入式处理器?嵌入式处理器分为哪几类?
答:嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。分为3类:1.注重尺寸、能耗和价格;2.关注性能;3.关注全部4个需求——性能、尺寸、能耗和价格。

(4)什么是嵌入式操作系统?为何要使用嵌入式操作系统?
答:嵌入式操作系统是操作系统的一种类型,是在传统操作系统的基础上加入符合嵌入式系统要求的元素发展而来的。原因:1.提高了系统的可靠性;2.提高了开发效率,缩短了开发周期。3.充分发挥了32位CPU的多任务潜力。



第2章 ARM7体系结构
1.基础知识
(1)ARM7TDMI中的T、D、M、I的含义是什么?
答:T:高密度16位Thumb指令集扩展;D:支持片上调试;M:64位乘法指令;I:Embedded ICE硬件仿真功能模块。

(2)ARM7TDMI采用几级流水线?使用何种存储器编址方式?
答:3级;冯·诺依曼结构。

(3)ARM处理器模式和ARM处理器状态有何区别?
答:ARM处理器模式体现在不同寄存器的使用上;ARM处理器状态体现在不同指令的使用上。

(4)分别列举ARM的处理器模式和状态?
答:ARM的处理器模式:用户模式、系统模式、管理模式、中止模式、未定义模式、中断模式、快速模式;ARM的处理器状态:ARM状态、Thumb状态。

(5)PC和LR分别使用哪个寄存器?
答:PC:R15;LR:R14。

(6)R13寄存器的通用功能是什么?
答:堆栈指针SP。

(7)CPSR寄存器中哪些位用来定义处理器状态?
答:位31~28:N、Z、C、V,条件代码标志位;27~8:保留位;7~0:I、F、T、M4~0,控制标志位。

(8)描述一下如何禁止IRQ和FIQ的中断。
答:当控制位I置位时,IRQ中断被禁止,否则允许IRQ中断使能;当控制位F置位时,FIQ中断被禁止,否则允许FIQ中断使能。

2.存储器格式
答:无论是大端格式还是小端格式,R2的值与R1一致;地址0x4000单元的字节:大端:0x12、小端:0x78。

3.处理器异常
请描述一下ARM7TDMI产生异常的条件是什么?各种异常会使处理器进入哪种模式?进入异常时内核有何操作?各种异常的返回指令又是什么?
答:
【异常】 【模式】 【返回指令】
复位 管理 无
未定义指令 未定义 MOVS PC,R14
软件中断 管理 MOVS PC,R14
预取指中止 中止 SUBS PC,R14,#4
数据中止 中止 SUBS PC,R14,#8
IRQ 中断 SUBS PC,R14,#4
FIQ 快速中断 SUBS PC,R14,#4


进入异常时,内核自动做:PC→LR、CPSR→相应异常模式下的SPSR、设置CPSR为相应的异常模式、相应异常处理程序的中断入口向量地址→PC。



第3章 ARM7TDMI(-S)指令系统
1.基础知识
(1)ARM7TDMI(-S)有几种寻址方式?“LDR R1,[R0,#0x08]”属于哪种寻址方式?
答:有8种寻址方式:1.寄存器寻址 2.立即寻址 3.寄存器移位寻址 4.寄存器间接寻址 5.基址寻址 6.多寄存器寻址 7.堆栈寻址 8.相对寻址;“LDR R1,[R0,#0x08]”属于基址寻址。

(2)ARM指令的条件码有多少个?默认条件码是什么?
答:16个;AL。

(3)ARM指令中的第2个操作数有哪几种形式?列举5个8位图立即数。
答:1.常数表达式(8位图) 2.寄存器方式 3.寄存器移位方式;0x3FC、0、0xF0000000、200、0xF0000001。

(4)LDR/STR指令的偏移形式有哪4种?LDRB指令和LDRSB指令有何区别?
答:1.零偏移 2.前索引偏移 3.程序相对偏移 4.后索引偏移;LDRB:加载无符号字节数据,LDRSB加载有符号字节数据

(5)请指出MOV指令与LDR加载指令的区别及用途?
答:MOV指令的源操作数是常数或(带偏移量的)寄存器,用于寄存器之间的数据传送;LDR指令的源操作数是地址,用于存储器到寄存器的数据传送。

(6)CMP指令是如何执行的?写一程序,判断R1的值是否大于0x30,是则将R1减去0x30。
答:CMP指令将Rn-operand2,根据结果更新CPSR中的相应条件标志位。
CMP R1,0x30
SUBHI R1,0x30

(7)调用子程序是用B指令还是用BL指令?请写出返回子程序的指令。
答:用BL;MOV PC,R14。

(8)请指出LDR伪指令的用法。指令格式与LDR加载指令的区别是什么?
答:用法:LDR{cond} Rd,=立即数/标号+立即数;LDR伪指令的源操作数是代表一个常数,LDR加载指令的源操作数代表一个地址。

(9)ARM状态与Thumb状态的切换指令是什么?请举例说明。
答:BX;

;从ARM状态切换到Thumb状态
CODE32
LDR R0,=Lable+1
BX R0
CODE16
Lable MOV R1,#12

;从Thumb状态切换到ARM状态
CODE16
LDR R0,=Lable
BX R0
CODE32
Lable MOV R1,#10

(10)Thumb状态与ARM状态的寄存器有区别吗?Thumb指令对哪些寄存器的访问受到一定限制?
答:有区别;R8~R15。

(11)Thumb指令集的堆栈入栈、出栈指令是哪两条?
答:PUSH、POP。

(12)Thumb指令集的BL指令转移范围为何能达到±4MB?其指令编码是怎样的?
答:BL指令事实上是两条指令,其编码为:11110{地址偏移高11位}、11111{地址偏移低11位},地址编码22位,再左移一位(半字对齐),23位地址寻址8MB,即±4MB。

2.有符号和无符号加法
答:
(1)
0xFFFF000F (A)
+0x0000FFF1 (B)
——————
(0x00000000)

NZCV=0110

如果两个操作数是有符号数,A是负数,B是正数,和是0,没有溢出,所以V=0。
如果两个操作数是无符号数,和是0,有进位,所以C=1。


(2)
0x7FFFFFFF (A)
+0x02345678 (B)
——————
(0x82345677)

NZCV=1001

如果两个操作数是有符号数,A是正数,B是正数,和是负数,有溢出,所以V=1。
如果两个操作数是无符号数,没有进位,所以C=0。



(3)
67654321 (A)
+ 23110000 (B)
——————
(0x0568F421)

NZCV=0000

如果两个操作数是有符号数,A是正数,B是正数,和是正数,没有溢出,所以V=0。
如果两个操作数是无符号数,没有进位,所以C=0。

自己写的……

第1章 嵌入式系统概述
(1)举出3个本书中未提到的嵌入式系统的例子。
答:键盘、鼠标、扫描仪。

(2)什么叫嵌入式系统?
答:嵌入到对象体系中的专用计算机应用系统。

(3)什么叫嵌入式处理器?嵌入式处理器分为哪几类?
答:嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。分为3类:1.注重尺寸、能耗和价格;2.关注性能;3.关注全部4个需求——性能、尺寸、能耗和价格。

(4)什么是嵌入式操作系统?为何要使用嵌入式操作系统?
答:嵌入式操作系统是操作系统的一种类型,是在传统操作系统的基础上加入符合嵌入式系统要求的元素发展而来的。原因:1.提高了系统的可靠性;2.提高了开发效率,缩短了开发周期。3.充分发挥了32位CPU的多任务潜力。

第2章 ARM7体系结构
1.基础知识
(1)ARM7TDMI中的T、D、M、I的含义是什么?
答:T:高密度16位Thumb指令集扩展;D:支持片上调试;M:64位乘法指令;I:Embedded ICE硬件仿真功能模块。

(2)ARM7TDMI采用几级流水线?使用何种存储器编址方式?
答:3级;冯·诺依曼结构。

(3)ARM处理器模式和ARM处理器状态有何区别?
答:ARM处理器模式体现在不同寄存器的使用上;ARM处理器状态体现在不同指令的使用上。

(4)分别列举ARM的处理器模式和状态?
答:ARM的处理器模式:用户模式、系统模式、管理模式、中止模式、未定义模式、中断模式、快速模式;ARM的处理器状态:ARM状态、Thumb状态。

(5)PC和LR分别使用哪个寄存器?
答:PC:R15;LR:R14。

(6)R13寄存器的通用功能是什么?
答:堆栈指针SP。

(7)CPSR寄存器中哪些位用来定义处理器状态?
答:位31~28:N、Z、C、V,条件代码标志位;27~8:保留位;7~0:I、F、T、M4~0,控制标志位。

(8)描述一下如何禁止IRQ和FIQ的中断。
答:当控制位I置位时,IRQ中断被禁止,否则允许IRQ中断使能;当控制位F置位时,FIQ中断被禁止,否则允许FIQ中断使能。

2.存储器格式
答:无论是大端格式还是小端格式,R2的值与R1一致;地址0x4000单元的字节:大端:0x12、小端:0x78。

3.处理器异常
请描述一下ARM7TDMI产生异常的条件是什么?各种异常会使处理器进入哪种模式?进入异常时内核有何操作?各种异常的返回指令又是什么?
答:
【异常】 【模式】 【返回指令】
复位 管理 无
未定义指令 未定义 MOVS PC,R14
软件中断 管理 MOVS PC,R14
预取指中止 中止 SUBS PC,R14,#4
数据中止 中止 SUBS PC,R14,#8
IRQ 中断 SUBS PC,R14,#4
FIQ 快速中断 SUBS PC,R14,#4

进入异常时,内核自动做:PC→LR、CPSR→相应异常模式下的SPSR、设置CPSR为相应的异常模式、相应异常处理程序的中断入口向量地址→PC。

第3章 ARM7TDMI(-S)指令系统
1.基础知识
(1)ARM7TDMI(-S)有几种寻址方式?“LDR R1,[R0,#0x08]”属于哪种寻址方式?
答:有8种寻址方式:1.寄存器寻址 2.立即寻址 3.寄存器移位寻址 4.寄存器间接寻址 5.基址寻址 6.多寄存器寻址 7.堆栈寻址 8.相对寻址;“LDR R1,[R0,#0x08]”属于基址寻址。

(2)ARM指令的条件码有多少个?默认条件码是什么?
答:16个;AL。

(3)ARM指令中的第2个操作数有哪几种形式?列举5个8位图立即数。
答:1.常数表达式(8位图) 2.寄存器方式 3.寄存器移位方式;0x3FC、0、0xF0000000、200、0xF0000001。

(4)LDR/STR指令的偏移形式有哪4种?LDRB指令和LDRSB指令有何区别?
答:1.零偏移 2.前索引偏移 3.程序相对偏移 4.后索引偏移;LDRB:加载无符号字节数据,LDRSB加载有符号字节数据

(5)请指出MOV指令与LDR加载指令的区别及用途?
答:MOV指令的源操作数是常数或(带偏移量的)寄存器,用于寄存器之间的数据传送;LDR指令的源操作数是地址,用于存储器到寄存器的数据传送。

(6)CMP指令是如何执行的?写一程序,判断R1的值是否大于0x30,是则将R1减去0x30。
答:CMP指令将Rn-operand2,根据结果更新CPSR中的相应条件标志位。
CMP R1,0x30
SUBHI R1,0x30

(7)调用子程序是用B指令还是用BL指令?请写出返回子程序的指令。
答:用BL;MOV PC,R14。

(8)请指出LDR伪指令的用法。指令格式与LDR加载指令的区别是什么?
答:用法:LDR{cond} Rd,=立即数/标号+立即数;LDR伪指令的源操作数是代表一个常数,LDR加载指令的源操作数代表一个地址。

(9)ARM状态与Thumb状态的切换指令是什么?请举例说明。
答:BX;

;从ARM状态切换到Thumb状态
CODE32
LDR R0,=Lable+1
BX R0
CODE16
Lable MOV R1,#12

;从Thumb状态切换到ARM状态
CODE16
LDR R0,=Lable
BX R0
CODE32
Lable MOV R1,#10

(10)Thumb状态与ARM状态的寄存器有区别吗?Thumb指令对哪些寄存器的访问受到一定限制?
答:有区别;R8~R15。

(11)Thumb指令集的堆栈入栈、出栈指令是哪两条?
答:PUSH、POP。

(12)Thumb指令集的BL指令转移范围为何能达到±4MB?其指令编码是怎样的?
答:BL指令事实上是两条指令,其编码为:11110{地址偏移高11位}、11111{地址偏移低11位},地址编码22位,再左移一位(半字对齐),23位地址寻址8MB,即±4MB。

2.有符号和无符号加法
答:
(1)
0xFFFF000F (A)
+0x0000FFF1 (B)
——————
(0x00000000)

NZCV=0110

如果两个操作数是有符号数,A是负数,B是正数,和是0,没有溢出,所以V=0。
如果两个操作数是无符号数,和是0,有进位,所以C=1。

(2)
0x7FFFFFFF (A)
+0x02345678 (B)
——————
(0x82345677)

NZCV=1001

如果两个操作数是有符号数,A是正数,B是正数,和是负数,有溢出,所以V=1。
如果两个操作数是无符号数,没有进位,所以C=0。

(3)
67654321 (A)
+ 23110000 (B)
——————
(0x0568F421)

NZCV=0000

如果两个操作数是有符号数,A是正数,B是正数,和是正数,没有溢出,所以V=0。
如果两个操作数是无符号数,没有进位,所以C=0。


21天学通ARM嵌入式开发内容简介
通过阅读这本书,无论是对ARM嵌入式系统的初识者还是有一定基础的开发者,都能在21天内系统掌握ARM开发的精髓,为嵌入式系统设计打开新的视野。

ARM嵌入式系统的学习步骤?(入门级基础的)
1,你到网上买一个开发板,几百元,资源丰富的,不要图便宜,然后光盘里有资源,上面会教如何下载程序。2,学习ARM时,你就要学习LINUX和WINCE这两个最基本的操作系统运用在单片机上。3,同样的理,你也要买ARM2410\/2440为代表的开发板,慢慢按照说明书一步一步地操作,练习,不停地做实验,就学会了。

求ARM嵌入式基础教程(第二版)周立功主编 课后习题
答:嵌入到对象体系中的专用计算机应用系统。(3)什么叫嵌入式处理器?嵌入式处理器分为哪几类?答:嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。分为3类:1.注重尺寸、能耗和价格;2.关注性能;3.关注全部4个需求——性能、尺寸、能耗和价格。(4)什么是嵌入式操作系统?为何要使用嵌...

请问学习ARM嵌入式开发应该准备些什么开发工具和要求?
1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。自学的话你可以尝试以下路线:(1)C语言是所有编程语言中的强者,单片机、DSP、类...

ARM9嵌入式系统设计基础教程的第9章 ARM汇编语言程序设计基础
9.1 ADS集成开发环境9.1.1 ADS工具包的组成9.1.2 ADS开发工具集9.1.3 Code Warrior IDE的创建9.1.4 AXD调试器的使用9.2 ARM汇编伪指令9.2.1 数据常量定义伪指令9.2.2 数据变量定义伪指令9.2.3 内存分配伪指令9.2.4 汇编控制伪指令9.2.5 其他常用的伪指令9.3 ARM的汇编语言结构9...

急要周立功主编<ARM嵌入式系统基础教程>课后习题答案
1、举出3个书本中未提到的嵌入式系统的例子。 答:红绿灯控制,数字空调,机顶盒2、什么叫嵌入式系统 嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系 统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。3、什么叫嵌入式处理器?嵌入式处理器分为哪几类? 嵌入式处理器是为...

学习嵌入式,需要具备什么基本的知识
2. 要了解嵌入式Linux操作系统。你得首先对这个系统有一定的认识,就好比你想盖房子、你得需要水泥、砖头、钢筋。那么嵌入式Linux系统同样如此。这个比喻也许很粗糙,但容易理解。3.了解Linux或者wince下的编程。4.具有单机片或者ARM或者MIPS等相关基础。5.其他知识的扩充。我们还可以通过阅读一些优秀的代码...

自学嵌入式开发应该先要学些什么?
嵌入式开发的主要学习内容:C,Java核心编程:c语言核心编程,Java核心编程;Linux核心操作与算法:Linux系统使用,Linux-c编程核心技术,精品数据结构,Linux-c编程精髓;核心操作与算法:Linux系统编程,Linux网络编程核心技术,UI编程,Java核心编程,安卓核心技术;ARM+Linux底层开发:数字电路,ARM编程核心,...

我是一个嵌入式初学者,请问我要学哪些东西?希望大虾给一些具体的学习流...
我也不知道你现在的水平有多高,反正首先是C语言一定要过关这是最基础的。汇编最好也要懂一些。微机原理,数据结构,操作系统都是最基础的东西。你要做硬件的话数电,模电,电路基础也要有,嵌入式方向有好多,我说的 是ARM+linux方向。其他的方向我也不清楚。我也不建议你做硬件,一个是需求小,在...

如何学习嵌入式
笔者结合自己开发和教学的经验认为:首先应该选定一款主流且较为简单的嵌入式系统处理器,比如基于ARM7TDMI 内核的AT91M40800,S3C44B0 等嵌入式系统处理器,学习32 位RISC处理器的编程模型,指令集。高校教学中,单片计算机课程一般以8051系列单片为核心讲解,由于现代32位处理器的结构和开发方式同8位单片机有着较大的...

石林彝族自治县18058145266: 急!请问学习ARM9有什么好的入门教材吗? -
匡霭西洋: 学习ARM9吧.首先把arm当做单片机来学,先跑裸机,控制外设,最好买一个arm9的开发板,通过裸机的学习,来熟悉arm寄存器的控制方法,以及简单程序的写法,并要掌握PLL,时钟,中断,mmu等.差不多后,要学习在arm9上移植操作系统,常用的有linux和wince,用的最多的还是linux,这时候要看bootload等,还要学习驱动程序的编写.至于要看什么书,我认为根据你的学习进度看一些针对性强的书,边实际操作边看,不要单纯的看书,而且要多看有实例的书,而不是泛泛的讲嵌入式的书.

石林彝族自治县18058145266: 怎么学习 UCOS和Linux操作系统 ??? 实践 -
匡霭西洋: 不知道楼主的基础.咱从最开始说起,的确首先要有C语言基础,最好做过单片机开发,然后买两本书:周立功写的《ARM嵌入式系统基础教程》(第二版)和邵贝贝翻译的ucos-II.第一本书有一章专门来介绍ucos-II,不看这个,直接看邵贝贝的那本,容易陷进去,比较迷失.ps:强烈赞成一楼的说法!一定要动手做!最好买个demo板!

石林彝族自治县18058145266: 求一两本ARM7经典入门教材 -
匡霭西洋: 《深入浅出ARM7--LPC213x(上.下)》 (周立功 张华 著 北京航天航空大学出版社 45.00元)这本是首先要推荐的,周立功写的经典系列教材之一(另一个是基础教程系列,下面介绍).上册前两章为基于EasyARM2131的编译环境介绍,...

石林彝族自治县18058145266: 求推荐ARM嵌入式的入门教程,易懂的 -
匡霭西洋: 不知道你有没有一些基础哦,学arm要求比较高,首先你必须能够使用linux,这个要至少入门,其次次要掌握c,这是必需的,接着在掌握点linux系统程序设计,最后在上arm就很好入门了,至于书多的是,在网上找些arm相关的电子书,你看的不错了,就可以考虑买个纸质.

石林彝族自治县18058145266: arm 嵌入式 入门 -
匡霭西洋: 个人建议:不要买单片机了.直接买一个ARM7(44B0)或者ARM9(2410)的实验板.是实验板的话都带有全套的仿真器,实验手册都有非常详细的步骤,然后参考手册做实验.而且实验板还比正常的便宜,用于学习最合适了.最主要的参考书就是:嵌入式系统开发与应用 田泽 北航 好像现在出了一系列的书了.你可以查查.

石林彝族自治县18058145266: ARM嵌入式体系结构与接口技术
匡霭西洋: 1,s3c2410体系结构:嵌入式应用、ARM920T内核、MMU支持WINCE/LINUX、高速RAM、DEBUG调试、高级总线AMBA,AHB/APB. 2,s3c2410接口:中断、PWM、时钟RTC、串口、DMA数据直接传输、AD采样、LCD控制器、看门狗、IIC总线,IIS总线、SPI总线、USB HOST/DEVICE、SD接口、SPI总线、GPIO口等.

石林彝族自治县18058145266: 初学者学ARM嵌入式系统该从哪种入手,操作系统呢?
匡霭西洋: 您选的那本教材不错.对于处于入门级的您来说,推荐您从ARM7开始学,周立功NXP LPC2000系列的开发板就是基于ARM7内核的.ARM7的应用比起ARM9和ARM11广泛的多. 而且,当您熟练掌握ARM7后,再学ARM9和ARM11相对简单很...

石林彝族自治县18058145266: ARM嵌入式系统的学习步骤?(入门级基础的)
匡霭西洋: 0,楼主,你首先要精通C语言基础,因为现在所有8/16/32位(51系列,MSP430系列,ARM系列)都是使用C语言. 1,你到网上买一个开发板,几百元,资源丰富的,不要图便宜,然后光盘里有资源,上面会教如何下载程序. 2,学习ARM...

石林彝族自治县18058145266: 学习arm 请教 -
匡霭西洋: 为了你的50分,我豁出去了,倾囊相授,呵呵…… 介绍下我,一个postgraduate,grade 2,研究方向:嵌入式.你从单片机到嵌入式ARM上手应该很快,我给你一些好的建议,绝对个人经验总结.1. 想买板子绝对是对的,做硬件就要动手能力强,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网