簡體   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