主题:C2000WARE 中讨论的其他器件
工具/软件:
你(们)好
我想 针对位于 C2000ware 的 driverlib 路径中的 F280040C-Q、测试 memcfg.h 中的 MemCfg_getInitStatus 函数

有一点让我感到困惑:
这是 INITDONE 标志 :μ s 的判断结果
(HWREG (MEMCG_BASE + MEMCG_O_LSXINITDONE)==
MEMCFG_sect_LSX_ALL)
我认为正确的方法是
(HWREG (MEMCG_BASE + MEMCG_O_LSXINITDONE)==
MEMCFG_sect_LSX_ALL & MEMCG_sect_type_mask)、以获得 LSXINITDONE 寄存器的低 8 位。
由于 MEMCFG_sect_LSX_ALL = 0x010000FFU、
但是、 LSXINITDONE 的寄存器仅适用于低 8 位、设置为 0x0000000FF。
//*****************************************************************************
//
// MemCfg_getInitStatus
//
//*****************************************************************************
bool
MemCfg_getInitStatus(uint32_t ramSections)
{
uint32_t status;
//
// Check the arguments.
//
ASSERT(((ramSections & MEMCFG_SECT_TYPE_MASK) == MEMCFG_SECT_TYPE_D) ||
((ramSections & MEMCFG_SECT_TYPE_MASK) == MEMCFG_SECT_TYPE_LS) ||
((ramSections & MEMCFG_SECT_TYPE_MASK) == MEMCFG_SECT_TYPE_GS) ||
((ramSections & MEMCFG_SECT_TYPE_MASK) == MEMCFG_SECT_TYPE_MSG) ||
(ramSections == MEMCFG_SECT_ALL));
//
// Read registers containing the initialization complete status.
//
switch(ramSections & MEMCFG_SECT_TYPE_MASK)
{
case MEMCFG_SECT_TYPE_D:
status = HWREG(MEMCFG_BASE + MEMCFG_O_DXINITDONE);
break;
case MEMCFG_SECT_TYPE_LS:
status = HWREG(MEMCFG_BASE + MEMCFG_O_LSXINITDONE);
break;
case MEMCFG_SECT_TYPE_GS:
status = HWREG(MEMCFG_BASE + MEMCFG_O_GSXINITDONE);
break;
case MEMCFG_SECT_TYPE_MSG:
status = HWREG(MEMCFG_BASE + MEMCFG_O_MSGXINITDONE);
break;
case MEMCFG_SECT_TYPE_MASK:
//
// Return the overall status.
//
if((HWREG(MEMCFG_BASE + MEMCFG_O_DXINITDONE) ==
MEMCFG_SECT_DX_ALL) &&
(HWREG(MEMCFG_BASE + MEMCFG_O_LSXINITDONE) ==
MEMCFG_SECT_LSX_ALL) &&
(HWREG(MEMCFG_BASE + MEMCFG_O_GSXINITDONE) ==
MEMCFG_SECT_GSX_ALL) &&
(HWREG(MEMCFG_BASE + MEMCFG_O_MSGXINITDONE) ==
MEMCFG_SECT_MSGX_ALL))
{
status = MEMCFG_SECT_NUM_MASK;
}
else
{
status = 0U;
}
break;
default:
//
// Invalid ramSections. Make sure you aren't OR-ing values for two
// different types of RAM.
//
status = 0U;
break;
}
return((ramSections & status) == (ramSections & MEMCFG_SECT_NUM_MASK));
}

此致
箭头