BLE от Nordic Semiconductor. Начало работы со стеком с применением чипа nRF51822

Здравствуйте.
Какое-то время я вынашивал идею написать статью о данном стеке, его особенностях и применении с использованием чипа nRF51822. А недавняя публикация «BLE стек от TI» заставила меня сесть и попытаться превратить идею в что-то материальное.
Nordic Semiconductor предоставляет очень интересное, на мой взгляд, решение. С одной стороны мощный чип на ядре ARM Cortex-M0, с другой стороны постоянно развивающееся ПО стека и набора библиотек, входящих в состав SDK.
К сожалению, на Хабре нет статей, посвященных тематике BLE на NORDIC-е, как в прочем, практически нет их и в рунете, поэтому надеюсь, что статья будет полезна тем, кто начинает использовать продукцию этой фирмы в части, касающейся BLE, а также тем, кто увлекается технологией Bluetooth и BLE в частности.
Nordic Semiconductor – nRF52840 Preview DK
1. Железо
- 256КБ флеш и 16КБ ОЗУ;
- 128КБ флеш и 16КБ ОЗУ;
- 256КБ флеш и 32КБ ОЗУ.
В зависимости от версии стека, так же может меняться адрес загрузки клиентского ПО. На это тоже необходимо обращать внимание. Если неверно указать адрес загрузки ПО, то программатор выдаст ошибку, по описанию которой никогда не понять почему именно не удалось прошить чип. Адрес загрузки ПО указывается в спецификации на каждую версию стека.
Итак, если Вы решили работать с BLE от NORDIC, то прежде всего вам необходимо приобрести один из отладочных наборов. Вот некоторые из них:
— nRF51822 Evaluation Kit (EK) – независимая платформа для оценки и прототипирования, основанная на чипе nRF51822.
- плата с чипом, с парой кнопок и парой светодиодов. На плате расположен программатор от Segger, имеющий свой уникальный номер, позволяющий программировать наш чип, производить отладку и, что не мало важно, позволяющий использовать UART для связи nRF51822 с компьютером посредством USB;
- USB донгл, так же с чипом nRF51822 и программатором от Segger, имеющий специальную прошивку NORDIC и используемый для связи с платой.
— nRF51822 Development Kit (DK) – зависимая от “Starter Kit” платформа, дает возможность создавать полноценные приложения используя не только BLE, но и все ресурсы чипа nRF51822, как микроконтоллера.
- плата с nRF51822 и с PCB антенной;
- плата с nRF51822 и с разъемом для антенны;
- USB донгл такой же, как в EK;
- 5 чипов nRF51822;
- программатор
— nRF51822 Starter Kit (SK) – это своего рода «материнская плата», к которой можно подключить EK и DK для использования всех возможностей чипа nRF51822.
Начало работы с чипами Nordic Semiconductor nrf52. Часть 1.
В состав набора входит 2 материнские платы с наборами кабелей.
С недавнего времени фирма не рекомендует пользоваться EK и DK, т.к. появились новые отладочные наборы: «nRF51 DK» и «nRF51 Dongle», но я считаю, что EK и DK пока остаются очень хорошим средством изучения и прототипирования.
В настоящий момент в моей задаче используется nRF51822 DK без SK. Благодаря разъемам на платах DK, можно с помощью соединительных проводов и макетной платы подключать любую периферию, например, светодиоды для отображения наличия соединения или какой ни будь ошибки. Особенностью использования DK без SK является то, что на плату DK необходимо подать питание, а для этого нужно знать распиновку разъемов платы.
Она есть в документе «nRF51822_Development_Kit_User_Guide». В связи с тем, что в качестве «супер-хоста» для nRF51822 я использую отладочный модуль STM32L152-DISCOVERY, питание 3.3В подается оттуда.
Нюанс: пока Вы не приобретете один из наборов, Вы не сможете загрузить с сайта ни спецификацию, ни стек, ни программное обеспечение, за исключением ПО «nRFgo Studio» и документации на чипы.
- спецификации продукта;
- руководства пользователя;
- спецификации, прошивка и API стека;
- программное обеспечение;
- «Reference layout»;
2. Программное обеспечение, предлагаемое NORDIC
- стек SoftDevice S110 (S120, S130) – содержит заголовочные файлы API и бинарный (HEX) файл в котором содержится прошивка стека (для каждого типа стека свой HEX). Исходного кода самого стека нет.
- nRF51 SDK – содержит в себе заголовочные файлы API к стеку, а также исходные коды библиотек на языке С для упрощения работы со стеком и периферией чипов nRF51422 и nRF51822;
- Master Control Panel (MCP) – 32 и 64 разрядное ПО, предназначенное для работы с USB донглом и позволяющее производить поиск устройств, обнаруживать сервисы, читать атрибуты сервисов, устанавливать Bluetooth соединение, принимать и передавать данные. В режиме сервера есть возможность создавать любые сервисы, с характеристиками, определенными как в Bluetooth SIG, так и со своими собственными. В общем, это главная программа для отладки Вашего ПО с другой стороны беспроводного соединения. При установке Master Control Panel также устанавливается ПО под названием «Master Emulator». О нем мало где написано, но оно может понравиться многим разработчикам. Дело в том, что это API, позволяющее создать .NET приложение для ПК с ролью мастер-устройство.
- nRFgo Studio — 32 и 64 разрядное ПО, предназначенное для прошивки стека и клиентского ПО. Также с его помощью можно изменять прошивку материнских плат, входящих в комплект SK; создавать свои сервисы в том числе и на своих же UUID-ах; настраивать параметры безопасности соединения, настраивать GAP и advertising, настраивать периферию чипа, вычислять потребление энергии чипом и многое другое.
- nRF Sniffer – ПО для просмотра пакетов, передающихся от одного устройства к другому;
- nRF51-BLE-Driver – на самом деле это не драйвер в обычном смысле слова. Это DLL, предоставляющее API к стеку на языке С. Благодаря ему, Вы можете написать приложение для ПК, которое будет общаться со стеком, который можно вшить в USB донгл, входящий в состав DK или EK. API предоставляет реализацию только роли периферийного устройства.
- также можно загрузить исходные коды приложений для Android и iOS, позволяющие работать с отладочными наборами. Сами приложения можно найти в соответствующих платформам магазинах приложений. Приложения позволяют протестировать например, работу обновления прошивки по воздуху (DFU – Device Firmware Update Service) или UART по Bluetooth.
3. Средства разработки
Для программирования можно использовать как платные, так и бесплатные средства разработки. NORDIC предлагает использовать Keil MDK-ARM, IAR, а также любое IDE, позволяющее работать с GCC ARM. Для работы с GCC предлагается документ под названием «nAN-29 nRF51 Development with GCC and Eclipse Application Note» в котором описываются предложения для разработчиков, желающих использовать Eclipse, GCC и GDB.
NORDIC считает, что предпочтительнее использовать Keil и даже установщик «nRF51 SDK» интегрирует SDK в Keil, благодаря чему упрощается процесс создания проекта приложения. Все примеры, находящиеся в SDK, имеют файлы проектов формата Keil.

4. Стек SoftDevice
- S110 SoftDevice –предназначен для использования в случае, если ваше устройство должно обладать ролью периферийного устройства (Peripheral/Broadcaster).
- S120 SoftDevice – предназначен для использования в случае, если ваше устройство должно быть центральным устройством (Central/Observer). Данный стек может поддерживать до 8-ми одновременных соединений с периферийными устройствами.
- S120 SoftDevice – предназначен для использования в случае, если ваше устройство должно быть одновременно и периферийным и центральным (Central/Peripheral/Broadcaster/Observer).
API любого из вариантов стека позволяет управлять и контроллером BLE и хостом, т.е. и другой периферией, входящей в чип. Правильнее сказать так: если Вы используете стек SoftDevice, то управление остальной периферией происходит через API стека и он контролирует что и когда можно применять. Естественно чип можно использовать вообще без стека, как обычный микроконтроллер.
В информации о релизе очередной версии SDK всегда указывается поддерживаемая версия стека. Это очень важно, потому, что первое, с чем сталкивается программист, это невозможность прошить свою программу из-за несоответствия версии SDK и SoftDevice. Например, версия SDK 6.1.0 работает со следующими версиями стека: S110 — 7.0.0, 7.1.0; S120 — 1.0.0.
5. Прошивка стека и клиентского приложения.
В связи с тем, что стек предлагается только в виде бинарного файла-прошивки, встает вопрос, а как же работать с чипом, если надо шить и стек и свою программу?

Как видно из этих двух рисунков, стек шьется в нижнюю часть флеш-памяти и использует младшую половину ОЗУ, начинающуюся с адреса 0х2000000. Приложение же шьется в флеш-память, начиная с адреса CODE_R1_BASE использует ОЗУ с адреса RAM_R1_BASE.
Переменные CODE_R1_BASE и RAM_R1_BASE отличаются в зависимости от версии стека.
Стек шьется с помощью программы «nRFgo Studio» один раз, после чего можно писать свое приложение и шить его или «nRFgo Studio» или, что удобнее, с помощью Keil.
HEX-файл стека шьется один раз, после чего можно писать свое приложение и шить его или «nRFgo Studio» или, что удобнее, с помощью Keil.
Здесь показан пример настройки памяти в Keil для стека S110 v.6.0.0:

CODE_R1_BASE у нас равен 0x16000, а RAM_R1_BASE равен 0x20002000
А здесь показан пример настройки памяти в Keil для стека S120 v.1.0.0:

CODE_R1_BASE у нас равен 0x18000, а RAM_R1_BASE равен 0x20002800
6. Заключение
SDK предлагает большое количество примеров использования чипа nRF51822 как просто микроконтроллера, так и с применением стека. Благодаря примерам, можно быстро освоить программирование чипа параллельно изучая все тонкости SDK, а их там не мало.
NORDIC создал хороший форум, где можно получить ответ на практически любой вопрос. Сотрудники фирмы часто сами отвечают на вопросы и довольно быстро.
Благодарю вас за то, что дочитали мою статью до конца. Если вам будет интересно, а я пройду песочницу, то в следующей статье расскажу об особенностях реализации клиентского ПО с использованием SDK стека.
Хочу пожелать удачи и успехов в освоении и применении продукции Nordic Semiconductor, лично мне нравятся их решения.
Спасибо за внимание.
Источник: habr.com
[Из песочницы] BLE от Nordic Semiconductor. Начало работы со стеком с применением чипа nRF51822 18.12.2014 19:33

Здравствуйте.Какое-то время я вынашивал идею написать статью о данном стеке, его особенностях и применении с использованием чипа nRF51822. А недавняя публикация «BLE стек от TI» заставила меня сесть и попытаться превратить идею в что-то материальное.
Nordic Semiconductor предоставляет очень интересное, на мой взгляд, решение. С одной стороны мощный чип на ядре ARM Cortex-M0, с другой стороны постоянно развивающееся ПО стека и набора библиотек, входящих в состав SDK.
К сожалению, на Хабре нет статей, посвященных тематике BLE на NORDIC-е, как в прочем, практически нет их и в рунете, поэтому надеюсь, что статья будет полезна тем, кто начинает использовать продукцию этой фирмы в части, касающейся BLE, а также тем, кто увлекается технологией Bluetooth и BLE в частности.
1. ЖелезоРассматриваемый нами чип nRF51822 со стороны размера памяти представлен в 3 вариантах:256КБ флеш и 16КБ ОЗУ; 128КБ флеш и 16КБ ОЗУ; 256КБ флеш и 32КБ ОЗУ. При этом ОЗУ разделено на блоки и каждый блок имеет свое управление питанием.
Я акцентирую на это внимание, потому, что при программировании чипа надо знать, что для приложения всегда используется старшая половина ОЗУ, тогда как младшая половина всегда используется стеком.В зависимости от версии стека, так же может меняться адрес загрузки клиентского ПО. На это тоже необходимо обращать внимание. Если неверно указать адрес загрузки ПО, то программатор выдаст ошибку, по описанию которой никогда не понять почему именно не удалось прошить чип. Адрес загрузки ПО указывается в спецификации на каждую версию стека.
Итак, если Вы решили работать с BLE от NORDIC, то прежде всего вам необходимо приобрести один из отладочных наборов. Вот некоторые из них: — nRF51822 Evaluation Kit (EK) — независимая платформа для оценки и прототипирования, основанная на чипе nRF51822.
В состав набора входит:
плата с чипом, с парой кнопок и парой светодиодов. На плате расположен программатор от Segger, имеющий свой уникальный номер, позволяющий программировать наш чип, производить отладку и, что не мало важно, позволяющий использовать UART для связи nRF51822 с компьютером посредством USB; USB донгл, так же с чипом nRF51822 и программатором от Segger, имеющий специальную прошивку NORDIC и используемый для связи с платой. — nRF51822 Development Kit (DK) — зависимая от «Starter Kit» платформа, дает возможность создавать полноценные приложения используя не только BLE, но и все ресурсы чипа nRF51822, как микроконтоллера.
В состав набора входит:
плата с nRF51822 и с PCB антенной; плата с nRF51822 и с разъемом для антенны; USB донгл такой же, как в EK; 5 чипов nRF51822; программатор Кстати «зависимость» от «Starter Kit» не критична, если Вы умеете пользоваться паяльником или у Вас есть макетная плата и проводки.— nRF51822 Starter Kit (SK) — это своего рода «материнская плата», к которой можно подключить EK и DK для использования всех возможностей чипа nRF51822.
В состав набора входит 2 материнские платы с наборами кабелей.
С недавнего времени фирма не рекомендует пользоваться EK и DK, т.к. появились новые отладочные наборы: «nRF51 DK» и «nRF51 Dongle», но я считаю, что EK и DK пока остаются очень хорошим средством изучения и прототипирования.
В настоящий момент в моей задаче используется nRF51822 DK без SK. Благодаря разъемам на платах DK, можно с помощью соединительных проводов и макетной платы подключать любую периферию, например, светодиоды для отображения наличия соединения или какой ни будь ошибки. Особенностью использования DK без SK является то, что на плату DK необходимо подать питание, а для этого нужно знать распиновку разъемов платы.
Она есть в документе «nRF51822_Development_Kit_User_Guide». В связи с тем, что в качестве «супер-хоста» для nRF51822 я использую отладочный модуль STM32L152-DISCOVERY, питание 3.3В подается оттуда.
Нюанс: пока Вы не приобретете один из наборов, Вы не сможете загрузить с сайта ни спецификацию, ни стек, ни программное обеспечение, за исключением ПО «nRFgo Studio» и документации на чипы.
Каждый отладочный набор имеет свой уникальный номер (ключ), наклеенный на коробку с набором. После покупки набора необходимо зарегистрироваться на сайте и в профиле пользователя ввести ключ, указанный на коробке. После этого Вам станут доступны:
спецификации продукта; руководства пользователя; спецификации, прошивка и API стека; программное обеспечение; «Reference layout»; 2. Программное обеспечение, предлагаемое NORDIC стек SoftDevice S110 (S120, S130) — содержит заголовочные файлы API и бинарный (HEX) файл в котором содержится прошивка стека (для каждого типа стека свой HEX). Исходного кода самого стека нет. nRF51 SDK — содержит в себе заголовочные файлы API к стеку, а также исходные коды библиотек на языке С для упрощения работы со стеком и периферией чипов nRF51422 и nRF51822; Master Control Panel (MCP) — 32 и 64 разрядное ПО, предназначенное для работы с USB донглом и позволяющее производить поиск устройств, обнаруживать сервисы, читать атрибуты сервисов, устанавливать Bluetooth соединение, принимать и передавать данные.
В режиме сервера есть возможность создавать любые сервисы, с характеристиками, определенными как в Bluetooth SIG, так и со своими собственными. В общем, это главная программа для отладки Вашего ПО с другой стороны беспроводного соединения. При установке Master Control Panel также устанавливается ПО под названием «Master Emulator». О нем мало где написано, но оно может понравиться многим разработчикам.
Дело в том, что это API, позволяющее создать .NET приложение для ПК с ролью мастер-устройство. nRFgo Studio — 32 и 64 разрядное ПО, предназначенное для прошивки стека и клиентского ПО. Также с его помощью можно изменять прошивку материнских плат, входящих в комплект SK; создавать свои сервисы в том числе и на своих же UUID-ах; настраивать параметры безопасности соединения, настраивать GAP и advertising, настраивать периферию чипа, вычислять потребление энергии чипом и многое другое. nRF Sniffer — ПО для просмотра пакетов, передающихся от одного устройства к другому; nRF51-BLE-Driver — на самом деле это не драйвер в обычном смысле слова.
Это DLL, предоставляющее API к стеку на языке С. Благодаря ему, Вы можете написать приложение для ПК, которое будет общаться со стеком, который можно вшить в USB донгл, входящий в состав DK или EK. API предоставляет реализацию только роли периферийного устройства. также можно загрузить исходные коды приложений для Android и iOS, позволяющие работать с отладочными наборами.
Сами приложения можно найти в соответствующих платформам магазинах приложений. Приложения позволяют протестировать например, работу обновления прошивки по воздуху (DFU — Device Firmware Update Service) или UART по Bluetooth. 3. Средства разработки Для программирования можно использовать как платные, так и бесплатные средства разработки.
NORDIC предлагает использовать Keil MDK-ARM, IAR, а также любое IDE, позволяющее работать с GCC ARM. Для работы с GCC предлагается документ под названием «nAN-29 nRF51 Development with GCC and Eclipse Application Note» в котором описываются предложения для разработчиков, желающих использовать Eclipse, GCC и GDB.NORDIC считает, что предпочтительнее использовать Keil и даже установщик «nRF51 SDK» интегрирует SDK в Keil, благодаря чему упрощается процесс создания проекта приложения. Все примеры, находящиеся в SDK, имеют файлы проектов формата Keil.

