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.

[参考译文] 编译器/RM48L952:需要有关 RM48L952 UART 引导加载程序的帮助

Guru**** 2442090 points
Other Parts Discussed in Thread: RM48L952, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/619868/compiler-rm48l952-need-help-on-rm48l952-uart-bootloader

器件型号:RM48L952
主题中讨论的其他器件: UNIFLASH

工具/软件:TI C/C++编译器

您好!

 我已下载引导加载程序软件 RM48L952。 我`m 擦除闪存

请分享使用中的 Hercules RM48L952  引导加载程序源代码。

此致、

Murali

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

    我已将您的帖子转发给我们的引导加载程序专家之一。 他们很快就会回来。 同时、当您尝试擦除时、您会遇到什么错误? 即、当您调用擦除返回时、它应该返回一个状态值、指示成功或失败以及原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的卡盘:

    我们正在等待支持、我们使用可用的示例代码尝试了很多方法、但即使使用闪存 API 代码进行闪存擦除和写入也无法正常工作、我们按照应用手册的说明进行操作。
    等待快速响应技术问题。

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

    应用手册中包含的代码是经过验证的工作代码、因此您所遵循的流程中必须存在一些差距、我们需要确定这些差距。

    首先、您能否提供有关代码中任何状态返回值的详细信息。 也就是说、当你发出闪存擦除命令时、它返回操作状态的代码是什么? 您确定编程代码是否被适当地复制到 RAM 中? 在尝试擦除同一个内存组时、不能从同一个内存组执行、因此必须确保执行来自单独的内存组或 RAM。

    此外、对于迟迟未能提供答案、我深表歉意、我们的 Hercules 支持团队位于德克萨斯州休斯顿、您可能听说在飓风 Harvey 之后、休斯顿遭受了暴雨和洪水的破坏。 我们正在开始恢复并能够提供支持、但请注意、获得答案的延迟可能比正常的时间长。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Murali、

    您是否查看过此应用手册及其引用的示例代码?

    www.ti.com/.../spna190
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    卡盘、

    1)我们已经完成了应用手册。
    2) 2)我们将引导加载程序代码写入 FLASH0、将应用程序代码写入 FLASH1、并检查了使用 Uniflash 写入相应闪存组的引导加载程序应用程序代码。
    3)在引导加载程序代码中、我们将在以下指令中提供结束代码、因此引导加载程序会跳转到应用程序代码

    JumpAddress =(uint32_t) app_start_address;// app_start_address =0000dccc ("_c_int00"地址:0000dccc)
    ((((void (*.)(void)JumpAddress)();

    systemREG1->SYSECR = 0;//用于软件复位,因此它将转至应用程序代码。

    引导加载程序链接器文件内容:
    /*------------------ *
    /*链接器设置 *
    --retain="*(.intvecs)"
    /*------------------ *
    /*内存映射 *

    存储器

    /*用户代码开始(2)*/
    向量(X):fill=0xFFFFFFFF origin=0x00000000 length=0x00000020
    BOOT_LOAD(RX):fill=0xFFFFFFFF origin=0x00000020 length=0x00007FE0
    FLASH0(RX):vfill=0xFFFFFFFF origin=0x00008000 length=0x00178000
    FLASH1(RX):vfill=0xFFFFFFFF origin=0x00180000 length=0x00180000

    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM(RW):origin=0x08001500 length=0x0003EB00
    /*用户代码结束*/


    部分

    /*用户代码开始(4)*/
    .intvecs:{}>向量

    .text:{}> FLASH0
    .const:{}>FLASH0
    .cinit:{}> FLASH0
    .pinit:{}> FLASH0

    stack:{}> stacks

    .bss :{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM
    /*用户代码结束*/


    应用代码链接文件内容:
    /*------------------ *
    /*链接器设置 *
    --retain="*(.intvecs)"
    /*------------------ *
    /*内存映射 *

    存储器

    //vectors (X):origin=0x00000000 length=0x00000020
    引导程序(X):origin=0x00180000 length=0x00000020
    FLASH0 (RX):origin=0x00000000 length=0x00180000
    FLASH1 (RX):origin=0x00180020 length=0x0017FFE0
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0003EB00

    /*用户代码开始(2)*/
    /*用户代码结束*/

    /*------------------ *
    /*段配置 *

    部分

    /*用户代码开始(4)*/
    .intvecs:{}>向量
    .text:{}> FLASH1
    .const:{}>FLASH1
    .cinit:{}>FLASH1
    .pinit:{}>FLASH1
    .bss :{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM
    /*用户代码结束*/


    当前应用程序未由 MCU 执行。

    请告诉我在链接器文件配置过程中出现的任何错误。

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

    我将把您的帖子转发给我们的引导加载程序专家、看看他们是否可以提供任何帮助。 我的初步观察结果之一是中断矢量不能重定位到 bank1。 它们必须位于地址0。 这是 CPU 的一项要求、但我认为您在某种程度上取决于您在哪个模式下操作 VIM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Murali、

    您的应用程序位于0x180000、因此应用程序起始地址应为0x180000。 您还需要修改 int 矢量表(sys_intvecs.asm)

    b _c_int00;0x00
    b #0x180000-0x8
    b #0x180000-0x8 ;;软件中断
    B #0x180000-0x8 ;中止(预取)
    b #0x180000-0x8;;中止(数据)
    保留尝试
    b 保留尝试    
    LDR PC、[PC、#-0x1b0]
    LDR PC、[PC、#-0x1b0]