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:首次编程后、我无法对闪存重新编程

Guru**** 2611385 points
Other Parts Discussed in Thread: TMS320F28379D, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1049984/tms320f28379d-i-cannot-reprogram-flash-after-first-programming

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

您好!

我有一个带空白闪存的 TMS320F28379D 芯片。 我使用程序成功地对其进行了编程:

int main(void)
{
    EALLOW;
    Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0;
    EDIS;

    EALLOW;
    *(Uint32 *)0xD00 = 0x0B5A;
    EDIS;

    InitSysPll(XTAL_OSC,IMULT_40,FMULT_0,PLLCLK_BY_2);
[...]

如您所见、InitSysPll 已通过 XTAL_OSC 调用、但未提供该时钟信号。

我无法使用 CCS 和 UniFlash 擦除闪存或对闪存进行编程。 我甚至无法检查芯片是否为空白。

Uniflash 发出以下错误信号:

[2.11.2021, 08:05:21] [INFO] C28xx_CPU1: Executing Blank Check...
[2.11.2021, 08:05:44] [ERROR] C28xx_CPU1: Error occurred during flash operation: Timed out waiting for target to halt while executing wr_pll.alg
[2.11.2021, 08:05:44] [ERROR] C28xx_CPU1: Error writing the PLL values (Flash algorithm timed out). Operation cancelled.
[2.11.2021, 08:05:44] [ERROR] C28xx_CPU1: Perform a debugger reset and execute the Boot-ROM code (click on the RESUME button in CCS debug window) before erasing/loading the Flash. If that does not help to perform a successful Flash erase/load, check the Reset cause (RESC) register, NMI shadow flag (NMISHDFLG) register and the Boot-ROM status register for further debug.
[2.11.2021, 08:05:44] [ERROR] C28xx_CPU1: Flash Programmer: Error initializing device.

如何恢复芯片?

此致、

Piotr Romaniuk

电源
我可以通过 JTAG 连接到芯片 CCS、而无需对闪存进行编程、然后检查寄存器、设置断点并执行步进。
在调试器中、我尝试将振荡器源(更改为 INT2_OSC)。 我在 InitSysPll 之前设置断点、然后修改保存此参数的寄存器。 不幸的是、PLL 从未锁定、程序卡在:

            ClkCfgRegs.SYSPLLMULT.all = ((fmult << 8U) | imult);

            //
            // Wait for the SYSPLL lock counter
            //
            while(ClkCfgRegs.SYSPLLSTS.bit.LOCKS != 1)  <<<<< stuck here
            {
                //
                // Uncomment to service the watchdog
                //
                // ServiceDog();
            }
        }
    }

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

    您好!  

    我将在与一名员工进行咨询后的几天内再次与您联系。  

    谢谢、  

    Anu

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

    Piotr、

    您能否尝试以下操作:

    1.将引导模式设置为等待引导。

    2.为器件加电。

    3.连接 CCS

    4.在 CCS 中复位调试器

    5.在 CCS 中点击"继续"按钮并等待几秒钟

    6.如果内核尚未停止,则停止内核

    7.打开 CCS 闪存插件 GUI (CCS 调试视图->工具->片上闪存)

    8.单击擦除按钮

    注:

    请使用最新的 CCSv11。

    2.请勿更改 CCS 片上闪存插件 GUI 中的任何默认设置(尝试上述步骤时、GUI 中的时钟源应为 INTOSC)。

    请告诉我们结果。

    谢谢、此致、
    Vamsi

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

    Vamsi、

    如何将引导模式设置为等待引导?

    此致、
    Piotr Romaniuk

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

    Piotr、  

    请按照下表所述设置引导引脚、将引导模式配置为等待引导:  

    谢谢

    Anu

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

    Anu、

    我无法控制引脚 gpio72和84、它们被上拉至 Vdd 并连接到电路板上的 FGPA。  
    我还观察到、当我附加调试会话时、CPU 会复位。

    此致、
    Piotr Romaniuk

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

    Piotr、  

    如果使用 GPIO 72和84、您的器件上是否配置了交替引导模式选择引脚? 您可以使用这些设置引导模式。  

    [引用 userid="64714" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1049984/tms320f28379d-i-cannot-reprogram-flash-after-first-programming/3891345 #3891345"]我还注意到,当我附加调试会话时,CPU 会复位。

    调试会话启动时 CPU 是否已运行? 您是否在寻找有关如何在运行的目标上启动调试会话而不导致复位的指导?

    谢谢、  

    Anu

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

    Anu、

    在我的板上、GPIO 72和84配置为引导引脚。 它们都上拉至 Vdd、因此选择引导模式进行闪存引导。 它们还连接到未编程的 FPGA 、因此我无法使用电线/对地短路(恐怕会损坏 FPGA)。 备用引导引脚也连接到 FPGA。 我现在无法对 FPGA 进行编程。

    我尝试仅通过 JTAG 调试器控制(步进执行、断点和寄存器修改)等软件恢复 CPU。 但愿这是有可能的。 如果是、我希望通过这种方式指示 CPU 进行引导等待、然后对调试器进行降级、使 CPU 处于引导等待状态。 障碍是当我再次连接调试器(从 UniFlash)时 CPU 被复位。

    此致、
    Piotr Romaniuk

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

    Piotr、  

    我将与 JTAG 专家联系、帮助您解决调试器遇到的问题。  

    谢谢、  

    Anu

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

    Piotr、

    您可以尝试我在对该帖子的第一次答复中提到的序列(使用 CCS)吗?  我知道引导模式引脚是为闪存配置的。  您可以按照我概述的顺序跳过#1。  让我们知道情况如何。   

    关于复位、它可能来自 GEL 文件。  请   根据需要注释 OnTargetConnect()和 OnPreFileLoaded()中的 GEL_Reset()。

    请注意: 我们目前已不在办公室。  Anu 将于下周中旬返回办公室。  如果您有其他问题、请在下周中旬回复。

    谢谢、此致、
    Vamsi