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.

[参考译文] CCS/TMS320F28379D:独立引导至闪存 TMS320F28379D

Guru**** 2609265 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/684194/ccs-tms320f28379d-boot-to-flash-tms320f28379d-standalone

器件型号:TMS320F28379D
Thread 中讨论的其他器件:controlSUITE

工具/软件:Code Composer Studio

您好!

我会寻求建议。 我的电路具有板载 f28379D MCU。 但是、一切都运行良好、我尝试执行一些独立测试、我希望处理器在复位/断电后引导至闪存存储器。 当调试器(XDS100)断开连接时、GPIO72/84为"1"、TRST 为0。 默认情况下、应将 GetMode 选择为引导选项? 我的应用在断电后无法启动。 但是、当我从 controlSUITE 中运行闪烁示例时、它会在断电后使引脚发生切齿。  

RAM/FLASH 目标配置会将链接器文件更改为 true? 那么、对于这两个选项、我应该能够引导至闪存? (当然、当从闪存存储器运行时、需要从 RAM 复制和运行特定的函数)。

非常感谢您的任何提示。

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

    请访问 processors.wiki.ti.com/.../FAQs 上的 wiki 页面
    以检查是否一切都得到了注意。

    如果您需要更多信息、请告知我们。

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

    感谢您的回答。 当然、我之前已经查看过此资源。 我已经稍微调试了这个问题、看起来闪存构建配置正常工作。 但是、在我的应用中、我跟踪信号的基频并正确调制离散时间滤波器。 在没有任何详细信息的情况下,发生的情况是,在关闭或复位 MCU 后,它将引导至闪存(如果选择了闪存配置),但保持在外设在 main()开头初始化至的 PWM 频率。 这意味着它不会跟随在 ECAP 模块(负责跟踪频率)的中断例程中完成的 PWM 周期更新。

    此例程在此处供参考:

    _interrupt void eCAP1_ISR (void)
    {
    
    Result1=ECap1Regs.CAP2/20;
    
    EALLOW;
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;
    EDIS;
    
    EPwm2Regs.TBPRD =(Result1)/fratio; //设置定时器周期
    EPwm2Regs.CMPA.bit.CMPA =(Result1)/fratio/2; //设置比较 A 值
    
    EALLOW;
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;
    EDIS;
    
    ECap1Regs.ECCLR.bit.CEVT2 = 1;
    ECap1Regs.ECCLR.bit.INT = 1;
    
    //
    //确认此__interrupt 以从组4接收更多__interrupts
    //
    PieCtrlRegs.PIEACK.all = PIEACK_group4;
    } 

    如果我在断电后使用 RAM 构建配置、则不会发生预期的情况。 这看起来很好。

    我有2个问题:

    -如何禁用 RAM/FLASH 配置并使用其他.cmd 链接器文件? 如果我根据提供的示例创建一个项目、大多数示例都具有允许在闪存/RAM 之间进行选择的默认构建配置。 如何查看给定配置使用的链接器文件?

    -现有的链接器文件是否可能不会为闪存分配一些关键段、导致这种奇怪行为的原因是什么?

    非常感谢。

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

    链接器命令文件将包含在您的项目中。 它将与您的源文件一起显示在 CCS 项目-> Project Explorer 窗口中。
    或者、您也可以在 CCS Project -> Properties -> General -> Linker Command File 中找到它。
    或者、您也可以在 CCS Project -> Properties -> Build -> C2000 Linker -> File Search Path -> Find for linker 命令文件中找到它。

    如果是最后一种情况、则可以将链接器命令文件复制到工程并进行编辑。 将其从文件搜索路径中删除。

    您可以通过->右键单击链接器命令文件->"exclude from build"来禁用链接器命令文件。

    那么、在您的情况下、您看不到中断-闪存配置情况下的 ECAP1_INT、对吧?

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

    您好!

    感谢您的响应、我看到了链接器文件。 我在 controlSUITE 文件夹中看到过它、但在 CCS 中看不到链接。

    基本上、PWM 周期的更新(我之前的回复中的例程)不会发生。 代码看起来不会进入交叉存例程。 引导至闪存时、是否需要对 PIE 矢量执行其他操作? 比如在进行 FlashInit()调用之前复制到 RAM 闪存相关函数?

    Lukasz

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

     在 SPRA958L (从内部闪存运行)文档中有一个例程:

    /***初始化 PIE_RAM ***/
    PieCtrlRegs.PIECTRL.bit.ENPIE = 0;//禁用 PIE
    
    
    ASM (" EALLOW");//启用 EALLOW 受保护寄存器访问 memcpy (((void *) 0x000D00、&PieVectTableInit、256);(" EALLOW 受保护寄存器访问 memcpy);/禁用 EALLOW 受保护寄存器访问 

    用于将 PIEVect 复制到 RAM。 但是,在 InitPieVectTable()函数内的现有示例代码中, 使用指向 段 PieVectTableFile 的指针复制内容。  

    我是否正确地理解、如果从闪存或 RAM 中独立地将 PieVEct 复制到适当的 RAM 位置、它已经负责? 所以我不需要使用 SPRA958L 中的例程(从内部闪存运行)?

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

    链接器命令文件中已对其进行了" \device_support\F2837xd\V210\F2837xD_headers\cmd\F2837xD_Headers_BIOS_CPU1.cmd"以将专用存储器分配给 PieVectTableFile 部分。

    UNION RUN = PI_VECT、PAGE = 1

    PieVectTableFile
    *
    *



    PI_VECT :origin = 0x000D00,length = 0x000200 /* PIE 矢量表*/

    如果您发现任何问题、请告知我们。

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

    感谢您的回答。 我不使用 BIOS。
    这不能解决我的问题。 您已确认 PIE 矢量已初始化为正确的内存范围,但是,中断例程在重新引导后仍然无法正常工作。

    我会感谢您提供一些详细的线索。 现在我知道它引导到闪存只是中断带来了问题,而我以前认为引导到闪存根本不起作用。 如果发布新问题可以更轻松地解决问题、请告知我。

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

    您能否提出一个新的问题、因为此主题与引导至闪存的问题有关。 我们可以专注于下一个线程中的中断例程。

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

    谢谢。