利用散列函数装入程序到微处理器内部sram并运行的方法

文档序号:6467696阅读:199来源:国知局
专利名称:利用散列函数装入程序到微处理器内部sram并运行的方法
技术领域
本发明属于微处理器应用领域,具体涉及一种微处理器烧写内部FLASH只读程序存储器的技术.背录技术目前主流微处理器大都采用FLASH存储器作为内部的程序存储器,且都支持在安装到线路板甚至设备 中后,通过通信接口,仍可以进行内部辦更新,称为ICP (在线路板编程)、ISP依系统编勒、IAP(在应 用编粗。下面列举几家国际上领先的微处理器供应商的芯片,并简要说明其特性1 、 STM32F系列cortex-M3芯片,为意法半导体最新的32位单片机。在芯片内部有一块Syst棚Memory 的存储器,由ST公司在出厂前固化了芯片信息、芯片序列号以及一个对内部FLASH程序存储器进 行擦除、烧录、读出的BootLoader程序,通过UARTO串口可以将用户代码烧录到芯片内。2、 NXP公司的LPC20加系列ARM7芯片,在芯片内也固化了 BootLoader,称为片内Boot装载程序。3、 Luminari公司的Stellaris系列cort战-M3芯片,所有的型号均固化了 Stellaris引导装载程序。 有的型号还固化了 ROM子程序库。4、 AlMEL的AT91SAM7系列ARM7芯片.在芯片内也固化了BootLoader,其比较特殊的是这个BootLoader 需要通过控制外部3feK^到FLASH存储器中去,jBB^用户代码以后,这个BootLoader就变成不可 见,总结起来,ilii串口进行ISP烧录已经成为主流微处理器芯片必不可少的一个特性了 ,主流微处理器也都支持用户代码的一部分自行烧录其他部分,称为IAP. —般把负贲烧录的部分程序称 为IAP引导装载程序(负责烧录其他部分),而被烧录的其他部分程靴码被称为应用代码(实现应用功膨。ISP和IAP的其实是同一个机制,都是芯片运行BootLoader加载程序后,自身从通信接口取得应用代 码后,自行将代码烧录到FLA紐存储器中去.不同点是BootLoader加载程序是由微处理器厂家固化还是由 芯片用户自fi^录.本文下面将两者统称为MP.而实现IAP,必须有外部通信主机来提供被烧录的应用代码.一般由计算机充当.目前传统的IAP霜要在装载程序中实现可靠烧录的通信协议、实际烧录的操作代码。造成占用的固化 存储器空间比较大(目前在2k宇节^4k字节),在烧录功能的可靠性、灵Sttt与存餘瞎空间占用上.存在不 可克服的矛盾,而且如果程序受干扰跑飞到对FLASH存储器进行擦写的代码段,有可能造成代码被擦除, 成为不可恢复的故降.散列函数,又称为杂凑函数、hash函数,就是把任意长的输入消息变化成固定长的输出串的一种 凼数.这个输出串称为该消息的散列值,常用的散列函数有GRC32、 Adler32、 MD5、 SHA1、 SHA256 等等。利用强度髙的散列函数计算出来的固定长度的数值,可以唯一的代表输入消息.目前主流ARM微处理器既可在FLASH中运行程序、也可以在SRAM中运行程序,而且SRAM都比较大(一 般低端信号6k字节,高端型号可以达到20k字节甚至上百k字节).一般大于芯片内部固化的BootLoader 占用的空间。在美国专利US6907522,B2 "USE OF HASHI恥IN A SECURE BOOT LOADER"中,描述了一种利用散列函 数进filfl器启动加密的方法,应该是微软公司用于X-抑X游戏机中的.与本发明不同,但思想有^H似。在美国专利US7424398,股"BOOT VALIDATION SYSTEM AND METHOD"中,描述了一种利用散列函数在机 器启动时,防止机器软件被更改的方法,是利盟公司用于打印机中的.与本发明不同,思想也有^l似.发明内容本发明提出一种利用散列函数技术,减小IAP的BootLoader占用存储器空间、提高芯片抗^m性能的 方法'
在原为存储引导编程代码(BootLoader〉101的位置,现在存储有一段简短的预引导代码1111与通信主 Wil信,称为IAPPreLoader。真正实,录通信协议的在芯片编程代码1113称为IAPBurner,不驻留在 徵处理器内部存储器内,而是由IAPPreLoader预引导代码1111从通信主机200处装入到微处理器内部 SRAM存储器120中装载完后,基于装载到SRAM中的IAPBur朋r为源数据,通过一种或多种方法计算 散列函数值,将计算所得的值与存储在微处理器内部存储器的一组预计算散列值1112(称为IAPHashKeys) 比较,如相符,则认为装载的IAPBurner程序是有效、可用的,开始按照预定的权PRm行该IAPBurner程 序,进行实际的烧录通信和操作.如果不符,则不予运行,由于预计算散列值IAPHashKeys长度仅为几十个字节,IAPHashKeys可以存储多个,由此可以允许装 载多个不同IAPBur加r,提供各种不同的烧录方法.通过破解散列函数,存在一定装载运行非授权IAPBurner的可能性,其可能性大小与散列函数的抗冲 突强度有关。在IAPPreLoader区存储一个IAPSerialNo唯一芯片序列号,并将该序列号或者整个 IAPPreLoader代码与IAPBur朋r 一起作为源数据,计算而得的ft列函数值作为IAPKey来比对,可以加强 破解散列函数的难度,也可以用其它数据作为源数据"SP分参与散列计算.采用多种散列函数算法,计算 出多个散列函数值,与存储的多个散列函数值比对,可大大增强破解散列函数的难度.采用一种散列函数 算法计算出一个散列函数fiM,再利用另一种散列函数算法对这个中间值ift行申联计算,也可以增强强度.实现本发明所说的方法,需要微处理器100和通信主机200配合实现,微处理器100内部存储有预引 导代码1111 (IAPPreLoader):通信主机2加除存储有应用程m^码存储映像201 (Application Code)外, 还存储有在芯片编程代码存储映像202 (IAPBur加r Code),在需要进行IAP时,两者通舰信接口 300连 接。将本发明所说的微处理器100应用于电子产品,则该电子产品就继承了微处理器100的特性.


附图1:本发明的示意图;附图2:目前目前的微处理器在芯片编程示意图具体实施方式
1、 stm32f系列芯片的SystemM棚ory BootLoader g^方案意法半导体的最新32位单片机系列一stm32f系列,具有很多优点.这种芯片在出厂时,Syst柳Memory 固化了 BootLoader,占用0xlffff00(T0xlfff打df之间的地址空间,以实现ISP功能。大小为2016字节。 紧跟在其后的空间,就是芯片^息、芯片序列号等.由于存储空间的限制,很难为BootLoader增加新的功 能,而s加32f系列单片机普遍有6~20k字节的SRAM存储器,假^R用本发明改进,则2016字节的原 Boo让oader空间只霜要存放一个预引导代码IAPPreLoader程序,功能相当简单。加载的IAPBur加r程序, 至少可以有4k字节大小(余2k字节作为数据存储),通过存放多个IAPHashKey,允许多个不同的IAPBur腿r 程序被加载,更可以实现复杂、可靠的BootLoadergJ 。经发明人试验性编程,采用CRC32、 Adler32等散列函数算法,实现一个IAPPreLoader程序仅霜要数 百字节的程序空间.即使采用髙强度的散列函数算法如shal算法,也只需要1400字节左右程序空间即可 实现IAPPreLoader'多出来的几百上千个字节空间,可作为其他用途,或省去'以降低芯片成本'IAPPreLoader程fl^本流程1、复位后判断是否与通信主机连接(一jRffi过判断外部管脚电平);2、 如需与通信主机连接,则从通信主机装入IAPBurner程J^码到SRAM的4k字节中;3、装入完成后,利用 散列函数算法计算散列值并与预计算散列值比对;4、比对结果符合则运行装入的IAPBumer程序。2、 stm32f系列芯片的IAP应用程序升级方案Sm32f系列芯片使,保护后,FLASH存储器的前4k字节自动被写保护,适合作为IAP程序。采用本 发明的思想,可以在前4k字节驻留一个IAPPreLoader,仅占用2000字节不到,其他部分用考存放多组预 计算tfcJU值,可装入多个启动装载程序代码IAPBurner,如此仅使用4k字节最基本的FLASH存储器,即可 实现复杂的IAP应用。而且IAPPreLoader中不包含对FLASH进行搛写操作的指令序列,一定程度增强了抗 干扰性'
权利要求
1. 一种利用散列函数装入程序到微处理器SRAM并运行的方法,其特征是微处理器内部的预引导程序通过通信接口从外部的通信主机读入在芯片编程程序代码到微处理器SRAM存储器中,然后以该读入的在芯片编程程序代码作为源数据的全部或部分,运用一种或多种散列函数,计算出一个或多个散列函数值,将所得散列函数值与微处理器中预先存储的一组预计算散列值比对,根据比对结果是否相符来赋予读入的在芯片编程程序代码相应的运行权限。
2. 根据权利要求1所述的一种利用散列函数装入程序到微处理器SRAM并运行的方法,其特征是微 处理器中预先存储有多组预计算散列值,每组预计算散列值均对应一个在芯片编程程序代码,只 需有一组值比对相符即S!^读入的在芯片编程程序代码相应的运fi^限,
3. 根据权利要求1所述的一种利用散列函数装入程序到微处理器SRAM并运行的方法,其特征是以 读入的在芯片编程程序代码和微处理器中预先存储的一个唯一的芯片序列号共同作为源数据,计 算出散列函数值参与比对。
4. 根据权利要求1所述的一种利用散列函数装入程序到微处理器SRAM并运行的方法,其特征是,采 用多种散列函数算法计算多个散列函数值,与微处理器中预先存储的一组预计算散列 行比对,
5. 根据权利要求1所述的一种利用散列函数装AS序到微处理器SBAM并运行的方法,其特征是采 用一种散列函数算法计算出一个散列函数值后,再利用另一种散列函数算法对这个中间值进行串 联计算,所得的值作为输出,粘比对,
6. 根据权利要求1所述的一种利用散列函数装入程序到微处理器SRAM并运行的方法,其特征是读 入的在芯片编程程序代码运行后从通信主机处读入应用程序代码,并烧录到微处理器的FLASH 程序存储器中.
7. —种微处理器,其特征是运行内部存储的预引导程序,通过通信接口从外部的通信主机读入在 芯片编程程序代码到微处理器SRAM存储器中,然后以该读入的在芯片编程程序代码作为源数据 的全部或部分,运用一种或多种散列函数,计算出一个或多个散列函数值,将所得散列函数值与 微处理器中预先存储的一组预计算散列值比对,根据比对结果是否相符来賦予读入的在芯片编程 程序代码相应的运行权限。
8. —种通信主机,其特征是存储有在芯片编程程序代码的映像和应用程^码的映像,可以被存 储有预引导程序的微处理器通过通信接口读入微处理器中,
9. 一种电子产品,其特征是内部使用如权利要求7所说的一种微处理器,并且可以与如权利要求 8所说的通信主机通儐,
全文摘要
本发明属于微处理器应用领域,具体涉及一种微处理器烧写内部FLASH只读程序存储器的技术。微处理器内的预引导代码1111与通信主机通信,在芯片编程代码1113由预引导代码1111从通信主机200处装入到微处理器内部SRAM存储器120中;装载完后,基于在芯片编程代码1113为源数据,通过一种或多种方法计算散列函数值,将计算所得的值与存储在微处理器内部存储器的一组预计算散列值1112比较,如相符,则认为装载的程序是有效、可用的,按照预定的权限运行该程序。本发明可以减小在芯片编程代码占用的存储器空间,提高抗干扰性能。
文档编号G06F21/00GK101398874SQ20081017297
公开日2009年4月1日 申请日期2008年10月23日 优先权日2008年10月23日
发明者彭增金 申请人:彭增金
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1