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

?

基于429總線的TMS320F2812程序的遠(yuǎn)程加載技術(shù)

2014-02-26 09:42黃旭東
電子與封裝 2014年6期
關(guān)鍵詞:代碼總線編程

黃旭東,韋 凱,錢 浩,陳 衛(wèi)

(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇 無錫 214035)

1 引言

TMS320F2812(以下簡(jiǎn)稱F2812)是TI公司推出的C2000系列中性能最高的一款芯片。它既具有數(shù)字信號(hào)處理能力,又具有強(qiáng)大的事件管理能力和嵌入式控制能力,其片內(nèi)自帶有128 kB的flash,可以將程序?qū)懭肫瑑?nèi)flash運(yùn)行,使用非常方便,自推出以來已在各行業(yè)得到廣泛應(yīng)用,在軍用領(lǐng)域也得到了大量的應(yīng)用。各類產(chǎn)品在運(yùn)行使用過程中,難免都會(huì)需要對(duì)程序進(jìn)行升級(jí)。在軍用領(lǐng)域要求不拆機(jī)殼進(jìn)行程序升級(jí),現(xiàn)在基本采用RS232實(shí)現(xiàn)遠(yuǎn)程加載,因?yàn)镽S232加載是F2812 Boot loader提供的一種標(biāo)準(zhǔn)加載方式。但是在軍用領(lǐng)域,RS232通信方式是很少使用的,特別是航空領(lǐng)域大量使用429總線,單獨(dú)為了實(shí)現(xiàn)遠(yuǎn)程加載增加RS232接口對(duì)主機(jī)來說是一種負(fù)擔(dān)。本文提出一種基于429總線的F2812遠(yuǎn)程升級(jí)技術(shù)。

2 F2812引導(dǎo)方式及Flash編程簡(jiǎn)介[1]

2.1 F2812引導(dǎo)方式

在程序開發(fā)調(diào)試階段,通常將編譯鏈接產(chǎn)生的可執(zhí)行代碼裝載到內(nèi)部RAM中調(diào)試,一旦程序調(diào)試完成需要系統(tǒng)作為產(chǎn)品獨(dú)立運(yùn)行,就要求將應(yīng)用程序固化到非易失性存儲(chǔ)器中,系統(tǒng)上電后能夠采用特定的引導(dǎo)操作自動(dòng)運(yùn)行應(yīng)用程序。F2812上電后有6種不同的啟動(dòng)模式,主要通過GPIOF端口的4個(gè)引腳上電復(fù)位過程中所處的狀態(tài)確定選擇哪種方式啟動(dòng),引導(dǎo)方式如表1所示。

表1 F2812引導(dǎo)方式

2.2 F2812的Flash編程

F2812的Flash編程過程及方法如圖1所示,除了使用仿真器下載Flash程序和數(shù)據(jù)外,還可以通過SCI、SPI或GPIOB下載,除了JTAG外,其他下載方式都是經(jīng)過boot loader完成。所有過程Flash的算法都需要搬移至片內(nèi)RAM中,然后再實(shí)現(xiàn)對(duì)Flash的編程工作。

圖1 F2812 Flash編程

3 基于429總線的F2812加載方案

正如2.2節(jié)中所述,只需將Flash的編程算法通過429總線搬移至片內(nèi)RAM中,再將從429總線上接收到的數(shù)據(jù)傳送給編程算法,算法執(zhí)行后便可實(shí)現(xiàn)加載。因此我們需要重新編寫自己的boot loader,并將boot代碼固化在片內(nèi)非易失性空間即可。TI的boot loader是固化在ROM中,我們無法更改,因此只能固化在flash中,在啟動(dòng)時(shí)從flash啟動(dòng)。

基于429總線的F2812加載方案如圖2所示。429總線芯片通過XINTF接口與F2812相連,電腦通過USB轉(zhuǎn)429通信板卡與下位機(jī)F2812進(jìn)行通信。F2812上電運(yùn)行后通過識(shí)別XBIO引腳狀態(tài),判定是執(zhí)行用戶代碼還是繼續(xù)執(zhí)行boot代碼從而重新加載Flash程序。當(dāng)然如果用戶系統(tǒng)端口資源緊張或是不想使用硬件識(shí)別方式也可以通過軟件指令的方式判斷是否需要重新加載Flash程序。本文按照硬件識(shí)別方式進(jìn)行開發(fā)實(shí)現(xiàn)。

圖2 基于429總線的F2812加載方案

4 基于429總線的F2812加載軟硬件實(shí)現(xiàn)

4.1 硬件實(shí)現(xiàn)

429總線芯片選擇HOLT公司的HI-3583,它集429協(xié)議與驅(qū)動(dòng)器于一身,使用非常方便,通過本地總線即可實(shí)現(xiàn)與F2812的通信。與上位機(jī)通信采用歐比特公司的EMBC1000-USB429EI板卡實(shí)現(xiàn),并在此基礎(chǔ)上開發(fā)了上位機(jī)軟件,實(shí)現(xiàn)將CCS編譯生成的.out文件轉(zhuǎn)換成HEX格式通過429總線逐一發(fā)送給F2812。

是否進(jìn)行遠(yuǎn)程加載flash則是通過F2812的XBIO引腳進(jìn)行控制。XBIO引腳沒有內(nèi)部上拉電阻,因此為了可靠性,在外部增加上拉電阻。當(dāng)需要執(zhí)行遠(yuǎn)程加載flash時(shí),只需要將S1合上;在加載完成后打開S1重新上電或者復(fù)位F2812,F(xiàn)2812即會(huì)按照新程序執(zhí)行。

4.2 軟件實(shí)現(xiàn)

硬件電路搭建完畢后,即需要開始軟件調(diào)試。首先調(diào)試了429通信,在確保429正常通信的前提下,將Flash281x_API融入429程序,即構(gòu)成了boot loader。Flash281x_API使用TI提供的庫(kù)函數(shù)[2],非常方便,其流程圖如圖3所示。

圖3 boot loader流程圖

為了日后調(diào)用方便,我們將boot loader編譯生成庫(kù)函數(shù),這樣在日后使用過程中只需調(diào)用庫(kù)函數(shù)即可實(shí)現(xiàn)。Boot loader程序空間分配的.cmd文件如下所示,將啟動(dòng)代碼固化在.ftext中,執(zhí)行時(shí)不需要搬移至片內(nèi)RAM,而關(guān)于Flash的編程算法則需要搬移至片內(nèi)RAM運(yùn)行。Boot loader程序的入口地址位于0x3f7ff6處,用戶代碼程序入口位于0x3f5ff6處。用戶代碼程序入口地址可根據(jù)用戶需要隨意調(diào)整,但是Boot loader程序入口地址不能隨意調(diào)整,必須是0x3f7ff6,這與F2812的Flash啟動(dòng)操作流程相關(guān),如圖4所示。

圖4 F2812 Flash啟動(dòng)流程

F2812 Flash的啟動(dòng)遵循從1到5這個(gè)步驟,當(dāng)使用自己編寫的boot loader時(shí),第4步操作將發(fā)生變化,不再是調(diào)至_c_int00處,而是先跳轉(zhuǎn)至用戶啟動(dòng)代碼處,如圖5所示,執(zhí)行用戶boot loader代碼后再跳轉(zhuǎn)_c_int00處。

圖5 F2812基于429總線的Flash啟動(dòng)流程

因此,在用戶需要使用429總線加載程序時(shí),每個(gè)程序中都必須帶有基于429加載的函數(shù)庫(kù),這將占據(jù)一個(gè)sector段,對(duì)用戶代碼受到一定的影響,并且用戶代碼需要做出適當(dāng)調(diào)整,主要表現(xiàn)為code_start段的位置,主要是.cmd中的以下這句:

BEGIN : origin = 0x3f5ff6, length = 0x000002

整個(gè)429總線加載Flash的算法庫(kù)將占據(jù)sector A段,將用戶可使用的flash大小進(jìn)行了壓縮,只有120 k,適用于用戶代碼不超過120 k的系統(tǒng)。

5 結(jié)論

本文從實(shí)際應(yīng)用需求角度出發(fā),提出了一種基于429總線遠(yuǎn)程加載F2812 Flash的方法,并詳細(xì)闡述了軟件設(shè)計(jì)開發(fā)的流程,有效解決了軍用領(lǐng)域整機(jī)的需求,對(duì)其他類似系統(tǒng)的程序遠(yuǎn)程加載具有借鑒意義。

[1] 蘇奎峰,呂強(qiáng),等. TMS320F281x DSP原理及C程序開發(fā)[M]. 北京: 電子工業(yè)出版社,2008.

[2] TI. TMS320F281x Flash Programming API Revision Change[EB/OL]. www.ti.com.cn, 2005.

猜你喜歡
代碼總線編程
編程,是一種態(tài)度
元征X-431實(shí)測(cè):奔馳發(fā)動(dòng)機(jī)編程
編程小能手
紡織機(jī)上誕生的編程
機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
一種基于CAN總線的誤碼測(cè)試方法
鹤岗市| 三原县| 凤阳县| 宝清县| 达州市| 巴彦淖尔市| 印江| 庐江县| 白河县| 清河县| 上蔡县| 青神县| 定结县| 金昌市| 凉城县| 额济纳旗| 镇赉县| 葫芦岛市| 盱眙县| 呼伦贝尔市| 隆尧县| 黄陵县| 南投县| 兴山县| 潞城市| 栖霞市| 大埔区| 忻州市| 临澧县| 格尔木市| 盈江县| 河间市| 淮滨县| 禄劝| 乳山市| 阿勒泰市| 东明县| 安顺市| 井研县| 招远市| 牡丹江市|