CL2*_*L22 9 c multithreading automated-tests cross-compiling
我想在PC上编写一些非常低级别的C代码的自动化测试,我将移植到微处理器.我知道会有差异(特定于实现的行为,例如int的大小),我将不得不忍受.
我需要有关如何模拟易失变量变化的想法(映射到微控制器中的特殊功能寄存器).例如,在下面的代码中,寄存器标志的值TX_BUFF_FULL可以在代码执行过程中重复更改,此时发送缓冲区中的空间可用或已用完:
void send_str(char * str){
// for each non-null character
for (char i = 0; str[i]; i++){
// wait for space in TX hardware buffer
while(TX_BUFF_FULL);
// put character into hardware FIFO
TX_REGISTER = str[i];
}
}
Run Code Online (Sandbox Code Playgroud)
TX_BUFF_FULL并且TX_REGISTER是易失性变量,映射到UART的特殊功能寄存器的地址.
理想情况下,我将编写源代码,以便可以在不更改PC上的自动测试和在微控制器上运行的情况下编译它,这可能需要预处理器指令.
例如,在为微控制器编译时使用此行的指令:
while(TX_BUFF_FULL);
Run Code Online (Sandbox Code Playgroud)
但在编译用于在PC上进行测试时使用它:
while(test_tx_buff_full());
Run Code Online (Sandbox Code Playgroud)
其中test_tx_buff_full()函数将是测试套件的一部分,模拟寄存器状态的变化.我无法想到实现结果的不同方式.
这是一种合理的方式吗?实现预处理器指令以实现此目的的一种巧妙方法是什么?有更简洁的方式吗?谢谢
| 归档时间: |
|
| 查看次数: |
486 次 |
| 最近记录: |