Operating system Nucleus如何获取ID列表?
这些天,我开始学习Nucleus Plus操作系统。构建操作系统并将映像下载到主板后,操作系统无法成功运行。我发现错误发生在函数CMEM_Index()上;我读过密码,但找不出原因。我甚至不知道系统是如何获得诸如combo_mem_ID_list之类的ID列表的。 下面是CMEM_Index()的代码。 有人知道Nucleus Plus吗?或者谁能告诉我系统如何获得nor闪存ID列表?PlzOperating system Nucleus如何获取ID列表?,operating-system,embedded,Operating System,Embedded,这些天,我开始学习Nucleus Plus操作系统。构建操作系统并将映像下载到主板后,操作系统无法成功运行。我发现错误发生在函数CMEM_Index()上;我读过密码,但找不出原因。我甚至不知道系统是如何获得诸如combo_mem_ID_list之类的ID列表的。 下面是CMEM_Index()的代码。 有人知道Nucleus Plus吗?或者谁能告诉我系统如何获得nor闪存ID列表?Plz #if defined(__DUAL_SERIAL_FLASH_SUPPORT__) kal_int32
#if defined(__DUAL_SERIAL_FLASH_SUPPORT__)
kal_int32 CMEM_Index(const kal_uint16 CS)
#else //ADMUX or Nand or SF without Dual SF enable
kal_int32 CMEM_Index()
#endif
{
kal_int32 i, j;
CMEMFlashID id;
const CMEMEntryID *id_list=NULL;
#if !defined(__DUAL_SERIAL_FLASH_SUPPORT__)
if (cmem_index>=0) return cmem_index;
#endif
// Read Flash ID
#if defined(_NAND_FLASH_BOOTING_)
#if defined(__UBL__)
return CMEM_INVALID_INDEX;
#else
if(DAL_is_initialized == 0)
{
DAL_init(); // Call DAL init to ensure FlashID alreay there.
}
MTD_ReadID(8, id.NAND);
#endif
#elif defined(__DUAL_SERIAL_FLASH_SUPPORT__)
#if defined(__UBL__)
//begin from MT6255, remapping is done before NOR_ReadID
if(CS !=2) //Skip Read ID for dummy SF2
{
if(EMI_QueryIsRemapped())
NOR_ReadID(CS,(void*)0x10000000, id.NOR);
else
NOR_ReadID(CS, (void*)0, id.NOR);
}
#else
if(CS !=2)//Skip Read ID for dummy SF2
NOR_ReadID(CS, (void *)(INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS), id.NOR);
#endif
#else //ADMUX and SF without Dual SF enable
#if defined(__UBL__)
//begin from MT6255, remapping is done before NOR_ReadID
if(EMI_QueryIsRemapped())
NOR_ReadID(0,(void*)0x10000000, id.NOR);
else
NOR_ReadID(0, (void*)0, id.NOR);
#else
NOR_ReadID(0, (void *)(INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS), id.NOR);
#endif
#endif //defined(_NAND_FLASH_BOOTING_)
#ifdef __SV5_ENABLED__
id_list=combo_mem_id_list.m_data.List;
#else
id_list=combo_mem_id_list.List;
#endif
// seach CMEM list for specific Flash ID
for (i=0; i<COMBO_MEM_DEVICE_COUNT; i++) {
// Check 1: Compare ID
for (j=0; j<id_list[i].IDLength; j++) {
#if defined(_NAND_FLASH_BOOTING_)
if (id_list[i].ID[j]!=id.NAND[j]) break;
#else // __SERIAL_FLASH__ || NOR FLASH
if (id_list[i].ID[j]!=id.NOR[j]) break;
#endif
}
// Check 2: Compare RegionInfo
if (j==id_list[i].IDLength) {
// TBD: Compare RegionInfo
cmem_index=i;
break; // entry found, break the loop
}
}
#if defined(__DUAL_SERIAL_FLASH_SUPPORT__)
/*Get Dummy SF entry ID*/
if(CS==2)
{
// seach CMEM list for specific Flash ID
for (i=0; i<COMBO_MEM_DEVICE_COUNT; i++) {
// Check 1: Compare ID
for (j=0; j<id_list[i].IDLength; j++) {
if(j==0)
if (id_list[i].ID[j]!= 0x00) break;
if(j==1)
if (id_list[i].ID[j]!= 0x34) break;
if(j==2)
if (id_list[i].ID[j]!= 0x56) break;
}
if (j==id_list[i].IDLength)
{
// TBD: Compare RegionInfo
cmem_index=i;
break; // entry found, break the loop
}
}
}
#endif
return cmem_index;
}
#如果定义(uuu双_u串行_u闪存_uu支持)
kal_int32 CMEM_索引(常量kal_uint16 CS)
#else//ADMUX或Nand或SF不带双SF启用
kal_int32 CMEM_索引()
#恩迪夫
{
kal_int32 i,j;
CMEMFlashID;
const CMEMEntryID*id\u list=NULL;
#如果!已定义(\uuuu双\u串行\u闪存\u支持\uuuuuu)
如果(cmem_索引>=0)返回cmem_索引;
#恩迪夫
//读取闪存ID
#如果已定义(_NAND_FLASH_BOOTING_)
#如果已定义(uuu-UBL_uuu)
返回CMEM_无效_索引;
#否则
如果(DAL_已初始化==0)
{
DAL_init();//调用DAL init以确保FlashID始终存在。
}
MTD_ReadID(8,id.NAND);
#恩迪夫
#elif已定义(双串行闪存支持)
#如果已定义(uuu-UBL_uuu)
//从MT6255开始,在NOR_ReadID之前完成重新映射
if(CS!=2)//跳过伪SF2的读取ID
{
if(EMI_queryisremap())
NOR_ReadID(CS,(void*)0x10000000,id.NOR);
其他的
NOR_ReadID(CS,(void*)0,id.NOR);
}
#否则
if(CS!=2)//跳过伪SF2的读取ID
NOR_ReadID(CS,(void*)(INT_RetrieveFlashBaseAddr()+NOR_FLASH_BASE_地址),id.NOR);
#恩迪夫
#else//ADMUX和SF不带双SF启用
#如果已定义(uuu-UBL_uuu)
//从MT6255开始,在NOR_ReadID之前完成重新映射
if(EMI_queryisremap())
NOR_ReadID(0,(void*)0x10000000,id.NOR);
其他的
NOR_ReadID(0,(void*)0,id.NOR);
#否则
NOR_ReadID(0,(void*)(INT_RetrieveFlashBaseAddr()+NOR_FLASH_BASE_地址),id.NOR);
#恩迪夫
#endif//已定义(\u与\u闪存\u引导\u)
#ifdef__SV5_已启用__
id_list=combo_mem_id_list.m_data.list;
#否则
id\u list=combo\u mem\u id\u list.list;
#恩迪夫
//搜索特定闪存ID的CMEM列表
对于(i=0;i