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:无需 CCS 和源代码即可进行编程

Guru**** 2939240 points

Other Parts Discussed in Thread: C2000WARE, TMDSCNCD28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/955287/tms320f28379d-programming-without-ccs-and-source-code

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARETMDSCNCD28379D

您好!

我们在其中一款产品中使用了28379D 微控制器。

如果我们必须在产品处于客户状态时进行软件更新,如何继续?
是否可以在没有 Code Composer 和源代码的情况下对 DSP 进行编程?

可能使用其他软件? 或者使用另一种格式的源代码?
我们可以使用微控制器的 USB 功能吗?

感谢您的回答。  

此致、

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

    您好!  

    串行闪存编程器和 SCI 闪存内核可对此提供帮助。 您可以在 C2000Ware 中的 C2000Ware_x_xx_xx_xx\utilities\flash_programmers\serial_flash_programmer 中找到串行闪存编程器实用程序、 并在 C2000Ware_x_xx_xx_xx\device_support\f2837xd\examples\dual\F2837xD_sci_flash_kernels 中找到 F2837xD 的闪存内核项目

    有关如何使用 SCI 闪存内核和串行闪存编程器的信息、请参阅 ti.com/lit/sprabv4  

    此致、

    Anu

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

    尊敬的 Anu:

    感谢您的回答。

    我已经阅读了 sprabv4应用手册、但我们无法这样做。  
    如果我们要求客户加载新的软件版本、这就太复杂了。

    是否还有其他方法可以继续? 我不知道,使用 USB 到 JTAG 仿真器,微控制器的 USB 功能,... ?

    此致、

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

    我们可能无法正确理解您的要求/用例。 上文所述的 Anu 通常是部署后现场执行固件更新的方式。 它们不使用 CCS 或 JTAG。 主机会随要下载的新固件映像发送固件更新命令。 上面的应用手册使用 SCI 对其进行了说明、但它也可以是 USB、CAN 或其他。

    请告诉我们。

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

    您好!

    如果我不清楚、我很抱歉。

    如果要进行固件更新,我只想:

    • 将新固件更新发送给客户(例如通过邮件)
    • 例如、他将此图像复制到 USB 闪存盘上
    • 他将 USB 钥匙插入微控制器
    • 按下按钮(例如)后、更新完成

    我只是不希望客户在 MCU 上插入笔记本电脑并使用软件更新固件。

    我不知道我是否更清楚、是否可能?

    谢谢、

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

    当您说"他将 USB 钥匙插入微控制器"时、我不知道它在生产环境中是如此简单。

    根据微控制器针对的应用、例如数字电源或电机控制、您甚至可能无法实际访问微控制器板。 通常、客户要做的是、使用可用外设(例如 SCI、USB、CAN)之一提前开发固件更新机制、这是一种从外部主机(如 PC)传出的通信通道 或者、我认为它甚至可以是另一个负责发出固件更新命令的主机微控制器。 最后、如果您必须将其分解为非常简单的步骤:

    1.准备新的固件映像

    2.您与客户共享(邮件/电子邮件/在线等)

    3.客户的计算机上有新映像。 他们将固件更新命令直接从计算机运行到微控制器、或者有某种方法将此映像传输到主机微控制器、主机微控制器将运行固件更新命令并更新微控制器固件。

    因此、我认为您需要在特定情况下仔细考虑这一点的细节。

    谢谢、

    Sira

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

    您好,Sira,

    感谢您的回答。

    如果我创建固件映像并将其复制到 USB 闪存盘上、我只想知道是否可以使用 MCU 的 USB 功能读取该映像、然后对闪存进行编程。

    我目前使用 SD 卡和 SPI 总线来实现它、它可以正常工作。

    希望我清楚。

    此致、

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

    是的、通常、您也可以使用 USB 外设来更新微控制器固件。 您将需要一个用于微控制器的 USB 闪存内核(引导加载程序)。 我们提供了适用于各种器件的 SCI/CAN/USB 内核的示例。 我们为以下器件提供了该功能:

    • SCI (F2802x、03x、05x、07x、37xS、 37xD、004x)
    • CAN (03x、06x)-\device_support\f2806x\examples\c28\f28069_CAN_flash_kernel、 \device_support\f2803x\examples\c28\F2803x_CAN_flash_kernel
    • USB (37xD)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。

    您能告诉我示例和文档的位置吗? 我在 C2000中找不到任何内容。
    我使用 F28379D MCU。

    此致、

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

    C:\ti\c2000Ware_3_03_00_00\device_support\f2837xd\examples\dual\F2837xD_USB_flash_kernels

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

    您好,Sira,

    最后一个问题;如果我使用 USB 闪存内核,我的引导模式引脚状态(GPIO72和84)在重新编程期间或之后是否必须改变?
    因为当前、引脚状态为 GPIO72 = GPIO84 = 1 (Get Mode (默认为 Flash)))

    谢谢你。

    此致、

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

    对我来说,我们不必这么做;正如我所解释的,目前我正在使用 SPI 总线读取 SD 卡,我在闪存中写入这些值,然后重新启动 MCU。 并且引导模式相同(默认为闪存)

    我想对 USB 执行同样的操作;只需读取 USB 闪存盘上的值、将其写入闪存并重新启动 MCU。

    因此、对于我来说、我不需要更改引导模式。

    此致、

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

    有几种方法可以做到这一点。 一种方法是在 USB 引导模式下引导、USB ROM 引导加载程序将运行并将 USB 闪存内核下载到 RAM、并将控制传输到 RAM。 然后、RAM 中的 USB 闪存内核将您的应用程序下载到闪存。

    另一种选择是将 USB 闪存内核置于闪存中的专用扇区中、然后您可以始终在闪存引导中引导。 让引导至闪存入口点在 USB 闪存内核中输入所需的函数、这将引导应用程序或允许通过 USB 进行固件升级。

    谢谢、

    Sira

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

    您好,Sira,

    [引用用户="Sira Rao80"]

    另一种选择是将 USB 闪存内核置于闪存中的专用扇区中、然后您可以始终在闪存引导中引导。 让引导至闪存入口点在 USB 闪存内核中输入所需的函数、这将引导应用程序或允许通过 USB 进行固件升级。

    [/报价]

    是的,这是一个选项,但这意味着每次微控制器启动时,入口点都是 USB 闪存内核中的功能,您是否同意?

    只有当客户希望更新固件时、我才需要此案例、每次我们重新启动时、都不需要此案例。

    如何继续?

    非常感谢您的支持。

    此致、

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

    是的、您说得对、这就是您可能希望使用的第一种方法的原因、我在下面再次粘贴:

    "在 USB 引导模式下引导、USB ROM 引导加载程序将运行并将 USB 闪存内核下载到 RAM、并将控制权转移给 RAM。 然后、RAM 中的 USB 闪存内核将您的应用程序下载到闪存。"

    因此、当您想要升级固件时、您将以 USB 引导模式(将 GPIO 引导模式引脚更改为 USB 引导)引导、当您想要从闪存运行应用程序时(正常操作、将 GPIO 引导模式引脚保持在闪存引导状态)。

    谢谢、

    Sira

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

    您好!

    好消息。

    是否可以通过 Soft 更改引导模式? 还是只能通过硬件实现?

    此致、

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

    可能、请参阅 spracn1。 另请参阅 sprabv4 (我认为我已经指向您)。

    谢谢、

    Sira

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

    好的、非常感谢。

    这是本帖子的最后一个问题:

    对于 TMS320F28004x 微控制器,我们可以使用此硬件。

    • 默认情况下、引导模式为 GPIO15 = 0 (闪存模式)
    • 当我想使用 SCI 引导模式时、我们必须为电容器充电至少50µs μ F (GPIO15 = 1)、将 MCU 复位、并且引脚返回到输入、它可以驱动足够长的时间、以便引导代码将其读取为高电平。

    明白。

    但在我的情况下,我需要相反的:

    • 默认情况下、引导模式为 GPIO72=1 (闪存模式)。 我将使用一个上拉电阻器。
    • 当我想使用 SCI 引导模式时、我需要 GPIO72=0。 如果我在复位前在软件中设置 GPIO72=0、MCU 是否会在 SCI 引导模式下引导?

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

    让我检查一下并返回给您。

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

    好的、等待您的回答。

    谢谢、

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

    正如我对这一点的更多看法一样、我不确定这是否起作用。 一旦您复位器件、上拉电阻器将再次将 GPIO 提升为高电平。 因此、它将再次以闪存模式本身引导。 必须有一些电容效应才能使其正常工作。

    为什么不使用此处建议的确切方法? GPIO72、84是默认值、但您始终可以自定义、如本应用手册所示。

    谢谢、

    Sira

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

    您好,Sira,

    因此、如果默认情况下我希望闪存引导以实现正常运行、那么我需要在 GPIO72和 GPIO84上设置高电平(具有上拉电阻)。

    如果我想使用 USB (SCI)引导模式升级固件,我可以继续而不更改硬件吗?

    这就是我在应用手册中理解的内容:

    这里有几个选项。 第6.3节中提到了一些内容-器件可在闪存引导模式下启动以实现正常运行、并在 SCI 引导模式下启动以进行固件升级。 用户将需要设计一个允许更改引导模式选择引脚设置的方案。 或者、用户可以决定只使用闪存引导模式、然后在软件中分支到 SCI 引导函数。 这可以通过 IO 触发器或主机命令来实现、作为调用 SCI_Boot()函数的提示。 这种方法的优点是用户无需更改引导模式选择引脚设置。 请注意、在这种情况下、不会调用 SCI ROM 引导加载程序。

    您可以确认吗?

    谢谢你

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

    这实际上是特定于实现的。 我认为客户的做法有所不同。 例如、一旦您在闪存引导中引导、入口点就可以进入自定义引导加载程序(闪存内核)中的函数中。 在这里、它可以测试 GPIO 引脚以检查是否需要进行固件更新。 或者、它可以等待一小段时间来查看主机是否发送固件更新命令。 如果发生上述任一情况、它可以运行固件更新。 否则、它可以分支到应用程序的入口点、通常在这里会发生到 C 初始化例程(_c_int00)的分支、并且从这里调用应用程序的 main()。

    谢谢、

    Sira

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

    好的、谢谢。

    因此,在我的情况下,如果我想使用 USB 外设(例如 USB 闪存盘)进行固件更新,我的 MCU 必须处于主机模式,或者它可以处于设备模式? (我将读取 USB 闪存盘上的文件以进行更新)。

    我使用的是 F2839D 的 PTP 封装、引脚 USB0PFLT 和 USB0EPEN 不可用。

    它可以在设备模式下工作吗?

    谢谢你。

    此致

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

    我不确定我是否理解这个问题。 我不知道主机/设备模式? 您能详细说明吗?

    我对您的方案的理解是、主机将通过 USB 将固件发送到 F28379D 器件。

    谢谢、

    Sira

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

    很抱歉、我不清楚。

    是的,根据 TMDSCNCD28379D 控制卡的原理图,我想进行固件更新:  

    带有固件映像的 USB 闪存盘将插入 USB 连接器(在原理图 J8上)。 MCU 必须读取此映像并执行固件更新。

    您是否清楚?

    我有两个问题:  

    • 我使用的是 PTP 封装(176引脚)、红色引脚(USB0-EPEN 和 USB0_PLFT)不可用。 是否为必填项?
    • 我是否必须使用整个方案?

    感谢您的支持。

    此致、

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

    我将向 USB 专家重新分配此问题以帮助您。

    谢谢、

    Sira

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

    您好!

    好的、等待您的回答。

    此致、

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

    您好!

    USB 引导加载程序不能与 USB 钥匙/笔驱动器配合使用。  USB 引导加载程序充当器件、要与海量存储类一起运行、它需要作为主机运行。

    如果您仍然想使用 MSC 更新固件、可以查看 USB_EX7_HOST_msc 示例、从 USB 海量存储读取数据、然后使用读取的内容更新固件。

    希望这对您有所帮助。

    此致

    Siddharth

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

    您好 Siddharth、

    如果要使用 USB 闪存盘更新固件,我必须作为主机运行?

    因此,采用 PTP 封装(176引脚)时,不可能? ((USB0-EPEN 和 USB0_PLFT 不可用)

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

    您好!

    是的、在主机模式下、USB 控制器负责为总线供电。  

    EPEN 信号用于使能或禁止为 USB 连接器上的 VBUS 管脚供电。

    PFLT、当 VBUS 上出现电源故障时提供反馈。  

    此致

    Siddharth

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

    您好!

    因此,我唯一的解决方案是将 MCU 封装更改为具有这些信号?

    此致

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

    是的,在 PTP 封装上,这些信号不可用。

    此致

    Siddharth