ARM7 LPC2378 遠(yuǎn)程升級(jí)----ISP與IAP
最近本人在學(xué)習(xí)ARM7的遠(yuǎn)程升級(jí),在這里將自己的學(xué)習(xí)過程與大家分享,有錯(cuò)誤的地方還請(qǐng)大家指出便于改正!
ISP(In-System Programming)即“在系統(tǒng)可編程”,指電路板上的空白器件可以編程寫入最終用戶代碼, 而不需要從電路板上取下器件,已經(jīng)編程的器件也可以用ISP方式擦除或再編程。
IAP(In-Application Programming) 即MCU可以在系統(tǒng)中獲取新代碼并對(duì)自己重新編程,即可用程序來改變程序。ISP和IAP技術(shù)是未來儀器儀表的發(fā)展方向。
ISP和IAP的工作原理
ISP的實(shí)現(xiàn)相對(duì)要簡單一些,一般通用做法是內(nèi)部的存儲(chǔ)器可以由上位機(jī)的軟件通過串口來進(jìn)行改寫。對(duì)于單片機(jī)來講可以通過SPI或其它的串行接口接收上位機(jī)傳來的數(shù)據(jù)并寫入存儲(chǔ)器中。所以即使我們將芯片焊接在電路板上,只要留出和上位機(jī)接口的這個(gè)串口,就可以實(shí)現(xiàn)芯片內(nèi)部存儲(chǔ)器的改寫,而無須再取下芯片。
IAP的實(shí)現(xiàn)相對(duì)要復(fù)雜一些,在實(shí)現(xiàn)IAP功能時(shí), 單片機(jī)內(nèi)部一定要有兩塊存儲(chǔ)區(qū),一般一塊被稱為BOOT區(qū),另外一塊被稱為APP(應(yīng)用程序)區(qū)。單片機(jī)上電運(yùn)行在BOOT區(qū),如果有外部改寫程序的條件滿足,則對(duì)存儲(chǔ)區(qū)的程序進(jìn)行改寫操作且程序指針跳到存儲(chǔ)區(qū),開始執(zhí)行放在存儲(chǔ)區(qū)的程序,這樣便實(shí)現(xiàn)了IAP功能,如果條件不滿足則再次執(zhí)行BOOT區(qū)的程序,保證可以進(jìn)行再次的IAP。
通常在程序設(shè)計(jì)時(shí)有兩種思路,見下圖
思路1:將MCU分為3個(gè)區(qū):BootLoader區(qū)、APP1(應(yīng)用程序1)區(qū)、APP2(應(yīng)用程序2)區(qū),系統(tǒng)上電后程序從BootLoader區(qū)開始執(zhí)行,根據(jù)條件選擇跳到APP1(應(yīng)用程序1)區(qū)中,當(dāng)需要使用遠(yuǎn)程升級(jí)時(shí),通過IAP,對(duì)APP2(應(yīng)用程序2)區(qū)進(jìn)行編程,改變相關(guān)標(biāo)志位,然后使系統(tǒng)復(fù)位,系統(tǒng)再次從BootLoader區(qū)開始執(zhí)行,通過判斷標(biāo)志位,選擇跳到APP1(應(yīng)用程序1)區(qū)或者APP2(應(yīng)用程序2)區(qū)。當(dāng)再次升級(jí)時(shí),再對(duì)APP2(應(yīng)用程序2)區(qū)進(jìn)行編程,保證APP1(應(yīng)用程序1)區(qū)不改變,這樣即使升級(jí)失敗,也能正常運(yùn)行APP1(應(yīng)用程序1)區(qū)程序,可以再次遠(yuǎn)程升級(jí)。
思路2:思路2是對(duì)思路1的簡化,即將MCU分為2個(gè)區(qū):BootLoader區(qū)與APP1(應(yīng)用程序1)區(qū)合為一體、APP2(應(yīng)用程序2)區(qū),系統(tǒng)上電后程序從BootLoader區(qū)開始執(zhí)行,由于兩者合為一體了,所以也就運(yùn)行了APP1程序,當(dāng)需要使用遠(yuǎn)程升級(jí)時(shí),通過IAP,對(duì)APP2(應(yīng)用程序2)區(qū)進(jìn)行編程,改變相關(guān)標(biāo)志位,然后使系統(tǒng)復(fù)位,系統(tǒng)再次從BootLoader區(qū)開始執(zhí)行,通過判斷標(biāo)志位,選擇跳到APP2(應(yīng)用程序2)區(qū)。當(dāng)再次升級(jí)時(shí),再對(duì)APP2(應(yīng)用程序2)區(qū)進(jìn)行編程,保證BootLoader區(qū)不改變,這樣即使升級(jí)失敗,也能正常運(yùn)行APP1(應(yīng)用程序1)區(qū)程序,可以再次遠(yuǎn)程升級(jí)。
思路1與思路2的總體思想是一樣的,他們遠(yuǎn)程升級(jí)的核心都是IAP,而這里的IAP就是遠(yuǎn)程升級(jí)時(shí)所要用到的非常重要的知識(shí)點(diǎn)。這個(gè)IAP我打算放到下一篇重點(diǎn)介紹,這里的兩種思路后續(xù)還會(huì)介紹,今天先和大家講講ISP的使用,由于J-Link的普及(既可調(diào)試程序也可直接下載程序),所以實(shí)際產(chǎn)品開發(fā)過程中ISP用的比較少,所以這里就簡單介紹一下利用ISP下載程序。
%20ISP的使用:
%20講ARM7%20LPC2378的ISP,這里不得不提NXP公司的工具Flash%20Magic。下載地址:http://www.flashmagictool.com/%20點(diǎn)擊打開鏈接%20%20%20%20%20%20%20%20%20%20%20%20仔細(xì)看一下LPC2378的數(shù)據(jù)手冊(cè),會(huì)發(fā)現(xiàn)LPC2378一個(gè)引腳的名稱為ISP(P2.10),P2.10%20復(fù)位后的低電平被當(dāng)作啟動(dòng)%20ISP%20命令處理器的外部硬件請(qǐng)求。
注意:在將管腳%20P2.10%20作為%20ISP%20硬件請(qǐng)求時(shí)需要特別注意:由于%20P2.10%20在復(fù)位后處于高阻模式,所以要使該管腳的狀態(tài)穩(wěn)定,%20用戶需要提供外部硬件(上拉電阻或其它器件)。否則一不小心可能就進(jìn)入了%20ISP%20模式。
%20%20%20%20%20%20%20%20%20
ISP電路設(shè)計(jì)時(shí)加上上拉電阻
Flash Magic燒寫程序:
1、選擇芯片類型、COM口、波特率、晶振頻率為實(shí)際硬件電路的晶振頻率
2、選擇需要擦除的Flash
3、點(diǎn)擊Browse,選擇要下載的Hex文件
4、選擇編譯完成后進(jìn)行校驗(yàn)
5、點(diǎn)擊Start,開始下載