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.
工具与软件:
我一直使用 CAN 设计 RM46引导加载程序
让我直接指出,在将闪存 API 复制到 RAM 后,像 Fapi_initializeAPI ()和 Fapi_initializeFlashBanks ()这样的函数没有正确执行,没有运行,我需要在 liker 命令中添加更多的东西。
我在下面附加了链接器命令
非常感谢您的建议。
谢谢你
--retain="*(.intvecs)"
小程序
{
VECTORS (X):origin=0x00000000 length=0x00000020
Flash_API (RX):origin=0x00000020 length=0x000024E0
FLASH0 (RX):origin=0x00002500 length=0x002FEB00 //LS31x 且 RM48闪存大小为0x30000
SRAM (RW):origin=0x08002000 length=0x0002D000
stack (RW):origin=0x08000000 length=0x00002000
}
部分中)
{
.intvecs :{}>向量
闪存 API:
{
..\Release\F021_API\5280edFunctions.obj Fapi_User (.text)
..\Release\bl_flash.obj (.text)
--library= F021_API_CortexR4_LE_V3D16.lib < FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.SetActiveBank.obj
FlashStateMachine.InitializeFlashBanks.obj
FlashStateMachine.EnableMainSectors.obj
FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.ScaleFclk.obj
init.obj
utilities.CalculateEcc.obj
utilities.WaitDelay.obj
utilities.CalculateFletcher.obj
READ.MarginByByBybe.obj
Read.Common.obj
Read.FlushPipeline.obj
READ.WdService.obj
ASYNC.WithAddress.obj
program.obj >(.text)
} LOAD = FLASH_API、RUN = SRAM、LOAD_START (API_LOAD)、RUN_START (API_RUN)、SIZE (API_SIZE)
.text > FLASH0
.const > FLASH0
.cinit > FLASH0
.pinit > FLASH0
.data > SRAM.
.bss > SRAM.
}
尊敬的 Srividya:
以下是 RM46x 上经过测试的 CAN 引导加载程序示例:
e2e.ti.com/.../RM46x_5F00_CAN_5F00_Bootloader.zip
您能否将此示例作为参考并使用此示例验证您的代码?
——
谢谢、此致、
Jagadish。
感谢您的建议。
我在擦除操作后采用了相同的示例代码、如果我检查 FSM 就绪状态 是否正常、对于获取 FSM 状态(sm357Status())、Fapi_Get 结果为0x00004010
我在哪里 做错了
此致、
Sriviya
尊敬的 Srividya:
如果我检查 FSM 就绪状态 (正常)并获取 Fapi_Get 状态(FSM 4.24smStatus ();)、则在擦除操作后我采用了相同的示例代码、结果为0x00004010
可以使用相同的示例代码、因为它们是经过测试的示例。
是否有可能分享你的完整项目从我的终端测试,你也可以通过私人聊天发送它.
——
谢谢、此致、
Jagadish。
尊敬的 Jagadish:
下面是我的链接器命令文件、如果我的应用起始地址为0x40000表明我在何处操作有误、我的闪存擦除操作将导致一个未定义的错误。
--retain="*(.intvecs)"
小程序
{
VECTORS (X):origin=0x00000000 length=0x00000020
Flash_API (RX):origin=0x00000020 length=0x0003ffE0
FLASH0 (RX):origin=0x00040000 length=0x009FFE0 //LS31x 且 RM48闪存大小为0x30000
SRAM (RW):origin=0x08002000 length=0x0002D000
stack (RW):origin=0x08000000 length=0x00002000
}
/*用户代码 begin (3)*/
ECC
{
algoL2R4F021:address_mask = 0xfffff8 /*地址位31:3 */
Hamming_mask = R4 /*使用 R4/R5构建在掩码中*/
parity_mask = 0x0c /*设置哪些 ECC 位为偶数和奇数奇偶校验*/
镜像= F021 /* RM57Lx 和 TMS570LCx 是在 F021中构建的*/
}
/*用户代码结束*/
部分中)
{
.intvecs :{}>向量
闪存 API:
{
F021_API\F021Functions.obj (.text) Fapi_User
bl_flash.obj (.text)
库= F021_API_CortexR4_LE_V3D16.lib
} LOAD = FLASH_API、RUN = SRAM、LOAD_START (API_LOAD)、RUN_START (API_RUN)、SIZE (API_SIZE)
.text > FLASH0
.const > load = FLASH0、run = SRAM、load_start (Constloadstart)、RUN_start (ConstRunStart)、Size (ConstLoadSize)
.cinit > FLASH0
.pinit > FLASH0
.data > SRAM.
.bss > SRAM.
.sysmem : { }> SRAM.
FEE_TEXT_SECTIONS :{}> FLASH0
FEE_CONST_SECTIONS :{}> FLASH0
FEE_DATA_SECTIONS :{}> FLASH0
}
尊敬的 Srividya:
这对我来说似乎是可以的、
我们至少可以设置一个实时调试会话以便更好地理解代码吗?
我将于上午10点至晚上8点在 IST 举行、您可以根据您的空闲情况安排会议。
注:我不是明天工作(1月31日-25日)。
——
谢谢、此致、
Jagadish。
尊敬的 Srividya:
正如我们在本次调用中讨论的、
请尝试使用以下代码进行测试:
在该代码中、我将尝试写入 API 例程正在执行的同一组(组0)、在这里、我们要在执行 FAPI 例程之前将它们复制到 RAM。 这是经过测试的代码、因此也请尝试对代码使用相同的方法来避免数据中止。
——
谢谢、此致、
Jagadish。