主题中讨论的其他器件:TDA4VL
您好!
我们正在 TDA4VL 上为 A72和 C71内核开发算法。 主要部分将在 C71 DSP 代码上运行。 目前我们要处理的是 TDA4VL EVM、它的运行频率与我们将来要实现的硬件的运行频率不同。 目前、由于我们处于早期开发阶段、因此我们使用 Code Composer Studio 以最简单的方式加载 ELF 可执行文件(connect -> run launch.js script ->在一个内核上运行代码)。
我想更改内核频率(以及高速缓存和存储器等后续参数)、以匹配客户的电路板。 我想将 C71时钟从1GHz 降低到500MHz、将 A72时钟从2GHz 降低到1.2GHz。 我想在裸机上执行此 操作、而无需次级引导加载程序(加载 RTOS 或 Linux)。 我们只希望开发人员快速地在 DSP 上运行部分代码、验证它是否有效并测量运行时。
我从未使用过 TI 的电路板或任何其他电路板。 一切都是全新的。 在过去的几周里、我查阅了技术文档和 PDK 文档。 我了解到、我 应该能够通过更改 PLL 分频器值实现所需的效果。 我确定需要更改
- C7X 的 MAIN_PLL7_HSDIV0_DIV_VAL 将 C7X 从2更改成了5、以进入500MHz
- MAIN_PLL8_HSDIV0_DIV_VAL 将 A72内核从0更改成了1、以实现1GHz (低于1.2GHz、但优于无矩阵)
现在、我在为如何做到这一点而苦恼。 我知道这可以在通常使用 SBL 或引导 RTOS/Linux 时完成。 但我暂时不想引入这种复杂性。 我希望从评估板转移到将来该方法会有所不同的客户板。 由于我们当前正在使用该 CCS+GEL+JS_script 方法、我知道 SBL 的角色(设置电路板)用 GEL+JS_script 代替。 我浏览了 GEL 脚本、发现它正像我想做的那样-将这些分频器值写入 MMR。 因此、我更改了提到的 C71的 PLL7分频器值。 我已通过添加一些附加打印件验证是否正在执行 GEL。 不幸的是、我通过 Sciclient 读取的时钟与通过 GTC0计时器测量的运行时没有区别。
Sciclient_pmGetModuleClkFreq(TISCI_DEV_COMPUTE_CLUSTER0_C71SS0_0, TISCI_DEV_COMPUTE_CLUSTER0_C71SS0_0_C7X_CLK, &c7xFreq, SCICLIENT_SERVICE_WAIT_FOREVER);
该方法仍然读取1GHz 时钟。 现在、我很难理解正在发生的事情、以及各个部分之间的关系。 我注意到 PDK 中的 JS 脚本 正在加载 sciclient_ccs_init_mcu1_0_release.xer5f 二进制文件。 我很快就去了文档,我不能说我完全理解它。 但是 sciclient_ccs_init 二进制是否会设置开发板并有效地覆盖 GEL 脚本中的值? 或者无论如何 GEL 脚本发挥什么作用? 我在示例中找到 sciclient_ccs_init 的源代码。 我应该将我的更改放在这里、构建一个二进制文件并在 JS 脚本中加载此二进制文件、而不是 PDK 提供的脚本吗? 如果需要、是否有人可以举例说明如何更改频率?
对于如何将这一庞大文件的各个地方的这些文件整理在一起,我希望能提供任何帮助和解释。 非常感谢
米兰