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