电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 单片机 > 详细信息
单片机:基于闪存的微控制器在代码发布中的代码保护(二)
来源: Richard F. Zarr   时间: 2007-9-24 9:41:03    

  装载程序使用数据包,数据包有数据头和校验和以验证传输。如果数据包传输到了控制器并且校验和是正确的,则装载程序把它交给解码引擎(如果它是加密的)。在加密数据的内部有另外一个密码校验和,这给解密引擎一个验证密码信息的手段。它将首先应用通用码并测试校验和,如果失败,则利用来自串行数字的唯一密码重试。如果再次失败,则告诉装载程序固件对这个设备无效。这也可防止代码被未经授权的篡改和意外损坏。

  如果解密引擎成功地解码数据, 它将把数据交给在闪存中对实际闪存块进行编程的程序例程。当然,对于不同产家,这个程序是不同的,在后面的设计实例中将给出COP8的程序。这个程序保留了一个128字节的RAM用于更新闪存。当然,这块RAM在装载程序完成后可以存放应用程序的数据。

设计实例

  图3是一个具备解密功能的固件装载程序的流程图。装载程序使用在编程器和系统模拟程序中广泛使用的修改版Intel HEX数据格式。这将使应用程序现有架构支持标准并易于使用。装载固件程序用COP8汇编语言编写,以简少代码,并利用器件全部的闪存特性。

  简单来说,Intel HEX格式是一种用ASCII编码表示的数据记录格式,用于向设备的存储器编程对象代码或数据。该格式由下列字段组成:使用ASCII字符0x3A或者即“:”记录起始字段、长度范围为0x00-0xFF的数据长度字段(两个ASCII字符)、偏移字段、记录类型字段、信息或数据字段以及校验和字段。每个字段都由标准的可打印ASCII字符表示。例如,“10”代表十六进制0x10或者十进制16,可表示长度字段。实际上它的编码是0x31、0x30,这是“0” 和“1” 的ASCII码。因为内容是可打印的ASCII字符,能被文本编辑器查看,所以需要加密。

  表里包括了标准的Intel HEX格式记录类型。注意该标准只定义了6种记录类型。为利用现有的结构,装载程序采用Intel HEX 格式,并指定加密数据为一种新的记录类型。记录类型0x10将被用于代表加密数据,这是不能变的。

  代码装载程序也需要一个流程控制方法,以保证在下一个记录装载之前,写闪存的周期已经完成。在大多数的情况下,应用程序会产生可分成16个字节一组的文件,以方使阅读。通常闪存是以128或256字节进行分块,因此必须有一个装载程序的命令要求从主机来的数据允许可变记录大小。装载程序必须能处理256字节的数据,因为按照标准,这是最大的记录大小。表的底部显示了本例中新扩展的记录类型。因为COP8系列器件只有16位地址,无法执行记录类型0x02到0x05。对于具备更大闪存的处理器,例如CR16,它能直接访问16M字节的内存,就需要有扩展线性地址的记录类型。

  观察图3中的流程图,重新设置后的第一个任务是检验闪存的内容。这是通过读取各个128字节的页面(除了位于闪存顶部的自举验证代码和装载程序代码)来完成的。只验证应用程序的代码这使计算校验和非常容易。但如果需要,它也可以包括检测装载程序部件。当通过校验和检查,控制就被向量转移到应用程序固件的入口。入口保持不变非常重要。如果它发生了移动,装载程序会把向量转到一个不正确的入口,并可能出现崩溃。另外,装载程序可以从代码中读出进入向量,把向量压入堆栈并返回,以迫使从那个地址开始执行。这个方案允许入口点可变。

  如果校检和失败,装载程序将保持控制并不断地往主机发送信号,用硬件设计实现的任何手段开始装载。装载程序也可以控制用户接口通知这种状态。在调试系统时,一个表示“固件装载” 的简单的LED灯非常有用。

  装载程序将持续地向主机请求记录,直到主机通过EOF记录表明没有记录了。检测到的0x10类型记录 将被送到解码引擎,并适当解码数据。这使得实际向闪存写数据的代码,既可以操作加密数据,也可操作对未加密数据。对开发和内部测试来说,未加密的数据通路很有价值。当收到EOF记录后,所有新固件数据都被写入闪存。然后,装载程序把控制交还给自举测试,以验证新代码未被破坏。

  如上所述,现场可更新设备可以在不曝露IP的情况下得到实现。使用一个简单的密码, 制造商的固件就能得到保护,客户可以在世界各地能够访问因特网的地方更新他们的设备。

相关信息
发表评论
打印本页 关闭本页
彻底看穿双核CPU Intel与AMD多核处理器剖解
   一、双核心的由来   所谓双核心处理器,简单地说就是在一块CPU基板上集成两个处理器核心,并通过并行总线将各处理器核心连接起来。双核心并不是一个新概念,而只是CMP(Chip Multi Processors,单芯片多处理器)中最基本、最简单、最容易实现的一种类型。其实在RISC处理器领域,双核心甚至多核心都早已经实现。CMP最早是由美国斯坦福大学提出的,其思想是在一块芯片内实现SMP(Symmetr...
>>详细内容
安华高科技推出支持Intel QuickPath互连规格的SerDes
    AvagoTechnologies(安华高科技)宣布,推出业内第一款符合IntelQuickPath互连规格的SerDes(串行/解串)知识产权(IP)产品,通过90纳米(nm)CMOS展现IntelQuickPath互连支持,Avago让服务器制造商能够实现采用Intel架构计算应用的ASIC解决方案,同时帮助客户符合性能、上市速度以及批量生产目标的需求。Avago将在9月18日到20日于美国旧金山举办的Intel开发者论坛(IDF)服务器专区演示支持In...
>>详细内容
基于ARM核的Intel XScale嵌入式系统
  摘要:简要介绍Intel XScale的特点以及与Intel StrongARM的区别;重点介绍PXA250处理器和PCM-7210单板计算机的结构、功能和接口特性。 关键词:XScale ARM核 PXA250 PCM-7210 1 简 介  Intel XScale微体系结构提供了一种全新的、高性价比、低功耗且基于ARMv5TE体系结构的解决方案,支持16位Thumb指令和DSP扩充。基于XScale技术开发的微处理器,可用于手机、便携式终端(PDA)...
>>详细内容
Intel无线技术解决方案问答
  Intel无线技术解决方案问答 ChinaECNet Online Seminar on Intel Wireless Solution 问:Intel 在串行存储flash方面有没有产品? 答:没有。Intel 闪存是根据NOR技术的,支持代码+数据一起存储和XIP。 问:Intel闪存工作电压是多少伏? 答:我们有 3V 和 1.8V Vcc 两种产品。 问:大容量的 Intel Flash 最小封装是多大? 答:128J3 VFBGA 是7.3mmx10.8mm。详情请参阅数据表...
>>详细内容
一种基于Intel8253与L298N电机PWM调速法
  摘要:介绍采用Intel8253型微型计算机接口电路产生脉冲宽度调制波,并使用L298N型桥式驱动器,实现对直流电机的一种简单有效的PWM调速方法。 关键词:Intel8253;L298N:脉冲宽度调制:PWM 1引言 脉冲宽度调制(PulseWidthModulation—PWM)是指将输出信号的基本周期固定,通过调整基本周期内工作周期的大小来控制输出功率。原理就是开关管在一个周期内的导通时间为t,周期为T,则电机...
>>详细内容
基于Intel PXA263智能移动信息终端设计
  摘要:给出了一种基于intelPXA263微处理器和WindowsCE.net嵌入式操作系统的智能移动信息终端的设计方法,介绍了硬件平台的构建方法以及在构建的平台上移植WindowsCE.net嵌入式操作系统的具体步骤。实践证明,该系统具有功能强、可靠性高、稳定性好、功耗低、携带方便等优点,具有良好的应用前景。 关键词:IntelPXA263处理器WindowsCE.net嵌入式系统智能移动信息终端 近年来,Internet...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com