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.

[参考译文] RM46L852:RM46引导加载程序闪存 F021闪存 API 相关问题

Guru**** 2124260 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1466767/rm46l852-rm46-bootloader-flash-f021-flash-api-related-issues

器件型号:RM46L852

工具与软件:

我一直使用 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:

    正如我们在本次调用中讨论的、

    请尝试使用以下代码进行测试:

    (+)[常见问题解答] TMS570LC4357:适用于 Hercules 控制器的示例和演示(例如 TMS570x、RM57x 和 RM46x 等)-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    在该代码中、我将尝试写入 API 例程正在执行的同一组(组0)、在这里、我们要在执行 FAPI 例程之前将它们复制到 RAM。 这是经过测试的代码、因此也请尝试对代码使用相同的方法来避免数据中止。

    ——
    谢谢、此致、
    Jagadish。