專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

基于TMS320F28335DSP的FLASH燒寫(xiě)方法

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年01月22日   【字體:

想把一個(gè)原來(lái)是燒寫(xiě)到DSP的片內(nèi)RAM的程序修改成是燒寫(xiě)到DSP片內(nèi)FLASH的程序,不僅僅是修改一個(gè)cmd文件就結(jié)束了,還需要做其他幾個(gè)步驟

第一步:把28335_RAM_lnk.cmd這個(gè)從project中移除,用右鍵選擇28335_RAM_lnk.cmd然后選delate。如下圖1,然后出現(xiàn)對(duì)話框,點(diǎn)YES,如圖2。 

 

 

 

 

第二步:右鍵選擇project名稱(chēng),然后選add file to project,如下圖3,然后出現(xiàn)瀏覽框,在\Code of TMS320F28335 CCS4\v120\DSP2833x_common\cmd這個(gè)子文件夾下,選擇F28335.cmd,點(diǎn)OK,至此可以在project的文件列表內(nèi)看到F28335.cmd被添加到project中。 

 

 

第三步:在main()函數(shù)中添加如下語(yǔ)句 

MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); 

 InitFlash(); 

上述兩句話添加在InitPieVectTable();這句的下面的一行。 

添加語(yǔ)句的時(shí)候,注意不要添加錯(cuò)了,每一個(gè)字母都要正確,括號(hào)也要用英文括號(hào)。 

第四步:添加DSP2833x_MemCopy.c這個(gè)文件到project中,右鍵選擇project名稱(chēng),然后選add file to project,然后出現(xiàn)瀏覽框,找到\Code of TMS320F28335 CCS4\v120\DSP2833x_common\source文件夾中的DSP2833x_MemCopy.c這個(gè)文件,然后點(diǎn)OK。 

第五步:編譯,點(diǎn)rebuild,編譯至少要保證沒(méi)有ERROR,否則請(qǐng)檢查一下 

 

 

在第三步操作的地方是不是有錯(cuò)誤。 

需要注意的是:不是RAM中運(yùn)行正確的程序,就在FLASH中運(yùn)行也一定正確。這是因?yàn)橥瑯拥某绦蛟?/span>DSPRAM中運(yùn)行消耗的時(shí)間要遠(yuǎn)遠(yuǎn)短于在FLASH中運(yùn)行的時(shí)間。 

比如,有一個(gè)中斷函數(shù)cpu_timer_isr10ms(),這個(gè)函數(shù)每隔10msCPU定時(shí)器1產(chǎn)生中斷觸發(fā),自動(dòng)跳轉(zhuǎn)進(jìn)入執(zhí)行一次。這個(gè)cpu_timer_isr1ms()內(nèi)部包括三個(gè)子函數(shù)依次是adc_sanple(),pwm_update()gpio_toggle() 

如下 

cpu_timer_isr1ms() 

adc_sanple(); 

pwm_update(); 

gpio_toggle(); 

其中假設(shè)adc_sanple()這個(gè)子函數(shù)在RAM中的執(zhí)行時(shí)間是1ms,pwm_update()這個(gè)子函數(shù)在RAM中的執(zhí)行時(shí)間是2msgpio_toggle()這個(gè)子函數(shù)在RAM中的執(zhí)行時(shí)間是3ms,那么1+2+3=6<10,所以完全沒(méi)有問(wèn)題,在RAM中上面這些程序都可以運(yùn)行很好。 

但是,如果把上面這些程序放到FLASH中運(yùn)行,很有可能adc_sanple()這個(gè)子函數(shù)在FLASH中的執(zhí)行時(shí)間是3mspwm_update()這個(gè)子函數(shù)在FLASH中的執(zhí)行時(shí)間是7ms,這是因?yàn)橥瑯拥某绦蛟?/span>DSPRAM中運(yùn)行消耗的時(shí)間要遠(yuǎn)遠(yuǎn)短于在FLASH中運(yùn)行的時(shí)間。這樣前兩個(gè)函數(shù)就把10ms都用掉了,根本輪不上gpio_toggle()這個(gè)子函數(shù)被執(zhí)行,就被DSP強(qiáng)制終止了,所以很多時(shí)候根本就看不到gpio_toggle()的現(xiàn)象。 

關(guān)閉窗口

相關(guān)文章