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.

[参考译文] TMS320F28388D:具有单组 MCU 的 LFU

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F28388D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1282774/tms320f28388d-lfu-with-single-bank-mcu

器件型号:TMS320F28388D
主题中讨论的其他器件: C2000WARE


大家好!

我尝试使用  TMS320F28388D

没有适用于 TMS320F28388D 的 LFU 示例。

因此、我 尝试了解数字微控制器的 TMS320F28002x 。   其位置为"C:\xxxx\xxxx\C2000Ware_4_03_00_00\driverlib\f28002x\examples\flash\flash_kernel_ex3_sci_flash_kernel"

我对 LFU 有疑问。

但首先我需要  相应的应用示例- LED 闪烁(与闪存内核兼容)。  请与我分享一下吗?

(我看到了有关这个 问题的主题。 C2000Ware 中未发布相应的应用示例(LED 闪烁)

谢谢。
此致。
Mehmet.

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

    Mehmet,

    您指的示例将在下一个 C2000Ware 版本(计划于11月17日发布)中发布。

    如果您希望使用比这更早的示例、请向我发送一个 e2e 朋友请求、以便我可以向您发送消息以请求该链接。

    谢谢。

    Sira

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

    谢谢 Sira。

     我之前说过、我对 LFU 有疑问。
    这些问题与" flash_kernel_ex3_sci_flash_kernel " Project,位于 "C:\xxxx\xxxx\C2000Ware_4_03_00_00\driverlib\f28002x\examples\flash\"  

    1- 为"flash_kernel_ex3_sci_flash_kernel" 项目的可执行代码加载到闪存但从 RAM 运行?

    当我检查连接器命令文件时、我了解"flash_kernel"工程位于"flash_BANK0_SEC0"、但复制了"RAMLS4567"。

    这是通过 Device_init()函数的 memcpy 命令实现的。  

    更正我的错误。

    2-(虽然没有应用示例、但我认为是这样)   应用程序会加载到闪存中、但会从 RAM 运行吗?  

    如果"flash_kernel_ex3_sci_flash_kernel" 和应用程序同时驻留在闪存中但从 RAM 运行、 这种情况是否会导致 RAM 容量出现问题?

    3-  是否调用了 main()函数?  

    在"codestart"段有"bankSelect()"函数。

    "BankSelect ()" branches "most recent programmed bank" or "sciGetFunction ()"   

    我没有找到调用 main ()函数的人。  

    4- 为什么 LiveDFU()函数有独立的代码段?

    我认为,当需要软件更新时,应用程序代码会跳转到 LiveDFU()。  

    请更正我的错误。

    5- 为什么"ldfuLoad ()"和"ldfuCopyData ()"函数有单独的"#pragma code_section(....TI.ramfunc")限定符?

    整个 "flash_kernel"  工程的可执行代码已加载到闪存中、但从 RAM 运行。

    这些函数已经包含在"flash_kernel_ex3_sci_flash_kernel" 工程的可执行代码中。  

    为什么这些函数 也用 "#pragma code_section (...、".TI.ramfunc")限定符表示 ?

    它们是否已通过 RAM 工作?

     

    感谢您的关注。

    此致。
    Mehmet.

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

    1.正确、这是因为 F28002x 只有一个闪存组、其中驻留了闪存内核和应用程序。 当闪存内核擦除/编程应用程序时、它应驻留在 RAM 中、因为无法同时读取/写入闪存。 并非所有闪存内核都从 RAM 中运行、仅从其中一部分运行。 请参阅.TI.ramfunc 一节

    2.应用程序将编程为闪存

    3.闪存内核中的 bankSelect()将控制权传递给调用应用程序 main ()的 c_int00 (在 codestartbranch.asm 中)。

    4.正确、应用程序在收到固件更新命令时需要知道要分支到的固定地址。

    5.上文第(1)节对此作了解释。 这些是需要从 RAM 而不是整个闪存内核运行的特定函数。

    谢谢。

    Sira

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

    尊敬的 Sira:  
    感谢您的答复。

    表示问题2。  
    是的、我知道程序将编程到闪存中。 但从哪里运行?
    如果应用程序从闪存运行,如何闪存内核编程/擦除闪存? (代码执行和闪存编程不能在同一组中发生。)
    要提供"实时"更新, 应用程序和闪存内核必须同时运行。

    看看问题3。
    根据我的理解,bankSelect()函数有两个选项。
    1-分支到 sciGetFunction()。 和 等待 来处理 live_DFU_CPU1命令。
     分支到 应用程序所在的0x8EFF0。  

    bankSelect()函数将控制权传递给 c_int00吗?

    问题5的解决方案。
    请查看下面的链接器命令文件。  是否意味着整个闪存内核从 RAM 运行?


    根据线程、 此链接器命令文件 足以 将 整个应用程序代码从闪存复制到 RAM。  

     

    此致。

    Mehmet.

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

    正确、在实时更新期间、应用程序也需要从 RAM 运行、因为您将擦除/编程闪存。 如果你只有一个闪存组、并且应用程序大小足够大、以至于你只能在闪存中容纳一个应用程序版本、这是正确的。 但同样、只有闪存内核的相关部分需要从 RAM 中运行(正如我在前一篇文章中所描述的那样)、同样、只有应用程序的相关部分需要从 RAM 中运行(例如、任何定期调用并可能在实时更新期间调用的 ISR)。

    对0x8eff0的调用就是它转至 c_int00的方式

    不是的、这里提到的是闪存 API 库将从 RAM 运行。 请记住、为了从闪存复制到 RAM、用户仍需要在其代码中具有关联链接器符号的相应 memcpy。

    Summary ->需要闪存内核的一部分、应用的一部分以及整个闪存 API 库(包含在闪存内核中)才能从 RAM 运行。 对于单个闪存组 LFU 用例来说就是如此。

    谢谢。

    Sira