• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Делюсь опытом Nrf52 серии и китайский St-Link

Seeker

New member
Всем добрый!
Расскажу как решил проблему, которую никак ни нашел в интернете.
Купил на Ali Nrf52832 в виде модуля E73-2G4M04S (с размером памяти nrf52832_xxAB)
upload_2019-3-2_17-14-5.png
Он был прошит стандартным примером ble_app_uart, и всё работало хорошо.
Захотел прошить имея на руках только китайские StLink клоны за 120рублей.
St-link Utility модуль не видел и ничего не мог поделать.
Keil видел модуль, но не мог прошить
upload_2019-3-2_17-18-34.png
Писал ошибки типа Invalid ROM table
Прошивка клонов St-link в J-link не дала результатов, видит что использую контрафакт.
Проблема как оказалась была следующая: память защищена от записи и чтения.
Решение:
1) Прошиваем St-link в J-link при помощи STLinkReflashFixed.exe (спасибо pvvx)
2) Открываем J-mem и выбираем процессор STM32F302CC (наверно можно и другие, но я не пробовал)
3) J-mem предлагает сразу снести защиту памяти
3.jpg
4) (опционально) прошиваем клон St-link обратно
5) Теперь St-link Utility можеть кое-как присоедениться к модулю, и у Keil есть шансы начать прошивать
6) При открытии примеров с офф. SDK меняем Device с xxAA на xxAB
upload_2019-3-2_17-30-3.png
7) Выбираем ST-Link Debugger
8)Жмем его настройки и выставляем цифры
upload_2019-3-2_17-32-45.png
Теперь всё шьется и отлаживается как надо.
Наверняка понадобится кому-то, сам забыл об этом и потом опять изобретал велосипед.
 

nikolz

Well-known member
Всем добрый!
Расскажу как решил проблему, которую никак ни нашел в интернете.
Купил на Ali Nrf52832 в виде модуля E73-2G4M04S (с размером памяти nrf52832_xxAB)
Посмотреть вложение 7205
Он был прошит стандартным примером ble_app_uart, и всё работало хорошо.
Захотел прошить имея на руках только китайские StLink клоны за 120рублей.
St-link Utility модуль не видел и ничего не мог поделать.
Keil видел модуль, но не мог прошить
Посмотреть вложение 7206
Писал ошибки типа Invalid ROM table
Прошивка клонов St-link в J-link не дала результатов, видит что использую контрафакт.
Проблема как оказалась была следующая: память защищена от записи и чтения.
Решение:
1) Прошиваем St-link в J-link при помощи STLinkReflashFixed.exe (спасибо pvvx)
2) Открываем J-mem и выбираем процессор STM32F302CC (наверно можно и другие, но я не пробовал)
3) J-mem предлагает сразу снести защиту памяти
Посмотреть вложение 7209
4) (опционально) прошиваем клон St-link обратно
5) Теперь St-link Utility можеть кое-как присоедениться к модулю, и у Keil есть шансы начать прошивать
6) При открытии примеров с офф. SDK меняем Device с xxAA на xxAB
Посмотреть вложение 7210
7) Выбираем ST-Link Debugger
8)Жмем его настройки и выставляем цифры
Посмотреть вложение 7212
Теперь всё шьется и отлаживается как надо.
Наверняка понадобится кому-то, сам забыл об этом и потом опять изобретал велосипед.
можно взять прошивальщик у STM там есть режим снятия защиты и не надо ничего прошивать в ST-link. Работаем c ST-Link.
так делается для всех STM камней.
 

Seeker

New member
можно взять прошивальщик у STM там есть режим снятия защиты и не надо ничего прошивать в ST-link. Работаем c ST-Link.
так делается для всех STM камней.
Данный камень не Stm и его прошивальщик данную проблему не решил.

Перехожу к следующему камню на дороге работы с процессорами nRF52.
При использовании любого SoftDevice прошивки крашились.
Проблемой была разметка памяти.
upload_2019-3-3_12-58-45.png
А именно узнать эти границы.
Немного данных можно узнать в nRF5_SDK_15.3.0\components\softdevice\s112\doc\release-notes.pdf для каждого SoftDevice соответственно.
upload_2019-3-3_13-1-12.png
Однако границу для RAM придется получать опытным путём.
А именно ставить точку во время отладки на строку
err_code = nrf_sdh_ble_enable(&ram_start);
в функции
static void ble_stack_init(void)
в файле main.c
Значение переданное в параметр после выполнения функции изменится на то, которое мы ищем.
Если вы работаете в Keil, то все указать довольно просто.
upload_2019-3-3_13-5-45.png
P.S. Дополнительная информация Adjustment of RAM and Flash memory
 

