В чем разница - STM32Duino делает ST -Link непрерывным?

мкр
Сб 20 января 2018 г. 15:42
Всем привет,

Некоторое время назад я переехал из Arduino Ide в Eclipse (на Linux). Мой проект (небольшая игра для моего племянника) использовал ST SPL для «синей таблетки», библиотеки U8G (графические примитивы, обработка экрана), Nokia 5110 LCD с моими собственными драйверами и роторным энкодером (обработанным моим кодом) - ничего особенного.
На самом деле я использовал Eclipse для навигации по коде и в качестве хорошего браузера для ST и U8G. Процесс сборки был обусловлен моим собственным самодельным Makefile, и единственным, связанным с вещами, были файлы стартапов Distribution Distribution SPL (ни LIBGCC, ни LIBC, ни libstdc ++).
Я использовал китайский клон ST-Link для загрузки с утилитой ST-Flash (EXEC в комплекте с Arduino IDE для Linux). Все работало нормально, а разработка была очень плавной - каждое изменение кода перекомпилировалось и повторно связано с помощью Makefile и, наконец, загружено на плату STM32 с сбросом и программой началась.

Для следующего проекта я хотел бы дать возможность другим инструментам - ARDUINO API (STM32DUINO), созданный через Platformio IDE (VSCODE на Linux). С точки зрения использования, это намного лучше, чем Arduino IDE - VSCODE - приличный IDE с мощным возвышенным, таким как редактор, завершение кода и навигация. К сожалению, на первом эскизе (светодиодные мигание) появились проблемы. Процесс сборки гладкий, но загрузка прошивки очень нестабильна:

Первая загрузка (на доске была моя игра FW) была гладкой:
st-flash write .pioenvs/genericSTM32F103CB/firmware.bin 0x08000000 2018-01-20T15:56:03 INFO src/usb.c: -- exit_dfu_mode 2018-01-20T15:56:03 INFO src/common.c: Loading device parameters.... 2018-01-20T15:56:03 INFO src/common.c: Device connected is: F1 Medium-density device, id 0x20036410 2018-01-20T15:56:03 INFO src/common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes 2018-01-20T15:56:03 INFO src/common.c: Attempting to write 8436 (0x20f4) bytes to stm32 address: 134217728 (0x8000000) ... 2018-01-20T15:56:04 INFO src/common.c: Starting verification of write complete 2018-01-20T15:56:04 INFO src/common.c: Flash written and verified! jolly good! 8/8 pages written

victor_pv
Сб 20 января 2018 г. 16:42
Может иметь какое -то отношение к тому, что он отлаживает булавки. Не уверен, что нет по умолчанию, но осмотрите функцию init () или где бы вы ни называли, нашел тот, который устанавливает контакты отладки в альтернативный режим. Поиск на форуме, возможно, даст вам несколько указателей.
Поиск булавок отладки, или JTAG или что -то в этом роде в этих строках.

мкр
Сб 20 января 2018 г., 18:30
Ага...Это самое простое объяснение...Но для меня было совершенно ясно, что такой зрелый мягкий, как Duino, не должен делать такие вещи... Думал, что моя конфигурация довольно распространена, и кто -то заметит такую ​​вещь... Но, хорошо, я постараюсь исследовать это.

ZMEMW16
Сб 20 января 2018 г. 18:34
Какие булавки вы используете ? Все, что на низкой стороне PB является проблематичным PB0-PB5 !
Стивен

Mrburnette
Сб 20 января 2018 г., 19:07
[мкр - Сб 20 января 2018 г. 18:30] - Ага...Это самое простое объяснение...Но для меня было совсем ясно, что такой зрелый мягкий, как Duino, не должен делать такие вещи... Думал, что моя конфигурация довольно распространена, и кто -то заметит такую ​​вещь... Но, хорошо, я постараюсь исследовать это.
... заблуждение.
«Ядро» не имеет ничего общего с загрузкой. Загрузка выполняется с помощью сторонних инструментов под ардуиноидом. За пределами ардуиноида мы не несем ответственности за неудачи; то есть у вас есть плата клонов, клон ST_LINK, и вы используете файл MAKE для компиляции (или другую среду.) Базовая среда форума - Windows или Linux, управляющая недавней версией Arduinoide и Maple Mini с загрузчиком (2K или 4K.)

