亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于PCMBI模塊的Flash編程技術(shù)研究

        2015-01-13 01:33:07高輝輝
        關(guān)鍵詞:用戶程序扇區(qū)存儲器

        高輝輝

        (國家知識產(chǎn)權(quán)局 專利局專利審查協(xié)作江蘇中心 光電部,蘇州 215163)

        高輝輝

        (國家知識產(chǎn)權(quán)局 專利局專利審查協(xié)作江蘇中心 光電部,蘇州 215163)

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

        Am29LV320D;Flash;在線編程;引導(dǎo)程序

        引 言

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

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

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

        1553B總線接口SoC應(yīng)用中可以通過外部總線接口外接2M×16位的Flash存儲器,MBI模塊的傳輸層軟件、引導(dǎo)軟件、加載軟件和測試軟件都存儲在Flash存儲器中,通過固化程序?qū)⑦@些軟件固化到Flash中,系統(tǒng)上電后,通過搬家程序?qū)y試軟件或傳輸層軟件搬到SRAM中運(yùn)行。

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

        2 Flash基本操作命令以及程序設(shè)計

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

        圖1 擦除操作流程

        2.1 Flash存儲器擦除命令

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

        2.2 Flash存儲器編程命令

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

        2.3 Flash存儲器操作結(jié)束的檢測機(jī)制

        常用的Flash存儲器操作結(jié)束的檢測方法有3種:第1種是判斷引腳RY/BY#的狀態(tài),在編程或擦除操作過程中RY/BY#引腳一直為低電平,操作完成后變?yōu)楦唠娖?。?種是檢測跳變位DQ6,在編程或擦除時對任何地址進(jìn)行連續(xù)讀,均引起DQ6連續(xù)跳變,直至操作結(jié)束才停止跳變。第3種方法是使用數(shù)據(jù)線的DQ7和DQ5位,DQ7位在編程或擦除過程中輸出的數(shù)是寫入該位數(shù)據(jù)的反碼,當(dāng)操作完成時輸出才變?yōu)閷懭朐撐坏臄?shù)據(jù),但還要讀取DQ5位的狀態(tài),為“1”時表示操作超時,此時應(yīng)再讀一次DQ7位的狀態(tài),若DQ7位輸出仍不是寫入的數(shù)據(jù),則操作失敗,復(fù)位Flash存儲器。本設(shè)計使用了第2種方法檢測跳變位DQ6,具體算法見圖2。

        圖2 檢測跳變位算法

        2.4 Flash操作代碼實(shí)現(xiàn)

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

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

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

        ③ 編程操作的函數(shù)為unsigned short write_flash_sector(unsigned int offset),其中offset為扇區(qū)號,程序在Flash中燒寫的起始地址為Flash基地址+扇區(qū)號,本設(shè)計中的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);

        //檢測操作完成函數(shù)

        }

        }

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

        3 軟件設(shè)計

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

        3.1 引導(dǎo)程序

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

        (1) 上電復(fù)位查詢

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

        (2) 定位啟動實(shí)現(xiàn)

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

        圖3 引導(dǎo)程序的啟動流程

        3.2 Flash在線燒寫

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

        3.2.1 主機(jī)接口燒寫

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

        圖4 底層與驅(qū)動層的實(shí)現(xiàn)

        3.2.2 串口燒寫

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

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

        32位總長度實(shí)際數(shù)據(jù)16位校驗(yàn)和

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

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

        結(jié) 語

        本文討論的主機(jī)接口燒寫和串口燒寫技術(shù)在實(shí)際工

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

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

        [2] 孫昊,曹玉強(qiáng),杜秀芳.ARM處理器啟動代碼的分析和編程[J].工業(yè)控制計算機(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)

        猜你喜歡
        用戶程序扇區(qū)存儲器
        分階段調(diào)整增加扇區(qū)通行能力策略
        南北橋(2022年2期)2022-05-31 04:28:07
        靜態(tài)隨機(jī)存儲器在軌自檢算法
        變速箱控制系統(tǒng)Bootloader設(shè)計與實(shí)現(xiàn)
        嵌入式設(shè)備遠(yuǎn)程升級方案設(shè)計
        U盤故障排除經(jīng)驗(yàn)談
        基于貝葉斯估計的短時空域扇區(qū)交通流量預(yù)測
        重建分區(qū)表與FAT32_DBR研究與實(shí)現(xiàn)
        存儲器——安格爾(墨西哥)▲
        C8051F410單片機(jī)BootLoader的實(shí)現(xiàn)
        基于Nand Flash的高速存儲器結(jié)構(gòu)設(shè)計
        醉酒后少妇被疯狂内射视频 | 色偷偷av一区二区三区人妖| 亚洲av高清在线一区二区三区| 免费人成黄页网站在线一区二区| 中文字幕一区二区中文| 艳z门照片无码av| 日本爽快片18禁免费看| 97在线观看| 久久久国产精品樱花网站| 亚洲精品白浆高清久久| 久久精品av在线视频| 欧美最猛性xxxx| 国产精品久久久久久久妇| 人妻少妇久久中文字幕一区二区| 黑人巨大videos极度另类| 亚洲第一无码精品久久| 日本一区二区三区在线| 毛片精品一区二区二区三区| 在线观看午夜视频一区二区| 窝窝午夜看片| 天堂网www在线资源| 亚洲免费无毛av一区二区三区| 精品精品国产一区二区性色av| 亚洲 小说区 图片区 都市| 国产在线无码精品无码| 凹凸在线无码免费视频| 国内揄拍国内精品| 亚洲av成人一区二区三区不卡| 亚洲精品第四页中文字幕| 观看在线人视频| 日本熟妇人妻xxxxx视频| 2021亚洲色中文字幕| 日韩精品人妻一区二区三区蜜桃臀| 色呦呦九九七七国产精品| 风韵多水的老熟妇| 超碰Av一区=区三区| 免费看男女啪啪的视频网站| 日本人视频国产一区二区三区| 精品无码国产自产拍在线观看| 美女自卫慰黄网站| 婷婷精品国产亚洲av|