燒寫程序(下載程序)基礎知識
簡單整理下固件、燒寫的定義以及燒寫過程的幾種方式。
一、什么是燒寫(下載)和固件
嵌入式系統(tǒng)需要預先將程序寫入ROM/FLASH中,在啟動時載入運行這些程序,將已經(jīng)生成的程序寫入ROM/FLASH的過程叫做燒寫。這樣固化在存儲介質上的文件叫固件(firmware)。那么燒寫即為更新固件的過程。
二、常用的幾種燒寫方式
把系統(tǒng)當做一個存儲區(qū)域進行燒寫;
采用專門接口及專用的下載線將程序燒寫到固件中。這時CPU除了執(zhí)行單片機本身的指令之外,還能執(zhí)行對存儲器進行操作的特殊指令,擦除、燒寫和校驗指令。先通過傳輸相應的指令給CPU執(zhí)行(擦除、讀入、燒寫、校驗等),這樣完成燒寫?,F(xiàn)在普遍使用的JTAG仿真器也是這樣,CPU能執(zhí)行JTAG的特殊指令,完成對固件的燒寫操作。
引導程序,即單片機中已經(jīng)存在了一個燒寫程序。啟動單片機時首先運行這程序,程序判斷端口狀態(tài),識別為燒寫的特殊狀態(tài),就從某個端口讀取數(shù)據(jù),然后寫入到存儲單元中。如果是正常的狀態(tài),就轉到用戶的程序開始執(zhí)行。需要觸發(fā)硬件選擇用戶程序模式還是燒寫模式。
三、關于ISP、ICP、IAP三種編程方式區(qū)別
ISP:In System Programing,在系統(tǒng)編程
ICP:In Circuit Programing,在電路編程
IAP:In Applicating Programing,在應用編程
ICP工作方式:只需要上電,處理器無需工作,更新整個存儲內(nèi)容的方式,不需要處理器中間操作,不需要存在引導程序,屬于硬件單獨處理行為,芯片編成方式??
ISP工作方式:可以編程寫入最終用戶代碼,而不需要從電路板上取下器件,已經(jīng)編程的器件也可以用ISP方式擦除或再編程,理解上需要一些必要的硬件邏輯或引導代碼,如使用JTAG下載;
IAP工作方式:IAP從結構上將Flash存儲器映射為多個存儲體區(qū)域(引導區(qū)、運行區(qū)、下載存儲區(qū)等等),第一個項目程序存放在應用引導區(qū),不執(zhí)行正常的功能操作,而只是通過某種通信管道接收程序或數(shù)據(jù),執(zhí)行對其他部分代碼的更新;其他代碼才是真正的功能代碼,存放在程序存儲區(qū)。當芯片上電后,首先運行應用引導區(qū)程序,它作如下操作,檢查是否需要對第二部分代碼進行更新,存在更新則進行更新后執(zhí)行,否則直接執(zhí)行。所以引導區(qū)程序應該不可以IAP方式更新。
個人理解:
IAP的方式最為靈活,但是由于使用方式的受到限制,無法對存儲區(qū)域的分配進行重新的劃分,引導區(qū)也應該無法自修改。
ICP硬件基礎型=>ISP借助外力型=>IAP自由獨立型