Делаем из BluePill пограмматор/отладчик JLink OB-STM32F103

Если нам нужен программатор JLink, а его нет и тратить деньги и время не охота, то можно попробовать его сделать самому. Для этого нам понадобиться плата BluePill на основе МК STM32F103, два резистора по 100 Ом, несколько кусочков провода, паяльник, припой с флюсом и прямые руки.

Read More

Добавляем нормальную поддержку JLink в Arduino IDE

В данный момент (21.02.2020) в Arduino IDE поддержка JLink программатора реализовано достаточно кривым методом, через Zadig. Да, после этого JLink начинает работать в Arduino IDE, но при этом он отваливается от всего остального (Keil, SEGGER Studio и т.п.) и это не есть хорошо.

Read More

Тяжёлая артиллерия или отладка Arduino сетчей для МК Cortex

Порой бывают моменты когда кажется, что ты перепробовал уже всё, но код не работает. С грустью вспоминаешь о Кейле с его отладчиком. В очередной раз шлёшь лучи поноса программистам разрабатывающим Arduino IDE за то что она такая кривая и не имеет отладчика.

Но выход есть! Да, он немного корявый и тем не менее. Идея состоит в том чтобы запустить таки отладку скетча пускай и не в Arduino.

Для работы нам понадобятся:

  1. Тестовая версия Keil MDK-ARM.
  2. Отладчик Jlink или STlink. Рекомендуется иметь сразу оба если мы хотим комфортно работать с nrf из разных сред.
  3. Arduno скетч в формате elf.

Итак по порядку.

Программа Keil MDK-ARM стоит вполне себе солидных денег. Но во первых ищущий как известно всегда найдёт искомое, а во вторых нам достаточно триального бесплатного режима (компиляция ограничена 32 килобайтами). Но нам то компилировать не надо, нам достаточно отладки. Поэтому скачаваем его и устанавливаем.

Считаем что дрова для отладчиков уже установлены.

Read More

nrf52840 Знакомство с ZigBee

Для начала работы нам понадобиться следующее ПО:

  1. Segger Embedded Studio, для разработки, компиляции бинарников и дебага - всё в одном (бесплатно для нордиковых устройств - лицензию получает само автоматом).
  2. Zigbee SDK, текущаяя версия - 3. Ставить не надо, просто распаковывается и всё.

Модули E73-2G4M08S1C от CDEBYTE требуют разлочки.

Read More

Добавляем поддержку OTA > 32Кб для MySensors

Я в данный момент строю сеть MySensors по протоколу RS485 на плате blue pill, МК - STM32F103C8T6. У него официальный размер флэш памяти - 64Кб, неофициальный - 128Кб. А в MySensors поддержка для OTA > 32Кб отсутствует. Так-же я использую дешёвую флэш микросхему M25P40-VMN6TP на 512Кб, но у ней нет очистки по 32Кб, а есть только по 64. Но в MySensors реализована только поддержка очистки секторов по 32Кб. Поэтому был добавлен новый дефайн - MY_OTA_BLOCKS, он указывает количество используемых блоков по 64Кб. Так же была модернизирована процедура readDeviceId() вместо получения двух байт на три. Если код сразу не заработал, то настоятельно рекомендую не биться головой об стену в попытках всё таки его запустить, а применить научный подход и использовать логический анализатор. С ним всегда чётко видно, что и как происходит на SPI шине. Также в зависимости от используемой SPI флэш памяти можно менять делитель шины. Он задаётся в файле SPIFlash.cpp - SPI.setClockDivider(SPI_CLOCK_DIV4); Если у вас медленный анализатор, то на время отладки рекомендуется ставить - SPI_CLOCK_DIV128. Для поддержки OTA на STM32 был написан загрузчик. Коммиты реализующие поддержку OTA на STM32 здесь. В дальнейшем попробую создать пулл реквест в основную ветку.

Read More

Итак поехали!!! STM32

У меня есть несколько плат на МК STM32. Я во время отладки загружаю прошивку ST-Link-ом. Но вот беда он жёстко пишет прошивку с адреса 0x8000000, а если у меня уже прошит загрузчик, то всё, прощай?! Поэтому первым делом добавляем возможность выбора адреса загрузки прошивки во флэш МК, и чтобы программа запустилась - сдвиг таблицы прерываний.

Read More