第4节 进一步讨论
6.4.1 MCU中Flash程序的保密机制
在实际应用中,MCU中的程序需要具有保密性,否则开发者辛辛苦苦研发的成果会被别人轻易盗走。每一种MCU都具有一定的程序保密机制,并且不同MCU其保密机制有所差别,安全性能也不同。
Freescale的MCU具有非常好的程序保密性能,一旦启用保密机制,开发者以外的人几乎不可以读出其中的程序代码。HC08系列MCU将Flash空间$FFF6~$FFFD的8字节复用为保密字节(它本来是中断矢量区),只要在这8个字节上写入了内容,它就成为了密码字节,所以读者在做实际项目时,即使没有这个区的中断矢量,也不要把这几个字节空闲,写入一些没有规律的字节内容,有助于提高保密性。如果用户想读出某款芯片中的程序,必须知道这8个字节的内容,否则读出的数据就是无意义的。在上述读Flash操作中,“文件提取”密码的选项的实质就是从当前工程的S19文件中制取$FFF6~$FFFD的8字节作为密码,如果MCU中的程序不是当前工程中的程序代码,130执行读Flash操作时,就会出现“密码不匹配”的提示。
6.4.2 验证MCU中程序的正确性
在将程序下载到MCU中以后,如何知道程序已经正确无误地下载到MCU中呢?可以通过下面的方法来验证MCU中的程序是否正确。首先打开编译产生的S19文件,然后点击菜单[Flash操作],下拉选择[读取],弹出如图6-16所示的对话框,通过查看List文件知道程序的开始地址和结束地址,在对话框中输入开始地址和结束地址,点击按钮[开始读],即可读出Flash中程序的机器码,最后将S19文件中程序的机器码同读出的Flash中的程序的机器码对比,如果一致则表明MCU中下载的程序是正确的。
在实际应用中,MCU中的程序需要具有保密性,否则开发者辛辛苦苦研发的成果会被别人轻易盗走。每一种MCU都具有一定的程序保密机制,并且不同MCU其保密机制有所差别,安全性能也不同。
Freescale的MCU具有非常好的程序保密性能,一旦启用保密机制,开发者以外的人几乎不可以读出其中的程序代码。HC08系列MCU将Flash空间$FFF6~$FFFD的8字节复用为保密字节(它本来是中断矢量区),只要在这8个字节上写入了内容,它就成为了密码字节,所以读者在做实际项目时,即使没有这个区的中断矢量,也不要把这几个字节空闲,写入一些没有规律的字节内容,有助于提高保密性。如果用户想读出某款芯片中的程序,必须知道这8个字节的内容,否则读出的数据就是无意义的。在上述读Flash操作中,“文件提取”密码的选项的实质就是从当前工程的S19文件中制取$FFF6~$FFFD的8字节作为密码,如果MCU中的程序不是当前工程中的程序代码,130执行读Flash操作时,就会出现“密码不匹配”的提示。
6.4.2 验证MCU中程序的正确性
在将程序下载到MCU中以后,如何知道程序已经正确无误地下载到MCU中呢?可以通过下面的方法来验证MCU中的程序是否正确。首先打开编译产生的S19文件,然后点击菜单[Flash操作],下拉选择[读取],弹出如图6-16所示的对话框,通过查看List文件知道程序的开始地址和结束地址,在对话框中输入开始地址和结束地址,点击按钮[开始读],即可读出Flash中程序的机器码,最后将S19文件中程序的机器码同读出的Flash中的程序的机器码对比,如果一致则表明MCU中下载的程序是正确的。

练习题
【基础题】
1.简述C语言源程序编译过程。
2.C语言程序编译后产生哪些类型的文件,这些文件的作用是什么?
3.什么是“在线仿真”?简述HC08和S08在线仿真的机理。
【综合题】
4.用MT-IDE环境编译调试第4章及第5章的第1个汇编和08C语言程序。
5.举例说明如何在S19文件与List文件中找到一个语句或一段程序产生的机器码。
5.安装Codewarrior环境,申请license,分别新建一个汇编工程和C工程,并进行仿真调试。
6.查阅资料说明HC08和S08的MCU中Flash程序的加密机制。
7.查阅资料解释HC08 MCU的MON08编程接口是如何实现程序调试和下载?
8.查阅资料解释S08 MCU的BDM编程接口是如何实现程序调试和下载?


