馬玲
摘要:該論文介紹了一種新型的NXP ARM FLASH自動(dòng)編程方法。該方法通過(guò)上電之前對(duì)管腳預(yù)先設(shè)置,使芯片進(jìn)入ISP模式,通過(guò)自動(dòng)波特率檢測(cè)匹配串口,通過(guò)串口將代碼燒寫(xiě)到FLASH里。
關(guān)鍵詞:自動(dòng)引導(dǎo);FLASH
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)14-0232-02
Abstract:This paper introduces a new NXP ARM FLASH automatic programme method. The method set the PIN before power on and make the chip go into the ISP mode.Then the chip check the sci port and programme the Flash through SCI.
Key words: boot loader; FLASH
1 簡(jiǎn)介
NXP半導(dǎo)體LPC24XX系列圍繞16/32位的ARM7TDMI-S CPU內(nèi)核來(lái)設(shè)計(jì)微控制器,該CPU內(nèi)核帶有實(shí)時(shí)調(diào)試接口,包含JTAG和嵌入式跟蹤。LPC2468的Flash存儲(chǔ)器容量高達(dá)512kB,并且設(shè)計(jì)有獨(dú)特的128位位寬的存儲(chǔ)器接口以及accelerate結(jié)構(gòu),使CPU的執(zhí)行速率高達(dá)72MHz,從而大大提高Flash存儲(chǔ)器程序的執(zhí)行速度。芯片自帶的Bootloader控制上電復(fù)位后的初始化程序,并可通過(guò)串口完成Flash存儲(chǔ)器編程。Bootloader可實(shí)現(xiàn)對(duì)裸片的燒寫(xiě)、已完成燒寫(xiě)的flash的擦除和再燒寫(xiě)以及在程序運(yùn)行時(shí)使用應(yīng)用程序?qū)lash存儲(chǔ)器進(jìn)行燒寫(xiě)。
2 實(shí)現(xiàn)原理
Flash bootloader程序可提供ISP和IAP兩種編程接口,能夠完成燒寫(xiě)片內(nèi)Flash存儲(chǔ)器的功能。
Bootloader區(qū)的Flash大小為8kB,位于片內(nèi)Flash存儲(chǔ)器空間地址最大處(從0x0007 E000開(kāi)始)。上電或復(fù)位后,整個(gè)boot區(qū)也被映射到片內(nèi)存儲(chǔ)器空間的頂端,即boot區(qū)位于從地址0x7FFF E000開(kāi)始的存儲(chǔ)區(qū)。Flash boot裝載程序就從這片存儲(chǔ)區(qū)運(yùn)行,而ISP和IAP程序也均使用這部分片內(nèi)RAM。位于片內(nèi)Flash存儲(chǔ)器boot區(qū)的中斷向量,它在復(fù)位后也被激活,即boot區(qū)的最低64字節(jié)也可在從地址0x0000 0000開(kāi)始的存儲(chǔ)區(qū)中看到。復(fù)位向量包含一條跳轉(zhuǎn)指令,通過(guò)該跳轉(zhuǎn)指令,程序就從Flash boot裝載程序的首地址處,即有效的用戶代碼的入口處開(kāi)始執(zhí)行。
芯片上電或復(fù)位時(shí)會(huì)運(yùn)行Flash boot裝載程序代碼。該裝載程序可執(zhí)行芯片自帶的ISP命令處理程序或用戶自己編寫(xiě)的應(yīng)用代碼。當(dāng)復(fù)位后管腳P2.10的電壓為低電平時(shí),啟動(dòng)ISP命令處理器的外部硬件請(qǐng)求。假定在管腳上產(chǎn)生上升沿時(shí)電源管腳在指定的電平下操作,那么在采樣P2.10之前最多只允許有3ms的時(shí)間,并且還要確定是執(zhí)行ISP處理程序還是用戶編寫(xiě)的代碼。假如管腳P2.10的電壓為低電壓且檢測(cè)到芯片看門(mén)狗溢出標(biāo)志位置位,那么啟動(dòng)ISP命令的外部硬件請(qǐng)求將被忽略掉。當(dāng)P2.10復(fù)位后電壓為高電平,且沒(méi)有ISP命令處理器的請(qǐng)求時(shí),將尋找有效的用戶程序。若找到了有效的用戶程序,執(zhí)行控制權(quán)就被轉(zhuǎn)交給用戶程序。若沒(méi)有找到有效的用戶程序,就將調(diào)用自動(dòng)波特率程序。
下面介紹判定有效用戶代碼標(biāo)準(zhǔn):保留的芯片中斷向量字(0x0000 0014)應(yīng)當(dāng)包含所有其他中斷向量字校驗(yàn)和的2進(jìn)制補(bǔ)碼,從而使所有中斷向量的校驗(yàn)和為0。bootloader裝載程序時(shí),代碼首先保證boot引導(dǎo)區(qū)內(nèi)的中斷向量字不重疊,然后再校驗(yàn)Flash扇區(qū)0中中斷向量字的校驗(yàn)和。如果符號(hào)差(signature)校驗(yàn)成功,那么將地址0x0000 0000裝入程序計(jì)數(shù)器,ARM的CPU控制權(quán)便由用戶代碼接管。因此在用戶Flash復(fù)位扇區(qū)內(nèi),必須包含一條跳轉(zhuǎn)指令,該指令可跳轉(zhuǎn)到用戶應(yīng)用程序代碼入口。如果符號(hào)差(signature)校驗(yàn)失敗,那么ARM自動(dòng)波特率程序會(huì)通過(guò)串口0與上位機(jī)進(jìn)行同步。上位機(jī)應(yīng)當(dāng)通過(guò)串口0發(fā)送一個(gè)同步命令字節(jié) ‘?(0x3F)并等待ARM的響應(yīng)。上位機(jī)的串口0的配置為8個(gè)數(shù)據(jù)位、1個(gè)停止位和無(wú)奇偶校驗(yàn)位。ARM自帶的自動(dòng)波特率程序由內(nèi)部的頻率計(jì)算通過(guò)串口0接收到的同步命令字節(jié)的位時(shí)間,并設(shè)置串口0的波特率發(fā)生器,從而使串口0的波特率與上位機(jī)相匹配。此外,它還向上位機(jī)發(fā)送一組字符串(“Synchronized
3 流程圖
4 結(jié)論
使用該方法可以方便地對(duì)芯片進(jìn)行程序下載,成本低,操作方便。本方法已經(jīng)在開(kāi)發(fā)板上使用,穩(wěn)定可靠。
參考文獻(xiàn):
[1] NXP半導(dǎo)體公司 LPC2468 user manual.2008.
[2] 趙偉慶.ISP技術(shù)與Internet結(jié)合的應(yīng)用研究.2006.