📄 api.c
字号:
}
if (*(UWORD8*)0xE0032000 != 0x56)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0051);
}
*(UWORD8*)0xE0034000 = 0x78; /* SARAM18 */
*(UWORD8*)0xE0036000 = 0x9A; /* SARAM19 */
//read back compare
if (*(UWORD8*)0xE0034000 != 0x78)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0052);
}
if (*(UWORD8*)0xE0036000 != 0x9A)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0053);
}
*(UWORD8*)0xE0038000 = 0x23; /* SARAM20 */
*(UWORD8*)0xE003A000 = 0x56; /* SARAM21 */
//read back compare
if (*(UWORD8*)0xE0038000 != 0x23)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0054);
}
if (*(UWORD8*)0xE003A000 != 0x56)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0055);
}
*(UWORD8*)0xE003C000 = 0x34; /* SARAM22 */
*(UWORD8*)0xE003E000 = 0x67; /* SARAM23 */
//read back compare
if (*(UWORD8*)0xE003C000 != 0x34)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0056);
}
if (*(UWORD8*)0xE003E000 != 0x67)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0057);
}
*(UWORD8*)0xE0040000 = 0x38; /* SARAM24 */
*(UWORD8*)0xE0042000 = 0x5A; /* SARAM25 */
//read back compare
if (*(UWORD8*)0xE0040000 != 0x38)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0058);
}
if (*(UWORD8*)0xE0042000 != 0x5A)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0059);
}
*(UWORD8*)0xE0044000 = 0x78; /* SARAM26 */
*(UWORD8*)0xE0046000 = 0x9A; /* SARAM27 */
//read back compare
if (*(UWORD8*)0xE0044000 != 0x78)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x005A);
}
if (*(UWORD8*)0xE0046000 != 0x9A)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x005B);
}
*(UWORD8*)0xE0048000 = 0x23; /* SARAM28 */
*(UWORD8*)0xE004A000 = 0x56; /* SARAM29 */
//read back compare
if (*(UWORD8*)0xE0048000 != 0x23)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x005C);
}
if (*(UWORD8*)0xE004A000 != 0x56)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x005D);
}
*(UWORD8*)0xE004C000 = 0x34; /* SARAM30 */
*(UWORD8*)0xE004E000 = 0x67; /* SARAM31 */
//read back compare
if (*(UWORD8*)0xE004C000 != 0x34)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x005E);
}
if (*(UWORD8*)0xE004E000 != 0x67)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x005F);
}
RES_Set( logresult );
RES_Set(RESULT_SEPARATOR);
}
//----------------------------------------------------------
// NAME : API_TestEndianism
// DESCRIPTION : Verify the APIF Endian Conversion is working
// properly
//
// PARAMETERS : START_ERROR_CODE ->
// RETURN VALUE : None
//
// LIMITATIONS : Result must be initialized
// ----------------------------------------------------------
void API_TestEndianism(UWORD16 START_ERROR_CODE)
{
UWORD16 logresult = TEST_OK;
UWORD16 value16;
UWORD32 value32;
UWORD8 value8;
//Testing Endianism = 00 (No Conversion)
//To Test Endianism = 00, we Write with 00, then Read it back with 00,10,11
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_NO_CONVERT, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
// Perform the Writes:
// Two 16-bit writes to peripherals,
// one 8,16 and 32 bit write to API Memory
*(UWORD16 *) DSP_DOR_REG_ADDR = 0x1234; // GPIO Register
*(UWORD32*)0xE0010000 = 0x12345678; /* SARAM0 */
*(UWORD16*)0xE0030000 = 0xABCD; /* SARAM16 */
*(UWORD8*) 0xE004E000 = 0xEF; /* SARAM31 */
//Read back with Endianism=00
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, 0, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0x1234)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0000);
}
if (*(UWORD32*)0xE0010000 != 0x12345678)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0001);
}
if (*(UWORD16*)0xE0030000 != 0xABCD)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0002);
}
if (*(UWORD8*)0xE004E000 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0003);
}
//Read back with Endianism=10 (Convert_all_Accesses)
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_ALL_ACCESS, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0x3412)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0010);
}
if (*(UWORD32*)0xE0010000 != 0x34127856)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0011);
}
if (*(UWORD16*)0xE0030000 != 0xCDAB)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0012);
}
if (*(UWORD8*)0xE004E000 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0013);
}
//Read back with Endianism=11 (Convert_API_MEM_ACCESS_ONLY)
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_API_MEM_ONLY, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0x1234)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0020);
}
if (*(UWORD32*)0xE0010000 != 0x34127856)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0021);
}
if (*(UWORD16*)0xE0030000 != 0xCDAB)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0022);
}
if (*(UWORD8*)0xE004E000 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0023);
}
//Testing Endianism = 10 (Convert All Accesses)
//To Test Endianism = 10, we Write with 00, then Read it back with 01,10,11
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_ALL_ACCESS, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
// Perform the Writes:
// Two 16-bit writes to peripherals,
// one 8,16 and 32 bit write to API Memory
*(UWORD16 *) DSP_DOR_REG_ADDR = 0x5678; // GPIO Register
*(UWORD32*)0xE0010010 = 0x12345678; /* SARAM0 */
*(UWORD16*)0xE0030010 = 0xABCD; /* SARAM16 */
*(UWORD8*) 0xE004E010 = 0xEF; /* SARAM31 */
//Read Back with Endianism = 00
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_NO_CONVERT, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0x7856)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0030);
}
if (*(UWORD32*)0xE0010010 != 0x34127856)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0031);
}
if (*(UWORD16*)0xE0030010 != 0xCDAB)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0032);
}
if (*(UWORD8*)0xE004E010 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0033);
}
//Read Back with Endianism = 10 (Convert all accesses)
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_ALL_ACCESS, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0x5678)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0040);
}
if (*(UWORD32*)0xE0010010 != 0x12345678)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0041);
}
if (*(UWORD16*)0xE0030010 != 0xABCD)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0042);
}
if (*(UWORD8*)0xE004E010 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0043);
}
//Read Back with Endianism=11 (Convert_only_API_MEM)
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_API_MEM_ONLY, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0x7856)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0050);
}
if (*(UWORD32*)0xE0010010 != 0x12345678)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0051);
}
if (*(UWORD16*)0xE0030010 != 0xABCD)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0052);
}
if (*(UWORD8*)0xE004E010 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0053);
}
//Testing Endianism = 11 (Convert only API_MEM Accesses)
//To Test Endianism = 11, we Write with 11, then Read it back with 00,10,11
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_API_MEM_ONLY, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
// Perform the Writes:
// Two 16-bit writes to peripherals,
// one 8,16 and 32 bit write to API Memory
*(UWORD16 *) DSP_DOR_REG_ADDR = 0xABCD; // GPIO Register
*(UWORD32*)0xE0010020 = 0x12345678; /* SARAM0 */
*(UWORD16*)0xE0030020 = 0xABCD; /* SARAM16 */
*(UWORD8*) 0xE004E020 = 0xEF; /* SARAM31 */
// Read Back with Endianism=00 (No_Conversion)
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_NO_CONVERT, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0xABCD)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0060);
}
if (*(UWORD32*)0xE0010020 != 0x34127856)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0061);
}
if (*(UWORD16*)0xE0030020 != 0xCDAB)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0062);
}
if (*(UWORD8*)0xE004E020 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0063);
}
// Read Back with Endianism=10 (Convert_ALL_Accesses)
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_ALL_ACCESS, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0xCDAB)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0070);
}
if (*(UWORD32*)0xE0010020 != 0x12345678)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0071);
}
if (*(UWORD16*)0xE0030020 != 0xABCD)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0072);
}
if (*(UWORD8*)0xE004E020 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0073);
}
// Read Back with Endianism=11 (Convert_API_MEM_Accesses_only)
API_CtrlSetup(API_HIGH_FREQ_HIGH, API_TIMEOUT_EN, API_API_ERR_EN, API_ACCESS_FACTOR_1, API_TIMEOUT_MAX, API_ENDIANISM_CONVERT_API_MEM_ONLY, API_ACCESS_PRIORITY_ARM_DMA_HSAB);
//Perform the Reads and Compare
value16 = GPIO_LeadReadAllDor();
if (value16 != 0xABCD)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0080);
}
if (*(UWORD32*)0xE0010020 != 0x12345678)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0081);
}
if (*(UWORD16*)0xE0030020 != 0xABCD)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0082);
}
if (*(UWORD8*)0xE004E020 != 0xEF)
{
logresult = TEST_OK | 0x1;
RES_Set(START_ERROR_CODE + 0x0083);
}
RES_Set(logresult);
RES_Set(RESULT_SEPARATOR);
}
int API_GetHomNSamModeMem()
{
UWORD32 reg_value;
int HOMnSAM;
reg_value = *(REGISTER_UWORD32*) API_DEBUG_FLAG_ADDR;
if (((reg_value >> (API_ACCESS_STATUS_POSBIT + 1)) & (0x0001)) == 0x0001)
return(1);
else
return(0);
}
int API_GetHomNSamModePer()
{
UWORD32 reg_value;
reg_value = *(REGISTER_UWORD32*) API_DEBUG_FLAG_ADDR;
if (((reg_value >> (API_ACCESS_STATUS_POSBIT)) & (0x0001)) == 0x0001)
return(1);
else
return(0);
}
//-------------------------------------------------------------------------------
// NAME : API_ApiSize. -
// DESCRIPTION : Specified which blocks of SARAM are accessible in HOM mode. -
// PARAMETERS : -
// api_size => size. -
// RETURN VALUE: None. -
// LIMITATIONS : None. -
//-------------------------------------------------------------------------------
void API_ApiSize (API_ApiSize_t api_size)
{
*(UWORD16*)API_DSP_API_ADDR = api_size;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -