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.

[参考译文] CCS/RM46L852:在 CCS RM46中刻录代码。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/581089/ccs-rm46l852-burning-a-code-in-ccs-rm46

器件型号:RM46L852
主题中讨论的其他器件:HALCOGEN

工具/软件:Code Composer Studio

您好!

我想在 RM46中刻录代码。 我正在使用 Code Composer Studio。 当我运行(调试) CCS 中的代码时、它将保留在 MCU 中。但 当我拔下 MCU 时、它会被擦除。 如何将代码刻录到 MCU 中、以便以后插入时代码仍保留在 MCU 中。 谢谢

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

    如果您未使用 BMMCR1中定义的存储器交换功能、程序存储器(闪存)从地址0x00000000开始。 CCS 中的"加载程序"将从0x0开始将代码刻录到闪存中、代码将驻留在闪存中、直到您擦除闪存。

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

    您好!

    我刚制作了一个项目、正如 Halcogen 示例中定义的那样。我对 BMMCR1不了解。您能指导我如何操作吗? 谢谢

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

    您不需要此功能。 CCS 应该编译/连接 HalCoGen 生成的项目而不会出现任何问题。 通过 JTAG 连接电路板后、使用"load program"(加载程序)(在运行下拉菜单下)加载*。out 文件、CCS 将将代码编程到闪存、而不是 SRAM。 闪存内容将一直存在、直到您擦除闪存。

    您使用的是哪个 CCS 版本?

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

    我使用的是 CCS 6.1.3。 我在 CCS 论坛中发布了 sys_link.cmd 文件、他们说 您的代码、常量和 init 都将进入闪存。 ä μ A

    但它不起作用。

    我还得到了这个...

    "CortexR4:GEL 输出:由于系统复位、闪存的存储器映射设置@地址0x0"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 HDK 板上的 RM46L852ZWTT 遇到类似的问题。 昨天、我有两个不同的版本在工作。

    当我今天添加代码(一些 FreeRTOS 和其他一些东西)时、我开始看到[Address 0x0 Due to system reset]消息。

    我愿意倾听解决方案的步骤。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否检查内存映射并确保其已设置为正常运行。 即、未设置从 RAM 执行。

    此外、可以肯定的是、在脚本下运行 GEL 脚本"Target_Flash_TO_0x0"、以确保器件已设置为从闪存而不是 RAM 执行。

    您还可以运行 GEL 脚本"CCS_MemMap_flash_at_0x0"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    添加更多代码后、行为似乎发生变化/失败。 我是否接近 RM46 HDK 的某个物理限制

    在使用三个诊断步骤中:
    将调试器设置为详细。
    有时使用演示工具复位器件。
    将 fill 语句添加到存储器设置中。

    我在调试下载过程中开始看到一致的故障

    CortexR4:擦除闪存组0、扇区14
    CortexR4:验证 Flash @地址0x000F8630的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00100620、长度0x00007ff0
    CortexR4:验证闪存@地址0x00100620的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00108610、长度0x00007ff0
    CortexR4:验证 Flash @地址0x00108610的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00110600、长度0x00007ff0
    CortexR4:验证闪存@地址0x00110600的长度为0x00007FF0
    CortexR4:写入 Flash @地址0x001185f0、长度0x00007ff0
    CortexR4:擦除闪存组0、扇区15
    CortexR4:验证闪存@地址0x001185F0、长度为0x00007FF0
    CortexR4:写入 Flash @地址0x001205e0、长度0x00007ff0
    CortexR4:验证 Flash @地址0x001205E0的长度0x00007FF0
    CortexR4:写入 Flash @地址0x001285d0、长度0x00007ff0
    CortexR4:验证 Flash @地址0x001285D0、长度0x00007FF0
    CortexR4:写入 Flash @地址0x001305c0、长度0x00007ff0
    CortexR4:验证闪存@地址0x001305C0的长度0x00007FF0
    CortexR4:写入 Flash @地址0x001385b0、长度0x00007ff0
    CortexR4:文件加载程序:存储器写入失败:地址0x14059f 不映射到有效的闪存组
    CortexR4:GEL:文件:C:\Users\994607\workspace_v7\NeilRM46\Debug\NeilRM46.out:加载失败。
    CortexR4:GEL 输出:由于系统复位、闪存@地址0x0的存储器映射设置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    RM46具有1.25MB 的闪存。 起始地址和结束地址为0x00和0x14_0000。 地址0x14059f 超出范围。 您可能会使用错误的链接器命令文件。

    /*------------------ *

    /*链接器设置                               *

    --retain="*(.intvecs)"

    /*内存映射                                 *

    存储器{

      引导程序(X) :origin=0x00000000 length=0x00000020

      FLASH0 (RX):origin=0x00000020 length=0x0013FFE0

      堆栈 (RW):origin=0x08000000 length=0x00001300

      RAM  (RW):origin=0x08001300 length=0x0002ED00

    /*------------------ *

    /*段配置                            *

    剖面{

      .intvecs:{}>向量

      .text  :{}> FLASH0

      .const :{}>FLASH0

      .cinit :{}> FLASH0

      .pinit :{}> FLASH0

      .bss  :{}> RAM

      .data  :{}> RAM

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我看到您说的是什么。 支持 FreeRTOS 似乎需要更改这些设置以支持内核区域。 最好知道闪存中的0x140000限制。 是否有一种好的方法来打破较大程序的闪存限制?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尼尔

    您可以在构建过程中生成的.map 文件中检查代码的代码大小、并将其与您正在使用的器件的数据表相匹配。 如果您使用的是填充选项、它将填充链接器命令文件存储器部分中定义的整个闪存。 这些值还应与适用数据表中定义的闪存大小匹配。 如另一个主题中所述、还请确认在目标配置中选择了正确的器件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我更正了命令文件。  初始化闪存后、我仍然看到复位、但我不认为(现在命令文件正确)复位是由闪存引起的。  在正确设置后可能会发生这种情况。

    CortexR4:写入 Flash @地址0x0013fda0、长度0x00000260

    CortexR4:验证 Flash @地址0x0013FDA0的长度0x00000260

    CortexR4:GEL 输出:由于系统复位、闪存@地址0x0的存储器映射设置

    这是我的存储器映射的一部分、底部可能有一些线索。  

    秘书长的报告
                     TI ARM 连接器 PC v16.12.0                    
    秘书长的报告
    >> 2017年7月12日08:52:07链接

    输出文件名:   
    入口点符号:"_c_int00" 地址:0000fa70


    存储器配置

            名称           源   长度     使用    未使用  的属性   填充
    ------------  ----  ------  ----  ----  --------  
     向量              00000000  00000020 00000000 00000020    X
     FLASH0               00000020  0013ffe0 0013ffe0 00000000 R X ffFFFF
     堆栈               08000000  00001300 00000000 00001300 RW  
     RAM                  08001300  0002ed00 00004677 0002a689 RW  


    段分配映射

    运行 origin load origin  length  init length atts members
    ------  ------ ------ ------ ---- ----
    00000020   00000020   0013ffe0  0013ffe0   r-x
     00000020   00000020   00011bec  00011bec   r-x .text
     00011c0c   00011c0c   00000bbe  00000bbe   r-.const
     000127ca   000127ca   00000006  00000006   r-$fill000
     000127d0   000127d0   000001c8  000001c8   r-.cinit
     00012998   00012998   0012d668  0012d668   r-$fill001
    08001300   08001300   00004678  00000000   Rw-
     08001300   08001300   00002000  00000000   rw-.kernelHEAP
     08003300   08003300   00001114  00000000   rw-.bss
     08004414   08004414   00000d63  00000000   rw-.data
     08005178   08005178   00000800  00000000   rw-.sysmem


                              
    08005168 CAN_Buf_Rx_head                             
    08005169 CAN_BUf_Rx_cnt                              
    0800516a CAN_Buf_TX_Tail                             
    0800516b CAN_Buf_TX_cnt                              
    0800516c MaxSaved                                    
    08005178 _sys_memory                                 
    FFFFFFFF __TI_pprof_out_hndl                         
    FFFFFFFF __TI_PRof _DATA_SIZE                         
    FFFFFFFF _TI_PROD_DATA_START                        
    FFFFFFFF __binIT__                                   
    FFFFFFFF __c_args__                                  
    FFFFFFFF 二进制文件                                       
    UNDEFED  SHT$$INIT_RAGE$$Base                       
    UNDEFED  SHT$$INIT_ARRAGE$$LIMIT                      

    [681个符号]

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

    已解决:地址0的复位与 sys_link.cmd 设置和构建大小有关。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴听到 Neil 的讲话。 请随时验证您的答案、这样该主题将被正式关闭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这个线程属于其他人。 我在这里发布、因为行为似乎匹配。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没问题、Neil。 希望您的体验和解决方案也能帮助您完成原始海报。