Настройки Ceedling CMock для ARM STM32

Я настраивал Ceedling для STM32. Howto очень мало, до сих пор мне удалось Google почти ничего. К счастью, рамки относительно прозрачны для своих размеров. Это конфигурация PIC. Я настроил нечто подобное (project.yml):

...
:defines:
  # in order to add common defines:
  #  1) remove the trailing [] from the :common: section
  #  2) add entries to the :common: section (e.g. :test: has TEST defined)
  :commmon: &common_defines #[]
    - STM32F103xB
    - UNITY_INT_WIDTH=32
    - CMOCK_MEM_INDEX_TYPE=uint32_t
    - UNITY_LINE_TYPE=uint16_t
  :test:
    - *common_defines
    - TEST
  :test_preprocess:
    - *common_defines
    - TEST

Пока все хорошо (никакой реальной работы пока не предпринималось). Добавив это определение

    - CMOCK_MEM_PTR_AS_INT=uint32_t

У меня есть предупреждение:

/vendor/ceedling/vendor/cmock/src/cmock.c:105:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   index = *(CMOCK_MEM_INDEX_TYPE*)((CMOCK_MEM_PTR_AS_INT)next - CMOCK_MEM_INDEX_SIZE);

Не удивительно, как next 64-битный указатель для платформы ПК Тем не менее я не совсем уверен, должен ли я контролировать CMOCK_MEM_PTR_AS_INT или нет. Это зависит от того, CMOCK_MEM_PTR_AS_INT является определением платформы критической цели (ARM).

До сих пор я не нашел пример STM32.

1 ответ

Решение

Вот сложная последовательность, полная интеграции Eclipse:

Установите Ceedling:

$ gem install ceedling

Создать проект Ceedling (устранение неполадок № 215):

myproject $ cd ..
$ ceedling new myproject
$ cd myproject/vendor/
$ rm -rf ceedling/
$ git clone --recursive https://github.com/throwtheswitch/ceedling.git

изменять vendor/ceedling/plugins/module_generator/config/module_generator.yml:

:module_generator:
  :project_root: ./
  :source_root:  Src/
  :inc_root:     Inc/
  :test_root:    test/

изменять project.yml:

...
:paths:
  :test:
    - +:test/**
    - -:test/support
  :source:
    - Src/**
  :include:
    - Drivers/**
    - Inc/**
  :support:
    - test/support
...
:defines:
  :commmon: &common_defines  # A nice typo, next to invisible :)
    - STM32F103xB
...
:cmock:
  :strippables:
    - volatile
...
:plugins:
  :load_paths:
    - vendor/ceedling/plugins
  :enabled:
#    - stdout_pretty_tests_report
    - stdout_gtestlike_tests_report
    - module_generator

Настройка подключаемого модуля Eclipse C/C++:

  • Главная / Проект: myproject

  • Главная / Применение: /home/user/.gem/ruby/2.5.0/bin/ceedling

  • Главная / Отключить автоматическую сборку

  • Аргументы / Программные аргументы: clobber\ntest:all

  • Тестирование / Test Runner: Google Test Runner

  • Окружающая среда: переменная TERM Значение xterm

Другие вопросы по тегам