Программирование ARM Конфигурационный заголовок nRF5x SDK Mon, September 27 2021  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Конфигурационный заголовок nRF5x SDK Печать
Добавил(а) microsin   

Конфигурационный заголовочный файл SDK (sdk_config.h) помогает управлять статической конфигурацией приложения, построенного поверх nRF5 SDK. Опции конфигурации, заключенные в этом файле, можно быстро редактировать в графической утилите (GUI wizard), сгенерированной из CMSIS Configuration Wizard Annotations. Эти стандартные аннотации декодируются ARM Keil uVision (версий 4 и 5), или могут быть обработаны open source инструментарием, написанным на Java - CMSIS Configuration Wizard [2].

Каждому модулю SDK соответствует как минимум одна опция конфигурации, которая разрешает этот модуль. Если модуль запрещен, то он не компилируется, даже когда его исходный код добавлен в проект, потому что реализация модуля добавляется операторами проверки опций препроцессора, например:

//example_module.c
#include "sdk_config.h"
 
#if EXAMPLE_MODULE_ENABLED
...
#endif //EXAMPLE_MODULE_ENABLED

При беглом просмотре содержимого хедера sdk_config.h можно увидеть, какие модули используются в приложении.

[sdk_config.h и файлы линкера]

Для каждого поддерживаемого MCU представляется традиционный sdk_config.h, который содержит все доступные опции конфигурации.

sdk/nrf5/config/nrf52810/config/sdk_config.h для nRF52810
sdk/nrf5/config/nrf52832/config/sdk_config.h для nRF52832
sdk/nrf5/config/nrf52840/config/sdk_config.h для nRF52840

Для каждого поддерживаемого MCU представляются файлы линкера, предназначенные для систем разработки Segger Embedded Studio и ARM GCC. Эти файлы линкера содержат все секции, используемые модулями SDK.

Для ARM GCC: config//armgcc/generic_gcc_nrf52.ld
Для Segger Embedded Studio: config//ses/flash_placement.xml

Эти файлы не обязательно используются в любом проекте SDK, но они могут предоставлять шаблон, помогающий в разработке нового приложения.

[CMSIS Configuration Annotations Wizard]

Мастер редактирования конфигурации (configuration wizard) генерируется из аннотаций (специально оформленных комментариев) внутри конфигурационного файла. Набор правил, по которым составляются такие аннотации, можно посмотреть в [3].

Проекты-шаблоны. В SDK содержится несколько шаблонных проектов, в которых подключены и разрешены модули SDK (с исходным кодом). Эти проекты дают хороший старт для разработки приложений на основе nRF5 SDK.

Стандартные проекты. Все примеры содержат полный конфигурационный файл заголовка, в котором разрешены только используемые модули. Это конфигурационный файл содержит часть конфигурации модулей SDK, который общий для всех проектов, и часть, соответствующая специфике приложения. Добавлены все пути поиска заголовков, как и файлы исходного кода реально используемых модулей SDK. Если Вы хотите начать использовать один из модулей SDK, то необходимо разрешить его в конфигурации, и добавить его модули исходного кода (пути подключения уже присутствуют в этом файле). Сохранение полного файла конфигурации полезно при миграции на новые версии SDK.

[Переназначение конфигурации sdk_config.h]

Каждое определение в хедере sdk_config.h снабжено условным #define, которое добавляется только тогда, когда ранее не было определения, так что конфигурацию sdk_config.h можно просто отменить.

Конфигурация, заданная в sdk_config.h, может быть отменена двумя путями:

• Добавление флага/определения в проект.
• Добавление в проект флага USE_APP_CONFIG, который задает использование в проекте файла app_config.h, который подключается в начале файла sdk_config.h.

[Редактирование sdk_config.h из IDE]

ARM Keil uVision. Эта среда разработки содержит встроенную поддержку стандарта, и когда в файле были обнаружены специальные маркеры, редактор дает возможность переключиться в графическое представление опций конфигурации. В Keil μVision V5.34 и более поздних версий при открытии в редакторе файла sdk_confi.h внизу окна редактора появляются две закладки Text Editor и Configuration Wizard, которые позволяют переключаться между текстовым и GUI-представлением конфигурации SDK. Можно также переключаться между этими вариантами горячей комбинацией клавиш Shift+F8.

Keil sdk config text Keil sdk config GUI

Segger Embedded Studio. Здесь может использоваться интеграция с открытой Java-утилитой CMSIS Configuration Wizard [2]. Эта утилита поставляется вместе с релизом, и все примеры содержат ссылку на неё (см. "Project Macros" в опциях проекта).

Для разрешения интеграции с CMSIS Config Wizard должна быть обновлена конфигурация внешних инструментов (External Tools Configuration).

1. Перейдите в меню File -> Open Studio Folder... -> External Tools Configuration.

2. В редакторе откроется файл tools.xml.

3. Вставьте следующий текст перед тегом < /tools >:

< item name="Tool.CMSIS_Config_Wizard" wait="no">
    < menu>&CMSIS Configuration Wizard< /menu>
    < text>CMSIS Configuration Wizard< /text>
    < tip>Open a configuration file in CMSIS Configuration Wizard< /tip>
    < key>Ctrl+Y< /key>
    < match>*config*.h< /match>
    < message>CMSIS Config< /message>
    < commands>
      java -jar "$(CMSIS_CONFIG_TOOL)" "$(InputPath)"
    < /commands>
< /item>

ARM GCC. CMSIS Config Wizard (CMSIS Configuration Wizard) интегрирован с примерами файлов makefile. Чтобы открыть sdk_config.h в этой утилите, выполните команду:

make sdk_config

Другие IDE. Используйте стандартный редактор кода для модификации значений #define в sdk_config.h.

[Ссылки]

1. SDK configuration header file site:nordicsemi.com.
2. CMSIS Configuration Wizard.
3. Configuration Wizard Annotations site:keil.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page