?? 成功燒寫tms320f2812經(jīng)驗(yàn).txt
字號(hào):
wind0408.bokee.com注冊(cè)設(shè)為首頁幫助首頁|博客群|公社|專欄|論壇|圖片|商城|汽車|博客聯(lián)播|博客院線|隨機(jī)訪問|訂閱 用戶名 注
冊(cè)
密 碼 忘記密碼
保存密碼
wind0408.bokee.com 復(fù)制
歡迎光臨我的博客首頁個(gè)人資料日志圖片視頻(測(cè))好友博客群日志設(shè)置f2812 flash配置寄存器的等待周期數(shù)的理解
分類:默認(rèn)欄目一般而言,為了將運(yùn)行在f2812
flash內(nèi)得程序代碼以最快速度運(yùn)行,需要設(shè)置flash配置寄存器的等待周期數(shù),而“設(shè)置flash配置寄存器的等待周期數(shù)”的這段代碼是不能在flash內(nèi)部執(zhí)行的,這樣就會(huì)出現(xiàn)兩種實(shí)際的配置方式:
一種是2812系統(tǒng)無外擴(kuò)程序存儲(chǔ)器,此時(shí)程序只能寫在2812內(nèi)部得flash區(qū),程序運(yùn)行開始后,需要將“設(shè)置flash配置寄存器的等待周期數(shù)”的這段代碼用數(shù)據(jù)復(fù)制的方式復(fù)制到內(nèi)部sram區(qū),比如
L0 區(qū),然后使用跳轉(zhuǎn)指令跳轉(zhuǎn)到L0
區(qū)“設(shè)置flash配置寄存器的等待周期數(shù)”的代碼進(jìn)行flash配置寄存器的設(shè)置,設(shè)置完成后再使用跳轉(zhuǎn)指令跳轉(zhuǎn)到flash程序區(qū)執(zhí)行正常的功能程序。這樣以后的flash內(nèi)的代碼就會(huì)以最快速度運(yùn)行。
還有一種是2812系統(tǒng)外擴(kuò)了部分“引導(dǎo)”程序存儲(chǔ)器,“設(shè)置flash配置寄存器的等待周期數(shù)”的這段代碼放置在外擴(kuò)的“引導(dǎo)”程序存儲(chǔ)器內(nèi),而其他的所有程序代碼都放在2812內(nèi)部flash區(qū),系統(tǒng)復(fù)位后,首先運(yùn)行外擴(kuò)的“引導(dǎo)”程序存儲(chǔ)器內(nèi)的程序,一旦完成了對(duì)內(nèi)部flash配置寄存器的設(shè)置后,即跳轉(zhuǎn)到flash程序區(qū)執(zhí)行正常的功能程序。
正如上述,對(duì)2812外部接口XINTF配置寄存器的設(shè)置代碼,也是不能在“外部”程序代碼區(qū)進(jìn)行的,為了實(shí)現(xiàn)對(duì)其的正常設(shè)置,可仿照上述辦法進(jìn)行相關(guān)操作。
2007.8.13 19:06 作者:wind 收藏 | 評(píng)論:0
成功燒寫TMS320F2812經(jīng)驗(yàn)
分類:默認(rèn)欄目用的是CCS2.20版本提供的SDFLASH,設(shè)置好SDFLASH后,主要是要將需要下載的.out文件寫進(jìn)去.
關(guān)鍵在于在線仿真時(shí)的cmd文件要加以更換成新的.使用的是:
-o .DebugPULSE_AD.out
-m PULSE_AD.map
MEMORY
{
PAGE 0 :
OTP : origin = 0x3D7800, length = 0x000800
FLASHJ : origin = 0x3D8000, length = 0x002000
FLASHI : origin = 0x3DA000, length = 0x002000
FLASHH : origin = 0x3DC000, length = 0x004000
FLASHG : origin = 0x3E0000, length = 0x004000
FLASHF : origin = 0x3E4000, length = 0x004000
FLASHE : origin = 0x3E8000, length = 0x004000
FLASHD : origin = 0x3EC000, length = 0x004000
FLASHC : origin = 0x3F0000, length = 0x004000
FLASHB : origin = 0x3F4000, length = 0x002000
FLASHA : origin = 0x3F6000, length = 0x001FF6
BEGIN : origin = 0x3F7FF6, length = 0x000002
PASSWDS : origin = 0x3F7FF8, length = 0x000008
ROM : origin = 0x3FF000, length = 0x000FC0
VECTORS : origin = 0x3FFFC2, length = 0x00003E
PAGE 1 :
/* SARAM */
RAMM0M1 : origin = 0x000000, length = 0x000800
/* Peripheral Frame 0: */
DEV_EMU : origin = 0x000880, length = 0x000180
FLASH_REGS : origin = 0x000A80, length = 0x000060
CSM : origin = 0x000AE0, length = 0x000010
XINTF : origin = 0x000B20, length = 0x000020
CPU_TIMER0 : origin = 0x000C00, length = 0x000008
CPU_TIMER1 : origin = 0x000C08, length = 0x000008
CPU_TIMER2 : origin = 0x000C10, length = 0x000008
PIE_CTRL : origin = 0x000CE0, length = 0x000020
PIE_VECT : origin = 0x000D00, length = 0x000100
/* Peripheral Frame 1: */
ECAN_A : origin = 0x006000, length = 0x000100
ECAN_AMBOX : origin = 0x006100, length = 0x000100
/* Peripheral Frame 2: */
SYSTEM : origin = 0x007010, length = 0x000020
SPI_A : origin = 0x007040, length = 0x000010
SCI_A : origin = 0x007050, length = 0x000010
XINTRUPT : origin = 0x007070, length = 0x000010
GPIOMUX : origin = 0x0070C0, length = 0x000020
GPIODAT : origin = 0x0070E0, length = 0x000020
ADC : origin = 0x007100, length = 0x000020
EV_A : origin = 0x007400, length = 0x000040
EV_B : origin = 0x007500, length = 0x000040
SPI_B : origin = 0x007740, length = 0x000010
SCI_B : origin = 0x007750, length = 0x000010
MCBSP_A : origin = 0x007800, length = 0x000040
/* CSM Password Locations */
CSM_PWL : origin = 0x3F7FF8, length = 0x000008
/* SARAM */
RAML0L1 : origin = 0x008000, length = 0x002000
RAMH0 : origin = 0x3F8000, length = 0x002000
}
SECTIONS
{
/* Allocate program areas: */
.reset : > BEGIN PAGE = 0
vectors : > VECTORS PAGE = 0
.cinit : > FLASHJ PAGE = 0
.text : > FLASHA PAGE = 0
/* Allocate data areas: */
.stack : > RAMM0M1 PAGE = 1
.bss : > RAML0L1 PAGE = 1
.ebss : > RAML0L1 PAGE = 1
.const: load = FLASHB PAGE 0, run = RAML0L1
PAGE 1
{
/* Get Run Address */
__const_run = .;
/* Mark Load Address*/
*(.c_mark)
/* Allocate .const */
*(.const)
/* Compute Length */
__const_length = .-__const_run;
}
.econst: load = FLASHB PAGE 0, run = RAML0L1
PAGE 1
{
/* Get Run Address */
__econst_run = .;
/* Mark Load Address*/
*(.ec_mark)
/* Allocate .const */
*(.econst)
/* Compute Length */
__econst_length = .-__econst_run;
}
.sysmem : > RAMH0 PAGE = 1
/* Allocate IQ math areas: */
IQmath : > FLASHI PAGE = 0 /* Math Code */
IQmathFastTables : > FLASHI PAGE = 0 /* Math Tables in fast memory
*/
IQmathTables : > ROM PAGE = 0 /* Math Tables In ROM */
/* Allocate Peripheral Frame 0 Register Structures: */
DevEmuRegsFile : > DEV_EMU PAGE = 1
FlashRegsFile : > FLASH_REGS PAGE = 1
CsmRegsFile : > CSM PAGE = 1
XintfRegsFile : > XINTF PAGE = 1
CpuTimer0RegsFile : > CPU_TIMER0 PAGE = 1
CpuTimer1RegsFile : > CPU_TIMER1 PAGE = 1
CpuTimer2RegsFile : > CPU_TIMER2 PAGE = 1
PieCtrlRegsFile : > PIE_CTRL PAGE = 1
PieVectTable : > PIE_VECT PAGE = 1
/* Allocate Peripheral Frame 2 Register Structures: */
ECanaRegsFile : > ECAN_A PAGE = 1
ECanaMboxesFile : > ECAN_AMBOX PAGE = 1
/* Allocate Peripheral Frame 1 Register Structures: */
SysCtrlRegsFile : > SYSTEM PAGE = 1
SpiaRegsFile : > SPI_A PAGE = 1
SciaRegsFile : > SCI_A PAGE = 1
XIntruptRegsFile : > XINTRUPT PAGE = 1
GpioMuxRegsFile : > GPIOMUX PAGE = 1
GpioDataRegsFile : > GPIODAT PAGE = 1
AdcRegsFile : > ADC PAGE = 1
EvaRegsFile : > EV_A PAGE = 1
EvbRegsFile : > EV_B PAGE = 1
ScibRegsFile : > SCI_B PAGE = 1
McbspaRegsFile : > MCBSP_A PAGE = 1
/* CSM Password Locations */
CsmPwlFile : > CSM_PWL PAGE = 1
}
然后把lib文件替換成:rts2800_fl040830.lib
就可以啦.
希望你也成功!!!
本人qq: 15007807 歡迎以后交流.
點(diǎn)評(píng):
FLASH不用分這么細(xì)的,編大一點(diǎn)的程序會(huì)有麻煩
以下是本人做過的某項(xiàng)目CMD文件
MEMORY
{
PAGE 0 :
/* For this example, H0 is split between PAGE 0 and PAGE 1 */
/* BEGIN is used for the "boot to HO" bootloader mode */
/* RESET is loaded with the reset vector only if */
/* the boot is from XINTF Zone 7. Otherwise reset vector */
/* is fetched from boot ROM. See .reset section below */
RAMM0 : origin = 0x000000, length = 0x000400
BEGIN : origin = 0x3f7ff6, length = 0x000002
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -