基于C8051F023的软件注入技术(1)

发布者:RadiantBreeze最新更新时间:2011-02-28 手机看文章 扫描二维码
随时随地手机看文章
单片机的出现是现代计算机技术发展的里程碑,它的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。近年来,计算机理论研究、半导体工艺和超大规模集成电路技术取得了长足的进步,以此为支撑的嵌入式计算机也逐渐成为各种嵌入式系统的核心部件。

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

  就嵌入式系统而言,软件注入是指将嵌入式系统中的软件模块使用在线可编程存储器存储,可在需要时通过外部注入设备的注入技术。它十分有利于机电一体化产品等需要严密封装的嵌入式系统的软件升级和完善。

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

引用地址:基于C8051F023的软件注入技术(1)

上一篇:基于C8051F040的CAN总线智能节点设计
下一篇:基于C8051F023的软件注入技术(2)

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved