<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 外掛Flash的引導裝載設計

外掛Flash的引導裝載設計

作者: 時(shí)間:2006-10-23 來(lái)源:網(wǎng)絡(luò ) 收藏
1 Bootloader分析

TI公司的DSP芯片出廠(chǎng)時(shí),在片內ROM中固化有程序Bootloader,其主要功能就是將外部的程序裝載到片內RAM中運行,以提高系統的運行速度。

TMS320VC5409是TI公司的一款定點(diǎn)DSP芯片,其指令周期可達10ns,片內有32K16位的RAM,性?xún)r(jià)比極高,被廣泛應用在嵌入式系統、數據采集系統中。TMS320VC5409的Bootloacler程序位于片內ROM的0F800H~0FBFFH空間。系統上電時(shí),DSP將檢查外部引腳MP/MC的狀態(tài),如果該引腳為高電平,則DSP按微處理器模式啟動(dòng);如果該引腳為低電平,則DSP按微計算機模式啟動(dòng)。此時(shí),系統從0FF80H地址處開(kāi)始執行程序,0FF80H是Bootloader的中斷矢量。因此,如果系統上電時(shí)MP/MC的狀態(tài)為低電平,DSP將從FF80H處跳轉到F800H開(kāi)始執行TI的Bootloader自動(dòng)裝載程序。

進(jìn)入Bootloader程序后,首先檢查DSP引腳INT2的狀態(tài),如果為低電平,則進(jìn)入HPI模式,如果INT2為高電平則接下來(lái)檢查INT3引腳。如果INT3引腳為低電平,則進(jìn)入串行EEPROM模式,如果INT3為高電平則進(jìn)入并行引導裝載模式。當并行引導裝載模式失敗后,系統會(huì )自動(dòng)進(jìn)入串行口引導裝載模式.串行口引導裝載失敗后,系統又將進(jìn)入I/O口引導裝載模式。

當進(jìn)入并行引導裝載模式后,DSl 首先讀取地址為0FFFFH的I/O空間單元,并將該單元的值作為引導表的首地址.在數據地址空間中讀取引導表的第一個(gè)字,如果該字的值為10AAH,則進(jìn)入16位引導模式,如果低字節為08H,則再進(jìn)一步讀取下一個(gè)值,如果該值的低字節為AAH,則進(jìn)人8位引導模式。如果從I/o地址空間中讀取的引導表首地址所對應的引導表中得不到正確的引導信息,那么DSP將會(huì )從數據空間的0FFFFH地址再去讀一個(gè)字作為引導表首地址,進(jìn)而再從引導表首地址讀取一個(gè)字。如果該字為lOAAH,則立即進(jìn)入l6位引導模式,否則,將按8位方式處理:從0FFFFH讀取一字節作為引導表首地址的低字節,從0FFFEH讀取一字節作為引導首地址的高字節,再從引導表首地址讀取一個(gè)值,如果低字節為08H,則再讀引導表的下一個(gè)值,如果為AAH,則說(shuō)明外部存儲器是8位寬度,進(jìn)入8位引導裝載模式;如果以上步驟不能獲取正確的引導信息,那么DSP將進(jìn)人串行口引導裝載模式。

如果并行引導裝載成功,DSP將從裝載后新的程序開(kāi)始地址執行程序。詳細的并行引導流程圖如圖1所示。

流程圖


2 硬件設計

在本系統中,FLASH選用的是Atmel公司的AT29LVl024,AT29LVl024容量為64K16位,可以滿(mǎn)足一般的應用要求,并且其工作電壓為3V~3.6V,可以直接與TMS320VC5409接口而不必再使用電壓接口芯片進(jìn)行轉接,使硬件電路更為簡(jiǎn)單。

從TMS320VC5409的存儲器空間映射得知,在MP/M C=0 時(shí),外部存儲器空間映射的地址范圍為8000H-FFFFH共32K,因此中的程序部分必須位于8000H~FFFFH的地址范圍,才能成功引導。筆者的程序量小于32K16位,因此可以將的地址線(xiàn)A0-A15直接與DSP的地址線(xiàn)AO~Al5相連,然后將程序燒錄到的32K之后的位置,這樣程序剛好位于DSP的8000H~FFFFH范圍。如果程序量大于32K字,則可將Flash的前32K地址編碼在DSP的8000H~FFFFH范圍.采用分頁(yè)的方式,逐步裝載需要運行的程序。 本文中,采用從DATA空間引導,具體的電路連接如圖2所示。

