




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、28335使用串口燒寫程序串口燒寫是一種相對(duì)較方便的燒寫方式,相對(duì)于仿真器或是CAN燒寫,相對(duì)于仿真器或是USB轉(zhuǎn)CAN的設(shè)備,串口是一種非常廉價(jià)的燒寫方式,而且也不需要安裝 專業(yè)的集成開發(fā)環(huán)境 CCS等,但是不能實(shí)現(xiàn)在線調(diào)試,因此也只適用于程序基本不用 再調(diào)整或大批量的場(chǎng)合。F28335的存儲(chǔ)器映射圖如下:二 OkIMScMM 構(gòu)MM WMMQ 0D«OkM OEM gM MgScM副時(shí)< OxM MDOS時(shí) 70DCOkHCxM MOO。工期Mg2。BODO仁皿04M% M9 RJMQkD1 OOHM34 CM 40(啟3 FFF8CHMM施MM » »
2、 WM»k 34 G4MQti » WOO. EFaflg9*3FW»MJF MM< 加3F Bfl8QhJF 6te3F EOQax«>3F FFC0O- SpM«Pwq 3i|MCVOmiU flhpsuProa 9pK4MG VfrflcM R信3. If餐MI (33 n 32) ifMAP =打MO SARAN fIK .1.Ml SARAN «1K i 附Frririi ,PIE Victor - HW 住眸川胤 4En«&ifld rf VWXP» 1, EHPtE-11FIplx
3、ii Frwiw 0篁一嫌A:.f FdKiNTF Zn-ia 6x 中口已£4.|9PrMochkid. DMA to-cnuMi)INbrlptwral Frlftw 3PrEH忤曰 iWAAcc»Ri6l«)Fr«nw 1 g kMIKF*rlphar«l Frwrw 2(Pirgbetlrd)除己Rj«SE<Y-BdLA 8 ARAM (4K s 1&. Stciift Zma DunJ叫L1 SAflAJM |4Kx It Sacuhi Z>nv Duai> MLappadkl_2 S ARAJrf
4、 (4Kxlfi, Sacuro-Tcina, DuaJ htappndjUS ARAM (4Ka1fi. SftturtZm, Dual MAp*d>L* 馳禽岫i 網(wǎng)"1。MAAc«witiia|LS SAftAM (4MM1I. D«IAAwibl*JL百 SARAH («S16, D«flAA&C494.ibleL7 ,向*MH (4M4I1B. gMAAEmiblBIR-flwr wdXIWTF 層010 6 ” Ml 1 E. XZCSeHDNrA AceMBiM)XIWTFZOfle 7 - M - 1n. xzrs
5、?. PM1 J,兒科門先小幣351H q;2541M 工 16, S«uf Ze*Uft bll PmifwwAHOiTYSaRM-HFVBdADC Gabtwation DataR-r*dLf&ar OTP | IK si IE ekmit« ZarDiRes*fW*dL& QRAM (4K n 1«. SKur* Zon* Du«l M4ppvLU SARAM (4Kx 11. S«:ura Zotih Dual M9appad)L2 g圖RA4 H帳,15 Xue石的&0小HMppe由L3 8典RAH (
6、1;K 11. Skmfb Zon» 口nA £apg#BcM 丸白H WK 址 1®-RROM VHriw - ROM (3? 1 13) I Eiwiblit HVMAP * 1, EUPH: 0Onhlp 叫nayExi耐力制 Memory XIMTFtaO9 4KHU.gil!釉gMQiffiOCttDa 3D OKHQGhtk wi« of vtcHor 口 vtctor PIE vkIw. BROM vkIw- slwi*d X oftaMd bm*BOOTROM是一塊8K X 16的只讀存儲(chǔ)器,位于地址空間 0x3FE0000x3FFFFF
7、 , 片內(nèi)BOOTROM在出廠時(shí)固化了引導(dǎo)加載程序以及定點(diǎn)和浮點(diǎn)數(shù)據(jù)表,片上 BOOTROM的存儲(chǔ)映射如下圖所示:figure 1-1. Memory Map of On-Chip ROM3FE0003FEBDC3FF27C3F F34c3FF9EE3F FFB93FFFC03F FFFFDataspace I Program spaceIQ math tablesFPU math tablasReservedBool loader functionsReservedROM versionROM checksumReset vectorCPU vector tAble1 .內(nèi)BOOT ROM數(shù)
8、學(xué)表:在BOOT ROM中保留了 4K X 16位空間,用以存放浮點(diǎn)和IQ數(shù)據(jù)公式表,這些數(shù)據(jù)公式表有助于改善性能和節(jié)省 SARAM空間。2 .CPU向量表:CPU向量表位于ROM存儲(chǔ)器0X3FE0000X3FFFFF段內(nèi),如下圖所示。復(fù)位后,當(dāng)VMAP=1ENPIE=0 (PIE向量表禁止)時(shí),該向量表激活。Table 1*1. Vector LocationsVectorI ocatiori inBoot ROUContents(1曰1 points Io)VectorLocation inBoot ROMContents(i.E.a pcNints Io!RESET0x3F FFCOIF
9、BodIRTOSINT(h(3F FFEO燈溝口 0060INTI0X3FFFC2OmOO第總Rq 叼 2QdS3F FFE21M|Q 0062INT2OiiFFFd0x00 洶4NM由* FF日OxCO Q®INT3(h(3F FFC6(M30 OMGILLEGAL0s3F FFE6ITRAPIarIN14OxJFFFCB0x00 IXMH115t 樣 1的非FFEBUxW 0D6HNTS0*3F FFCA0x00 0MAUS£R2加3F FFEAQM 0MAINTfi0i3F FFCC0x00 004CUSER3FFEC0x00 0D6CINT70X3FFFCE000
10、0MEUSER4伽 3F FFFE000 0D8Eisia0x3F FFDO0x00 0050USER5Ox3F FFFOmq oo roINT9FFD20m00 0052use骸的 3P FFF2。幽口 mINT1D0X3FFFD4moo DO 54USER7FFF40x00 0074iiNTin0m3F FFOb0x00 0056USERSFFI 60»00 00767T120a3FFFDS0x00 00 5AU5ER&thSF FFF8OxCO 00TSIMT13ChWF ffdaChcOO 005ALJSFR1O(ln3F FFFAnriin qlaINT140x3F
11、 FFDC0*00' oosc>LJSfR11伽 3F FFFC-0m00 0D7CDLOGINTOiSFFFDE0x00 00 bEVS£R120x3F FFFEq 口 oore在內(nèi)部BOOT ROM引導(dǎo)區(qū)中能夠調(diào)用的唯一向量就是位于0X3FFFC0的復(fù)位向量。復(fù)位向量在出廠時(shí)被燒錄為直接指向存儲(chǔ)在BOOT ROM空間中的InitBoot函數(shù),該函數(shù)用于開啟引導(dǎo)過程。然后通過通用I/O引腳上的檢驗(yàn)判斷,決定具體引導(dǎo)模式。引導(dǎo)模式與控制引腳之間的關(guān)系如下圖所示:Table 3-6. Boat Mode SelectionMODEGPIOE7XA15GPIDSfi/XAM
12、GPIO85/XA13GPI084/XA12MODE,訃F1111Jump mE1110SCbA boolD11Q1寫典叫toolC11Q0IZCAtwl口1011cCAM A i3»lA1aV91oD1jLmp is XIN'F rib&1a00Jump to XINTF i327Qi11JimptaOTP60110PairaitelGPIO I/O teat501c1ParallelXIKTF Ind4Q1Q0Jbhlp 帕 SA RA IM30011Bancn to clwk boot medo2Qg10日厘必gFW&h即舊ADC十1七詞kn10001日
13、他向 k> SATIAM 皿 p AjDC 上幽hralm0QQQ0H 41 Ui lu 30. Mir ADC ulbivlAjii1 All tour GPfO pint Fiavt an lirtarrul pulltp.Bootloader 特性:Bootloader是位于片上引導(dǎo) ROM中的在復(fù)位后執(zhí)行的程序,用于在上電復(fù)位 后,將程序代碼從外部源轉(zhuǎn)移到內(nèi)部存儲(chǔ)器。這允許代碼暫時(shí)存儲(chǔ)在掉電不丟失數(shù)據(jù) 的外部存儲(chǔ)器內(nèi),然后被轉(zhuǎn)移到高速存儲(chǔ)器中執(zhí)行。引導(dǎo)ROM中的復(fù)位向量將程序執(zhí)行重定向至InitBoot函數(shù)。執(zhí)行器件初始化之后,bootloader將檢查GPIO引腳的狀態(tài)以確定您
14、需要執(zhí)行哪種引導(dǎo)模式。這些選項(xiàng)包括:跳轉(zhuǎn)至閃存、跳轉(zhuǎn)至 SARAM、跳轉(zhuǎn)至OTP或調(diào)用其中一個(gè)片上引導(dǎo)加載例程完成選擇進(jìn)程后,如果已完成所需的引導(dǎo)加載,處理器將在所選引導(dǎo)模式確定 的應(yīng)用起點(diǎn)繼續(xù)執(zhí)行。如果調(diào)用了bootloader ,則由外設(shè)加載的輸入流確定此應(yīng)用起點(diǎn)地址。然而,如果選擇直接引導(dǎo)至閃存、OTP或SARAM,這些存儲(chǔ)器塊中每一個(gè)存儲(chǔ)器塊的應(yīng)用起點(diǎn)均已預(yù)定義。Figure 2-1. Bootloader Flow Diagram 心 /Reset、(power-on reset or warm reset)Silicon sets the following;PIE disable
15、d (ENPIE-0)VMAP=1OBJMODE=0AMODE=0MOM1MAP=1Boot ROMReset vector fetched from boot ROMaddress 0x3F FFCOJump to InitBoot function to startboot processSel&ctBootMode lunctionPLLSTSfDIVSEL = 2Boot determined by the state of I/O pinsCall ADC_cal routine inTl reserved memoryBegin execution at Entry Poi
16、nt as determined by selected boot mode上圖顯示了引導(dǎo)進(jìn)程的概述。以下引導(dǎo)模式不掉用bootloader ,他們會(huì)跳轉(zhuǎn)至存儲(chǔ)器中的預(yù)定義位置:1 .跳轉(zhuǎn)至閃存中的分支指令:在此模式下,引導(dǎo) ROM軟件將針對(duì)28x操作配置器件,然后直接分支至閃存的 0X33FFF6位置。此位置剛好是 128位代碼安全模塊(CSM)密碼位置之前。您需要預(yù) 先在0X33FFF6位置處編寫分支指令,以將代碼執(zhí)行重定向至定制的boot-loader或應(yīng)用代碼。在僅有RAM的器件上,“引導(dǎo)至閃存”將跳轉(zhuǎn)到保留存儲(chǔ)器,因此不應(yīng)當(dāng)使用此選項(xiàng)Figure N4 Jump4o-Flash Fl
17、ow DiagramSe ett Deol Mode Call ADC_cal Solod lump to' flash2 .跳轉(zhuǎn)至M0 SARAM在此模式下,BOOT ROM將針對(duì)28x操作配置器件,然后直接分支至 0x000000,即 M0 SARAM存儲(chǔ)器塊中的第一個(gè)地址。Figure 2-5. Flow Diagram of Jump to MO SARAM3 .跳轉(zhuǎn)至OTP存儲(chǔ)器在此模式下直接分支至0x380400,即OTP存儲(chǔ)器塊中的第一個(gè)地址RoegtFigure 2-6. Flow Diagram ol Jump-to-OTP MemoryTable 3-1. Addr
18、esaea of Flash S«etftrs in F29335/F2B235ADDRESS RANGEPROGRAM AND DATA SPACE0x30 0000 - 0x30 7FFFSector H (32Kx EOQQ - Qk3Q FFFFG Q?叫 K 1 切0m31 0000 - 0x31 TFFFSector F(32K x 16)0i3l 8000 0j31 FFFFSector E (32K x 16)0x32 0000 - 0132 7FFFSecior D 口州 k農(nóng)32部。-0x32 FFFFSector C (32K i0x33 0000 0i33 7
19、FFFSectorB (3* x IS)0k33 BOOO 033 FF7F圖33 FFB0 - 0x33 FFF5(h羽 FFF6 - 0x33 FFF7。兇 FFFB Dj(33 FFTFA(32K x 1S)Pregfam io 0«0000 *hen u&ng th Cade Seajriiy ModuleL3 odl-td-F liih Ed try Rd 向 program branch insiruclion h臼白)Security Passwand (128-Bit (Dq Not Program to all xg以下引導(dǎo)模式將調(diào)用一個(gè)用于將數(shù)據(jù)流從外設(shè)加
20、載至存儲(chǔ)器的引導(dǎo)加載例程:SCI-A (注意此處的 SCI-A對(duì)應(yīng)的是 GPIO28和GPIO29)SPI-AI2C-AeCAN-AGPIO0-GPIO15并行引導(dǎo)如果使用 SCI 或者其他引導(dǎo)的話,首先需要將啟動(dòng)模式選擇相關(guān)的引腳配置成對(duì)應(yīng)的模式,然后器件退出復(fù)位狀態(tài)之后,首先從復(fù)位向量處開始運(yùn)行,即從0x3FFFC0 處,該地址存放著BOOT ROM 中的第一個(gè)匯編初始引導(dǎo)程序InitBoot 程序的入口地址,程序跳轉(zhuǎn)至0x3FFC00 執(zhí)行 InitBoot 程序。該程序主要初始化 F28335 器件工作的目標(biāo)模式。然后讀取安全保護(hù)模塊的密碼,如果CSM 密碼被擦除(全部等于OxFFFF
21、)則自動(dòng)解鎖,否則 CSM仍被鎖定。對(duì) CSM 密碼讀取完成后,初始化例程調(diào)用模式選擇功能函數(shù)( SelectBoot ), 該函數(shù)根據(jù)GPIO 的狀態(tài)確定處理器引導(dǎo)的方式。一旦完成SelectMode 將會(huì)把入口地址返回給初始化引導(dǎo)。然后初始化引導(dǎo)函數(shù)調(diào)用回復(fù)CPU 寄存器的退出例程( ExitBoot )并退出到由引導(dǎo)模式確定的程序入口地址。因此我們?cè)谑褂?SCI 升級(jí)程序時(shí)可以分兩個(gè)步驟,第一個(gè)步驟是我們需要一個(gè)Bootloader 程序,第二個(gè)就是我們要升級(jí)的程序, BootLoader 程序就是我們?cè)谶x擇引導(dǎo) SCI 模式之后, SelectBoot 之后通過串口加載的第一個(gè)程序,待
22、ExitBoot 之后會(huì)跳轉(zhuǎn)到我們這個(gè)bootloader 指定的地址開始執(zhí)行(即將控制權(quán)交給我們的這個(gè)BootLoader 程序),因此我們的 BootLoader 程序就肩負(fù)著串口接收我們的應(yīng)用程序并將應(yīng)用程序燒寫到 FLASH 的任務(wù)。第二個(gè)就是我們的應(yīng)用程序,這個(gè)跟平常的應(yīng)用程 序一樣,沒有任何區(qū)別。1. BootLoader 程序由上面的介紹明顯知道我們的Bootloader程序是運(yùn)行在 RAM里面的,所以使用CCS在編寫該程序的日t候使用的是RAM_Link的CMD,而且該程序除了串口的處理還有包括 FLASH 操作的 API 函數(shù),而這些函數(shù)必須要運(yùn)行在RAM 里面,而且在進(jìn)行F
23、LASH 操作的時(shí)候要將中斷全部都關(guān)掉, FLASH 的 API 有相關(guān)的例程是燒進(jìn)FLASH 的還要拷貝到RAM,我們這里正好還免去了拷貝的過程,因?yàn)槲覀冋麄€(gè)程序都是運(yùn)行在 RAM 中的。Bootloader 數(shù)據(jù)流的結(jié)構(gòu):Word23456789101112131415 nn*1Table 2-3, General Structure Of Source Program Data Stream In 16-Bit ModeContents10AA (KeyValue for memory uidth = 16bli力Register initilizaticxi value orfor f
24、ulurv useRegister in山Nation value of rvurvvd for fulurw useRegister initialization value or reserved for future useRegister mrtialization value or reserved for fulur® useRegister mitialization value oc rese<vod for future useRegister inrtialiration value or reserved for hjlure useRegister in
25、itialiMtion value or reson/od for future useRegister rrtiallzotion value or roson/od for Muro useEntry point PC|22:16)Entry point PC( 15:01Block sze (nurrber of words)。,the first block of data to toad. If the block size is 0. this indicates the end of th© source program Otherwise another secton
26、 folows.Destination addre« of first Node Add13116Destination address of first block Add(15:0First viord of tho first block in tho aourco be ng ondod L/ist word of the first block of the source be,ng o«dodBlock size & the 2nd block to loadDesiinatlon address of second block Addr3l:l6Des
27、tination address ot second block Addr(15:0First word of the second block in the source be ng loadedLast word of tho second block of tho source bong loadedBlock &ze of tho last blocfc to loadDestination address of last block Addrf3i: 161Destination address of last block Addr15 0First of tho last
28、Mock in the source be ng loadod X.Last word of tho tost Woc< of the source be ng loododBlock &ze of OOOOh indicates ond of the source programTablo 2-4. LSB/MSB Loading Soquanco in SBit Data StraamByteCorrEentsLSB fFirst Byte nf Z>MSB fSecond Byle of 2)12L5B: M KeyValue for menwry width - B
29、 b博MSB: Cfln tKFryVfiUie kr EEEnry winm - B 舊3qLSB: RocKiorimtiaiizaboc value or ruarvadMSB: Rogistor kiitaliQibn valuo or roEnnwl56LSB. R型愴理i出面心御叫/dlUE v lExiVEdMSB: RzgMw IrilliMz1dgnm rerwd7BLSB. Regisler inlializarlicin walu-e ar reservedMSB: Register inrliaiizalion salute or reserired1718LSB- R
30、egisler inatisiirzat rwi vslu-e or reservedMSB: Regssfter jnrti 用izbiIo門 alue or reserved1920LSB: Upper rigr1 of EE port PC|23:16;MSB: Uppor half nf ortry po nt PC|3i4 (AJmys 0x00;2122LSB. Loww hUf of EiiU> paint PCR.OMSB; Lowar half of Entry poi 府 PC(15 A2324LSB Block s 工2 in werdft al the firat
31、 Mm4c to bad H I he black fii£v it 0)Uiic indicatM 1h» and af the voum program. Qtrwrwi 即 的西片r block, toi tows. Far axrple. m block size d1 OjcDDOA would ind cate 10 制ords or 20 bytes 柏(he bkK.kMSG: blt>ck3iz»2526LSB: MSVJ designation address, first blocw Add”23二"6|MSB: VSvY d
32、eal ra: on accress. 1i聞 Dbck Addr31:242728LSB. LSW gunagr amirijse. fif$( uJock Aider7 0“SB; LSW dCSlinaitJOrt 緘由電漪 first OKKh Addr11& 5|20割LSB AfeI grd of Itio lirBt Uoc< bwng loadedMSB; FkEl vwrc) of th® 市E bkKk gi叫匕4d*dLSB: Last won* of ma firsl bkx* to loadMSB: Lwr word of the- lirst
33、 oloo m 3d41.ilsb: E3Idck aze Df tfie sacnind blockMSB: block size or the ace8d 口加水LSB. M£VJ dbEdnatlon addr 哥 M.wconc block Addr|23.16|MSB: MSWdestinatior adg曲 second block 凡時(shí)仰;MLSB. LS!A' desLnaor- aiddn secwid block Addr7.0MSB: LSW 殿tn說on addrfigG. second blodc Aditfl 5u8LSB1 Arsl grd nf
34、 the s2二口nd blnrk being oaclRdMSB: Firal word nF ths? spcdfkI Hnck being loaded1 SET Hsr word nf rh« Mnond 門力d<MSR: 1; it或1 worrl of ihp Rpcnnri blockilLSB Block tzo 卅 ttic met atycnMSB: Block azo of cho laci block1.LSB. MSW M g疝母山n Md隹酩 41asi blodi AddH±3J6MSB: NSW JeLnalun &dw居.bl
35、ock Ad Jr|31.241LSB: LSW destna:don acJdrBss, last Hxk Aridr7 0MSB: LSW d-estnaben address last 口1口dk Addr|15 BLSB- First word of the I fist Ncc* being loadedMSB: Frral word oftk 悟式 bloc being tosdediLSB: Lasi wend ofthg last BockMSB: Last wrj of thg las:,口。knn+1LSB OOhMSB; 0C*i -上di口thtf vn-d of th
36、s source上圖就是BootLoader數(shù)據(jù)流的結(jié)構(gòu),數(shù)據(jù)流的第一個(gè)16位字稱為鍵值,該鍵值用來指向Bootloader指示流入的數(shù)據(jù)流的寬度:8位或16位(在這里SCI就是8 位),對(duì)于8位數(shù)據(jù)流,鍵值為0X08AA,如果bootloader收到一個(gè)無效的鍵值,加 載則中止。則直接跳轉(zhuǎn)到 FLASH開始執(zhí)行。接下來的8個(gè)字(2-9)用于初始化寄存器直,如果 bootloader不使用這些值, 則將這些值留作將來使用。第10個(gè)和第11個(gè)字組成了 22位應(yīng)用起點(diǎn)地址,此地址用于在完成引導(dǎo)加載 后初始化PC,也就是我們程序的起點(diǎn)。第12個(gè)字表示傳輸?shù)牡谝粋€(gè)數(shù)據(jù)塊的大小。對(duì)于 8位和16位數(shù)據(jù)流
37、格式,該 數(shù)據(jù)塊的大小均定義為塊中的16位字個(gè)數(shù),例如,要從 8位數(shù)據(jù)流中傳輸一個(gè)包含20個(gè)8位數(shù)據(jù)值的數(shù)據(jù)塊,該塊大小將為0X000A,表示有10個(gè)16位字。第13和14個(gè)字表示程序的目的地址,后面跟的就是程序的字,直到遇到數(shù)據(jù)塊長(zhǎng)度為0的則傳輸結(jié)束。AR上圖為BOOTLoader傳輸流程,如果不相等會(huì)自動(dòng)退出引導(dǎo)程序,系統(tǒng)會(huì)從內(nèi) 部FLASH存儲(chǔ)器執(zhí)行程序。這里需要講一下,我們的 Bootloader數(shù)據(jù)流如何得到,我們正常的使用 CCS編 譯鏈接得到了 xx.out 文件,然后使用 hex2000.exe-boot-sci8 -map=xx.map-o xx.hex -ixx.out(詳
38、細(xì)解釋可參考 TMS320C28x-Assembly-Language-Tools-User's-Guide-v6.1.pdf),當(dāng)然你可以將這些命令參數(shù)寫成腳本xx.cmd ,然后直接執(zhí)行hex2000.exe xx.cmd即可。這就會(huì)生成Intel格式的hex文件,我們需 要自己又抬個(gè)hex文件解析,對(duì)于生成的Hex文件都是以冒號(hào)開始,后面一個(gè)字節(jié)是數(shù)據(jù)長(zhǎng)度,2-3字節(jié)是地址,第4字節(jié)是數(shù)據(jù)類型(00表示數(shù)據(jù)記錄,01表示文件結(jié) 束記錄,02表示擴(kuò)展段地址記錄,04表示擴(kuò)展線性地址記錄)首先需要一個(gè)將兩個(gè)字符轉(zhuǎn)換為一個(gè)字節(jié)量函數(shù):Void CharToByte(char *pCha
39、r,BYTE *pByte)char h,l;h=pChar0;l=pChar1;if(l>= ?0?&& l<= ?9?)l=l- ,0?;else if(l>= ?a?&& l<= ?f?)l=l- ,a?+0xa;else if(l>= ?A?&& l<= ?F?)l=l- ,A?+0xa;if(h>= ?0?&& h<= ?9?)h=h- ,0?;else if(h>= ?a?&& h<= ?f?)h=h- ,a?+0xa;else if(h>
40、;= ?A?&& h<= ?F?)h=h- ,A?+0xa;*pByte=(BYTE)h*16 + 1;解析的關(guān)鍵代碼:If(fopen_s(&myFile,filename,”r”) != 0)Printf( “打開文件 %s 失?。?” , filename);while(!feof(myFile)+len;fgetc(myFile);/ 將文件長(zhǎng)度計(jì)算出來用于申請(qǐng)存儲(chǔ)數(shù)據(jù)的緩沖區(qū)rewind(myFile);outBuf = (BYTE *)malloc(len/2);memset(outBuf,0xff,len/2);while(!feof(myFile)
41、if(fgetc(myFile) =,:?)/: 號(hào)表示一行的開始/ 一行的頭兩個(gè)字符為該行包含的數(shù)據(jù)長(zhǎng)度data0 = fgetc(myFile);data1 = fgetc(myFile);CharToByte ( data,&datalen ) ;/一行的第 3、 4 個(gè)字符為數(shù)據(jù)存儲(chǔ)起始地址的高位data0 = fgetc(myFile);data1 = fgetc(myFile);CharToByte ( data,&addresshigh ) ;/一行的 5、 6個(gè)字符為數(shù)據(jù)存儲(chǔ)起始地址的低位data0 = fgetc(myFile);data1 = fgetc(m
42、yFile);CharToByte ( data,&addresslow ) ;/一行的 7、 8個(gè)字符為數(shù)據(jù)類型data0 = fgetc(myFile);data1 = fgetc(myFile);CharToByte ( data,&dataType );if(dataType = 0x00)/ 表示普通數(shù)據(jù)for(i=0;i<datalen;i+)data0 = fgetc(myFile);data1 = fgetc(myFile);CharToByte ( data,&byteData );outBufadressHigh*256+adresslow+i
43、 = byteData;if(dataType = 0x01)printf( “文件結(jié)束記錄!”);if(dataType = 0x02)printf( “不支持?jǐn)U展段地址記錄! ”);return;if(dataType = 0x04)/ 本行包含擴(kuò)展線性地址記錄/ 表示的是 extended 地址高位和低位data0 = fgetc(myFile);data1 = fgetc(myFile);CharToByte ( data,&addresslinearhigh ) ;data0 = fgetc(myFile);data1 = fgetc(myFile);CharToByte (
44、 data,&addresslinearlow );fclose(myFile);這個(gè)只是對(duì) hex 文件進(jìn)行了解析,然后還需要通過串口將數(shù)據(jù)發(fā)送出去,在發(fā)送數(shù)據(jù)之前需要先發(fā)送" A字符給DSP,等待DSP回復(fù)“A”之后,表明DSP波特率 已經(jīng)鎖定,這時(shí)候可以將轉(zhuǎn)換的數(shù)據(jù)發(fā)送給DSP, DSP在接收的時(shí)候會(huì)將接收到的數(shù)據(jù)保持原樣返回給上位機(jī),反觀我們的核心板,我們的核心板上的 SCI 引出的不是GPIO28 和 GPIO29 ,再者就是控制發(fā)送的引腳在上電時(shí)的電平不對(duì)導(dǎo)致燒寫不成功。等這個(gè)程序傳輸完了之后,會(huì)跳轉(zhuǎn)到我們這個(gè)程序指定的入口地址開始執(zhí)行,此時(shí)可以進(jìn)行下一步的操作,我們需要將我們的應(yīng)用程序(即 xx.out 文件也轉(zhuǎn)換成xx.hex ),轉(zhuǎn)換的 cmd 命令如:hex2000.exe-romwidth16-memwidth 16 -i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《深度學(xué)習(xí)項(xiàng)目案例開發(fā)》課件-任務(wù)三 使用數(shù)據(jù)增強(qiáng)抑制卷積神經(jīng)網(wǎng)絡(luò)過擬合
- 浙江省臺(tái)州市溫嶺中學(xué)2024-2025學(xué)年高三下學(xué)期3月考試數(shù)學(xué)試題(原卷版+解析版)
- 《跨境電商》課件-8.產(chǎn)品優(yōu)化操作
- 農(nóng)產(chǎn)品質(zhì)量追溯與物流一體化解決方案
- 建設(shè)工程施工分包委托協(xié)議書
- 土木工程結(jié)構(gòu)抗震設(shè)計(jì)真題解析
- 生態(tài)康養(yǎng)小鎮(zhèn)項(xiàng)目可行性研究報(bào)告
- 大數(shù)據(jù)營(yíng)銷推廣指南
- 網(wǎng)絡(luò)教育平臺(tái)建設(shè)與運(yùn)營(yíng)管理指南
- 社區(qū)服務(wù)項(xiàng)目計(jì)劃表
- 初中地理新課程標(biāo)準(zhǔn)解讀課件
- 2024年西固區(qū)離婚協(xié)議書范文電子版
- 蘇教版一年級(jí)10《20以內(nèi)的進(jìn)位加法》 單元整體作業(yè)設(shè)計(jì)
- 淺談手術(shù)室醫(yī)護(hù)患溝通
- 2023年江蘇省中考數(shù)學(xué)試卷(含解析)完美打印版
- (必會(huì))企業(yè)人力資源管理師(三級(jí))近年考試真題題庫(kù)(含答案解析)
- 臨床路徑實(shí)施方案2023版全
- HYT 0332-2022 海洋大數(shù)據(jù)標(biāo)準(zhǔn)體系(正式版)
- 全新供土協(xié)議
- The-Sad-Young-Men憂傷的男人課件
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)導(dǎo)學(xué)案(全冊(cè))
評(píng)論
0/150
提交評(píng)論