你(们)好!
我一直在开发固件,突然我注意到一个无关的变量被更改,当我修改一些完全无关的代码。 在我看来、它与代码本身无关、更像是非法访问情形。 我确信这一点是因为我将变量修改为一个奇怪值的点跟踪到甚至在它到达我更改过的代码之前的点。
请注意、变量的值变为48、并且任何其他代码片段都不可能将其设置为该值。 (其范围通常为0-12)
我还将 TMS320F280025C 硬件交换到另一个样本上、以验证存储器是否未出现某种程度的损坏。
如对从何处开始查找有任何建议、欢迎您提出。 我还在下面附上了我的闪存链接器文件。
提前感谢、
内存
{
begin:origin = 0x080000、length = 0x000002
BOOT_RSVD:origin = 0x00000002、length = 0x00000126
RAMM0:origin = 0x00000128、length = 0x000002D8
RAMM1:origin = 0x00000400、length = 0x000003F8 /*片上 RAM 块 M1 */
// RAMM1_RSVD:origin = 0x000007F8,length = 0x00000008 /*根据勘误建议"存储器:预取超出有效存储器"保留代码且不使用*/
/* RAMLS4:origin = 0x0000A000、length = 0x00000800
RAMLS5:origin = 0x0000A800、length = 0x00000800
RAMLS6:origin = 0x0000B000、length = 0x00000800
RAMLS7:origin = 0x0000B800,length = 0x00000800*/
/*组合所有 LS RAM */
RAMLS4567:origin = 0x0000A000、length = 0x00002000
RAMGS0:origin = 0x0000C000、length = 0x000007F8
// RAMGS0_RSVD:origin = 0x0000C7F8,length = 0x00000008 /*保留且不使用勘误建议"存储器:预取超出有效存储器"中的代码*/
// FLASHBANK1:origin = 0x00080000,length = 0x0000FFF0
// FLASH_BANK1_RSVD:origin = 0x0008FFF0,length = 0x00000010 /*根据勘误建议"存储器:预取超出有效存储器",保留代码,且不用于此代码*/
BootROM:origin = 0x003F0000、length = 0x00008000
BootROM_EXT:origin = 0x003F8000、length = 0x00007FC0
复位:origin = 0x003FFFC0、length = 0x00000002
/*闪存扇区*/
/*组0 */
FLASH_BANK0_SEC0:origin = 0x080002、length = 0x000FFE /*片上闪存*/
FLASH_BANK0_SEC1:origin = 0x081000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_sec2:origin = 0x082000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC3:origin = 0x083000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC4:origin = 0x084000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC5:origin = 0x085000,length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC6:origin = 0x086000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_sec7:origin = 0x087000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC8:origin = 0x088000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC9:origin = 0x089000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC10:origin = 0x08A000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC11:origin = 0x08B000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC12:origin = 0x08C000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC13:origin = 0x08D000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC14:origin = 0x08E000,length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC15:origin = 0x08F000、length = 0x000FF0 /*片上闪存*/
// FLASH_BANK0_SEC15_RSVD:origin = 0x08FFF0,length = 0x000010 /*保留代码,且不使用勘误建议"存储器:预取有效存储器之外的代码"*/
}
部分
{
codestart :> beging, align (8)
.text:>> FLASH_BANK0_SEC1 | FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 | FLASH_BANK0_SEC6 | FLASH_BANK0_SEC7、ALIGN (8)
.cinit:> FLASH_BANK0_SEC0、align (8)
.switch:> FLASH_BANK0_SEC0、ALIGN (8)
.reset:> reset,type = DSECT /*未使用,*/
.stack:> RAMM1
//.init_array:> FLASH_BANK0_SEC1、ALIGN (8)//ss 因某种原因未使用
.bss :> RAMLS4567
.bss:输出:> RAMLS4567
bss:CIO:> RAMGS0
.const:>> FLASH_BANK0_SEC9| FLASH_BANK0_SEC10,ALIGN (8)//SS 问题与扇区9
.data:> RAMLS4567
.sysmem:> RAMLS4567
ramgs0:> RAMGS0
/*分配 IQ 数学领域:*/
IQMath :> RAMLS4567
IQmathTables :> RAMLS4567
.TI.ramfunc:load = FLASH_BANK0_SEC0、//WAS sec1
运行= RAMGS0、
Load_start (RamfuncsLoadStart)、
Load_Size (RamfuncsLoadSize)、
Load_End (RamfuncsLoadEnd)、
RUN_START (RamfuncsRunStart)、
RUN_SIZE (RamfuncsRunSize)、
RUN_END (RamfuncsRunEnd)、
对齐(8)
}
/*
//========================================
//文件结尾。
//========================================
*/