我正在尝试在我的 linux 机器上对一些 STM32 代码进行单元测试(使用 unity+ceedling),但是每次我访问任何寄存器时,代码都会失败并出现以下错误:
> Produced no final test result counts in $stdout:
Segmentation fault (core dumped)
> And exited with status: [0] (count of failed tests).
> This is often a symptom of a bad memory access in source or test code
例如,此代码将导致 PASSED 1/1(请注意,我正在测试返回 a+b 且与 STM 外围设备无关的函数)。
#include "unity.h"
#include "sum2nums.h"
#include "stm32f4xx.h"
void test_Sum(){
TEST_ASSERT_EQUAL_UINT32(5, Sum(3, 2));
}
但是这段代码会产生上面提到的错误。
#include "unity.h"
#include "sum2nums.h"
#include "stm32f4xx.h"
void test_Sum(){
GPIOA->MODER = 1U;
TEST_ASSERT_EQUAL_UINT32(5, Sum(3, 2));
}
是否有可能以这种方式进行测试,或者我是否必须使用 QEMU(以及如何在不使用 Eclipse 或任何其他 IDE 的情况下这样做)?请注意,Ceedling 使用 gcc,如果我使用 arm-none-eabi 它会生成 hex 文件,我无法在我的 PC 上运行它。