4. Стек SoftDevice Стек предлагается в 3-х вариантах.
S110 SoftDevice –предназначен для использования в случае, если ваше устройство должно обладать ролью периферийного устройства (Peripheral/Broadcaster). S120 SoftDevice — предназначен для использования в случае, если ваше устройство должно быть центральным устройством (Central/Observer). Данный стек может поддерживать до 8-ми одновременных соединений с периферийными устройствами.
S120 SoftDevice — предназначен для использования в случае, если ваше устройство должно быть одновременно и периферийным и центральным (Central/Peripheral/Broadcaster/Observer). API любого из вариантов стека позволяет управлять и контроллером BLE и хостом, т.е. и другой периферией, входящей в чип. Правильнее сказать так: если Вы используете стек SoftDevice, то управление остальной периферией происходит через API стека и он контролирует что и когда можно применять. Естественно чип можно использовать вообще без стека, как обычный микроконтроллер.
В информации о релизе очередной версии SDK всегда указывается поддерживаемая версия стека. Это очень важно, потому, что первое, с чем сталкивается программист, это невозможность прошить свою программу из-за несоответствия версии SDK и SoftDevice. Например, версия SDK 6.1.0 работает со следующими версиями стека: S110 — 7.0.0, 7.1.0; S120 — 1.0.0.
5. Прошивка стека и клиентского приложения. В связи с тем, что стек предлагается только в виде бинарного файла-прошивки, встает вопрос, а как же работать с чипом, если надо шить и стек и свою программу?


