主题中讨论的其他器件: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