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.
你好
我在两个内核中运行相同的功能(独立模式)、我在 CPU1中获得1.8ms 和 在 CPU2中运行2.8ms 的基准测试。
我怀疑代码是从闪存运行的、但在 CPU2主函数中、我调用了:
InitSysCtrl();
它会调用:
// // InitSysCtrl -系统资源的初始化。 // void InitSysCtrl (void) { // //禁用看门狗 // DisableDog (); #ifdef _flash // //将时间关键代码和闪存设置代码复制到 RAM。 这包括 //以下函数:InitFlash() // // RamfuncsLoadStart、RamfuncsLoadSize 和 RamfuncsRunStart //符号由链接器创建。 请参阅器件.cmd 文件。 // memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize); // //调用闪存初始化以设置闪存等待状态。 此函数必须执行的操作 //驻留在 RAM 中。 // InitFlash(); #endif
当然、在 cmd 文件中、我有以下说明:
#if defined (_TI_EABI _) .TI.ramfunc:{}load = FLASH3、 RUN = RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3、 Load_start (RamfuncsLoadStart)、 load_size (RamfuncsLoadSize)、 Load_End (RamfuncsLoadEnd)、 RUN_START (RamfuncsRunStart)、 run_size (RamfuncsRunSize)、 RUN_END (RamfuncsRunEnd)、 align (8) #else .TI.ramfunc:{}load = FLASH3、 RUN = RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3、 load_start (_RamfuncsLoadStart)、 load_size (_RamfuncsLoadSize)、 load_end (_RamfuncsLoadEnd)、 run_start (_RamfuncsRunStart)、 run_size (_RamfuncsRunSize)、 run_end (_RamfuncsRunEnd)、 对齐(8) #endif
我还需要考虑其他事项吗?
谢谢你
您好!
您的代码看起来很好。 只需确保两种情况下代码都从同一个存储器(如 RAM 或闪存)运行。 如果它从闪存运行、则检查两个 CPU 上的等待状态、并确保两个状态相同。
此致、
Vivek Singh
你好,Vivek
我想知道您是否有一个有关此问题的示例来检查我们的设置。
谢谢你
您好!
最好将您的项目和重现此问题的步骤发送给我。
此致、
Vivek Singh
谢谢 Vivek。
我将在没有受 IP 保护的器件的情况下准备一个代码示例、并尽快将其发送给您。
此致。
你好,Vivek。
CPU2项目是否已启动?
或者您是否需要这两个项目?
此致
如果您可以同时提供 CPU1/CPU2代码、那会更好。
此致、
Vivek Singh
大家好、Vivek。
由于 IP 原因、我无法共享整个代码、但我知道在两个 CPU 上运行相同的代码并测量其执行时间可能是一个有效的测试、对吧?
此致
您好!
最好是使用显示问题的完整代码、只要它不依赖于任何硬件组件、但如果您不能共享完整代码、则可以使用示例代码并测试相同代码来检查它 确实存在您在原始代码上遇到的问题、这应该可以解决。
此致、
Vivek Singh