国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

NXP ARM的自升級(jí)方法

2015-07-24 15:13:32馬玲
電腦知識(shí)與技術(shù) 2015年14期
關(guān)鍵詞:波特率字符串存儲(chǔ)器

馬玲

摘要:該論文介紹了一種新型的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”),上位機(jī)在接收到該字符串(“Synchronized”)后,將該字符串再發(fā)送給自動(dòng)波特率程序,表明上位機(jī)正確收取到了同步字符串。自動(dòng)波特率程序通過(guò)收到的該組字符串來(lái)驗(yàn)證是否與上位機(jī)同步成功。如果同步成功,自動(dòng)波特率程序則向上位機(jī)發(fā)送“OK”字符串。上位機(jī)應(yīng)當(dāng)發(fā)送芯片正常工作運(yùn)行時(shí)的晶振頻率來(lái)回應(yīng),其中頻率的單位為KH。例如,如果10MH為芯片工作頻率,那么上位機(jī)將發(fā)送字符串“10000 ”作為響應(yīng)。在ARM的自動(dòng)波特率程序通過(guò)串口0獲取到晶振頻率后再向上位機(jī)發(fā)送字符串“OK”。如果同步驗(yàn)證失敗,那么自動(dòng)波特率程序就會(huì)等待下一個(gè)同步字符。要讓自動(dòng)波特率程序能夠穩(wěn)定可靠的工作,晶振頻率最小為10MHz。

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.

猜你喜歡
波特率字符串存儲(chǔ)器
靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
智能制造(2020年5期)2020-07-03 06:24:00
基于FPGA的異步串行通信波特率容錯(cuò)設(shè)計(jì)
存儲(chǔ)器——安格爾(墨西哥)▲
一種新的基于對(duì)稱(chēng)性的字符串相似性處理算法
基于Nand Flash的高速存儲(chǔ)器結(jié)構(gòu)設(shè)計(jì)
依據(jù)字符串匹配的中文分詞模型研究
C*Core芯片SCI串口波特率容限優(yōu)化
一種針對(duì)Java中字符串的內(nèi)存管理方案
計(jì)算機(jī)多設(shè)備接口波特率不匹配的研究
乐亭县| 游戏| 同江市| 盐边县| 卢氏县| 菏泽市| 温泉县| 三亚市| 东台市| 瑞丽市| 深泽县| 团风县| 黑水县| 兴和县| 通城县| 南丹县| 广南县| 威信县| 保亭| 锡林郭勒盟| 沙洋县| 寿宁县| 顺昌县| 三门县| 海伦市| 隆化县| 商南县| 商丘市| 土默特左旗| 河津市| 积石山| 醴陵市| 阳城县| 华宁县| 泰和县| 海原县| 新郑市| 福贡县| 平乐县| 南宁市| 榆林市|