dosikus

Member
Данный камень не Stm и его прошивальщик данную проблему не решил.
Ну вроде бы как у нордика есть оффициальный документ - как и что делать.
И как прошивки под софтдевайс собирать и как снести этот самый софтдевайс с помощью родной тулзы.
Надо лишь начать читать а не городить огород...
 

nikolz

Well-known member
Данный камень не Stm и его прошивальщик данную проблему не решил.

Перехожу к следующему камню на дороге работы с процессорами nRF52.
При использовании любого SoftDevice прошивки крашились.
Проблемой была разметка памяти.
Посмотреть вложение 7214
А именно узнать эти границы.
Немного данных можно узнать в nRF5_SDK_15.3.0\components\softdevice\s112\doc\release-notes.pdf для каждого SoftDevice соответственно.
Посмотреть вложение 7215
Однако границу для RAM придется получать опытным путём.
А именно ставить точку во время отладки на строку
err_code = nrf_sdh_ble_enable(&ram_start);
в функции
static void ble_stack_init(void)
в файле main.c
Значение переданное в параметр после выполнения функции изменится на то, которое мы ищем.
Если вы работаете в Keil, то все указать довольно просто.
Посмотреть вложение 7216
P.S. Дополнительная информация Adjustment of RAM and Flash memory
Flashing nrf52832 chip with ST link V2 - Nordic DevZone
Работа с nRF51822 с помощью ST-Link и связки Clion + OpenOCD
 

dosikus

Member
ВотЪ https://infocenter.nordicsemi.com/pdf/getting_started_keil.pdf


Before you program an example to the development board, you should erase the contents of the board. There are two ways to erase the board. You can use the command line tool nrfjprog (part of the nRF5x Command Line Tools) or the Windows application nRFgo Studio. • To erase the contents of the board with nrfjprog, enter the following command: • For nRF51 devices: nrfjprog --family nRF51 --eraseall • For nRF52 devices: nrfjprog --family nRF52 --eraseall • To erase the contents of the board with nRFgo Studio, select your device under nRF51/nRF52 development boards and click Erase all.
 

nikolz

Well-known member
NRF52 вполне бюджетное решение для экономичных и дешевых решений на CPU cortex-M4 с или без BLE
При этом имеем следующий выбор
1) NRF52810 - 192Kb/24Kb - цена 125 руб
2) NRF52832 -512Kb/64Kb - цена 175 руб
3) NRF52840 -1024Kb/256Kb -цена 205 руб
----------------------------
Стек ble занимает от 110 до 140 Kb flash
В таких приложениях как умный дом вполне достаточно 1 и 2
Разработку программ удобно делать под Eclipse или arduino или в командной строке.
 

pvvx

Активный участник сообщества
NRF52 вполне бюджетное решение для экономичных и дешевых решений на CPU cortex-M4 с или без BLE
Не бюджетное и не экономичное, тем более не дешевое решение.
Наборы от Nordic стоят дороже чем то, что вы хотите запрограммировать на нем, т.е. чем любое уже готовое изделие в магазине или заказное у сторонних разработчиков.
Разработку программ удобно делать под Eclipse или arduino или в командной строке.
У Nordic нет заголовков проектов для Eclipse или Arduino.
Есть только для платных сред IAR или Keil. Так-же относится к не бюджетному и не дешевому решению.
 

pvvx

Активный участник сообщества
Прошивка клонов St-link в J-link не дала результатов, видит что использую контрафакт.
...
Наверняка понадобится кому-то, сам забыл об этом и потом опять изобретал велосипед.
Решение описано в https://esp8266.ru/forum/threads/nrf52840-mdk-usb-dongle.4686/#post-68987 ,
в файле readme.txt по ссылке https://esp8266.ru/forum/threads/nrf52840-mdk-usb-dongle.4686/#post-68989
 

nikolz

Well-known member
для тех, кто столкнулся с проблемой, описанной в начале темы.
Чтобы стереть NRF5XXXX с помощью jLINK и переделанным ST-LINK,
надо в JLink указывать не NRF... а Cortex...
В итоге J-Link стирает флеш NRF без проблем.
 

pvvx

Активный участник сообщества
для тех, кто столкнулся с проблемой, описанной в начале темы.
Чтобы стереть NRF5XXXX с помощью jLINK и переделанным ST-LINK,
надо в JLink указывать не NRF... а Cortex...
В итоге J-Link стирает флеш NRF без проблем.
Не стирает и не восстанавливает из состояния "камень".
При неверном загрузчике, от к примеру от другого модуля, возникают другие проблемы.
Штатные тулзы от Nordic и фирменный J-Link при этом так-же бесполезны. Есть обход с нестандартным J-Link... Или с любым фирменным J-Link и умелыми ручками.
 

pvvx

Активный участник сообщества
Вариантов как из nRF52 сделать камень много. Смотрите инет - там есть вопиющие как исправить это даже имея фирменный J-Link...
Для всех случаев "камня" есть одно универсальное решение, но здесь не тема про это.
Советую аккуратнее пользоваться ST-LINK - досконально проверяйте всё что будете писать им, иначе пойдете покупать J-Link и тулзы SEGGER.
 

nikolz

Well-known member
Вариантов как из nRF52 сделать камень много. Смотрите инет - там есть вопиющие как исправить это даже имея фирменный J-Link...
Для всех случаев "камня" есть одно универсальное решение, но здесь не тема про это.
Советую аккуратнее пользоваться ST-LINK - досконально проверяйте всё что будете писать им, иначе пойдете покупать J-Link и тулзы SEGGER.
я сейчас работаю с NRF52832 так как он дешевле и проще подключается.
J-Link стирает через ST-Link с вашей переделкой но надо выбирать не производителя а ядро и все без проблем.
Но совсем хорошо работать на CMSIS-DAP прошивке на STM32f103. Использую OpenOCD и Eclipse.
В итоге все гораздо проще чем для TLSR. Нет надобности подписывать NDA.
Примеры для NRF тоже написаны более логично, чем для TLSR.
 

pvvx

Активный участник сообщества
я сейчас работаю с NRF52832 так как он дешевле и проще подключается.
J-Link стирает через ST-Link с вашей переделкой но надо выбирать не производителя а ядро и все без проблем.
Стирает правильно записанный загрузчик и не более :)
С правильным и софт от Nordic работает.
Но совсем хорошо работать на CMSIS-DAP прошивке на STM32f103. Использую OpenOCD и Eclipse.
CMSIS-DAP и OpenOCD = Тормоз.
В итоге все гораздо проще чем для TLSR.
Это кому как - все связавшиеся с Nordic давно торчат в инете с вопросами на которые нет ответов.
В остатке только рекламные заказные блоги про что-то никчемное.
Нет надобности подписывать NDA.
Это ещё за чем? :confused:
Гоните китайцев с NDA подальше, а вот c Nordic без NDA ничего кроме их примеров не соберете. Это факт.
Примеры для NRF тоже написаны более логично, чем для TLSR.
Киньте примерчик с непрерывной пересылкой SAADC в BLE...
 

nikolz

Well-known member
Стирает правильно записанный загрузчик и не более :)
С правильным и софт от Nordic работает.

CMSIS-DAP и OpenOCD = Тормоз.
Это кому как - все связавшиеся с Nordic давно торчат в инете с вопросами на которые нет ответов.
В остатке только рекламные заказные блоги про что-то никчемное.
Это ещё за чем? :confused:
Гоните китайцев с NDA подальше, а вот c Nordic без NDA ничего кроме их примеров не соберете. Это факт.
Киньте примерчик с непрерывной пересылкой SAADC в BLE...
у них нет такого примера в SDK
есть что-то подобное у третьих разработчиков но я их не собирал.
-------------
относительно стирания переделкой ST-Link
делал несколько раз камень и все стиралось в J-Link, а ST-Link - нет
 

nikolz

Well-known member
нортик выпустил хороший усилитель на 2.4 можно увеличивать дальность BLE
 

nikolz

Well-known member
относительно тормоза CMSIS-DAP
в нортик стек пишем один раз
а прошивки типа той что вас интересует грузится 1-2 секунды.
так что вполне нормально.
а вот компиляцию надо бы ускорять.
 
Сверху Снизу