設計基于NXP LPC2000的次級啟動加載程序用于代碼升級
摘要:本文介紹了如何設計和實現一個基于NXP LPC2000的次級啟動加載程序(Secondary Boot Loader),用來對用戶代碼進行在線升級。
本文引用地址:http://www.j9360.com/article/118092.htm關鍵詞: LPC2000;次級啟動加載程序;Secondary Boot Loader;IAP;代碼升級
引言
本文雖然是針對NXP(恩智浦公司)的LPC2000系列,但使用IAP技術對內部閃存進行編程卻適用于幾乎所有的NXP ARM MCU系列,包括Cortex-M0 LPC1100以及Cortex-M3 LPC1300/1700等系列。
在大多數的LPC2000器件內部,存在著一個被稱為“主啟動加載程序(Primary Boot Loader)”的固件,它在每次上電或復位時被首先運行。本文所講的“次級啟動加載程序”實際上是一段用戶自己寫的代碼(燒寫在用戶閃存區),在執行完主啟動加載程序后被執行,提供給用戶一個選擇,是繼續執行當前的應用程序還是對當前應用程序進行更新。
在應用編程(In Application Programming, IAP)是指在用戶應用程序運行時,對內部閃存執行擦除或編程操作,它是對用戶代碼進行升級的一個關鍵技術。
LPC2000 IAP介紹
扇區(Sector)
IAP操作都是基于“扇區(Sector)”的,這就意味著即使僅僅需要更新一個字節的代碼,也要將該字節所在的整個扇區擦除。因此,用戶應該將待更新的代碼和其它代碼放在不同的扇區,以免誤擦除。
IAP的應用領域
使用IAP技術,可以對用戶代碼進行升級,也可以把內部閃存當成類似EEPROM來存儲數據。
當用戶應用程序運行時,用戶可以對程序的一部分進行更新,就像在線升級病毒庫一樣,而不必將硬件電路斷電甚至將芯片取下來放到專門的編程器上去重新燒寫代碼。
當數據存儲器使用,可以減少PCB板面積、降低成本。由于作為數據存儲的扇區會被擦除,因此不能將這些扇區和存放用戶應用程序的扇區重疊。另外,閃存的擦除和編程次數也是有一定限制的,過于頻繁的擦除或編程會影響閃存的壽命。對于LPC2000芯片來說,至少可以穩定擦寫十萬次,數據至少可以保存20年。
如何使用IAP
關于IAP的詳細說明、各種命令碼、返回碼和參數格式,可以參考LPC2000系列的用戶手冊。下面重點介紹一下如何使用IAP。
使用流程
圖1是使用IAP對閃存進行擦寫和編程的基本步驟。
評論