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

?

基于TMS320F2812的U盤(pán)升級(jí)方法

2019-07-12 13:47黃瀟劍
關(guān)鍵詞:仿真器主程序U盤(pán)

黃瀟劍

重慶邁科唯醫(yī)療科技有限公司 重慶 400714

一、引言

當(dāng)設(shè)備需要維護(hù)時(shí),傳統(tǒng)的方法是通過(guò)實(shí)地,打開(kāi)設(shè)備蓋子,然后連接仿真器來(lái)更新程序,但是這樣會(huì)給維護(hù)人員或者客戶(hù)帶來(lái)很多的不方便。此時(shí)通過(guò)把待升級(jí)的程序放入放在U盤(pán),然后通過(guò)USB接口插到設(shè)備上,等待幾分鐘就完成設(shè)備的更新,這樣對(duì)產(chǎn)品的維護(hù)就帶來(lái)了極大便利。

二、系統(tǒng)介紹

本文是通過(guò)U盤(pán)來(lái)實(shí)現(xiàn)在線編程的,基本思路如下:

1、將主程序文件里的CMD文件中的BEGIN_FLASH的地址改為FLASH A區(qū)以外的地址;

2、把CCS生成的.out格式的主程序文件先轉(zhuǎn)換成.bin格式的主程序文件;

3、把需要更新的.bin格式的主程序文件放入U(xiǎn)盤(pán);

4、升級(jí)程序的編寫(xiě):①調(diào)用TI公司提供的庫(kù)函數(shù)(Flash2812_API_V210.lib)對(duì)內(nèi)部FLASH除A區(qū)以外的其他區(qū)進(jìn)行擦除,擦除完畢后,調(diào)用燒寫(xiě)函數(shù)將接收到的數(shù)據(jù)一段一段地?zé)龑?xiě)進(jìn)FLASH除A區(qū)以外的其他區(qū)段里,最后調(diào)用校驗(yàn)函數(shù)對(duì)每一段的數(shù)據(jù)進(jìn)行校驗(yàn);②需要在升級(jí)程序的末尾添加一個(gè)匯編語(yǔ)句指向主程序文件里的CMD文件中的BEGIN_FLASH的地址;

5、通過(guò)仿真器把升級(jí)程序下載到T MS320F2812的FLASH A區(qū);

6、將U盤(pán)插到設(shè)備USB口,通過(guò)SCIA串口通訊方式將.bin格式的主程序文件一段一段地傳輸?shù)絋MS320F2812的接收全局變量數(shù)組里;

三、整體架構(gòu)

為了實(shí)現(xiàn)程序升級(jí),應(yīng)合理規(guī)劃編譯所用的CMD文件。在本系統(tǒng)中,將程序劃分為2個(gè)模塊,一個(gè)是主程序,另一個(gè)是升級(jí)程序,用于接收U盤(pán)的更新程序數(shù)據(jù)流及FLASH燒寫(xiě)等;

四、軟件部分的具體實(shí)現(xiàn)

1、更改主程序文件里的CMD文件中的BEGIN_FLASH的地址

為了方便記憶,我將0x3F5FFE定義為主程序的起始地址

2、.bin文件的生成

1)利用hex2000.exe將?.out和?.map(定位文件)轉(zhuǎn)換成ASCII格式文件,并將flash的空白區(qū)域填充成0x FFFF。也就是說(shuō).out文件中的程序只是占據(jù)了flash的幾個(gè)部分區(qū)域,那么利用.map文件將.out的程序分配到整個(gè)flash文件的指定區(qū)域,那么其他沒(méi)有程序的地方就是0x FFFF。

2)利用FileIOShell.exe將HEX2000產(chǎn)出的ASCII格式轉(zhuǎn)換為二進(jìn)制格式,這個(gè)文件的大小剛好是256 K字節(jié),對(duì)應(yīng)dsp2812的整個(gè)flash(128K16位)。正如前面所述,只有幾個(gè)區(qū)段有數(shù)據(jù),其他都是0x FFFF。這里要注意的是,我用UltraEdit查看二進(jìn)制文件,比如文件開(kāi)頭的4個(gè)字節(jié)是這樣的12 34 56 78,那么對(duì)應(yīng)的是flash的首個(gè)地址0x3D8000的內(nèi)容是0x1234(不是0x3412),第2地址0x3D8001的內(nèi)容是0x5678(不是0x7856)。