Я ценю вашу ситуацию, но «Duino» в STM32Duino это ссылка на ардуиноид. У нас есть много участников, использующих другие инструменты для разработки кода и в целом два класса пользователей: те, которые используют загрузчики roger github_hosted, и те, которые не используют загрузки. Когда за пределами IDE вы можете отправить публикацию и попросить о помощи, но просто помните, что вы в конечном итоге находитесь на самообеспеченной территории.

Даже использование ардуиноида, загрузка может быть очень проблематичной, редко 100% успех.

Луча

мкр
Сб 20 января 2018 г., 19:16
Бинго!

Добавление
void setup() { // AFIO_BASE - expansion from SPL uint32_t *AFIO = ((uint32_t *)((((uint32_t)0x40000000) + 0x10000) + 0x0000)); // AFIO_MAPR->SWJ_CFG = 0x0 // no remap, both JTAG and SWD active AFIO[1] &= ~(0x07000000); pinMode(LED, OUTPUT); }

мкр
Сб 20 января 2018 г., 19:33
[Mrburnette - Сб 20 января 2018 г., 19:07] -
«Ядро» не имеет ничего общего с загрузкой. Загрузка выполняется с помощью сторонних инструментов под ардуиноидом. За пределами ардуиноида мы не несем ответственности за неудачи; то есть у вас есть плата клонов, клон ST_LINK, и вы используете файл MAKE для компиляции (или другую среду.) Базовая среда форума - Windows или Linux, управляющая недавней версией Arduinoide и Maple Mini с загрузчиком (2K или 4K.)

Я ценю вашу ситуацию, но «Duino» в STM32Duino это ссылка на ардуиноид. У нас есть много участников, использующих другие инструменты для разработки кода и в целом два класса пользователей: те, которые используют загрузчики roger github_hosted, и те, которые не используют загрузки. Когда за пределами IDE вы можете отправить публикацию и попросить о помощи, но просто помните, что вы в конечном итоге находитесь на самообеспеченной территории.

Даже использование ардуиноида, загрузка может быть очень проблематичной, редко 100% успех.
Но настройки «основной» микроконтроллер и ST-Link официально поддерживают способ загрузки (появляется в меню помощника). И ST-Link, скорее всего, заблокирован этой инициализацией... Это кажется проблемой помощника. Предотвращение переработки SWD должно решать большинство проблем помощника при загрузке через ST-Link... Скорее всего, ОКР также отключено «Duino», что довольно плохие новости.

Mrburnette
Сб 20 января 2018 г. 20:16
[мкр - Сб 20 января 2018 г., 19:33] - <...>
Но настройки «основной» микроконтроллер и ST-Link официально поддерживают способ загрузки (появляется в меню помощника). И ST-Link, скорее всего, заблокирован этой инициализацией... Это кажется проблемой помощника. Предотвращение переработки SWD должно решать большинство проблем помощника при загрузке через ST-Link... Скорее всего, ОКР также отключено «Duino», что довольно плохие новости.
Есть два (2) ядра, к сожалению, называемые STM32Duino:
https: // github.com/rogerclarkmelbourne/arduino_stm32
и
https: // github.com/stm32duino/arduino_c ... SED-Boards

Оба ядра предназначены для использования с ардуиноидом, в конфигурации base_line. Если вы отклоняете процесс IDE или сборки, вы создаете нагрузку на ресурсы "Duino". Делайте то, что хотите, но будьте готовы к риску.

Только последняя ссылка выше считается «поддерживаемым» и на каком уровне за пределами «наилучших усилий» только FPISTM может посоветовать. На вопросы отвечаются в этом разделе форума...
http: // stm32duino.com/viewforum.PHP?F = 48

Поскольку этот конкретный раздел STM32Duino не имеет «официальной» поддержки, технически ничего не поддерживается официально. Даже основные файлы помечены как «Экспериментальный»... Уведомление
Это программное обеспечение экспериментальное и в процессе работы. Ни при каких обстоятельствах эти файлы не должны использоваться в отношении какой -либо критической системы (ы). Использование этих файлов на вашем собственном риске.
Но, если вы опустите в раздел ST Core для досок в нукле, то есть некоторая поддержка.
https: // github.com/stm32duino Для основных и других усилий.
И
https: // github.com/stm32duino/arduino_c ... SED-Boards
Доски доступны
Текущий релиз
STM32F0

Nucleo F030R8
Nucleo F091RC
STM32F1

Nucleo F103RB
STM32VldScovery
STM32F2

Nucleo F207ZG
STM32F3

Nucleo F302R8
Nucleo F303K8
Nucleo F303RE
STM32F4

Nucleo F401RE
Nucleo F411RE
Nucleo F429ZI
Nucleo F446RE
STM32F407G-DISC1
STM32F7

STM32F746G-Discovery
STM32L0

Nucleo L031K6
Nucleo L053R8
B-L072Z-Lrwan1
STM32L1

Nucleo L152RE
STM32L4

Nucleo L432KC
Nucleo L476RG
B-L475E-IOT01A
Следующий релиз
STM32F1
Bluepill F103C8 (по ходу)
Maplemini F103CB (по ходу)

Рик Кимбалл
Сб 20 января 2018 г. 20:28
[мкр - Сб 20 января 2018 г., 19:16] - Может быть, это должно быть конфигурация по умолчанию для Duino, что вы думаете.
Предполагая, что вы используете ядро ​​Libmaple и опция загрузки Stlink

ViewTopic.PHP?t = 27

Mrburnette
Сб 20 января 2018 г. 8:44 вечера
[мкр - Сб 20 января 2018 г., 19:16] - Бинго!
<...>
Может быть, это должно быть конфигурация по умолчанию для Duino, что вы думаете.
mkr:

Это тот вид знаний, которые сообщество пользователей хочет захватить. Это сделало бы отличную тему вики после некоторой дискуссии с другими продвинутыми участниками, которые используют ST_LINK... Надеюсь, они пройдут и продолжат это обсуждение.

Луча

мкр
Сб 20 января 2018 г. 20:45
Спасибо за это объяснение...
Как новичок понятия не имел ... Всегда использовал Duino's Roger, и его репо указал на этот форум. Конечно, я подумал о «поддержке» не в коммерческом среднем, а на терминах стиля с открытым исходным кодом. Но если ядро ​​Роджера установлено в IDE, то ST-Link является одной из возможностей для загрузки, поэтому следует каким-то образом «поддерживать»... Моя проблема, кажется, проблема с этим «Duino», и я хотел бы обсудить, было ли переназначение/отключение JTAG/SWD намеренным и хорошо. На самом деле я не DSURE, если это сделано только для синей таблетки, или булавки переизданы или освобождены, выключив SWD... Если это просто побочный эффект или намерение. Для меня это было большое сюрприз, и я хотел бы знать, что об этом думают другие пользователи.

Рик Кимбалл
Сб 20 января 2018 11:27
Оригинальные кленовые платы используют исключительно загрузчик. Кленовые люди преднамеренно затрудняли использование булавок SWD/JTAG и сделали их нормальными выводами GPIO. Посмотрите на разбивки для Maple Mini.

Мы пришли позже с нашими общими досками и желанием использовать отладчик.

Теперь в Arduino IDE, если вы выберете загрузку Stlink, то правильное определение добавляется в компиляцию. Если вы выберете загрузчик, это не так, и SWD будет отключен.

мкр
Солнце 21 января 2018 12:27
[Рик Кимбалл - Сб 20 января 2018 г., 23:27] - Оригинальные кленовые платы используют исключительно загрузчик. Кленовые люди преднамеренно затрудняли использование булавок SWD/JTAG и сделали их нормальными выводами GPIO. Посмотрите на разбивки для Maple Mini.

Мы пришли позже с нашими общими досками и желанием использовать отладчик.

Теперь в Arduino IDE, если вы выберете загрузку Stlink, то правильное определение добавляется в компиляцию. Если вы выберете загрузчик, это не так, и SWD будет отключен.
Это означает, что все кажется под контролем... К сожалению, понятия не имел об этой логике, и использование ее за пределами помощника имел плохую шанс, чтобы она работала. С моей точки зрения было бы лучше не освободить все булавки для GPIO на общих досках - у них обычно есть специальные булавки для JTAG/SWD - но вся эта логика вполне разумна.

Спасибо.

Стивестронг
Солнце 21 января 2018 г. 10:07
Я думаю этот патч Решение проблемы, которая теперь, используя последнюю версию arduino_stm32 от Роджера, может рассматриваться как решаемая.