Как видно из этих двух рисунков, стек шьется в нижнюю часть флеш-памяти и использует младшую половину ОЗУ, начинающуюся с адреса 0×2000000. Приложение же шьется в флеш-память, начиная с адреса CODE_R1_BASE использует ОЗУ с адреса RAM_R1_BASE.
Переменные CODE_R1_BASE и RAM_R1_BASE отличаются в зависимости от версии стека.
Стек шьется с помощью программы «nRFgo Studio» один раз, после чего можно писать свое приложение и шить его или «nRFgo Studio» или, что удобнее, с помощью Keil.
HEX-файл стека шьется один раз, после чего можно писать свое приложение и шить его или «nRFgo Studio» или, что удобнее, с помощью Keil.
Здесь показан пример настройки памяти в Keil для стека S110 v. 6.0.0:

CODE_R1_BASE у нас равен 0×16000, а RAM_R1_BASE равен 0×20002000
А здесь показан пример настройки памяти в Keil для стека S120 v. 1.0.0:

CODE_R1_BASE у нас равен 0×18000, а RAM_R1_BASE равен 0×20002800
6. Заключение SDK предлагает большое количество примеров использования чипа nRF51822 как просто микроконтроллера, так и с применением стека. Благодаря примерам, можно быстро освоить программирование чипа параллельно изучая все тонкости SDK, а их там не мало.NORDIC создал хороший форум, где можно получить ответ на практически любой вопрос. Сотрудники фирмы часто сами отвечают на вопросы и довольно быстро.
Благодарю вас за то, что дочитали мою статью до конца. Если вам будет интересно, а я пройду песочницу, то в следующей статье расскажу об особенностях реализации клиентского ПО с использованием SDK стека.
Хочу пожелать удачи и успехов в освоении и применении продукции Nordic Semiconductor, лично мне нравятся их решения.
Источник: _ble_ot_nordic_semiconductor_nacalo_raboty_so_stekom_s_primeneniem_cipa_nrf51822-590924.html» target=»_blank»]pcnews.ru
Nordic semiconductor что это за программа
На прошедшей неделе Nordic Semiconductor добавил поддержку серии nRF52 в nRF Connect SDK.