3、拷貝進(jìn)U盤(pán)

4、升級(jí)程序的編寫(xiě)

1)在程序中包含F(xiàn)LASH_API庫(kù)和相應(yīng)的頭文件;

2)修改頭文件,選擇適合的目標(biāo)芯片,如CPU時(shí)鐘頻率等;

3)初始化Flash_CPUScaleFactor;

4)初始化PLL控制寄存器PLLCR(由于我選用的架構(gòu)是:升級(jí)程序,用匯編語(yǔ)言進(jìn)行地址跳轉(zhuǎn)->主程序,故不需要,這里寫(xiě)下只是為以后查看時(shí)有更多的注意點(diǎn));

應(yīng)用函數(shù)必須使用軟件延時(shí)或其他延時(shí)來(lái)保證PLL有足夠的時(shí)間來(lái)鎖定新的頻率;

5)初始化CALLBACK函數(shù)指針(我沒(méi)有用到,因?yàn)榧軜?gòu)決定不需要);

當(dāng)用戶(hù)在API函數(shù)執(zhí)行期間必須要完成一些其他的功能,例如系統(tǒng)有外部看門(mén)狗必須要定期清除或者必須發(fā)送信息給通信端口,此時(shí)用戶(hù)可以在CALLBACK函數(shù)中插入相應(yīng)的代碼完成。

6)代碼拷貝;

①在CMD文件中添加Flash_API的庫(kù)的代碼,將Load放在Flash區(qū)間里,將Run放在RA M里;

②memcpy()函數(shù)放在系統(tǒng)初始化函數(shù)后;7)芯片解鎖;

需要在運(yùn)行API函數(shù)前解鎖CSM單元;

8)配置CMD文件;

①初始化的數(shù)據(jù)、代碼必須要存放到非易失性存儲(chǔ)器

②未初始化的數(shù)據(jù)、代碼可以放在RAM里;

③將升級(jí)程序只能放入FLASH A扇區(qū),因?yàn)樾酒瑔?dòng)默認(rèn)地址是0x3F7FF6,這個(gè)地址在FLASHA扇區(qū);

9)在升級(jí)程序的末尾添加一句匯編語(yǔ)言指向主程序的起始地址,即:asm("LB 0x3F5FFE");

5、將升級(jí)程序下載到TMS320F2812的FLASH A區(qū)

6、將U盤(pán)插到主機(jī)的USB接口,即可自動(dòng)完成升級(jí)

五、結(jié)束語(yǔ)

本文提供的方案在第一次使用時(shí),需通過(guò)仿真器燒入更新所需的升級(jí)程序,以后對(duì)程序的改動(dòng)均可通過(guò)U盤(pán)更新來(lái)完成。方案的主程序大小均為256KB,需要6分鐘即可完畢。

該種方案可以滿(mǎn)足所有基于TI公司的TMS320F2812的嵌入式系統(tǒng)的升級(jí)開(kāi)發(fā)需要,并且十分簡(jiǎn)單,易操作。

猜你喜歡
仿真器主程序U盤(pán)
自動(dòng)升級(jí)程序在船舶監(jiān)測(cè)系統(tǒng)中的應(yīng)用
AI仿真器將大大提高科學(xué)領(lǐng)域的仿真模擬速度
淺談數(shù)控銑削技術(shù)代碼程序的嵌套方式研究
采用U盤(pán)文件冗余方案實(shí)現(xiàn)TSP系統(tǒng)的可靠裝載
自動(dòng)辨認(rèn)插口方向的U盤(pán)
電控冰箱軟件模塊化設(shè)計(jì)
時(shí)光倒流 換回PotPlayer老圖標(biāo)
車(chē)輛自組織網(wǎng)絡(luò)的仿真趨勢(shì)
U盤(pán)“鬧肚子”
基于32位SPARC處理器的JTAG仿真器設(shè)計(jì)與實(shí)現(xiàn)