基于C8051F023的软件注入技术
3 软件代码文件的生成
从图1可以看出,软件程序最终是以十六进制代码的形式驻留在软件注入枪或注入卡中的,因此软件程序的十六进制代码文件必不可少。然而,在C8051F023集成开发环境下,源程序文件经过编译后生成的二进制文件是不可读的,只能通过JTAG口下载到MCU中。对此,需要把开发环境中附带的DOS程序oh51.exe复制到与编译后的二进制文件相同的文件夹下,然后在DOS操作环境下利用该工具将生成的二进制文件转换成hex文件。然而,此时的hex文件仍是不可用的(如图3所示,这里假设文件名为example),因为它包含了行标识符号、代码地址、校验字符等非代码内容,并且由于ORG伪指令的使用使得软件代码的地址是不连续的,而通常采用的手段是将软件代码下载到连续的存储器空间,以简化通信协议的制订和引导装入程序的编写。针对这种情况作者编写了DOS程序v2.exe,利用该程序可将输入的hex文件统一转换成仅包含纯粹软件代码的codes.txt文件(如图4所示),同时生成的readme.txt文件给出了在注入软件时所需的一些参数(该参数与软件注入规程有关)。V2程序的功能具有通用性,可作为C8051F023集成开发环境的一部分,该程序使用Turbo C 2.0集成开发环境开发,其源代码见本刊网站www.dpj.com.cn。
图3 example.hex文件的内容示例
图4 包含纯粹软件代码的codes.txt文件的内容示例
结语
软件注入技术是实现嵌入式系统软件升级的一种有效手段,在实施过程中需要采取诸如制订软件注入规程、研制软件注入设备并开发相应各类软件等一系列技术措施,且具有多种可行方案。本文给出了其中的一种实施方案(如图1所示),在论述了采用软件注入技术的优势和可行性后,针对采用C8051F023的嵌入式系统,讨论了基于C8051F023的软件注入实现方案和相关的一些问题,并编写了V2程序以完善C8051F023集成开发环境在实现软件注入方面的功能。
参考文献
1 张迎新,等. 单片机初级教程. 北京:北京航空航天大学出版社, 2000
2 潘琢金, 施国君. C8051Fxxx高速SOC单片机原理及应用. 北京:北京航空航天大学出版社, 2002