我需要为一个c函数编写一个单元测试,该函数直接从特定的内存地址读取数据
Address
,然后对读取的数据执行特定的算术行为。
测试总是在这一行失败:
void update_data(uint32_t Address, uint8_t* tab, uint8_t size)
{
uint8_t i;
uint8_t value=0;
for (i = 0; i < size ; i++)
{
value = *(uint8_t *)(Address+i);
//some Arithmetic calculation on value
tab[i]=value;
}
}
int main()
{
uint8_t Restab[20];
update_data(0x401000,Restab, 20);
return 0;
}
PS:
i
是一个计数器,用于传递到下一个地址。
我尝试存根地址。
不太确定如何为此实施单元测试。
我会使用带有测试数据的数组进行测试。假设 32 位地址空间。
void update_data(uint32_t Address, uint8_t* tab, uint8_t size)
{
uint8_t i;
uint8_t value=0;
for (i = 0; i < size ; i++)
{
value = *(volatile uint8_t *)(Address+i);
//some Arithmetic calculation on value
tab[i]=value;
}
}
int main(void)
{
uint8_t testData[20] = {1,2,5,7,9,4, /* .... */};
uint8_t Restab[20];
update_data((uint32_t)testData,Restab, 20);
testResults(testData, Restab, 20);
return 0;
}