单元测试 c 中的内存地址访问

问题描述 投票:0回答:1

我需要为一个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
是一个计数器,用于传递到下一个地址。

我尝试存根地址。

不太确定如何为此实施单元测试。

c unit-testing pointers embedded memory-address
1个回答
0
投票

我会使用带有测试数据的数组进行测试。假设 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.