Основной вопрос, который возникает у большинства — что это такое и главное зачем? Особенно актуален этот вопрос для тех, кто имеет опыт работы с nRF5 SDK, а их не мало.
Сразу отмечу, что статья в первую очередь написана для тех, кто использует традиционные подходы в разработке встраиваемых (embedded) устройств уровня Cortex-M или близких. Поэтому некоторые определения и аналогии могут показаться не полностью корректными с точки зрения тех, кто работает на высоком уровне (смотрит на происходящее со стороны Linux), но так будет проще понять тем, кто только начинает этот путь.
Комментарии и уточнения всегда приветствуются.
Немного про то кто такие Nordic и как у них всё хорошо сейчас
Системы на кристалле от Nordic пользуются заслуженным авторитетом у многих. Например, среди отечественных компаний, выпускающих устройства с Bluetooth Low Energy, порядка 90% используют их в своих устройствах. В качестве примеров успеха можно привести производителей автомобильных сигнализаций: Starline, Pandora, Scher-Khan в последних поколениях используют именно их.
Ещё одним крупным примером успешного применения является компания Redmond, они же Ready4Sky. Свои умные мультиварки и прочую бытовую технику они делают также на этих чипах. За прошедший год количество выпущенных устройств приближается к 2 миллионам только на отечественный рынок.
Да и по миру Nordic Semiconductor имеет долю 40%, в 2.5 раза больше, чем у ближайшего конкурента (TI). См, квартальные отчёты. Даже такие гиганты, как Samsung и Xiaomi используют чипы Nordic в своих продуктах, несмотря на то, что имеют аналогичных решения на базе собственных чипов.
Тут же можно отметить, что не только гиганты используют Nordic, но компании поменьше, а также любители часто используют их в своих устройствах. С этой точки зрения серию nRF5x можно назвать STM для беспроводки (ожидаю обсуждения в комментариях).
Основными причинами успеха являются:
- Высокое качество кода и документации
- Отличная техническая поддержка (особенно на фоне альтернативных решений от других производителей)
- Большое количество примеров в SDK
- Простая схема (встроенный балун и минимальный обвес)
- Готовые проекты Altium для разводки радиочасти
- Конкурентная цена
Здесь же встаёт главный вопрос, зачем был выпущен новый SDK и чем он отличается от текущего? Если так всё хорошо у текущего решения.
Текущий nRF5 SDK работает на базе простой очереди, и в большинстве случаев этого оказывается достаточно для реализации почти любой задачи (хотя, некоторые компании используют всё же свои SDK, но это исключения из правил). В новой nRF Connect SDK используется кардинально иной подходит на базе RTOS Zephyr. Рассмотрим отличия подробнее.
RTOS (ОСРВ) несут в себе, как определённые плюсы, так и известные недостатки. К последним можно отнести:
- дополнительные накладные расходы на поддержание ОС
- большая сложность разработки на простых проектах
- повышенная сложность сборки
- повышенную надёжность за счёт контроля отдельных потоков
- более лёгкое взаимодействие между большим количество одновременно работающих потоков на крупных проектах
- большую независимость кода от аппаратной платформы
- масштабируемость и переносимость
С этой точки зрения можно сравнить переход на Zephyr с появлением первых массовых ARM Cortex-M и переходом на 32 бита. Сейчас же большинство используют 32-битные МК в качестве основных, о чём есть статья на Хабре. В ней же рассказывается про переход, который первоначально казался излишне сложным. Но, со временем практически все пришли к тому, что это стало стандартом.
Стоит отметить, что Zephyr OS не является единственной RTOS работающей на чипах Nordic. Примеры проектов с FreeRTOS доступны в с SDK v.11 начиная с 2016 года, а ещё раньше в SDK v.9 была поддержка Keil RTX для семейства nRF51 (2015 год). Однако, ранее это были скорее экспериментальные функции и поддержка предоставлялась в большей степени со стороны производителей RTOS. Что в принципе верно и сейчас.
Неофициальная поддержка Zephyr для семейств nRF5x появилась ещё в 2016 году.
Полностью же сделать новый SDK на ОСРВ Zephyr Nordic решил только сейчас.
Для этого есть ряд предпосылок:
-
Ряд технологий наследуется из Linux:
- работа с потоками, очередями в режиме реального времени (особо важно для времязависимых протоколов типа BLE)
- библиотеки для работы с сетью и безопасностью
- гибкая модель аппаратного описания с оптимизацией на энергопотребление
- библиотеки для работы с периферией (датчиками и т.п.)
- ориентация на снижение размера конечного файла
- удобная конфигурация под проект
- оптимизированная под скорость сборки
- Позволяет снизить издержки, как самой Nordic, так и конечным разработчикам

