嵌入式技术基础与实践第二版习题参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
百度文库- 让每个人平等地提升自我
嵌入式技术基础与实践(第二版)习题参考答案
目录
第1章概述习题参考答案 (2)
第10章集成电路互连总线I2C 习题参考答案 (5)
第11章模数转换模块A/D 习题参考答案 (7)
第12章系统开发其他模块应用习题参考答案 (8)
第13章JM60的USB 开发方法习题参考答案 (10)
第14章DZ60的CAN总线开发方法习题参考答案 (14)
第1章概述习题参考答案
1.嵌入式系统的基本含义是什么?为什么说单片机是典型的嵌入式系统?
答:即MCU的含义是:在一块芯片上集成了中央处理单元(CPU)、存储器(RAM/ROM等)、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。大部分嵌入式系统以MCU为核心进行设计。MCU从体系结构到指令系统都是按照嵌入式系统的应用特点专门设计的,它能很好地满足应用系统的嵌入、面向测控对象、现场可靠运行等方面的要求。因此以MCU为核心的系统是应用最广的嵌入式系统。
2.简述嵌入式系统的特点以及应用领域。
答:嵌入式系统属于计算机系统,但不单独以通用计算机的面目出现;嵌入式系统开发需要专用工具和特殊方法;使用MCU设计嵌入式系统,数据与程序空间采用不同存储介质;开发嵌入式系统涉及软件、硬件及应用领域的知识;嵌入式系统的其他特点,比如紧张的资源,较高稳定性要求,低功耗,低成本等。一般用于工业控制,智能家电,日常电子等领域。
3.比较MCU与CPU的区别与联系。
答:CPU是一个单独的PC处理器。而MCU,则有微处理器,存储器(RAM/ROM等)、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。所以可以这么说,MCU 是一个包含微处理器的嵌入式系统,而CPU紧紧是一个处理器而已。
4.举例说明嵌入式系统在日常生活中的应用。
答:日常数码产品:手机,MP3,U盘,相机等。
日常工业类:冰箱,空调,微波炉,汽车等。
5.C语言的那些特性使得它成为嵌入式系统中使用频率最高的高级语言。
答:相比底端汇编,更简单易学;与高级语言如(C++,C#,java等)相比,执行效率高,编译后的编码体积小,而且支持好的编译器还支持嵌入汇编代码;对位的操纵能力很强。
6.阅读光盘中【第01章(概述)阅读资料】中的“嵌入式C语言工程简明规范”,用一页纸给出嵌入式C语言工程简明规范的要点。
答:此规范主要针对单片机编程语言和08编译器而言,包括命名、注释、编码规范性等内容。建议在一个工程或者一个项目中尽量遵循相同的代码规范,而不是说你只能拥有一个代码规范。
(1)命名规则:命名清晰明了,有明确含义,使用完整单词或约定俗成的缩写。通常,较短的单词可通过去掉元音字母形成缩写;较长的单词可取单词的头几个字母形成缩写。即
"见名知意";命名风格要自始至终保持一致;命名中若使用特殊约定或缩写,要有注释说明;为了代码复用,命名中应避免适用与具体项目相关的前缀;应使用英语命名。
(2)注释:注释基本原则就是有助于对程序的阅读理解,说明程序在"做什么",解释代码的目的、功能和采用的方法。一般情况源程序有效注释量在30%左右。注释语言必须准确、易懂、简洁。边写代码边注释,修改代码同时修改相应的注释,不再有用的注释要删除。汇编和C中都用"19文件),它是Freescale MCU的机器码文件,通过写入程序可将机器码下载到目标MCU内的Flash存储器,也可以通过光盘中苏州大学嵌入式系统研发中心开发的独立写
入软件SD-Programmer-S08读出写入到Flash的S19的内容,观察实际写入到Flash的内容是否和S19的内容相同。该程序也可以擦写Flash。目标代码文件是以S记录格式表示的机器码文件。S记录格式是Freescale公司的十六进制目标代码文件,它将目标程序和数据以ASCII 码格式表示,可直接显示和打印。目标文件由若干行S记录构成,每行S记录可以用CR/LF/NUL 结尾。一行S记录由五部分组成,具体细节请参考书中。
6.举例给出CW环境C语言工程文件的组织结构图。
答:以下是控制小灯闪烁的CW环境C语言工程文件的组织结构图
7.分析文件的功能。
答:文件主要实现了芯片的RAM和ROM的定义,初始化RAM中的变量。初始化堆栈的大小。定义复位向量,即应用程序的默认入口。还包含了启动代码,是硬件复位后的函数入口。
8.如何查看一个文件.LST文件,举例分析一个LST文件。
答:利用Freescale Codewarrior打开控制小灯闪烁工程文件,通过edit-standard settings-target –compiler for HC08-option-output-generate Listing File点击确定编译连接可以生成.LST文件。然后在该工程的bin文件夹中可以找.LST文件,通过Freescale Codewarrior 打开文件。看下面
的一段代码:
26:Light_Init(Light_Run_PORT,Light_Run,Light_OFF); IRQ ST文件中查得。
(2)一次擦除后未被写入过的区域可以再次调用写入子程序写入,但写入过的区域,未经擦除不能重写。
(3)由于擦除是每次擦除一页(512字节),所以数据应合理安排,避免误擦。
(4)页首地址的定义须遵照保护寄存器FLBPR定义的规则。
(5)在线编程时使用的Flash存储区域应在程序Flash存储区域之前,因为Flash保护区为FLBPR决定的地址至末尾。
8.AW60芯片如何加密?如何解除密码?
答:1.为了防止Flash中的程序被非法读出,就要将MCU设置为保密状态,下面提供两种加密Flash方法。
方法一:通过修改文件文件中的安全配置域(即修改FOPT寄存器,地址0xFFBF的值和密钥地址0xFFB0~ 0xFFB7的值)实现加密。例如,若要设置密码0x338,则只要将这8字节数据依次写到地址0xFFB0~0xFFB7处即可,该密码即为字符串“”。
方法二:在程序运行中,通过调用自定义函数修改Flash相关地址处的内容来加密Flash。通过修改NVOPT地址的内容,复位后,该寄存器的值将自动载入FOPT中。
2. S08系列芯片在加密后,需要重新写入程序,必须先解除密码。这里提供2种解除密码方法。方法一:通过将写入器的BDM接口,对已经加密的芯片进行整体擦除,具体使用方法参见光盘中“《S08/S12/ColdFire三合一写入器》使用说明”。
方法二:在芯片中驻留擦除密码或擦除Flash的操作接口,通过调用Flash_KEY_Match函数实现。
用户可以选择一种“后门”机制,假如寄存器NVOPT/FOPT的KEYEN位为0时,后门机制无效,但是如果KEYEN位为1时,用户按照如下的方法取消MCU的保密状态:
(1)将FCNFG的KEYACC位置1。
(2)向NVBACKKEY~NVBACKKEY+7的位置(Flash中$FFB0~$FFB7)依次写入8个字节,由于第(1)步的操作,MCU会将该写入操作理解为是密码比较操作,这8个字节被看作是后门的钥匙。
(3)将FCNFG的KEYACC位置0,如果用户写入的8个字节和NVBACKKEY~NVBACKKEY+7的位置的8个字节是匹配的,MCU会将SEC01:SEC00改写成1:0,从而取消MCU的保密性。
这种保密钥匙只能从保密的存储器中写入,所以在没有用户程序的配合下,背景调试命令也不可以进入的。当然如果不知道后门钥匙,使用这种方法也是无法取消MCU的保密态。