基于闪存的微控制器在代码发布中的代码保护简介
本文引用地址:https://www.eepw.com.cn/article/185822.htm
装载程序使用数据包,数据包有数据头和校验和以验证传输。如果数据包传输到了控制器并且校验和是正确的,则装载程序把它交给解码引擎(如果它是加密的)。在加密数据的内部有另外一个密码校验和,这给解密引擎一个验证密码信息的手段。它将首先应用通用码并测试校验和,如果失败,则利用来自串行数字的唯一密码重试。如果再次失败,则告诉装载程序固件对这个设备无效。这也可防止代码被未经授权的篡改和意外损坏。
如果解密引擎成功地解码数据, 它将把数据交给在闪存中对实际闪存块进行编程的程序例程。当然,对于不同产家,这个程序是不同的,在后面的设计实例中将给出COP8的程序。这个程序保留了一个128字节的RAM用于更新闪存。当然,这块RAM在装载程序完成后可以存放应用程序的数据。
设计实例
图3是一个具备解密功能的固件装载程序的流程图。装载程序使用在编程器和系统模拟程序中广泛使用的修改版Intel HEX数据格式。这将使应用程序现有架构支持标准并易于使用。装载固件程序用COP8汇编语言编写,以简少代码,并利用器件全部的闪存特性。
简单来说,Intel HEX格式是一种用ASCII编码表示的数据记录格式,用于向设备的存储器编程对象代码或数据。该格式由下列字段组成:使用ASCII字
评论