工具/软件:Code Composer Studio
您好、先生、
我之前问过有关矢量表的问题。 网址: e2e.ti.com/.../2509689
矢量表没有问题。 谢谢。
但目前我对 cmd 文件修改有疑问。
当前状态:
次级引导区域:FLASH_H + FLASH_G (0x30 0000H 至0x30 FFFFh)
应用领域:FLASH_F + FLASH_D (0x31 0000H 至0x32 7FFFH)
我的想法和测试步骤是:
1.Flash_A 地址:0x33 FFF6H 存储 secondary 引导的入口点地址,因为它将在上电后运行 secondary 引导。
应用程序不应使用 FLASH_A,否则它将与 secondary 引导冲突。 对吧?
2.进入调试模式以使用应用程序查看入口点的数据,因为大多数修改应该在应用程序项目上:
1) 1)未修改原始 cmd 文件。
进入应用程序的调试模式、查看0x33 FFF6H 的地址、记录该地址的数据、它应该是应用程序的入口点、名为 DATA_1。
2)修改了 cmd 文件、删除了 FLASH_A、将区域 FLASH_F 分配给 FLASH_D
进入应用程序的调试模式,查看0x32 7FFEH 的地址,记录该地址的数据,它应该是应用程序的入口点,名为 data_2。
我认为 data_1和 data_2应该是相同的,对吧?
但是,当执行步骤2时,当前我遇到加载失败,错误消息是:.out 加载失败。
C28xx:闪存编程器:写入闪存时遇到错误。
C28xx:GEL:文件:.\.out 加载失败。
3) 3)我尝试更改起始地址:
开始:origin = 0x327FFE,length = 0x000002
但也失败了:错误#10264:开始内存范围重叠
我的问题是:
如何正确修改我的 cmd 文件?
以下是我当前的应用程序 cmd 文件:
//======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== //
存储器
{
第0页:/*程序内存*/
/*内存(RAM/FLASH/OTP)块可移动到第1页进行数据分配*/
ZONE0:origin = 0x004000、 长度= 0x001000 /* XINTF 区域0 */
RAMM0:origin = 0x000050、 长度= 0x0003B0 /*片上 RAM 块 M0 */
/* RAML0:origin = 0x008000、 length = 0x001000*/*片上 RAM 块 L0 */
/* RAML1:origin = 0x009000, length = 0x001000*/*片上 RAM 块 L1 */
/* RAML2:origin = 0x00A000, length = 0x001000*/*片上 RAM 块 L2 */
/* RAML3:origin = 0x00B000, length = 0x001000*/*片上 RAM 块 L3 */
ZONE6:origin = 0x0100000、 长度= 0x100000 /* XINTF 区域6 */
/* ZONE7A:origin = 0x0200000, length = 0x00FC00*/* XINTF 区域7-程序空间*/
FLASHF_D:origin = 0x310000, length = 0x018000 //片上闪存*/
// FLASHH:origin = 0x300000, length = 0x008000 //片上闪存*/
// FLASHG:origin = 0x308000, length = 0x008000 //片上闪存*/
// FLASHF:origin = 0x310000, length = 0x008000 //片上闪存*/
// FLASHE:origin = 0x318000, length = 0x008000 //片上闪存*/
// FLASHD:origin = 0x320000, length = 0x008000 //片上闪存*/
FLASHC:origin = 0x328000、 长度= 0x008000 //片上闪存*/
// FLASHA:origin = 0x338000, length = 0x007F80 //片上闪存*/
csm_RSVD:origin = 0x33FF80, length = 0x000076 // FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 *
开始:origin = 0x33FFF6、 长度= 0x000002 /* FLASHA 的一部分。 用于"引导至闪存"引导加载程序模式。 *
CSM_PWL:origin = 0x33FFF8, length = 0x000008 // FLASHA 的一部分。 FLASHA 中的 CSM 密码位置*/
OTP:origin = 0x380400, 长度= 0x000400 /*片上 OTP */
ADC_CAL:origin = 0x380080, length = 0x000009 //保留存储器中的 ADC_cal 函数*/
IQTABLES:origin = 0x3FE000, length = 0x000b50 //引导 ROM 中的 IQMath 表*/
IQTABLES2:origin = 0x3FEB50, length = 0x00008c //引导 ROM 中的 IQMath 表*/
FPUTABLES:origin = 0x3FEBDC, length = 0x0006A0 //引导 ROM 中的 FPU 表*/
ROM:origin = 0x3FF27C、 长度= 0x000D44 //引导 ROM */
复位:origin = 0x3FFFC0, 长度= 0x000002 //引导 ROM 的一部分*/
向量:origin = 0x3FFFC2, length = 0x00003E //引导 ROM 的部分*/
第1页:/*数据存储器*/
/*内存(RAM/FLASK/OTP)块可被移动至 PAGE0以进行程序分配*/
/*寄存器保留在第1页中*/
BOOT_RSVD:origin = 0x000000, 长度= 0x000050 // M0的一部分,引导 ROM 将使用此堆栈*/
/* RAMM0:origin = 0x000050、 长度= 0x0003B0*//*片上 RAM 块 M0 */
RAMM1:origin = 0x000400、 长度= 0x000400 //片上 RAM 块 M1 *
RAML0_7:origin = 0x008000、 长度= 0x008000 //片上 RAM 块 L1 *
/* RAML4:origin = 0x00C000、 长度= 0x001000*//*片上 RAM 块 L1 */
/* RAML5:origin = 0x00D000、 长度= 0x001000*//*片上 RAM 块 L1 */
/* RAML6:origin = 0x00E000、 长度= 0x001000*//*片上 RAM 块 L1 */
/* RAML7:origin = 0x00F000、 长度= 0x001000*//*片上 RAM 块 L1 */
/* ZONE7B:origin = 0x20FC00, 长度= 0x000400*///* XINTF 区域7 -数据空间*/
ZONE7:origin = 0x200000、 长度= 0x010000 /* XINTF 区域7 -数据空间*/
FLASHB:origin = 0x330000、 长度= 0x008000 //片上闪存*/
}
/*将段分配给内存块。
注:
DSP28_CodeStartBranch.asm 中用于重定向代码的 codestart 用户定义段
闪存时执行
ramfuncs 用户定义的段来存储将从闪存复制到 RAM 中的函数
*
部分
{
/*分配计划领域:*/
.cinit:> FLASHF_D PAGE = 0
.pinit:> FLASHF_D, PAGE = 0
.text:> FLASHF_D PAGE = 0
codestart:>开始 PAGE = 0
斜坡延迟:负载= FLASHC,
运行= RAMM0、
Load_start (_RamdelayLoadStart)、
Load_End (_RamdelayLoadEnd)、
run_start (_RamdelayRunStart)、
PAGE = 0
ramfuncs:load = FLASHC,
运行= RAMM0、
load_start (_RamfuncsLoadStart)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
PAGE = 0
csmpasswds:>csm_PWL page = 0
csm_rsvd:>csm_RSVD page = 0
/*分配未初始化的数据段:*/
.stack:> RAMM1 PAGE = 1.
.ebss:> RAML0_7 PAGE = 1.
数据:> RAML0_7 PAGE = 1.
.esysmem:> RAMM1 PAGE = 1.
/*初始化段进入闪存*/
/*要使 SDFlash 对这些内容进行编程、必须将它们分配到第0页*/
.econst:> FLASHF_D PAGE = 0
切换:>FLASHF_D PAGE = 0
//.sysmem:> RAML0_7 page = 1.
//.cio:> RAML0_7 PAGE = 1.
/*分配 IQ 数学区域:*/
IQMath :> FLASHC PAGE = 0 /*数学代码*/
IQmathTables :> IQTABLES, PAGE = 0、TYPE = NOLOAD
IQmathTables2:> IQTABLES2, PAGE = 0,TYPE = NOLOAD
FPUmathTables:> FPUTABLES,PAGE = 0,TYPE = NOLOAD
/*分配可通过 DMA 访问的 RAM 段:*/
DMARAML4:>RAML0_7,PAGE = 1
DMARAML5:>RAML0_7,PAGE = 1
DMARAML6:>RAML0_7,PAGE = 1
DMARAML7:>RAML0_7,PAGE = 1
/*分配 XINTF 区域7的0x400来存储数据*/
/* ZONE7DATA:> ZONE7B,PAGE = 1*/
/*.reset 是编译器使用的标准段。 它包含*/
/* C 代码_c_int00起始地址。 /*
/*当使用引导 ROM 时,此部分和 CPU 矢量*/
/*不需要表。 因此、默认类型设置为*/
/* DSECT */
.reset:> reset,page = 0,type = DSECT
VECTORS:> VECTORS PAGE = 0,TYPE = DSECT
/*分配 ADC_cal 函数(出厂时已预先编程到 TI 保留存储器中)*/
ADC_cal:load = ADC_CAL、page = 0、type = NoLoad
}
//======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== //
希望您能回答。
谢谢。
此致、
文森特

