欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于TMS320F28335DSP的FLASH燒寫方法

作者:佚名   來源:本站原創   點擊數:  更新時間:2014年01月22日   【字體:

想把一個原來是燒寫到DSP的片內RAM的程序修改成是燒寫到DSP片內FLASH的程序,不僅僅是修改一個cmd文件就結束了,還需要做其他幾個步驟

第一步:把28335_RAM_lnk.cmd這個從project中移除,用右鍵選擇28335_RAM_lnk.cmd然后選delate。如下圖1,然后出現對話框,點YES,如圖2 

 

 

 

 

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

 

 

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

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

 InitFlash(); 

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

添加語句的時候,注意不要添加錯了,每一個字母都要正確,括號也要用英文括號。 

第四步:添加DSP2833x_MemCopy.c這個文件到project中,右鍵選擇project名稱,然后選add file to project,然后出現瀏覽框,找到\Code of TMS320F28335 CCS4\v120\DSP2833x_common\source文件夾中的DSP2833x_MemCopy.c這個文件,然后點OK 

第五步:編譯,點rebuild,編譯至少要保證沒有ERROR,否則請檢查一下 

 

 

在第三步操作的地方是不是有錯誤。 

需要注意的是:不是RAM中運行正確的程序,就在FLASH中運行也一定正確。這是因為同樣的程序在DSPRAM中運行消耗的時間要遠遠短于在FLASH中運行的時間 

比如,有一個中斷函數cpu_timer_isr10ms(),這個函數每隔10msCPU定時器1產生中斷觸發,自動跳轉進入執行一次。這個cpu_timer_isr1ms()內部包括三個子函數依次是adc_sanple()pwm_update()gpio_toggle() 

如下 

cpu_timer_isr1ms() 

adc_sanple() 

pwm_update() 

gpio_toggle() 

其中假設adc_sanple()這個子函數在RAM中的執行時間是1mspwm_update()這個子函數在RAM中的執行時間是2msgpio_toggle()這個子函數在RAM中的執行時間是3ms,那么1+2+3=6<10,所以完全沒有問題,在RAM中上面這些程序都可以運行很好。 

但是,如果把上面這些程序放到FLASH中運行,很有可能adc_sanple()這個子函數在FLASH中的執行時間是3mspwm_update()這個子函數在FLASH中的執行時間是7ms,這是因為同樣的程序在DSPRAM中運行消耗的時間要遠遠短于在FLASH中運行的時間。這樣前兩個函數就把10ms都用掉了,根本輪不上gpio_toggle()這個子函數被執行,就被DSP強制終止了,所以很多時候根本就看不到gpio_toggle()的現象。 

關閉窗口

相關文章