Первая прошивка: адаптация проекта под DK или Dongle

Материал носит ознакомительный характер. Работа с электроникой и микроконтроллерами требует соблюдения техники безопасности; автор не несет ответственности за возможные повреждения оборудования или иной ущерб, возникший в ходе обучения.

Рабочее окружение в VS Code готово. Теперь пора «оживить» железо. В Arduino вы просто нажимали кнопку «Загрузка», но профессиональная работа с nRF52840 требует понимания того, как код попадает в чип.

Знакомство с устройствами

В экосистеме Nordic есть два основных типа плат. От того, что у вас в руках, зависит способ прошивки.

  1. Development Kit (DK) — большая отладочная плата. На ней установлен не только чип nRF52840, но и встроенный программатор J-Link. Он позволяет записывать код и пошагово отлаживать его, заглядывая в память микроконтроллера в реальном времени.
  2. Dongle — компактное устройство в форм-факторе флешки. У него нет встроенного программатора, поэтому для обновления прошивки мы используем USB-загрузчик.
ХарактеристикаDevelopment Kit (DK)Dongle
Способ прошивкиЧерез J-LinkЧерез USB-загрузчик (DFU)
ИнтерфейсШина SWDUSB-порт
УдобствоПрошивка одной кнопкойНужно вручную входить в режим загрузки

Что такое прошивка?

Прошивка — это бинарный файл с инструкциями для процессора Cortex-M4.

В Arduino программа кажется монолитной. Здесь же прошивка — это «слоеный пирог». Она объединяет ваше приложение, сетевой стек Bluetooth и загрузчик (Bootloader). Расширение nRF Connect для VS Code само собирает эти слои в один файл.


Практикум №1: Прошивка Development Kit

Процесс на DK почти не отличается от Arduino, но дает больше контроля.

  1. Подключение: Соедините DK с компьютером через порт MCU USB. Переключатель питания переведите в положение ON.
  2. Выбор платы: В VS Code (вкладка nRF Connect) нажмите Add Build Configuration. Выберите nrf52840dk_nrf52840.
  3. Запись: Нажмите Build, затем — Flash.

Важно: При нажатии Flash компьютер связывается с чипом по интерфейсу SWD (Single Wire Debug). Это специальный протокол, через который J-Link управляет процессором.


Практикум №2: Прошивка Dongle

У донгла нет встроенного J-Link, поэтому кнопка Flash в VS Code для него не сработает (если не припаивать внешний программатор к контактам SWD на обороте).

Алгоритм работы:

  1. Сборка: Выберите таргет nrf52840dongle_nrf52840 и нажмите Build.
  2. Режим загрузчика: Нажмите маленькую кнопку Reset на донгле. Светодиод начнет плавно пульсировать красным — устройство готово к приему файла.
  3. Запись: Откройте приложение nRF Connect Desktop — Programmer. Выберите устройство в списке, добавьте скомпилированный .hex файл из папки проекта и нажмите Write.

Почему код не прошивается?

Если что-то пошло не так, проверьте три момента:

  • Ошибка в выборе платы. Код для DK не запустится на Dongle: у них разные схемы питания и распределение памяти.
  • Кабель «только для зарядки». nRF52840 чувствителен к качеству связи. Если в кабеле нет линий данных, компьютер не увидит устройство.
  • Драйверы. Если J-Link не отображается, переустановите драйверы SEGGER из состава Toolchain.

Что дальше?

Мы научились доставлять код в «мозг» устройства. Теперь можно мигать светодиодами или выводить данные в консоль.

Но есть нюанс: в коде мы пишем LED1, а как программа понимает, к какому именно контакту (пину) подключен этот светодиод? В Arduino это зашито в библиотеках, а в профессиональной среде Zephyr за описание железа отвечает Device Tree (Дерево устройств).

В следующем уроке разберемся, как описывать компоненты так, чтобы код работал на любой плате без изменений.