当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于C8051F023的软件注入技术

    单片机的出现是现代计算机技术发展的里程碑,它的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。近年来,计算机理论研究、半导体工艺和超大规模集成电路技术取得了长足的进步,以此为支撑的嵌入式计算机也逐渐成为各种嵌入式系统的核心部件。

    嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适用于系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统,是一种软硬件高度结合的产物,其系统功能实现的关键在于经过高效率设计的各类应用软件。和通用计算机软件不同,嵌入式系统中的软件一般都固化在只读存储器中,而不是以磁盘为载体可以随意更换,所以嵌入式系统的应用软件和嵌入式产品一样都具有较长的生命周期。另外,各个行业的应用系统和产品很少发生突然性的跳跃,嵌入式系统中的软件也因此更强调可继承性和技术衔接性,发展比较稳定。以上两点使得基于原有的硬件平台即可完成嵌入式系统的软件升级,从而节省用户的成本,提高系统供应商的产品竞争力和服务效率。软件注入就是能够实现这种软件升级方式的技术之一。

    就嵌入式系统而言,软件注入是指将嵌入式系统中的软件模块使用在线可编程

存储器存储,可在需要时通过外部注入设备的注入技术。它十分有利于机电一体化产品等需要严密封装的嵌入式系统的软件升级和完善。

1 软件注入的可行性分析

    在各类嵌入式计算机中,微控制器MCU(Micro Controller Unit)以其低功耗、高可靠性、片内外设资源丰富且易于扩展的优势而成为各种控制应用的主流,这种用于控制的嵌入式系统也大量而广泛地应用于各个领域。由于结构特点、运算速度增快和存储容量增大,使得单片MCU不仅用于控制,也逐步用于各类运算等应用,因此在嵌入式系统中针对MCU的软件注入应用最为普遍,也最具代表意义。下面将讨论基于C8051F023的软件注入的实现。

    要想实现软件注入,嵌入式系统所采用的MCU必须具有在系统可编程能力,即程序存储器支持应用程序的擦除和重新写入。此外,嵌入式系统应具有较大的程序存储空间和较快的运行速度,以便能够存储和运算比较复杂的软件算法。

    C8051F023属于Cygnal公司的C8051F系列。该芯片内核CIP-51采用了流水线指令结构,速度最高可达25MIPS(Million Instructions Per Second,每秒百万条指令),且70%的指令可在1~2个系统时钟周期内完成,这为嵌入式设备采用复杂的算法提供了必要的条件。同时芯片内部集成了容量达64KB的Flash存储器,用于程序代码和非易失性数据的存储,可由软件使用MOVX指令对Flash存储器进行在系统编程。

    由以上分析可知,C8051F023完全具备软件注入的实现条件。

2 软件注入的技术措施和实现方案

    通用计算机具有完善的人机接口界面,在上面增加一些开发应用程序和环境即可进行对自身的开发。而嵌入式系统本身不具备自举开发能力,因此必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。图1给出的就是一种基于通用计算机平台的软件注入实现方案。

嵌入式系统软件注入原理图

图1 嵌入式系统软件注入原理图

    由图1可以看出,为了实现软件注入,除了具备运行在通用计算机平台上的相关开发工具(例如VC++、VB、Delphi等)外,还必须制订软件注入规程和研制软件注入设备。注入规程包括嵌入式系统和注入设备的物理接口的机械特性和电气特性、具有口令字校验功能和差错控制机制的通信协议等;注入设备分为注入卡和注入枪,前者采用通用计算机的标准接口如RS232、USB等与通用计算机互连,用于将软件程序输入到注入枪,也可直接对嵌入式设备注入,后者为移动式注入设备,便于为不在本地的嵌入式系统完成软件的升级服务。

    在制订了软件注入规程并拥有了相应注入设备后,还需要解决新注入程序与MCU中的固化程序的连接问题,以实现新注入代码的功能。图2给出了基于C8051F023的一种解决方案。

基于C8051F023的软件注入实现方案

图2 基于C8051F023的软件注入实现方案

    该方案是一个基于MCU所实现的功能模块化方案,在固化在Flash中的主程序模块和引导装入模块的支持下,模块1、模块2、模块3等均可实现程序代码的更新。方案中的主程序模块完成MCU的初始化工作以及可注入模块所需的一些默认设置,而不可用扇区和保留扇区是C8051F023的特性。前者提供了芯片的安全选项,但不支持应用程序在系统可编程;后者为工厂专用,不能存储用户程序。

    在0x1000~0xFBFF的地址空间内,每个模块为具有某一功能的相对独立的软件代码,其所占的地址空间可依据程序代码的大小通过伪指令来定义和修改。当存储器容量较大时,剩余的地址空间可作为保留,用于存储新增加的功能模块代码。

    通常MCU的中断向量位于主程序模块的地址空间内且是固定不变的(C8051F023的中断向量地址为0x0000~0x00AB)为了能够使用硬件中断资源(比如UART,定时器等)以及确保所有功能模块都能获得调用,需要统一定义中断服务程序(ISR)和所有功能模块(包括保留地址空间)的入口地址和地址空间范围,这是实现新注入软件与固化软件之间连接的唯一途经。在开发新的可注入软件模块时必须遵守这一规定,如果入口地址不一致,新的软件模块将得不到调用;如果软件模块太大以至超出了规定的地址空间范围,新的软件模块将会占用相邻模块的地址空间,从而影响后者的调用和功能实现。此外,在编写软件注入模块时还要注意以下两点。

① 在写入新的软件代码之前,需要将程序存储器中原来的数据擦除。由于C8051F023的Flash存储器是以大小为512B(用十六进制表示为200H)的扇区为单位组织的,一次擦除操作将删除整个扇区,因此每个功能模块的地址空间必须是200H的整数倍。

② C8051F023特有的优先权交叉开关译码

器在数字外设引脚和通用I/O端口之间建立了可控的连接,该机制提高了I/O灵活性,但也使得如下情况成为可能:新开发的可注入模块需要使用并配置高优先权的外设,在把该模块注入到MCU后,这些配置会改变主程序模块中已经定义的数字外设与通用I/O端口间的关系,使得I/O引脚不再具有原先的含义,从而破坏了MCU与嵌入式设备间的接口标准。因此,必须在主程序模块中统一配置优先权交叉开关译码器,从而为所有模块建立一个通用的、引脚含义明确的硬件平台。

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

example

图3 example.hex文件的内容示例

包含纯粹软件代码的codes.txt文件的内容示例

图4 包含纯粹软件代码的codes.txt文件的内容示例

结语

    软件注入技术是实现嵌入式系统软件升级的一种有效手段,在实施过程中需要采取诸如制订软件注入规程、研制软件注入设备并开发相应各类软件等一系列技术措施,且具有多种可行方案。本文给出了其中的一种实施方案(如图1所示),在论述了采用软件注入技术的优势和可行性后,针对采用C8051F023的嵌入式系统,讨论了基于C8051F023的软件注入实现方案和相关的一些问题,并编写了V2程序以完善C8051F023集成开发环境在实现软件注入方面的功能。

参考文献
1 张迎新,等. 单片机初级教程. 北京:北京航空航天大学出版社, 2000
2 潘琢金, 施国君. C8051Fxxx高速SOC单片机原理及应用. 北京:北京航空航天大学出版社, 2002

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