我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
Hank Zhao:
使用rts2800_ml.lib也可以往flash里烧写程序,您在使用rts2800_ml.lib烧写程序到flash时出现的是什么问题?
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
melissa eleven:
回复 Hank Zhao:
显示烧写成功 但是重新上电后并不运行 步骤和使用rts2800n.lib的一样,但是只有使用rts2800n.lib上电后能运行
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
Hank Zhao:
回复 melissa eleven:
把你的FFTFLASH.cmd文件发过来看一下吧
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
melissa eleven:
回复 Hank Zhao:
MEMORY { PAGE 0 :OTP: origin = 0x3D7800, length = 0x000800FLASHJ: origin = 0x3D8000, length = 0x002000FLASHI: origin = 0x3DA000, length = 0x002000FLASHH: origin = 0x3DC000, length = 0x006000/*FLASHH: origin = 0x3DC000, length = 0x004000FLASHG: origin = 0x3E0000, length = 0x004000*/FLASHP: origin = 0x3E4000, length = 0x013FF6/*FLASHF: origin = 0x3E4000, length = 0x004000FLASHE: origin = 0x3E8000, length = 0x004000FLASHD: origin = 0x3EC000, length = 0x004000FLASHC: origin = 0x3F0000, length = 0x004000FLASHB: origin = 0x3F4000, length = 0x002000FLASHA: origin = 0x3F6000, length = 0x001FF6*/BEGIN: origin = 0x3F7FF6, length = 0x000002PASSWDS: origin = 0x3F7FF8, length = 0x000008ROM: origin = 0x3FF000, length = 0x000FC0VECTORS: origin = 0x3FFFC2, length = 0x00003EPAGE 1 :/* SARAM*/RAMM0: origin = 0x000000, length = 0x000400RAMM1: origin = 0x000400, length = 0x000400/* Peripheral Frame 0:*/DEV_EMU: origin = 0x000880, length = 0x000180FLASH_REGS : origin = 0x000A80, length = 0x000060CSM: origin = 0x000AE0, length = 0x000010XINTF: origin = 0x000B20, length = 0x000020CPU_TIMER0 : origin = 0x000C00, length = 0x000008CPU_TIMER1 : origin = 0x000C08, length = 0x000008CPU_TIMER2 : origin = 0x000C10, length = 0x000008PIE_CTRL: origin = 0x000CE0, length = 0x000020PIE_VECT: origin = 0x000D00, length = 0x000100/* Peripheral Frame 1:*/ECAN_A: origin = 0x006000, length = 0x000100ECAN_AMBOX : origin = 0x006100, length = 0x000100/* Peripheral Frame 2:*/SYSTEM: origin = 0x007010, length = 0x000020SPI_A: origin = 0x007040, length = 0x000010SCI_A: origin = 0x007050, length = 0x000010XINTRUPT: origin = 0x007070, length = 0x000010GPIOMUX: origin = 0x0070C0, length = 0x000020GPIODAT: origin = 0x0070E0, length = 0x000020ADC: origin = 0x007100, length = 0x000020EV_A: origin = 0x007400, length = 0x000040EV_B: origin = 0x007500, length = 0x000040SPI_B: origin = 0x007740, length = 0x000010SCI_B: origin = 0x007750, length = 0x000010MCBSP_A: origin = 0x007800, length = 0x000040/* CSM Password Locations */CSM_PWL: origin = 0x3F7FF8, length = 0x000008/* SARAM*/DRAMH0: origin = 0x3f8000, length = 0x002000RAML0L1: origin = 0x008000, length = 0x002000ZONE2tf: origin = 0x084000, length = 0x001FFF}SECTIONS {/* Allocate program areas: */.reset: > BEGINPAGE = 0vectors: > VECTORSPAGE = 0.cinit: > FLASHJPAGE = 0.text: > FLASHPPAGE = 0/* Allocate data areas: */.stack: > RAMM1PAGE = 1.ebss: > RAML0L1PAGE = 1.econst: > FLASHHPAGE = 0.esysmem: > RAML0L1PAGE = 1/* Allocate IQ math areas: */IQmath: > FLASHIPAGE = 0/* Math Codeflashi*/IQmathFastTables: > FLASHIPAGE = 0/* Math Tables in fast memoryflashi*/IQmathTables: > OTPPAGE = 0/* Math Tables In ROM *//* Allocate Peripheral Frame 0 Register Structures:*/DevEmuRegsFile: > DEV_EMU,PAGE = 1FlashRegsFile: > FLASH_REGS, PAGE = 1CsmRegsFile: > CSM,PAGE = 1XintfRegsFile: > XINTF,PAGE = 1CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1PieCtrlRegsFile: > PIE_CTRL,PAGE = 1PieVectTable: > PIE_VECT,PAGE = 1/* Allocate Peripheral Frame 2 Register Structures:*/ECanaRegsFile: > ECAN_A,PAGE = 1ECanaMboxesFile: > ECAN_AMBOXPAGE = 1/* Allocate Peripheral Frame 1 Register Structures:*/SysCtrlRegsFile: > SYSTEM,PAGE = 1SpiaRegsFile: > SPI_A,PAGE = 1SciaRegsFile: > SCI_A,PAGE = 1XIntruptRegsFile: > XINTRUPT,PAGE = 1GpioMuxRegsFile: > GPIOMUX,PAGE = 1GpioDataRegsFile: > GPIODATPAGE = 1AdcRegsFile: > ADC,PAGE = 1EvaRegsFile: > EV_A,PAGE = 1EvbRegsFile: > EV_B,PAGE = 1ScibRegsFile: > SCI_B,PAGE = 1McbspaRegsFile: > MCBSP_A,PAGE = 1/* CSM Password Locations */CsmPwlFile: > CSM_PWL,PAGE = 1FFTipcb3ALIGN(256): {}>DRAMH0PAGE=1FFTipcb4ALIGN(256): {}>DRAMH0PAGE=1FFTmag:>DRAMH0PAGE=1FFTtf:>ZONE2tfPAGE=1}
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
melissa eleven:
回复 Hank Zhao:
MEMORY{PAGE 0 : OTP : origin = 0x3D7800, length = 0x000800 FLASHJ : origin = 0x3D8000, length = 0x002000 FLASHI : origin = 0x3DA000, length = 0x002000
FLASHH : origin = 0x3DC000, length = 0x006000 /* FLASHH : origin = 0x3DC000, length = 0x004000 FLASHG : origin = 0x3E0000, length = 0x004000 */ FLASHP : origin = 0x3E4000, length = 0x013FF6 /* 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 */ RAMM0 : origin = 0x000000, length = 0x000400 RAMM1 : origin = 0x000400, length = 0x000400
/* 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 */ DRAMH0 : origin = 0x3f8000, length = 0x002000 RAML0L1 : origin = 0x008000, length = 0x002000 ZONE2tf : origin = 0x084000, length = 0x001FFF
} SECTIONS{ /* Allocate program areas: */ .reset : > BEGIN PAGE = 0 vectors : > VECTORS PAGE = 0 .cinit : > FLASHJ PAGE = 0 .text : > FLASHP PAGE = 0
/* Allocate data areas: */
.stack : > RAMM1 PAGE = 1 .ebss : > RAML0L1 PAGE = 1 .econst : > FLASHH PAGE = 0
.esysmem : > RAML0L1 PAGE = 1 /* 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
FFTipcb3 ALIGN(256) : {} > DRAMH0 PAGE=1 FFTipcb4 ALIGN(256) : {} > DRAMH0 PAGE=1 FFTmag : > DRAMH0 PAGE=1 FFTtf : > ZONE2tf PAGE=1
}
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
Hank Zhao:
回复 melissa eleven:
您好,请将源文件“DSP281x_CodeStartBranch.asm”添加到工程中,并且在CMD文件的section部分添加语句“codestart : > BEGIN PAGE = 0”。
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
melissa eleven:
回复 Hank Zhao:
烧完以后Flash锁住了
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
melissa eleven:
回复 Hank Zhao:
添加的.asm文件
***********************************************************************
WD_DISABLE .set 1 ;set to 1 to disable WD, else set to 0
.ref _c_int00
************************************************************************ Function: codestart section** Description: Branch to code starting point***********************************************************************
.sect "codestart"
code_start: .if WD_DISABLE == 1 LB wd_disable ;Branch to watchdog disable code .else LB _c_int00 ;Branch to start of boot.asm in RTS library .endif
;end codestart section
************************************************************************ Function: wd_disable** Description: Disables the watchdog timer*********************************************************************** .if WD_DISABLE == 1
.textwd_disable: SETC OBJMODE ;Set OBJMODE for 28x object code EALLOW ;Enable EALLOW protected register access MOVZ DP, #7029h>>6 ;Set data page for WDCR register MOV @7029h, #0068h ;Set WDDIS bit in WDCR to disable WD EDIS ;Disable EALLOW protected register access LB _c_int00 ;Branch to start of boot.asm in RTS library
.endif
;end wd_disable
.end ; end of file CodeStartBranch.asm
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
Hank Zhao:
回复 melissa eleven:
具体是什么情况?编译工程的时候有没有把“DSP281x_CSMPasswords.asm”添加到工程中去,在操作flash programmer有没有改变密码区的值?除了这两种情况,在烧写的时候电源不稳定也会导致flash被锁。
我的程序在ram调试的时候用的是rts2800_ml.lib库,而想要往Flash里固化则必须改成rts2800n.lib这个库,可更改成这个库后在线调试条用的一些字符串函数就不能用了,请问想Flash里固化的库是固定的么 和什么有关系 怎么更改
melissa eleven:
回复 Hank Zhao:
;// TI File $Revision: /main/2 $;// Checkin $Date: April 29, 2005 11:11:32 $;//###########################################################################;//;// FILE: DSP281x_CodeStartBranch.asm ;//;// TITLE: Branch for redirecting code execution after boot. ;//;//###########################################################################;// $TI Release: DSP281x Header Files V1.11 $;// $Release Date: September 26, 2007 $;//###########################################################################
***********************************************************************
WD_DISABLE .set 1 ;set to 1 to disable WD, else set to 0
.ref _c_int00
************************************************************************ Function: codestart section** Description: Branch to code starting point***********************************************************************
.sect "codestart"
code_start: .if WD_DISABLE == 1 LB wd_disable ;Branch to watchdog disable code .else LB _c_int00 ;Branch to start of boot.asm in RTS library .endif
;end codestart section
************************************************************************ Function: wd_disable** Description: Disables the watchdog timer*********************************************************************** .if WD_DISABLE == 1
.textwd_disable: SETC OBJMODE ;Set OBJMODE for 28x object code EALLOW ;Enable EALLOW protected register access MOVZ DP, #7029h>>6 ;Set data page for WDCR register MOV @7029h, #0068h ;Set WDDIS bit in WDCR to disable WD EDIS ;Disable EALLOW protected register access LB _c_int00 ;Branch to start of boot.asm in RTS library
.endif
;end wd_disable
.end ; end of file CodeStartBranch.asm
只添加了这个和修改了你所说的CMD文件