999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PCMBI模塊的Flash編程技術研究

2015-01-13 01:33:07高輝輝
單片機與嵌入式系統應用 2015年9期
關鍵詞:程序用戶

高輝輝

(國家知識產權局 專利局專利審查協作江蘇中心 光電部,蘇州 215163)

高輝輝

(國家知識產權局 專利局專利審查協作江蘇中心 光電部,蘇州 215163)

通過JTAG對Flash進行編程,給嵌入式系統的軟件維護和升級造成一定的困難,針對這一點,以PC-MBI(PCI)模塊為實例,完成了通過主機接口和串口的Flash編程軟件。首先優化了Am29LV320D Flash的編程代碼,提高了編程速度和正確率,并且設計了一種引導程序,實現了用戶自行設置啟動扇區的功能,對某一扇區進行更新等操作時,不會影響其他扇區的用戶程序,此設計已應用于實際項目中。實際應用結果表明,該軟件運行穩定,可維護性好。

Am29LV320D;Flash;在線編程;引導程序

引 言

隨著信息技術的發展,嵌入式系統目前已在國防、國民經濟及社會生活等領域普及應用。在嵌入式系統中,為了提高代碼執行速度和系統的可靠性,操作系統及其軟件多固化在非易失性的存儲器中,如ROM、EPROM、EEPROM和Flash。其中Flash是一種可以在線進行電擦寫、掉電后信息不丟失的非易失性存儲器,具有功耗低、容量大、擦寫速度快等優點,并且內部嵌入算法完成對芯片的操作,適用于需要實時寫入數據并且掉電保持的系統。

傳統上使用仿真器固化軟件,給用戶帶了很大的不便,尤其不利于系統的后期維護,另外,這種方法也不能在高、低溫等復雜環境下工作。針對這些問題,本文以PC-MBI(PCI)模塊為實例,設計了基于該模塊的通過主機接口和串口的Flash編程軟件,使用戶可以脫離仿真器自行固化所需的軟件。該軟件支持動態配置啟動映像,可從DPRAM或Flash配置啟動參數;支持主機接口更新軟件;支持串口更新軟件,并增加了校驗來確保通過串口傳送映像文件的正確率;在Am29LV320D Flash編程方法的基礎上,優化了Flash的編程和擦除代碼,提高了對Flash操作的正確率和速度;對Flash存儲空間進行了劃分,在對某一扇區操作時,不影響其他扇區的用戶程序[1]。

PC-MBI(PCI)模塊是一款基于SoC芯片HKS1553BCRT的低功耗、高性能的MBI板卡,支持1路雙冗余度MIL-STD-1553B總線通信,該芯片內嵌ARM7TDMI微處理器;片內具有16K×32位和4K×16位的SRAM,以及可配置為8K×16位、16K×16位或32K×16位的DPRAM;片內中斷控制器最多支持32路中斷;串口控制器支持2路串行通信;提供8路通用輸入/輸出接口(GPIO);1路1553B接口,支持1~4 Mbps的MIL-STD-1553B數據傳輸速率;包括2M×16位的Flash存儲器和1個3.3 V、總線頻率為33 MHz的PCI總線接口。

1553B總線接口SoC應用中可以通過外部總線接口外接2M×16位的Flash存儲器,MBI模塊的傳輸層軟件、引導軟件、加載軟件和測試軟件都存儲在Flash存儲器中,通過固化程序將這些軟件固化到Flash中,系統上電后,通過搬家程序將測試軟件或傳輸層軟件搬到SRAM中運行。

在以前的應用中,經常使用仿真器為PCI模塊升級軟件,但此方法代價高,不利于用戶操作,在一定程度上也影響了后期維護工作。針對這些缺陷,為滿足用戶需求,開發了通過主機接口和串口固化板卡映像的Flash在線編程軟件。

2 Flash基本操作命令以及程序設計

本設計采用了Flash的autoselect模式,該模式能使編程設備自動地與另一采用相應編程算法編程的設備匹配,并且通過命令寄存器訪問系統內的autoselect代碼。為了訪問到系統內autoselect代碼,主機系統可經由命令寄存器發送autoselect命令。

圖1 擦除操作流程

2.1 Flash存儲器擦除命令

擦除命令分為整片擦除和扇區擦除兩種,可按字或字節操作,共需要6個總線周期,依次為兩個解鎖周期、一個建立周期、兩個解鎖周期、一個擦除周期。該擦除命令啟動內部擦除算法,自動完成擦除操作。擦除操作的流程如圖1所示。

2.2 Flash存儲器編程命令

對Am29LV320D進行編程,可以按字或字節操作,共需要4個總線周期。編程命令首先以兩個解鎖周期開始,然后是一個建立周期,最后一個周期完成向待編程地址寫入特定的數據。寫完該地址和數據后,內置編程算法自動啟動,進行Flash存儲器編程。編程算法完成后,進入讀取數據狀態。

2.3 Flash存儲器操作結束的檢測機制

常用的Flash存儲器操作結束的檢測方法有3種:第1種是判斷引腳RY/BY#的狀態,在編程或擦除操作過程中RY/BY#引腳一直為低電平,操作完成后變為高電平。第2種是檢測跳變位DQ6,在編程或擦除時對任何地址進行連續讀,均引起DQ6連續跳變,直至操作結束才停止跳變。第3種方法是使用數據線的DQ7和DQ5位,DQ7位在編程或擦除過程中輸出的數是寫入該位數據的反碼,當操作完成時輸出才變為寫入該位的數據,但還要讀取DQ5位的狀態,為“1”時表示操作超時,此時應再讀一次DQ7位的狀態,若DQ7位輸出仍不是寫入的數據,則操作失敗,復位Flash存儲器。本設計使用了第2種方法檢測跳變位DQ6,具體算法見圖2。

圖2 檢測跳變位算法

2.4 Flash操作代碼實現

Flash燒寫代碼設計中具體算法的函數定義如下:

① 整片擦除函數為void flash_erase_chip()。

② 扇區擦除函數為void flash_erase_sector(int s_first,int s_last),其中s_first和s_last為sector號,函數功能為擦除扇區s_first到扇區s_last的區域。

③ 編程操作的函數為unsigned short write_flash_sector(unsigned int offset),其中offset為扇區號,程序在Flash中燒寫的起始地址為Flash基地址+扇區號,本設計中的Flash基地址定義為0x 0100 0000。

僅介紹燒寫Flash存儲器的一個單元作為參考:

unsigned short write_flash (unsigned short length,unsigned int addr,unsigned short* pdata){

unsigned int i;

for(i=0;i<=length;i++){//length為映像大小

writeFlash_16(FLASH_BaseAddr+0xaaa,0x00aa);

//解鎖周期

writeFlash_16(FLASH_BaseAddr+0x555,0x0055);

writeFlash_16(FLASH_BaseAddr+0xaaa,0x00A0);

//建立周期

writeFlash_16(FLASH_BaseAddr+addr+i*2),*(pdata+i);

//編程命令

check_toggling (FLASH_BaseAddr+addr+i*2);

//檢測操作完成函數

}

}

應在每個單元編程和擦除命令發出后進行檢測,以保證前一個單元編程或擦除結束后再進行下一個存儲單元的編程或擦除,可以采用第2.3節中介紹的檢測機制,也可以采用延時等待的方法實現,但是在編程和擦除過程中,延時的方法占用時間較長,燒寫也不穩定,所以本設計采用了檢測跳變位DQ6,提高了Flash的編程速度。函數實現為check_toggling(unsigned int dst),其中dst為要檢測的地址,通過檢測該地址數據的第6位來確定操作是否完成,并且增加了對超時標志位DQ5的判斷,提高了Flash操作的正確率,具體流程見圖2。

3 軟件設計

軟件設計主要包括引導程序、Flash在線燒寫和映像文件3個部分。Flash在線編程軟件包括主機接口燒寫和串口燒寫兩大部分,該軟件開發完成后,將其各自的映像文件和其他必要的映像文件分別燒寫到Flash的不同扇區Sector(對于映像文件,開發人員可根據自己的需要給實際需要的映像分配扇區),燒寫到各扇區的用戶程序互不影響,燒寫成功后,用戶可自行選擇啟動扇區,此功能由引導程序來實現。以下主要介紹引導程序和Flash在線燒寫部分。

3.1 引導程序

引導程序完善了ARM系統正常工作所需要的簡單初始化,它涉及到用戶程序的正確定位和復位后的啟動過程,是整個設計的重要組成部分[2]。該引導程序是用匯編語言完成的,支持用戶自行選擇啟動Sector,即可根據用戶的外部命令選擇運行合適的用戶程序。具體實現如下:

(1) 上電復位查詢

上電復位后,首先進入復位異常中斷,禁止所有中斷,然后查詢通用I/O端口(GPIO)的狀態和啟動標志來確定從哪個地址啟動。GPIO狀態是從GPIO輸入寄存器讀取數值,地址定義為0xEF60 0708。

(2) 定位啟動實現

本設計設定了DPRAM、Flash和Demo三種啟動參數配置方式。這是通過定義啟動標志的地址和啟動標志來實現的,根據上層用戶的需求(VC6.0實現)完成從DPRAM/Flash配置啟動參數,從而運行合適的用戶程序。具體程序流程如圖3所示。

圖3 引導程序的啟動流程

3.2 Flash在線燒寫

為了方便用戶,本實例提供了兩種Flash在線燒寫方法:第一種為主機接口燒寫,通過主機接口完成程序燒寫;第二種為串口燒寫,該方法是針對可脫離仿真器燒寫的問題提出的。

3.2.1 主機接口燒寫

該軟件的底層是在ADSv1.2環境下完成的,主要是Flash的編程和擦除程序,驅動層是在VC6.0環境下完成的。通過Flash燒寫命令字和燒寫響應字來實現它們之間的通信,從而完成主機接口燒寫。使用定義的命令字來完成該部分,命令字為1時,執行整片擦除;命令字為2時,執行扇區擦除;命令字為3時,執行Flash編程操作。底層從燒寫命令字中讀取驅動層下發的命令后,根據命令執行相應的操作,操作完成后把當前命令寫回到響應字。驅動層收到正確的響應字后,表示當前用戶執行的動作完成。底層和驅動層之間的關系如圖4所示。

圖4 底層與驅動層的實現

3.2.2 串口燒寫

傳統上都是使用仿真器燒寫映像文件,這種方法必須在ADS環境下通過JTAG接口實現,雖然這種方法方便調試,但是當程序需要更新或升級時,以及在后期維護過程中,尤其是用戶需要重新更新映像文件時,此方法就不太方便。因此針對這一點開發了串口燒寫技術,即通過串口傳輸映像文件和SoC內運行的Flash燒寫程序,將映像文件固化到指定扇區。它采用了“程序”燒寫“程序”的方法,前一個“程序”為串口燒寫程序[6],包括文件接收和燒寫的具體實施,開發完成后需要將其固化到Flash中。

主機端串口工具使用DNW,該工具具有發送、接收、顯示等功能。使用DNW傳送文件后,會在文件開頭生成32位的文件長度,并且還會在文件末尾自動生成一個16位校驗和。具體格式如下:

32位總長度實際數據16位校驗和

串口通信方式有查詢方式和中斷方式,為了文件接收的完整性,底層采用串口的中斷方式接收文件,串口的接收模塊包括接收緩沖寄存器和移位寄存器。接收的數據進入移位寄存器后經移位處理并行傳入緩沖寄存器,當串口的接收緩沖寄存器中有數據時,進入中斷,在中斷中接收并處理4個字節的數據后退出中斷,這樣依次接收數據,直至整個文件接收成功。在接收數據的同時,要計算出整個文件的校驗和,最后與收到的校驗和做比較,來確保傳送文件的正確性,之后完成映像文件的燒寫。操作成功與否都可在DNW上顯示,方便用戶實時了解操作過程及結果。

該軟件開發完成后,需要使用仿真器將引導程序、Flash在線編程軟件固化到Flash的指定扇區,用戶就可以使用此Flash在線燒寫來滿足自己的需求。同時通過對Flash存儲空間的劃分,該軟件可對不同程序進行在線更新,并且不會影響其他用戶程序。

結 語

本文討論的主機接口燒寫和串口燒寫技術在實際工

程中已經運用。雖然介紹的編程及擦除程序是針對 Am29LV320D Flash編寫的,但是對于其他型號的Flash芯片,燒寫方法與此類似。該燒寫軟件可脫離仿真器固化映像文件,適用于后期維護階段,并且在串口燒寫技術中,增加了校驗和來提高文件傳輸的正確率,降低Flash編程的錯誤率,具有較高的實用價值。另外,本文使用ARM匯編語言編寫了引導程序,用戶依靠此引導程序可自行選擇啟動扇區,實現了動態配置啟動參數的功能,從而啟動預置在MBI模塊內的多個用戶程序。當更新某一扇區的用戶程序時,也不影響其他空間的程序,在實際應用中大大方便了用戶。所需程序開發完成后,只需使用仿真器將引導程序、Flash在線編程軟件(主機接口燒寫和串口燒寫)以及實際應用的映像文件固化到Flash的相應扇區,用戶就可以很容易地更新映像文件,還可根據需要選擇啟動扇區。本設計加載后運行可靠,在實際工作中取得了良好的效果,并且整個設計采用ARM匯編語言和C語言開發,方便移植。

[1] 殷樹明,王宜懷.嵌入式系統中多用戶程序在線編程技術[J].計算機工程,2009,35(5):37-39,43.

[2] 孫昊,曹玉強,杜秀芳.ARM處理器啟動代碼的分析和編程[J].工業控制計算機,2005(11):54-55.

Research on Programming Technology of Flash Based on PC-MBI Module

Gao Huihui

(Patent Examination Cooperation Jiangsu Center of the Patent Office,SIPO,Suzhou 215163,China)

It is difficult to maintain and upgrade the software of the embedded system if programming of Flash by JTAG.Taking PC-MBI model as an example,a new programming software for Flash memory through the host interface and serial port is proposed in this paper.Firstly,Am29LV320D Flash programming code is optimized,which improves the programming speed and accuracy.A booting program is designed,which helps the users can set the start-up sector,and it will not affect the user programs in another sector when updating program in a certain sector.The actual application results show that the software runs stably and has good maintainability.

Am29LV320D;Flash;on-line programming;booting program

TP311

A

士然

2015-03-11)

猜你喜歡
程序用戶
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 午夜综合网| 国产精品欧美激情| 波多野结衣一区二区三区AV| 狠狠色噜噜狠狠狠狠色综合久 | 久久香蕉国产线| 日韩黄色精品| 天天综合网亚洲网站| 91啦中文字幕| 色亚洲成人| 国产区精品高清在线观看| 国产在线观看第二页| 欧美在线中文字幕| 97在线碰| 亚洲an第二区国产精品| 国产精品人成在线播放| 国产精品伦视频观看免费| 成人午夜久久| 色天天综合| 日韩国产综合精选| 在线综合亚洲欧美网站| 国产精品亚洲五月天高清| 试看120秒男女啪啪免费| 国产成人综合亚洲欧洲色就色| 亚洲欧洲天堂色AV| 国产精品综合色区在线观看| 亚洲色欲色欲www网| 国产成人无码播放| 伦精品一区二区三区视频| 国产美女在线免费观看| www.91在线播放| 99资源在线| 中文字幕在线一区二区在线| 91原创视频在线| 五月天丁香婷婷综合久久| 最新国产网站| 97视频精品全国免费观看| 自拍偷拍欧美| 亚洲综合片| 欧美高清视频一区二区三区| 夜色爽爽影院18禁妓女影院| 高清免费毛片| 亚洲人免费视频| 色男人的天堂久久综合| 亚洲黄网视频| AV老司机AV天堂| 97精品伊人久久大香线蕉| 91小视频在线播放| 欧美国产精品不卡在线观看| 丁香六月激情综合| 免费无码AV片在线观看中文| 国产av色站网站| 精品中文字幕一区在线| 视频一区视频二区日韩专区| 无码中字出轨中文人妻中文中| 高清码无在线看| 亚洲一区二区约美女探花| 久久黄色免费电影| 美女一级免费毛片| 免费全部高H视频无码无遮掩| 欧美精品成人一区二区在线观看| 97视频在线精品国自产拍| 欧美激情成人网| 国产视频a| 91青青草视频| 五月天综合网亚洲综合天堂网| 国产精品亚洲αv天堂无码| 国产麻豆永久视频| 亚洲欧洲天堂色AV| 特级aaaaaaaaa毛片免费视频| 亚洲天堂在线免费| 狠狠干欧美| 伊人久久青草青青综合| 国产成人艳妇AA视频在线| 日韩精品欧美国产在线| 找国产毛片看| 国产精品自在拍首页视频8 | 国产成人艳妇AA视频在线| 久久精品国产国语对白| 国产91av在线| 精品久久国产综合精麻豆| 波多野结衣一区二区三区AV| 欧美v在线|