主题中讨论的其他器件:SYSBIOS
工具/软件:
您好、
在 idkAM5748 PCIe 示例中、我们在.cfg 文件中启用了 SMP、如下面的代码片段所示。
/*---------------------------------------------------- pcie_sample_wSoCFile.cfg-------------------------------------------------------- */
Var SYSMIN = xdc.useModule('ti.sysbios.smp.SysMin');
Var SysStd = xdc.useModule('ti.sysbios.smp.SysStd');//替换 xdc.runtime.SysStd
VAR BIOS = xdc.useModule('ti.sysbios.BIOS');
/* LWS SMP */
BIOS.smpEnabled = true;
/*================= CACHE 和 MMU 配置============= */
// var 缓存= xdc.useModule('ti.sysbios.family.arm.a15.Cache');
Var 缓存= xdc.useModule('ti.sysbios.family.arm.a15.smp.Cache');
/*------------------------------------------------------------------------ 端--------------------------------------------- */
->在 PCIe example main()中,代码被卡在"MMU_setFirstLevelDESC (( ptr ) 0x00000000 ,( UINT64 ) addr0,&attrs );" main()显示在下面的代码片段中。
/*------------------------------------------------------------------------ main()------------------------------------------------------------------------ */
#ifdef __ARM_arch_7A__
{
/*为 PCIe 示例所需的 MMR 添加 MMU 条目*/
Mmu_Descriptor Attrs attrs;
extern char ti_SysBIOS_family_arm_a15_externLevelTableBuf_0__A Mmu_Module_State_;
extern char ti_SysBIOS_family_arm_a15_externLevelTableBuf_1__A Mmu_Module_State_;
uint32_t addr0 =(uint32_t)&ti_sysbios_family_arm_a15_class0_secondLevelTableBuf_0__A Mmu_Module_State_;
uint32_t addr1 =(uint32_t)&ti_sysbios_family_arm_a15_class0_secondLevelTableBuf_1__A Mmu_Module_State_;
MMU_initDescAttrs (&attrs);
pcie_logPrintf ("MMU_initDescAttrs done\n");
attrs.type = attrs.Type_table Mmu_Descriptor;
attrs.shareable = 0;/*不可共享*/
attrs.accPerm = 1;/*在任何特权级别读取/写入*/
attrs.attrIndx = 0;/*将 MAIR0寄存器字节3用于*/
/*确定存储器属性*/
/*对于每个 MMU 条目*/
/*使用*/更新第一级表的0x00000000的 MMU 条目
/*新属性。 */
MMA_setFirstLevelDesc ((ptr) 0x00000000、(UINT64) addr0、&attrs); ================ >如果 SMP 已启用、代码将在此处卡住。
pcie_logPrintf ("0x00000000s 的第一级表 MMU 条目完成\n");
/*使用*/更新0x40000000的第一级表的 MMU 条目
/*新属性。 */
MMU setFirstLevelDesc (ptr) 0x40000000、(UINT64) addr1、&attrs);
pcie_logPrintf ("第一级表的0x40000000 MMU 条目完成\n");
}
#endif
/*------------------------------------------------------------------------ 端--------------------------------------------- */
->当我在 JTAG 中检查它时,代码卡在下面提到的情况下。
"while (!(Core_module->syncCores[CoreID][idx]);" in "void Core_notify (BIOS.FuncPtr func、Core_Ipc arg、UINT mask)"API 、位于 BIOS core a15软件包中。
请为我们提供一些 可帮助调试此问题的指针。
谢谢
Phaneesh a Kashyap