單片機(jī)的ISP 與 IAP
IAP: in applicatin programming
但兩者的操作方式,結(jié)果和應(yīng)用場(chǎng)合有什么區(qū)別
什么是ISP:
用寫入器將code燒入,不過(guò),芯片可以在目標(biāo)板上,不用取出來(lái),在設(shè)計(jì)目標(biāo)板的時(shí)候就將接口設(shè)計(jì)在上面,所以叫"在系統(tǒng)編程",即不用脫離系統(tǒng);
什么是IAP:
在應(yīng)用編程,有芯片本身(或通過(guò)外圍的芯片)可以通過(guò)一系列操作將code寫入,比如一款支持Iap的單片機(jī),內(nèi)分3個(gè)程序區(qū),1作引導(dǎo)程序區(qū),2作運(yùn)行程序區(qū),3作下載區(qū),芯片通過(guò)串口接收到下載命令,進(jìn)入引導(dǎo)區(qū)運(yùn)行引導(dǎo)程序,在引導(dǎo)程序下將new code內(nèi)容下載到下載區(qū),下載完畢并校驗(yàn)通過(guò)后再將下載區(qū)內(nèi)容復(fù)制到2區(qū),運(yùn)行復(fù)位程序,則Iap完成;
1,ISP 程序升級(jí)需要到現(xiàn)場(chǎng)解決,不過(guò)好一點(diǎn)的是不必拆機(jī)器了;
2,IAP 如果有網(wǎng)管系統(tǒng)的話,用網(wǎng)管下載一切搞定,人不用跑來(lái)跑去,
這可能是他們的優(yōu)點(diǎn)或應(yīng)用吧
ISP和IAP最大的不同是:由誰(shuí)來(lái)觸發(fā)。
ISP有4種觸發(fā)方式:
1.由外部硬件電路:如VDD保持高電平,給RST連續(xù)3個(gè)脈沖;
2.檢測(cè)狀態(tài)位:如ISPEN,為0時(shí)PC指針從0000H開(kāi)始執(zhí)行;為1時(shí),通過(guò)“引導(dǎo)向量”計(jì)算出“ISP代碼”的位置。每次復(fù)位后都會(huì)檢測(cè)該狀態(tài)位;
3.中止控制符信號(hào)觸發(fā)芯片復(fù)位:中止控制符信號(hào)就是指在異步串行口的接收腳上出現(xiàn)長(zhǎng)達(dá)一幀長(zhǎng)度的低電平,這里一幀的長(zhǎng)度與異步串行口的工作模式有關(guān)。
4.直接調(diào)用ISP:用戶程序也可以調(diào)用,但是很危險(xiǎn)。
4種方式的目的是相同的——進(jìn)入ISP子程序,比如Philips出廠的ISP子程序在1E00H-1FFFH,只要能引導(dǎo)PC指針指向1E00H就可以了。
而進(jìn)入ISP代碼的目的是:進(jìn)入BootROM。
IAP的觸發(fā)比較簡(jiǎn)單一些,沒(méi)有外部觸發(fā)。通過(guò)一些指示位(SST為SC0/SC1、SFCF[1,0];Philips為一段IAP子程序,保存在FF00H~FFFFH地址空間中),達(dá)到引導(dǎo)到BootROM的目的。
殊途同歸,ISP、IAP所進(jìn)入的BootROM里面駐留的Boot代碼,才是最終目標(biāo)。
最后一種:并行編程模式。不需要BootROM,直接設(shè)置芯片的多個(gè)引腳來(lái)讓芯片識(shí)別命令(如:擦除、寫入、驗(yàn)證等),從P口傳地址、數(shù)據(jù),就可以寫入Flash
用LPC2000的IAP,你自己分配好FLASH空間,指定一個(gè)BLOCK用來(lái)存放你的數(shù)據(jù),然后通過(guò)IAP進(jìn)行寫操作。每次開(kāi)機(jī)后,從這個(gè)BLOCK讀你的數(shù)據(jù)。
IAP的實(shí)現(xiàn)
1)檢查是否需要對(duì)第二部分代碼進(jìn)行更新
2)如果不需要更新則轉(zhuǎn)到4)
3)執(zhí)行更新操作
4)跳轉(zhuǎn)到第二部分代碼執(zhí)行
對(duì)于STM32來(lái)說(shuō),因?yàn)樗闹袛嘞蛄勘砦挥诔绦虼鎯?chǔ)器的最低地址區(qū),為了使第一部分代碼能夠正確地響應(yīng)中斷,通常會(huì)安排第一部分代碼處于Flash的開(kāi)始區(qū)域,而第二部分代碼緊隨其后。
在第二部分代碼開(kāi)始執(zhí)行時(shí),首先需要把CPU的中斷向量表映像到自己的向量表,然后再執(zhí)行其他的操作。
評(píng)論