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/LAUNCHXL-F28377S:向闪存写入代码时出现问题

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/622352/ccs-launchxl-f28377s-problem-writing-code-to-flash

器件型号:LAUNCHXL-F28377S

工具/软件:Code Composer Studio

对 F28377S 使用 CPU1_FLASH 配置时遇到问题。

当我编译代码并将其写入 MCU 的 RAM 时、所有代码都按预期执行。 但是、尝试将代码写入闪存会导致我的程序运行到工作簿中。

代码按预期执行、直到内存地址0x0823a7

0823a7:  0203       MOVB        ACC、#3
0823a8:  76408131   LCR         SYSCTL_DELAY
235        //如果检测到 MCD 故障,请勿继续执行 PLL 初始化。
0823aa:  7622       EALLOW   

它从那里跳到

3fe493:  7625       ESTOP0       

RAM 配置的相应汇编器代码如下所示

000322:  0203       MOVB        ACC、#3
000323:  7640013C   LCR         SYSCTL_DELAY
235        //如果检测到 MCD 故障,请勿继续执行 PLL 初始化。
000325:  7622       EALLOW  

并顺利执行。

相关的 C 代码

   //
   //检查参数。
   //
   assert (((config & SYSCTL_OSCSRC_M)!= SYSCTL_OSCSRC_M);// 3无效

   //
   //如果检测到 MCD 故障,请不要继续执行 PLL 初始化。
   //
   if (sysctl_isMCDClockFailureDetected ()))(if (sysctl_isMCDClockFailureDetected ()

和属于 f2837xs driverlib 中提供的文件 sysctl.c。

有人对这里的情况有什么想法吗?

此致、

Patrick Sl舵 柄

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

    该错误是由于 CPU1_FLASH 配置中的'SysCtl_DELAY'函数代码不可用。
    在 RAM 配置中、SYSCTL_DELAY 位于 RAM 部分中。
    在闪存配置中、代码应该已经被复制到一个 RAM 位置。

    您能否检查以下代码是否正在作为器件初始化的一部分执行?

    ->memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);

    如果执行上述代码、则 RAM 函数被复制到0x8000。
    在您的情况下、存储器位置(0x8000)可能会填充0。 请检查一次存储器位置0x8000 - 0x8800。

    注意:如果在 CCS 工程属性->"预定义符号"中定义了符号'_flash'、则会启用代码。

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

    结果、我在尝试初始化时钟后尝试执行 memcpy 命令。 移动代码、使其在时钟初始化之前执行、可以解决该问题。