This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我在闪存中有两个映像:A 和 B。应用 A 位于闪存0x00000000。 APP B 位于0x00220000。 应用 A 是将跳转到应用 B 的加载程序 。我正在构建应用 B、且 链接器输出设置为 true、以便在工程属性中启用链接器生成的 ECC。 当我 刷写构建时 I Get CortexR5:文件加载程序:存储器写入失败:地址0xf0483f7f 没有映射到一个有效的闪存组和加载失败消息。
请就原因提出一些建议、因为映射文件中的 ECC 段 中没有0xf0483f7f。 应用 B 的链接器命令文件如下所示:
#define APP_BASE_ADDRS 0x00220000
小程序
{
VECTORS (X): origin=APP_BASE_ADDRS length=0x00000020 fill = 0xffffffff
Flash (RX):origin=(end (vectors))
长度=(0x00220000 -大小(矢量)) vfill = 0xFFFFFFFF
堆栈(RW):origin=0x08000000 length=0x00001500
RAM (RW):origin=0x08001500 length=0x0006eb00
RAMFUNC (RWX):origin=0x08070000 length=0x0000F000
ECC_VEC (R):origin=(0xf0400000 +(start (vectors)>> 3))
长度=(大小(矢量)>> 3)
ecc={algoL2R5F021、input_range=vectors}
ECC_FLASH (R):origin=(0xf0400000 +(start (flash)>> 3))
length=(size (flash)>> 3)
ecc={algorithm=algoL2R5F021、input_range=flash}
}
ECC{
algoL2R5F021:address_mask = 0xfffff8 /*地址位31:3 */
Hamming_mask = R4 /*使用 R4/R5构建在掩码中*/
parity_mask = 0x0c /*设置哪些 ECC 位为偶数和奇数奇偶校验*/
镜像= F021 /* RM57Lx 和 TMS570LCx 是在 F021中构建的*/
}
/*------------------ */
/*段配置*/
部分中)
{
/*用户代码 begin (5)*/
.intvecs :{} palign=32 > vectors.
.text :{} palign=8 > flash
.const :{} palign=8 > flash
.cinit :{} palign=8 > flash
.pinit :{} palign=8 > flash
/*用户代码结束*/
.bss :{}>RAM.
.data :{}>RAM.
.sysmem :{}> RAM.
}
尊敬的 Veena:
我怀疑这是下面提到的类似问题、请在下面的线程中参阅我的评论、以便解决此问题。
(+) TMS570LC4357:以太网引导加载程序-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
——
谢谢、此致、
Jagadish。
Jagdish、您好!
我已经完成了以下主题中提到的步骤:) TMS570LC4357:以太网引导加载程序-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
当我在 0x00200000处设置应用 B 时、使用链接器生成 ECC 进行加载时似乎没有错误。 我 使用链接器生成的 ECC 将应用 B 更改为从0x00220000开始时收到加载错误。 如果我打开了自动 ECC、则似乎.load 中没有错误。
尊敬的 Veena:
.当 我的应用 B 位于 0x00200000时、加载链接器生成 ECC 时似乎没有错误。 我 使用链接器生成的 ECC 将应用 B 更改为从0x00220000开始时收到加载错误。 如果我打开了自动 ECC、则.load 似乎没有错误。
这对我来说很奇怪,
是否可以设置一个实时调试会话以更好地了解问题并提供我的建议?
——
谢谢、此致、
Jagadish。
Jagdish、您好!
由于无法设置实时会话、我可以尝试再次解释问题。
如果我在0x00200000处加载一个应用、从组2开始、禁用自动 cc 并启用链接器生成的 ECC、似乎可以成功使用 CCS 进行擦除/编程。
在某个用例中、我们需要在0x00220000处加载应用、该应用不是组2的开头。当我在 CCS 中启用自动 ECC 并禁用链接器生成的 ECC 时、这个用例效果很好。
但当我启用生成的链接器时、好像构建正常、但当我使用 CCS 刷写软件时、禁用自动 ECC、好像失败了。 从错误 msg 中:无法加载 0xf0483f7f 的闪存组 -我怀疑0xf0483f7f 与 链接器 cmd 文件中计算的 ECC 相关、并正在超出闪存 ECC 范围(0xF0000000 - 0xF047FFFF)、因此会失败。 因此、我需要帮助查看上面提供的链接器 cmd 是否有错误、或者在您的结尾尝试相同的链接器 cmd 文件以查看您是否可以重现问题。