Конфигурационный заголовочный файл 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.
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. |