请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSPM0L1306-Q1 主题中讨论的其他器件:MSPM0L1306
这是我的链接器 cmd 文件看起来的样子
-uinterruptVectors
--stack_size=256
MEMORY
{
FLASH (RX) : origin = 0x00000000, length = 0x0000F4F7
SEN_CFG (RW) : origin = 0x0000F4F8, length = 0x00000A80
SRAM (RWX) : origin = 0x20000000, length = 0x00001000
BCR_CONFIG (R) : origin = 0x41C00000, length = 0x00000080
BSL_CONFIG (R) : origin = 0x41C00100, length = 0x00000080
}
SECTIONS
{
.intvecs: > 0x00000000
.text : palign(8) {} > FLASH
.const : palign(8) {} > FLASH
.cinit : palign(8) {} > FLASH
.pinit : palign(8) {} > FLASH
.rodata : palign(8) {} > FLASH
.ARM.exidx : palign(8) {} > FLASH
.init_array : palign(8) {} > FLASH
.binit : palign(8) {} > FLASH
.TI.ramfunc : load = FLASH, palign(8), run=SRAM, table(BINIT)
.vtable : > SRAM
.args : > SRAM
.data : > SRAM
.bss : > SRAM
.sysmem : > SRAM
.stack : > SRAM (HIGH)
.SENCFG : {} > SEN_CFG
.BCRConfig : {} > BCR_CONFIG
.BSLConfig : {} > BSL_CONFIG
}可以看出、我定义了一个新段来存储(并加载)从 0x0000F4F8开始的0xA80字节配置数据。 我也减少了称为"flash"的部分的大小。 我的新部分偏离了手册中提到的最后8个字节。 我能够对这个区域的其中一个位置进行写入。 但是、这里偶尔也会失败。 它工作了几次,现在我得到一个硬故障,而写入相同的位置。 以前,我能够写入它,但我在读取它时遇到了这个问题。
我想知道除了此 aka 定义一个单独的存储器段、然后直接使用该段中的地址作为代码的一部分、我是否需要执行任何其他操作?
为了识别例外情况、我修改了所有的异常和中断、以便按照 此处的 Brandon Fisher94的建议使其中断。 现在、它显示我遇到了"硬故障"。 我不知道为什么。 这里的任何内容是否暗示我可能正在访问非法内存? 在像我这样的情况下、什么可能导致硬故障?