1. 程式人生 > >燒寫程式(下載程式)基礎知識

燒寫程式(下載程式)基礎知識

 簡單整理下韌體、燒寫的定義以及燒寫過程的幾種方式。 一、什麼是燒寫(下載)和韌體 嵌入式系統需要預先將程式寫入ROM/FLASH中,在啟動時載入執行這些程式,將已經生成的程式寫入ROM/FLASH的過程叫做燒寫。這樣固化在儲存介質上的檔案叫韌體(firmware)。那麼燒寫即為更新韌體的過程。 二、常用的幾種燒寫方式 把系統當做一個儲存區域進行燒寫; 採用專門介面及專用的下載線將程式燒寫到韌體中。這時CPU除了執行微控制器本身的指令之外,還能執行對儲存器進行操作的特殊指令,擦除、燒寫和校驗指令。先通過傳輸相應的指令給CPU執行(擦除、讀入、燒寫、校驗等),這樣完成燒寫。現在普遍使用的JTAG模擬器也是這樣,CPU能執行JTAG的特殊指令,完成對韌體的燒寫操作。 載入程式,即微控制器中已經存在了一個燒寫程式。啟動微控制器時首先執行這程式,程式判斷埠狀態,識別為燒寫的特殊狀態,就從某個埠讀取資料,然後寫入到儲存單元中。如果是正常的狀態,就轉到使用者的程式開始執行。需要觸發硬體選擇使用者程式模式還是燒寫模式。 三、關於ISP、ICP、IAP三種程式設計方式區別
ISP:In System Programing,在系統程式設計 ICP:In Circuit Programing,在電路程式設計 IAP:In Applicating Programing,在應用程式設計 ICP工作方式:只需要上電,處理器無需工作,更新整個儲存內容的方式,不需要處理器中間操作,不需要存在載入程式,屬於硬體單獨處理行為,晶片編成方式?? ISP工作方式:可以程式設計寫入終端使用者程式碼,而不需要從電路板上取下器件,已經程式設計的器件也可以用ISP方式擦除或再程式設計,理解上需要一些必要的硬體邏輯或引導程式碼,如使用JTAG下載; IAP工作方式:IAP從結構上將Flash儲存器對映為多個儲存體區域(引導區、執行區、下載儲存區等等),第一個專案程式存放在應用引導區,不執行正常的功能操作,而只是通過某種通訊管道接收程式或資料,執行對其他部分程式碼的更新;其他程式碼才是真正的功能程式碼,存放在程式儲存區。當晶片上電後,首先執行應用引導區程式,它作如下操作,檢查是否需要對第二部分程式碼進行更新,存在更新則進行更新後執行,否則直接執行。所以引導區程式應該不可以IAP方式更新。 個人理解:
IAP的方式最為靈活,但是由於使用方式的受到限制,無法對儲存區域的分配進行重新的劃分,引導區也應該無法自修改。 ICP硬體基礎型=>ISP藉助外力型=>IAP自由獨立型