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.

[参考译文] TMS320F28379D:闪存 API F021_F2837xD/F2837x_C28x

Guru**** 2563960 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1564598/tms320f28379d-flash-api-f021_f2837xd_c28x

部件号:TMS320F28379D


工具/软件:

您好:

在“独立“项目中、我使用 API F021_F2837xD/F2837x_C28x 在闪存中进行写入。 一切都很好。

但在我的应用中尝试此方法时、我遇到了问题。

我 通过在我的主要例程开始时调用我的函数来隔离问题。

-包含闪存写入的函数写入闪存 G

-它被复制在 RAM LS3 中。 它从 LS3 执行。

这些屏幕截图是在运行 main 之前以仿真模式拍摄的。

当我运行我的程序时、我进入了一个陷阱:

此外、在查看闪存 G 时、我看到其容器已更改:

LS3 的容器也更改了:

对于此测试、我注释了在闪存中进行的任何写入、并让初始化:

此外、在下面可以看到我的链接器命令文件:

有人知道我犯的错误吗?

谢谢你。

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

    您能否附加在构建工程时生成的.map 文件?

    由于您已将 TI.ramfunc 用作 BINIT 表、因此在启动过程中、此部分代码将自动从闪存复制到 RAM。  虽然我在您附加的代码中看不到该函数、但无需在您的代码中调用 memcopy 函数、我不确定这是否会覆盖某些内容、如果您调用它、会等等。

    闪存 API 函数调用是否获取了您看到的覆盖地址?  已向闪存写入内容、由于 CCS 没有执行此操作、我认为这是您的代码流。

    此致、

    Matthew

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

    您好 Matthew、

    感谢您的回答。

    由于您将 TI.ramfunc 用作 BINIT 表、因此这部分代码将在启动过程中自动从闪存复制到 RAM。  虽然我在您附加的代码中看不到它、但不需要在您的代码中调用 memcopy 函数、我不确定这是否会覆盖某些内容、如果您正在调用它、会等等。

    对我来说没关系。  

    链接器命令文件指定使用 BINIT 表。 因此、您是对的、无需在代码中手动执行 memcopy。 但我需要生成符号 RamfuncsLoadStart、 RamfuncsLoadSize ...等等、只是为了使文件 F2837xD/sysctrl.c 可编译(即使函数 InitSysCtrl (void) 在我的代码中没有调用)

    您能否附上在构建项目时生成的.map 文件?

    当然,我希望你能找到一些东西来帮助我。 请在附件中找到它(我必须将其放入 zip 文件中、因为此类文件未在 formum 中获得授权)

    e2e.ti.com/.../5100.led_5F00_ex2_5F00_sysconfig_5F00_cpu1.zip

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

    你好 Matthew ,除了我几天前发送给你的地图文件,让我分享一个结果。 我不知道我能不能帮你。

    我只是想改变我想写的活跃的 Flask 银行。

    我必须说,我不知道闪存的映射(在 stanalone 项目上,我把 bank0 扇区 N 和它的工作)

    我在这里选择银行 1:

    在执行期间没有异常、但我的函数返回 2。 因此、我想银行激活存在问题。

    我希望我很快会告诉你

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

    您好 Matthew、

    只需一个字来确认:

    在函数 writeToFlash 中、这是使异常发生的 Fapi_setActiveFlashBank。

    另外、我在应用程序开头的最上面调用了这个函数:

    在这种情况下、一切正常:

    同样的测试在代码中进一步(但在主循环之前)会导致崩溃、如所述。

    可以帮帮我吗?

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

    Vincent、

    对于此器件、为双核 F2837x (F28379) D) 、每个核心只有一个可用的组。  

    从任一内核中、应始终 在您的 Fapi_Flash 调用中将活动组设置为 API 组 0。  由于该函数未返回“成功“、因此 API 在这种情况下捕捉到了此问题。

    我想我看到了这个问题

    上一行;将.data 段分配给组合的 LS2/LS3 存储器;但稍后您提到的 LS3 将复制到闪存 API。

    查看地图文件 RAMLS2 仅使用 其 800H 大小的 17Eh、对于上面的行、我只会删除“| RAMLS3“中应该有足够的空间用于数据 var。

    如果这样可以解决问题、请告诉我。

    此致、

    Matthew   

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

    您好 Matthew、

    我真的不知道该说什么...在第一次测试中、您的建议没有解决问题。 然后,试图说明我的问题,我不知道我改变了什么,但项目开始工作。

    所以、最后、我希望我不再有任何问题。 并且、我通过删除“|LS3"更改“更改了应用程序中的 cmd 文件

    我真的很感谢你。 我关闭了这张票、希望它不会浪费您太多的时间。

    Vincent。