以文本方式查看主题

-  单片机在线编程网  (http://www.mcuisp.com/bbs/index.asp)
--  综合-ISP/IAP  (http://www.mcuisp.com/bbs/list.asp?boardid=3)
----  一种单片机固件IAP方案  (http://www.mcuisp.com/bbs/dispbbs.asp?boardid=3&id=16)

--  作者:McuIsp
--  发布时间:2009-05-13 20:28:59
--  一种单片机固件IAP方案

 
导言

       基于FLASH存储器的微处理器,一个重要的需求是安装到产品中后,仍具有升级固件(firmware)的能力。这种能力称为“在应用中编程”(In-application-programming,IAP)。

       这篇应用笔记以STM32F 32位cortex-M3为例,阐述了构建IAP系统的一些通用概念。并提出了一种新的技术,有助于单片机开发人员更好的构建IAP系统。

       STM32系列微处理器基于FLASH存储器。在FLASH中运行的固件可以擦写FLASH本身。FLASH的头4KB具有写保护,适合存储IAP固件(IAP BootLoader)。

    IAP(In-application-programming)、ICP(In-circuit-programming)、ISP(In-system-programming):ICP是在电路板编程,IAP是在应用编程。ISP大部分时候指ICP,但少数MCU厂家将IAP称为ISP。

 

1.1          IAP系统的要求:

1.1.1     Safety(安全性):升级代码需要完整的、正确的写到Application Area。另外需要考虑到升级过程中断电、强干扰等意外事件。

1.1.2     Security(保密性):升级过程有可能被商业竞争对手入侵,因此需要采取加密手段。

1.1.3     Smart(灵巧性):BootLoader会挤占FLASH空间,因此应该尽量减小BootLoader占用的FLASH大小。

 

 

1           只占2KB的IAP BootLoader—一种同时满足Safety/Security/Smart的新技术:

1.1          需要解决的2个问题:

1.1.1     由于IAP BootLoader需要包含对FLASH进行擦写的指令,在强干扰的环境中,微处理器可能跑飞。如果跑飞到对FLASH进行擦写的指令段,有机会造成Application Code的失效,后果严重。


1.1.2     在Safety/Security和Smart之间,存在矛盾。要保证安全性和保密性,就会增加BootLoader的复杂性,从而称不上“Smart”。

 

 

1.1          要点:

1.1.1     IAP BootLoader In FlashèIAPPreLoader In Flash+IAPBurner In SRAM:

为了减小IAP BootLoader占用的空间,在FLASH中只存储一个装载程序IAPPreLoader(预引导程序),而真正完成IAP工作的代码IAPBurner(烧录者)存储在IAP Server中,或包含在升级代码中。

1.1.2     为了防止装载非法的IAPBurner,采用了散列函数算法。散列函数(Hash)是计算机领域的重要算法。具有以下特性:

1.1.2.1    压缩性。对任意长的数据,经hash算法得到一个固定长度的数据。比如我们常用的BT下载软件,就使用MD5算法的128bit摘要数据来代表文件块。

1.1.2.2    单向性。不可能从hash算法的结果逆推出源数据。

1.1.2.3    弱抗冲突性。给定一组数据,计算上不可能找出另一组具有同样hash结果的源数据。

1.1.2.4    强抗冲突性。计算上也不可能找出任意两组源数据,使它们具有相同的hash结果。

1.1.3     可以重复利用SRAM,装载多段IAPBurner程序,以完成更复杂的功能。

 

 

1.1          新IAP方案的有益效果:

1.1.1     减小IAP BootLoader占用的FALSH。

1.1.2     防止长期运行时跑飞到BootLoader,而误擦写代码。

1.1.3     允许增加IAP程序的复杂性,获得更强的加密性能。

1.1.4     由于IAPBurner的代码不存储在FLASH中,可以增加保密性。

 

全文pdf格式下载