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.

[参考译文] RTOS/TMS320F280049C:将 SYSBIOS PLL 时钟设置为保持

Guru**** 2756805 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/756783/rtos-tms320f280049c-setting-up-the-sysbios-pll-clock-to-persist

器件型号:TMS320F280049C
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS


您好!

我在 SysBIOS 项目上配置 PLL 时钟时遇到问题、因此这些设置会保留在板上。
目前我使用的是280049C 控制卡。
我在非 SysBIOS 项目中使用以下设置:

InitSysPll (XTAL_OSC、IMULT_10、FULT_0、PLLCLK_By_2); 



我曾尝试使用.cfg 设置来设置这个、这个设置看起来起初是有效的、但在清理/重建项目、对电路板进行电源循环等之后变得很不正确

基本上、一个将在3秒运行的 LED 任务将开始占用该时间范围的5到20倍。

读出 PLL 不应通过 SYSBIOS 进行配置后、我尝试将其添加到复位函数中、但很不幸、因为代码会进入复位/Boot Rom 并卡住。
是否有人可以确定我应该进行的设置以使其正常工作?

在 main.c 中、我具有以下函数:

void resetFxn (void)
{
InitSysPll (XTAL_OSC、IMULT_10、FULT_0、PLLCLK_by_2);
} 

在我的.cfg 中

startup.resetFxn ="&resetFxn"; 

我也尝试了

RESET = xdc.useModule('xdc.runtime.Reset');
Reset.Fxns[Reset.Fxns.length+]='&resetFxn'; 

但这也会卡在类似的存储器空间中(引导 Rom 介于0x3F0000和0x3FFFFF 之间)。

我的.cmd 文件具有以下相关设置

MEMORY
{
PAGE 0:
重置 :origin = 0x3FFFC0,length = 0x000002
向量 :origin = 0x3FFFC2,length = 0x00003E
}

SECTIONS
{
.reset :>重置 PAGE = 0、TYPE = DSECT
} 

感谢您的帮助、

-Wes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    作为测试、您能否暂时注释掉对 InitSysPll()和 do __asm (" ESTOP0")的调用、而只是为了确保函数被调用? 如果它被调用、我想知道您是否会得到看门狗复位? 锁定 PLL 可能需要一些时间。 在调用 InitSysPll()之前尝试禁用看门狗,或者在等待 PLL 锁定时编辑为其提供服务的函数。 如果这不起作用、请加载引导 ROM 符号并查看您遇到的困难。

    看起来、复位挂钩函数在 SYS/BIOS 生成的 ti_catalog_c2800_initF2837x_Boot_init ()函数之前调用、用于配置 PLL、因此如果 SYS/BIOS PLL 配置未完全禁用、它可能会覆盖您的配置。 是否确定 Boot.configureClocks 设置为 false?

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

    我的同事找到了一个正常工作的设置。 在 BIOS_Start 调用之前、他不是将 InitSysPLL 调用放置在复位函数中、而是将其留在主函数中。 这导致我们看到一个未插入的中断#19、该中断指示了一个非法的函数调用。 在向下跟踪之后、他发现、如果我们注释掉与28004x 驱动程序代码库 InitSysPLL 相关的 PollX1Counter 函数内的 F28x_usDelay 调用、则一切都将按预期工作。 显然、这是非法的函数调用。 由于代码中的注释表明这只是一个1ms 的 XTAL 振荡器加电等待、我认为这样做是安全的、因为我们可以在必要时通过其他方式延迟这一操作。

    谢谢、
    -Wes
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这将起作用。 请注意、usDelay 函数的问题通常与函数存储在的 ramfuncs 段缺少 memcpy 有关。 如果您决定修复 InitSysCtrl()函数(与 InitSysPLL()相同的文件),请查看该函数的示例。

    惠特尼
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Whitney。 就是这样。 应该移植的另一件事。