На практике при реализации данного подхода возникает ряд проблем когнитивного свойства. Разработчики, привыкшие к продукту и решениям испытывают диссонанс при большом количестве изменений.
Рассмотрим версию разработки на Windows, так как именно она вызовет больше вопросов, относительно тех, кто привык к разработке на Linux.
Необходимы следующие пакеты:
- Chocolatey (менеджер пакетов)
- Git (система контроля версий)
- Ninja (система сборки ориентированная на скорость)
- CMake (высокоуровневая система сборки)
- DTC-MSYS2 (система сборки дерева устройств(device tree))
- GPerf (генаратор хеш)
- west (позволяет работать с несколькими репозитариями из одной папки и конфигурационного файла)
- pip (менеджер пакетов Python)
- Python3
- GNU Arm Embedded Toolchain (GCC, GDB для встраиваемых систем от самой ARM)
Например, Chocolatey и pip позволяют установить все необходимые пакеты через консоль для ОС и Python соответственно. Причём сам Python, как и большинство рассматриваемого ПО ставится одной командой:
сhoco install python xxx
Обновляется также одной командой:
choco upgrade all
Подход немного не привычен для пользователей Windows, для тех же, кто знаком с консольными менеджерами пакетов в Linux (apt, zypper и т.п.) ничего нового. Не раз замечал ситуацию, что разработчики ПО для МК обновляют софт, лишь при переустановке ОС на ПК. Про то, почему это плохо мы говорить не будем, отмечу лишь, что здесь это задача решается автоматически.
Гораздо более интересны нововведения в области конфигурации и сборки проектов.
Ninja разрабатывался и позиционируется, как замена make и ориентирован на скорость сборки. Особо хорошо себя показывает в применениях, когда необходимо пересобирать проекты с кучей мелких файлов, где не было изменений. Эффект может быть на порядок, а то и два, см. тесты.
Cmake в свою очередь позволяет генерировать конфигурационные файлы для Ninja на высокоуровневом (скриптовом) языке под платформу на которой будет происходить сборка. Про Cmake можно почитать на Хабре, например, тут, тут и тут,
GPerf генерирует таблицу указателей, что позволяет сэкономить память, см. 3 стадию сборки ниже.
Отдельно стоит обратить внимание на новый подход к описанию железа. Появились Devicetree, описывающие аппаратную структуру устройства. Это является прямым следствием поддержки Zephyr силами Linux Foundation.
Плюсы заключаются в том, что теперь аппаратное описание вынесено в отдельный .dts файл, который имеет простую стуктуру, его легко модифицировать, и, как следствие, портировать код между разными семействами чипов.
В качестве примера насколько всё наглядно приведу базовый dtsi на nRF52840, который в свою очередь используются в описании платы nRF52840-DK nrf52840dk_nrf52840.dts
Количество плат поддерживаемых Zephyr уже сейчас более 200.
Как было сказано ранее, Nordic впервые выпустил Zephyr на nRF91 серии, потом на nRF53, и сейчас он наконец добрался до наиболее массовой nRF52.
Переход на RTOS позволяет в свою очередь решить проблему адаптации кода под новое железо. Даже среди чипов одного семейства переход требовал определённых ресурсов со стороны разработки, если сопровождался переходом на другой softdevice (предкомпилированную библиотеку BLE). Не говоря уже про переход, например с 51 или 91 серии на 52, когда значительно меняется сама аппаратная платформа. Сейчас же эта задача будет решаться гораздо проще и быстрее.
Железо у Nordic постоянно совершенствуется, но об этом необходимо писать отдельно. В рамках этой статьи можно лишь отметить, что ставка делается на интеграцию с RTOS, безопасность, энергоэффективность и улучшение радиоканала (BLE 5.2). Спасибо можно сказать двухядерным Cortex-M33, ARM Cryptocell и ARM TrustZone
Для сборки devicetree используется Device Tree Compiler, входящий в состав MSYS2 (улучшенная система сборки на базе Cygwin и MinGW-64).
Вторая часть конфигурации проекта находится в KConfig (Kernel config), который также был наследован из Linux. Он позволяет через графический интерфейс выбрать необходимые блоки и задать параметры для сборки под конкретную задачу, что особо актуально в условиях ограниченных ресурсов систем на кристалле.
Можно использовать традиционные утилиты типа menuconfig или же в рамках Segger Embedded Studio (официальной рекомендованной IDE) есть встроенный интерфейс, который запускается через соответствующий пункт в меню: Project > Configure nRF Connect SDK Project

Пример конфигурации проекта с SSL/TLS на базе nRF9160 представлен ниже. Как видно в нём можно настроить как аппаратные особенности проекта (платформу, количество потоков, подключаемые модули ядра), так и программные (ключи, адреса и т.п.).


Рассмотрим стадии сборки проекта: Всего их пять:
- Конфигурация — предварительная обработка всех конфигов (devicetree, KConfig), на выходе получаем заголовочные файлы описывающие железо и конфиг для Ninja
- Предварительная сборка (I) — обработка структур на высоком уровне, компиляция системных файлов и смещений (offset), создание таблиц вызовов
- Первоначальная сборка (II) — компиляция основных исходных кодов и упаковка их в архивы, линковка
- Окончательная сборка (III) — на этом этапе достигается снижение требуемого объёма памяти за счёт хешей индексов (GPerf), дополнительные скрипты линковщика также могут быть обработаны здесь
- Пост-обработка (IV) — генерация hex, bin файлов
Напрямую сравнивать результаты работы программ, созданных на двух SDK нельзя. Так как библиотеки и подходы очень сильно отличаются и пока нет подобных тестов. Определённо можно сказать, что решение хорошо себя ощущает на средних и топовых чипах в линейке (nRF52832 и выше), остаётся большой запас по ресурсам. При этом нельзя сказать, что новый SDK не применим на младших чипах типа nRF52810. Необходимо рассматривать задачу более детально.
Возвращаясь к вопросу выведенному в название статьи, можно сказать, что эта парадигма — определённо новая реальность. Которая на первый взгляд несёт значительные улучшения. Как минимум 2 новых семейства чипов у крупнейшего производителя BLE в мире работают именно и только на этой технологии и возврата назад не предвидится. На мой взгляд это — революция, которую готовили заранее.
- Изменения радикальны, код работающий с текущим nRF5 SDK получается не совместимым с новым (nRF Connect SDK)
- Переход на RTOS c Devicetree и KConfig позволяет получить дополнительный уровень абстракции для железа, что в свою очередь значительно ускоряет разработку и перенос проекта на новую платформу
- Переход на Zephyr несёт с собой поддержку большого количества протоколов и библиотек из коробки, для устройств интернета вещей наиболее интересны функции работы с сетью и безопасностью, где традиционно силён Linux
- Zephyr OS использует при сборке ряд инструментов, которые позволяют значительно сократить время сборки и требования к памяти, что особо актуально для встраиваемых применений
- Новый SDK позволяет использовать более высокоуровневых разработчиков, которых на рынке, гораздо больше, чем низкоуровневых. Тем самым решается вопрос кадров и увеличении доли рынка.