dsp與flash接口電路


Flash的地址線(xiàn)AO-A15直接與DSP的低16根地址線(xiàn)A0-A15相連。

Flash的16位數

據線(xiàn)DO-D15直接接DSP的16位數據總線(xiàn)D0-D15。

FLASH的寫(xiě)信號WE直接接高電平(因為對Flash的編程采用編程器燒錄)。

Flash的片選信號CE直接接低電平或者接DSP的DS引腳。 Flash的讀信號OE接DSP的存儲器讀信號MSTRB。

DSP的MP/MC引腳接低電平。

DSP的INTl-INT3引腳通過(guò)上拉電阻接高電平。

3 代碼設計和數據轉換

硬件設計完成后,可以編寫(xiě)一段代碼進(jìn)行測試。

在TI的DSP開(kāi)發(fā)環(huán)境CCS中建立一個(gè)工程項目test pjt,包括三個(gè)文件:test_main.c、test_vector.asm和load.cmd。

需要說(shuō)明的是,雖然DSP和Flash都是16位的,但是一般的編程器都是按8位從.hex文件中讀取數據.每讀一個(gè)字節,地址就會(huì )增加1,因此連接命令文件中必須將memwidth和romwidth的值設置為8,否則編程器讀取hex文件時(shí)會(huì )出現錯誤,這通常是導致引導過(guò)程失敗的主要原因。 連接命令編寫(xiě)完畢后,將test.out文件、連接命令文件load.cmd以及hex500.exe文件拷貝到同一目錄下,在Windows系統命令提示下進(jìn)入該目錄,執行命令行:

hex500 I0ad.cmd

即可生成test.hex文件,同時(shí)還生成mxp文件test.mxp,供查看詳情。

test.hex文件生成后,運行編程器燒錄軟件(本設計用的是西爾特的suPERPRO 6 8 0),選擇器件為 AT29LVl024。打開(kāi)test.hex文件,此時(shí)會(huì )發(fā)現AT29LVl024的地址范圍是0 0 0 0 0H-1FFFFH共128K,而不是0000H-FFFFH,這就是為什么需要將存儲器數據寬度設定為8以及將程序燒錄起始地址bootorg設置為0xl8000的原因。0x18000除以2為0x0C000,也即,燃錄地址Oxl8OOO在系統中的地址為OxOC000,位于8000H~FFFFH的外部存儲器映射范圍內。

另外,還發(fā)現編程器軟件打開(kāi)的test.hex文件中,最后兩字節并不是引導表的首地址(這大概是HEX500有什么bug的緣故吧),因此需將1FFFEH的內容改為COH,將1FFFFH的內容改為00H,C000H是本例中引導表在實(shí)際DSP系統中的首地址。將18000H的內容從08H改為10H,此處為08H是因為連接命令文件中的數據寬度設置為8位,而系統中DSP和Flash的實(shí)際數據寬度都為16位,引導過(guò)程應該采用16位引導裝載。因此需要將08H改為10H。修改完成后,還需將整個(gè)文件的高低字節進(jìn)行交換,因為編程器打開(kāi)的.hex文件高字節在前,低字節在后,而16位Flash的編程是低字節在前高字節在后。經(jīng)過(guò)如此修改和調整后,即可對Flash器件進(jìn)行編程了。

將編程后的Flash裝到系統中,用示波器查看DSP的引腳XF,如果有方波出現,則說(shuō)明引導裝載已經(jīng)成功,程序代碼已被調入到內部RAM中運行。

結語(yǔ)

本文所敘述的引導方法在四通道數據采集系統中得到了有效的驗證,并且整個(gè)過(guò)程操作起來(lái)非常方便快捷。



關(guān)鍵詞: Flash 引導裝載

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>