你好
我在两个内核中运行相同的功能(独立模式)、我在 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
我还需要考虑其他事项吗?
谢谢你