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:USB 编程和闪存启动

Guru**** 2511985 points
Other Parts Discussed in Thread: TMDSCNCD28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/892945/tms320f28379d-usb-programming-and-boot-on-flash

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

您好!

我目前正在使用 TMDSCNCD28379D 和 USB 电缆对我的芯片进行编程。

但是、在关闭/打开电源后、我想运行闪存中的程序。
因为如果我将开关更改为在闪存上启动、我就无法再使用 xds100v2仿真器了?

如何继续?

此致

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

    您好!

    当开关 A SW1处于关闭状态时、xds100v2仿真逻辑未连接到 MCU。 因此、您无法使用 xds100v2仿真器。

    https://www.ti.com/lit/ug/sprui76a/sprui76a.pdf

    您现在是如何对代码进行编程的? 它是否通过 xds100v2仿真器使用 JTAG?

    为什么从闪存引导后需要连接到 xds100v2仿真器?

    此致

    Siddharth

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

    您好 Siddharth、

    目前、我正在使用 USB 电缆进行编程。

    从闪存引导后,我不需要连接 xds100v2仿真器,我只想:

    -使用 USB 电缆进行编程
    -关闭/打开 电源
    -在闪存上引导

    是否需要遵循标准程序?(何时必须让我断开 USB 电缆? 更改开关位置?)

    谢谢你。

    此致

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

    您好!

    您可以按照以下顺序操作

    -使用 USB 电缆进行编程
    -关闭电源
    -拔下 USB 电缆
    -更改开关位置
    -打开电源
    -在闪存上引导

    此致

    Siddharth

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

    您好 Siddharth、

    我已经按照你的顺序执行了操作、但它不起作用。

    需要验证的所有要点是什么?

    硬件:
    A:SW1:位置1:打开至编程,在重新启动前关闭,位置2:关闭
    SW1:模式3 (GPIO-72 & 84=1):获取模式(默认为闪存)

    软件(Code Composer):
    要验证或设置的点是什么?

    编程后切换电源时、闪存上的引导不起作用。

    感谢你的帮助。

    此致、

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

    您好!

    也许您有一个在闪存上引导的程序示例?

    此致

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

    您好!

    使用 USB 编程的程序入口点的地址是什么?

    您可以在使用 CCS 和 xds1000v2仿真器进行编程后连接到器件、并验证程序是否已正确编程?

    您可以参阅 TRM 中的"引导状态信息"部分以检查 http://www.ti.com/lit/ug/spruhm8i/spruhm8i.pdf 引导状态

    此致

    Siddharth

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

    您好!

    在项目属性中、未指定入口点、因此我尝试使用 code_start、 但没有任何变化。  

    第一个问题是、是否有一个指南解释了 CCS 8的所有选项(例如、所有项目属性)、以及要使用哪些选项?

    您可以在使用 CCS 和 xds1000v2仿真器进行编程后连接到器件、并验证程序是否已正确编程?

    我不知道我是否理解;我可以使用 USB 电缆对器件进行编程并进行调试。
    如果我拔下 USB 线缆、程序正在运行、因为它被写入闪存中。
    但是、如果我先关闭电源、然后再打开、即使我更改了 A:S1开关位置(进入"获取模式"(默认为"闪存")、程序也不会运行。

    我的问题很简单:为了让程序在电源关闭后独立运行,我必须在 CCS 或程序中更改哪些参数?

    此致、

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

    您好,

    对于 CCS,您可以参阅 CCS 中“帮助”菜单下的“入门”指南。

    您能描述一下如何使用 USB 对代码进行编程吗? 编程时是否使用 CCS 和 xds1000v2仿真器连接到器件?

    您可以在使用 CCS 和 xds1000v2仿真器进行编程后连接到器件、并在存储器窗口中检查您编写的代码是否可见。  

    您还可以参考 C2000Ware 中包含的 f2837xd 的"example_projects_Quickstart_Guide.pdf"、了解如何从闪存导入和运行示例。

    此致

    Siddharth

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

    您好!

    如何进行编程? 它非常简单、我使用 USB 电缆连接目标、然后运行->调试、再运行->恢复
    我的程序中有一个 LED 闪烁、因此我知道它在运行。

    我正在内存浏览器中验证闪存的编程是否良好。

    编程后,我断开目标(运行->断开目标),然后重新连接 (运行->连接目标);我需要单击“恢复”启动程序,因为我有此窗口,LED 不闪烁。

    启动目标(Resume)后、它正在工作。 在存储器浏览器中、对闪存进行编程。

    但是、如果我关闭电源、然后打开电源并尝试重新连接到器件、即使我启动目标(恢复)、它也不起作用。
    闪存中的一些数据在存储器浏览器中发生了变化。我似乎无法重新启动程序。

    在项目属性中,我将写入闪存:

    我的问题是:

    -我要在 Code Composer 中修改哪些设置才能在闪存上引导?
    -为什么在关闭电源后无法重新连接到目标?
    -您是否有一个在闪存上引导的非常简单的程序?
    -只能使用微型 USB 电缆吗?

    此致、

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

    您好!

    我建议您尝试 C2000Ware 中包含的"led_ex1_blinky" CCS 项目。 此项目有两个构建配置"CPU1_RAM"和"CPU1_Flash"。

    将"CPU1_Flash"配置设置为"Active"并编译工程。请参阅随附的快照。

    您可以加载当前生成的二进制文件。 代码应从闪存运行。

    -我要在 Code Composer 中修改哪些设置才能在闪存上引导? ->请确保在您完成编程后将代码写入闪存。
    -为什么在关闭电源后无法重新连接到目标? ->如果您更改开关位置,仿真逻辑未连接,因此您将无法通过 CCS 进行连接。
    -您是否有一个在闪存上引导的非常简单的程序? ->尝试闪存配置中的"led_ex1_blinky"示例
    -只能使用微型 USB 电缆吗? -> USB 电缆用于使用 xds100v2仿真器连接到目标。

    此致

    Siddharth

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

    您好 Siddharth、

    我已经尝试过该示例、在关闭电源后、电源仍然在闪烁。
    A:SW 开关的位置没有任何变化、为什么?

    我是否需要在项目中包含 driverlib.lib?
    为输出模块指定"代码启动"的程序入口点?
    我是否需要包含"${COM_TI_C2000WARE_SOFTWARE_PACKAGE_libraries}"? 这是什么?

    非常感谢您的支持。

    此致

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

    您好!

    如果在关闭和打开电源后 LED 闪烁、则表示代码正在从闪存运行。

    A:SW1开关的位置用于启用 JTAG/UART 通信。

    SW1 (引导模式开关)默认的引导模式是从闪存引导。

    应包含 driverlib.lib、因为它为所有外设提供 API、并提供对几乎所有功能的访问。 在此示例中,GPIO API 包含在 driverlib.lib 中

    为输出模块指定"代码启动"的程序入口点? ->是的、这已经在项目中进行了配置。
    我是否需要包含"${COM_TI_C2000WARE_SOFTWARE_PACKAGE_libraries}"? 这是什么? ->这是一个系统环境变量。 您不必更改/更新它。

    此致

    Siddharth

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

    您好!

    我目前正在将我的程序与 LED_INKing 进行比较。  
    在 F2837xD_sysctrl.c 中、一些函数为灰色、这意味着它们不会被执行? 可能是这里的问题吗?

    此致、

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

    您好!

    我真的不理解;我已经将程序的指令减少到与 LED_闪烁 程序相同,但它仍然不起作用。

    我不使用 driverlib.lib、但我认为我不需要它。  

    //
    //包含的文件
    //
    #include "F28x_Project.h"
    
    #include "Init_GPIO.h"
    
    //
    函数原型
    //
    
    #pragma CODE_SECTION (InitFlash、".TI.ramfunc");
    
    //
    Main
    //
    void main (void)
    {
    
    InitSysCtrl();
    
    init_gpio();//初始化 GPIO
    
    //清除所有中断并初始化 PIE 矢量表
    
    Dint;
    
    //将 PIE 控制寄存器初始化为默认状态。
    //默认状态是禁用所有 PIE 中断并清除标志。
    //此函数位于 F2837xD_PIECTRL.c 文件中。
    
    InitPieCtrl();
    
    //禁用 CPU 中断并清除所有 CPU 中断标志:
    
    IER = 0x0000;
    IFR = 0x0000;
    
    //使用指向 shell 中断服务例程(ISR)的指针初始化 PIE 矢量表。
    
    InitPieVectTable();
    
    while (1)
    {
    GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1; // Toogle LED
    DELAY_US (50000);
    }
    } 

    我认为项目属性是可以的。 我真的不知道为什么它不起作用。

    此致

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

    您好!

    您是否能够使其正常工作? 如果没有、请请求您共享您的代码和 CCS 项目。 我将查看是否缺少任何内容。

    此外、您是否能够使现有的"led_ex1_blinky"示例正常工作?

    此致

    Siddharth

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

    您好!

    是的、  "led_ex1_blinky"有效。

    问题在我的软件上。 我已删除我的所有.c 和.h 文件以具有"清理项目"。 重新启动后、指示灯闪烁。

    然后我逐个添加.c 文件。
    我发现一些.c 文件有问题:如果我将它们添加到项目中,则在电源关闭后无法重新启动。  

    问题是什么? 内存问题? 还有事吗? 我有点困惑、因为我真的不知道问题来自哪里。
    我可以构建我的项目、运行它、但它不会重新启动。

    此致、

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

    您好!

    您可以尝试使用 CCS 来调试代码。 您是否能够在关闭电源之前使用 CCS 加载和运行?

    此致

    Siddharth

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

    您好!

    当然可以。 如果我不关闭电源、我的程序运行、我可以对其进行调试、没问题。

    但我不知道问题的根源是什么、因为我的程序在关闭电源之前没有问题地运行。

    这就是我问您的原因。

    此致、

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

    您好!

    您有什么想法可以帮助我解决我的问题吗?

    谢谢你。

    此致、

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

    您好!

    有什么想法可以帮助我解决我的问题?

    谢谢你。

    此致、

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

    您好!

    是否可以确保程序加载到闪存而不是 RAM? 根据您的描述、看起来程序已加载到 RAM 中、因此在对电路板进行电源回收后可能无法运行。

    此致

    Siddharth

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

    您好 Siddharth、  

    我不知道这是怎么发生的、因为如果我删除程序中的一些.c 和.h 文件、闪存写入就会起作用、正如我之前解释的那样。
    如何进行调试以解决此问题?

    此致、