Want to improve your IT-english skills and have fun?
Follow GeekEng in telegram

Learn
Источник: 3-info.ru
Nordic semiconductor что это за программа
Норвежская компания Nordic Semiconductor ASA производит полупроводниковые приборы в области беспроводных коммуникаций и мультимедиа.
Компания специализируется в разработке высокоскоростных преобразователей данных и приемопередатчиков ISM-диапазона (Industrial, Scientific, Medical).
Сортировка:
На странице:

[ Без категории ]
NORDIC SEMICONDUCTOR — NRF52811-QCAA-T
IC: SoC; I2C,PDM,PWM,QDEC,SPI,UART; SMD; QFN32; Шифрование: AES128..

[ Без категории ]
NORDIC SEMICONDUCTOR — NRF52840-PDK
Ср-во разработки: Bluetooth Low Energy; NRF52840; SMA,штыревой..

[ Без категории ]
NORDIC SEMICONDUCTOR — NRF9160-SICA-R
Микросхема: SiP; GPS,LTE,RF; LGA32; SMD; 700÷2200МГц; 10x16x1мм..

[ Наборы пусковые остальные ]
NRF51-DK Средство разработки: Bluetooth Smart, nRF51422,nRF51822, USB
Ср-во разработки: Bluetooth Low Energy; 10pin debug,UART..

[ Наборы пусковые остальные ]
NRF51-DONGLE Средство разработки: Bluetooth Smart, nRF51422,nRF51822, USB
Ср-во разработки: Bluetooth Low Energy; USB A; GPIO,UART,USB..

[ Интегральные схемы другие ]
NRF51422-QFAA-R Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51422-QFAA-R7 Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51422-QFAA-T Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..
[ Интегральные схемы другие ]
NRF51422-QFAB-R Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 128кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..
[ Интегральные схемы другие ]
NRF51422-QFAB-R7 Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 128кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..
[ Интегральные схемы другие ]
NRF51422-QFAB-T Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 128кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51422-QFAC-R Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 32кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51422-QFAC-R7 Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 32кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..
[ Без категории ]
NRF51422-QFAC-T
SoC; Flash: 256кБ; RAM: 32кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..
![]()
[ Наборы пусковые остальные ]
NRF51822-BEACON Средство разработки: Bluetooth Smart, nRF51822, GPIO, штыревой
Ср-во разработки: Bluetooth Smart; штыревой; GPIO..

[ Интегральные схемы другие ]
NRF51822-QFAA-R Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51822-QFAA-R7 Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51822-QFAA-T Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51822-QFAB-R Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 128кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51822-QFAB-R7 Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 128кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51822-QFAB-T Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 128кБ; RAM: 16кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51822-QFAC-R Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 32кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51822-QFAC-R7 Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 32кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Интегральные схемы другие ]
NRF51822-QFAC-T Микросхема: System on Chip SoC, Сеть: Bluetooth Smart, RF, QFN48
SoC; Flash: 256кБ; RAM: 32кБ; QFN48; Таймеры 16бит: 3; 1,8÷3,6ВDC..

[ Наборы пусковые остальные ]
NRF52-DK Средство разработки: Bluetooth Smart, nRF52832, GPIO, USB
Ср-во разработки: Bluetooth Low Energy; GPIO; Серия: ARDUINO..
[ Без категории ]
NRF52810-QCAA-R7
SoC; Flash: 192кБ; RAM: 24кБ; QFN32; Архитектура: Cortex M4; 2Мбит/с..
[ Без категории ]
NRF52810-QCAA-T
SoC; Flash: 192кБ; RAM: 24кБ; QFN32; Архитектура: Cortex M4; 2Мбит/с..
[ Без категории ]
NRF52810-QFAA-R7
SoC; Flash: 192кБ; RAM: 24кБ; QFN48; Архитектура: Cortex M4; 2Мбит/с..
[ Без категории ]
NRF52810-QFAA-T
SoC; Flash: 192кБ; RAM: 24кБ; QFN48; Архитектура: Cortex M4; 2Мбит/с..
[ Без категории ]
NRF52811-CAAA-R7
IC: SoC; Bluetooth 5.1,Bluetooth Low Energy; SMD; QFN32; 2Мбит/с..
Источник: komplekt-a.ru