繁体   English   中英

如何使用arm-none-eabi-gcc + cmake设置cmocka示例?

[英]How to setup a cmocka example with arm-none-eabi-gcc + cmake?

我正在为基于stm32f4xx的系统开发固件。 为此,我基于ARM和cmake建立了基于arm-none-eabi-gcc工具链的工具链。 该工具链可在Ubuntu上使用。 我可以进行x编译和调试(通过openocd + eclipse IDE)。 现在,我想为我的代码添加一些功能测试。 我正在检查,看来cmocka是用于嵌入式软件测试的好工具。

我现在正在寻找将测试集成到cmake构建中的示例/模板。

让我们在myfunc.c假设一个简单的函数

#include "myFunc.h"

int buffer[10];

void myFunc(int i, int val) {
    buffer[i] = val;
}

如果我做对了,我可以在一个单独的c文件中进行测试,例如“ test.c”

#include "myFunc.h"
#include <cmocka.h>

// function success
static void test_myFunc_positive() {
    for(int i = 0; i < 10; i++) {
        myFunc(i,i);
    }
}

static void test_myFunc_outofbounds() {
    myFunc(100,44);
}


int main(void) {
    const struct CMUnitTest tests[] = {
        cmocka_unit_test(test_myFunc_positive),
        cmocka_unit_test(test_myFunc_outofbounds),
    };
    return cmocka_run_group_tests(tests, NULL, NULL);
}

通常我跑

cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE="cmake/STM32Toolchain.cmake"

我的问题包含一些子问题:1.)我安装了libcmocka-dev。 这是我的主机系统。 我需要为arm-none-eabi-gcc编译器安装cmocka吗? 2.)如何设置cmake来选择cmocka库,构建测试并在主机系统上运行它? 认为我的工具链文件需要忽略。

您的源代码看起来还不错。 这是如何使用cmocka的食谱。 我也建议交叉编译cmocka的源代码 实际上,我是这样进行的:

  1. cmocka.c添加到您的源
  2. 将'cmocka.h和cmocka_pbc.hcmocka_private.h添加到您的包含目录中。
  3. 编译并运行软件

PS:我不知道libcmocka-dev。 我认为这是cmocka的预编译版本?

PPS:在将cmocka的输出重定向到串行UART时遇到了一些麻烦。 如果您遇到同样的问题,请随时提问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM