Новые ядра на halmx_arduino_stm32

Sheepdoll
Солнце 16 августа 2015 г., 21:17
Я сделал несколько изменений https: // github.com/sheepdoll/halmx_arduino_stm32 Чтобы добавить поддержку F0 Discovery и старт в Frameworks для Discovery F429I.

Также добавлена ​​некоторая документация, касающаяся запуска STM32Cubemx на OS X и руководящие принципы для настройки новых проектов Cubemx.

Это распределение также включает в себя несколько примеров эскизов, собранных из некоторых потоков здесь на http: // stm32duino.компонент.

В настоящее время общий набросок мигания был протестирован с помощью Nucleo F1, Nucleo F4 и F0 Discovery.

Записи серийного потока, похоже, работают на ядревом F1 и Nucleo F4 через устройство CDC на Stlink-V2.1

Плата F0 требует моста для серийного монитора, так как STLINKV2 не перечисляется в качестве устройства CDC. DataShief DM00050135.PDF, относящийся к плате F0, предложил картирование Arduino. В то время как за пределами ядра, обычно обсуждаемых здесь на Arduino для STM32, преимущество использования HAL и общего API низкого уровня.

Дополнительным бонусом на Nucleo F1 является эскиз F1Serialstats, который был опубликован здесь некоторое время назад. Это показывает размер оперативной памяти и уникальный идентификатор при запуске на нукле F1. На Nucleo F4 он просто возвращает значения 0xff. Не уверен, откуда эти значения указателя. Есть много документов, чтобы прочитать, чтобы зайти так далеко.

Реальная сила использования низкого уровня доступа HAL заключается в том, что API можно назвать непосредственно внутри эскиза. Несколько примеров в этом распределении. Используя Cubemx для настройки периферийных устройств, они включены и готовы к доступу, как только активируются обратные вызовы arduino setup () и loop ().

Хотя эта ветка находится на ранних стадиях. Я хотел поделиться работой с другими. По -прежнему нужно много, чтобы получить большинство основных примеров наборов для работы. Многие эскизы и библиотеки AVR пользуются прямым доступом к аппаратному обеспечению. С этой системой лучше позволить инструменту Cubemx сделать Gruntwork.

Rogerclark
Пн 17 августа 2015 г., 5:42
Спасибо за обновление.

Я уверен, что ваше ядро ​​будет бесценным, когда мы движемся вперед.

Мадиас
Пн 24 августа 2015 г., 8:40 вечера
Спасибо, Sipdoll, вы привели весь проект в новую перспективу (по крайней мере, для меня).

Я играл с конфигуратором MCU/Board, и очень легко и быстро получить точно настройку для всех особых потребностей.
В качестве побочного проекта я попытался заставить i2s работать с серией F1 - без удачи, потому что в API Libmaple нет скелета.
Кроме того, есть много обновленных ошибки Внутри драйверов поля (i2c, spi...) Помните: Libmaple около 3 лет, и ни один из оригинальных разработчиков больше программирует одну строку кода.
Итак, мой жесткий вердикт, особенно для F103RC и UP и каждого F2-F7: Libmaple мертв, и все дальнейшее развитие-пустая трата ресурсов.

Rogerclark
Пн 24 августа 2015 г., 21:44
Матиас,

Я поднял вопрос о том, какое ядро ​​мы должны использовать, несколько раз, но никто не заинтересован в том, чтобы попытаться написать новое ядро, пока не задействовался @sheepdoll,

Я смотрел на Кодуино и Макерлабме (см. Другие мои сообщения), но ни один из них не был особенно полезен в целом, по разным причинам.

Я думаю, что у Кодуино есть несколько либеров, которые, вероятно, можно остановить и преобразовать в ядро ​​@Sheepdoll.

И переход к новому ядро, вероятно, то, что сообщество должно активно работать над.
К сожалению, сейчас я действительно занят работой, на 3 или 4 одновременных проектах, и у меня нет времени на много, кроме технического обслуживания текущих ядер ;-(

Мадиас
Вторник 25 августа 2015 г., 19:38
Я знаю, я знаю... Главное то, что для нас вещи полностью изменены: в начале мы играли с Maple Mini Mini Clones, Real Maples, Nucleo (My Baby), не думая о том, что даже линия F1 гораздо сильнее, как мы себе представляли эти дни :) Теперь каждую неделю появляется новая прохладная доска для еще большего количества денег на нескольких платформах, что делает практически невозможным создавать для каждого из них новый «вариант».
И наверняка переключение на новое ядро ​​* должно быть * общественным проектом, но в будущем необходимо получить все эти STM32FX под капюшоном. ST идет в правильное направление с лицензиями, поэтому мы должны следовать за ними....
...И кстати: IoConfigurator STM32Cubemx - это действительно модный инструмент :)

ZMEMW16
Ср 26 августа 2015 г. 9:48
Пара вопросов :-)

Как используется сгенерированный куб код?
Чтобы создать скелет для варианта или его использование идет дальше, чем это?
Может ли код F4 быть перенесенным на F1?
F1<==> F4 Hardware, USART/ADC/PIN/SPI/I2C/DAC; F1 SPI в некотором роде отличается от F4 SPI ?
в некотором роде отличается от физических булавок & адреса?
Есть ли порты «такого же» набора механизмов регистрации и использования?

Поскольку базовый механизм в настоящее время является «кубиком»,
Можем ли мы повторить эту функциональность с открытым исходным кодом?
мы должны?
в какой степени?

Увы, одна возможность заперта в кубе, извиняюсь за мой синдром U $.
Я в первую очередь основан на 103 (Тотт), как я подозреваю, что большинство может быть
с парой (x) нуклео и 429 Discovery (LCD One) на пути.

Стивен

Rogerclark
Ср 26 августа 2015 г. 11:18
Файлы, которые сгенерировал куб, в основном открыты, в том смысле, что его лицензия допускает перераспределение и т. Д.

До куба файлы исходного кода STM для F103 и т. Д. Имели лицензию, которая предотвращала перераспределение, поэтому Leaflabs должен написать свое собственное ядро ​​с нуля, чтобы сохранить его с открытым исходным кодом.

Единственным недостатком с кубиком является то, что это проприетарная часть программного обеспечения, и я не уверен, что он работает на всех ОС

На самом деле, когда я сказал, что куб генерирует код повторного использования, это не на 100% правда. Файлы сценариев линкера, кажется, имеют проблемы с лицензией, однако я подозреваю, что это было упущением STM I.E Я сомневаюсь, что они намеревались использовать не перечисленные файлы линкеров.

Таким образом, для любого ядра, которое генерируется кубом, чтобы эффективно свободна от ограничений лицензии, файлы линкера должны быть переписаны.

Я нашел файл компоновщика для замены для F103, но не нашел один, чтобы заменить файл линкера F4.
Так что какой -то умный человек должен был бы написать новый для F4.

Рик Кимбалл
Ср 26 августа 2015 г. 14:23
Rogerclark написал:На самом деле, когда я сказал, что куб генерирует код повторного использования, это не на 100% правда. Файлы сценариев линкера, кажется, имеют проблемы с лицензией, однако я подозреваю, что это было упущением STM I.E Я сомневаюсь, что они намеревались использовать не перечисленные файлы линкеров.

ZMEMW16
Ср 26 августа 2015 г. 15:15
Используется Java jre1.8.0_51 и как упоминалось в документах HALMX
java -jar setupstm32cubemx -4.9.0.Exe

Установка под Debian 8, хотя хочет root, хотя.

Java -Jar Stm32cubemx.exe из правильного места, кажется, счастливо бежит

Нужно ли установить STM32Cube_fw_f1_v1.2.0 & STM32Cube_FW_F4_V1.7.0
каталоги где -то или они уже встроены / установлены?

Мой мир стал красной таблеткой в ​​этом посте, длинные 6-7 недель
кажется лучше, чем шелковая трафаретная печать, чем синий & Байт, немного наступает
каждая сторона в результате
Пока нет признаков OLS

Стивен

Rogerclark
Ср 26 августа 2015 г., 20:53
Рик

Я согласен, что стратегия STMS в отношении открытого исходного кода и их лицензии в целом кажется несколько смущенной.
Более 6 месяцев назад я опубликовал на их форуме поддержки о лицензии на старом стандартном периферийном либе, но тоже не получил ответа.

Но...

Я не нахожу Ti и т. Д., Когда дело доходит до открытого исходного кода.

Я сейчас работаю над каким -то бледным веществом, а стек Ti BLE - это закрытый исходный код, и они не поддерживают компиляторы с открытым исходным кодом на своих устройствах BLE CC254X серии :-(
Что в основном управляет этими устройствами для любого не крупномасштабного коммерческого развития, поскольку только компании с $$$$, чтобы потратить на компилятор IAR, могут эффективно использовать эти устройства.

Аналогичным образом, новое устройство WiFi на основе STM32F411, EMW3165, использует Broadcom Wi -Fi SDK (WICED), которое вам нужно зарегистрировать, чтобы загрузить.

Afik, основной LIB на ESP8266 также не открыт; Хотя нет необходимости регистрироваться, чтобы загрузить его.

Документы GD32F103 требуют регистрации, чтобы загрузить их

и т. д
и т. д

Хотя я в данный момент не способен переписать сценарий линкера, так как у меня нет опыта в этой области; Я думаю, что это меньшее препятствие, чем большинство других встроенных вещей, которые я видел недавно.

Мадиас
Ср 26 августа 2015 г., 21:12
HM, Рик: Вы получили ответ 8/11/15: Привет, Рикта59,

Эта проблема исправлена ​​с текущей версией SW4STM32, доступной на сайте AC6.
Код, сгенерированный Cubemx, а также примеры, доступные в пакетах STM32CubExx.

-Мэйла-
https: // my.ул.com/public/ste2ecommuniti ... TVIEWS = 191

Звучит для меня нормально - или? (Но мы должны подождать, если/когда это произойдет ;) )

Mrburnette
Ср 26 августа 2015 г., 23:51
Rogerclark написал:Матиас,

Я поднял вопрос о том, какое ядро ​​мы должны использовать, несколько раз, но никто не заинтересован в том, чтобы попытаться написать новое ядро, пока не задействовался @sheepdoll,

Я смотрел на Кодуино и Макерлабме (см. Другие мои сообщения), но ни один из них не был особенно полезен в целом, по разным причинам.

Я думаю, что у Кодуино есть несколько либеров, которые, вероятно, можно остановить и преобразовать в ядро ​​@Sheepdoll.

И переход к новому ядро, вероятно, то, что сообщество должно активно работать над.
К сожалению, сейчас я действительно занят работой, на 3 или 4 одновременных проектах, и у меня нет времени на много, кроме технического обслуживания текущих ядер ;-(

Стевех
Чт 27 августа 2015 г., 6:47
Я могу помочь некоторым с использованием Cubemx + HAL и его целевых цепочек инструментов.
IAR (и Keil) лучше всего в стороне от породы, но бесплатно только до 32 КБ кода.

Много опыта с этим, F4 и IAR. Я вижу, что Cubexmx теперь нацелен на больше компиляторов.

Arduino - для AVR и Teensy3. Время двигаться дальше. ST дает нам HAL (или амортизированный STD. Периф. Libs), который является большим суперсетом того, что ARM M0/M4 люди пытаются заново изобретать от извергнутого Arduino 8 -битный материал.

Mrburnette
Чт 27 августа 2015 г., 13:11
Стевех написал:Я могу помочь некоторым с использованием Cubemx + HAL и его целевых цепочек инструментов.
<...>
Arduino - для AVR и Teensy3. Время двигаться дальше. ST дает нам HAL (или амортизированный STD. Периф. Libs), который является большим суперсетом того, что ARM M0/M4 люди пытаются заново изобретать от извергнутого Arduino 8 -битный материал.

ZMEMW16
Четверг 27 августа 2015 г., 14:22
О, я бы хотел ответить вчера вечером!

Это вопрос того, сколько необходимо сохранить Arduino-Iness?
Стоит ли выполнять риск?

Я вижу снижение набора «arduino», переключение с 328p в ООН на STM32 не работал
Для клена (хорошо, это было не только это), я никогда не был искушен и не думал о переключении, кроме
Может, в мегу. (Возможно, следуя за брендом)
С другой стороны, я привык к Linux и новому оборудованию, подождите немного, и он начнет работать :-)

Для меня, я бы поступил в опасность, следующий вопрос
Можно ли это сделать таким образом, чтобы даже если отследить St, это не создаст проблемы?
Стивен

Рик Кимбалл
Чт 27 августа 2015 г. 15:25
Мадиас написал:HM, Рик: Вы получили ответ 8/11/15:
Звучит для меня нормально - или? (Но мы должны подождать, если/когда это произойдет ;) )

Mrburnette
Чт 27 августа 2015 г., 17:58
ZMEMW16 написал:<...>
Это вопрос того, сколько необходимо сохранить Arduino-Iness?
Стоит ли выполнять риск?
<...>
Можно ли это сделать таким образом, чтобы даже если отследить St, это не создаст проблемы?
Стивен

Mrburnette
Чт 27 августа 2015 г., 18:10
Рик Кимбалл написал:<...>

Думаю, я должен был проверить, но я думал, что услышал последнее слово.

Спасибо,

-рик

ZMEMW16
Пт 28 августа 2015 г. 9:05 утра
Хорошо, это, вероятно, слишком рано, но

Есть ли способ использовать то, что было изучено в «Получение F103 к функциональности» в ходе перехода к HAL?

в настоящее время это довольно упрощенно от нажатия на компиляцию&связь' :-
'arduino' => Сгенерируйте код для каждого устройства/переменной, настройки и Loop => компиляция & Ссылка против LIB STD & 'Наша обертка/версия' libmaple '=> гекс

Наша обертка/версия Libmaple Orbper текущая «HAL»?
где вписывается 'cubemx/cubefx'?
Не могу видеть, что он «называется» на коммутационном устройстве для генерации котловой пластины по мере необходимости?
это будет использоваться за пределами 'compile&Ссылка '', чтобы генерировать источник котла (максимальная функциональность для каждой STM32FXXX), который будет вставлен на стадию Generate Code, линкер будет просто игнорировать неиспользованный код?

Эффективен ли Cubemx <Cubef1xx+cubef2xx+ ... +Cubefnxx>

Стивен

Rogerclark
Пт 28 августа 2015 г. 10:13
Ребята,

Я постараюсь составить долгий ответ на эти сложные моменты на выходных.

Но вот несколько моментов, которые следует иметь в виду в то же время.

ИМХО создает полное новое ядро, включая основные библиотеки, нетривиально. Несколько других сайтов попробовали это, только с ограниченным успехом.
Я бы порекомендовал вам прочитать мои сообщения о двух основных альтернативных ядрах Arduino для STM32 (я.E MarkerLabme и Koduino) и посмотрите, если вы думаете, что они подходят для того, что вы хотите сделать.

Лично я чувствую, что уход от совместимости Arduino / Plink не является хорошей идеей, это включает в себя совместимость с существующими библиотеками, где это возможно.
Есть много других IDE и методов для компиляции кода для STM32 E.глин. Eclipse, но красота проводки заключается в том, что люди без огромного количества навыков программирования могут, по крайней мере, получить что -то простое, что может подтолкнуть их к большим вещам (не обязательно в семье Ардуино)

Расширение Arduino / Winding API E.глин. Чтобы включить некоторые вещи, управляемые событиями, и т. Д. эн.глин. Мы уже расширили API SPI, чтобы включить DMA, поскольку это не влияет на любой существующий код E.глин. библиотеки, как это новые функции.

Лично у меня нет большого свободного времени, чтобы помочь развить совершенно новое ядро, так как я могу гарантировать, что я все равно получу как минимум 20 вопросов в неделю на этом форуме, либо на GitHub, либо прямо мне по электронной почте, что я бы оставил Если бы я не ответил, направляя людей на форум.
Я подозреваю, что большинство людей находятся в аналогичном положении с работой и домашней жизнью, конкурируя за их драгоценное время.

Мадиас
Пт 28 августа 2015 г., 10:42
Лично я чувствую, что уход от совместимости Arduino / Winding, Правильно, потому что это то, что означает STM32Duino: совместимость с API Arduino API.
Лично я думаю, Leaflabs оставили большой пробел в Libmaple: странные код, такие как 3-4 разных "SPI.H "с тем же именем,...Незаконченные вещи, такие как i2s, нет реальных USB -материалов, таких как аудиоустройство, массовое хранилище... и так далее. Другой момент, что Libmaple имеет только «реальную» поддержку STM32F1 серии.
Итак, мой единственный очень важный вопрос для перехода к новому ядру:
Когда это будет сделано, легче ли настроить различные серии и модели (например, новый STM32F7) и согласовать их? Так что это было бы главным преимуществом. Нам не нужно позаботиться о том, что на «слое 0», потому что я.эн. cubemx+hal сделает для нас эту работу. (Обновления, ошибки, новые модели/серии..)
Еще одно преимущество может быть, это проще преобразовать все остальные примеры для STM32, найденных в Интернете, поэтому STM32Duino может быть «клеем» для Arduino и остальной части мира STM32.

Rogerclark
Пт 28 августа 2015 12:02
Матиас,

Я согласен.

Leaflabs, казалось, вкладывали всевозможные не совместимые вещи в Libmaple, что затрудняло использование своего существующего кода, E.глин. Называть серийный, сериалсб, только потому, что это было через USB. Я знаю, что в то время не было никакого приоритета, как Ардуино Леонардо, но даже в этом случае это кажется странным решением.
... И целый ряд других вещей.

Насколько я вижу, ключом является совместимость с существующим кодом, особенно библиотеки.

На самом деле, теперь я думаю об этом...
Я тестировал PIN_MAP VICTOR_PV в коде Flash, и я думаю, что он достаточно устойчив, чтобы слиться с мастером репо. На самом деле это не все константы, которые действительно в ОЗУ, это просто куча указателей на структуры DEV GPIO, но похоже, что это может решить проблемы библиотек, которые пытаются использовать PinMode и т. Д. Похоже, не побочные эффекты, поэтому я могу также объединить его на выходных. И если это нужно больше работы, e.глин. Притягивая ссылочные структуры во вспышке, мы можем сделать это потом.



КСТАТИ. На связанной примечании. Основа на основе HAL будет работать только для процессоров на основе STM32, оно не будет работать для новых процессоров GD32, потому что у гигадевиков нет такого инструмента, как STMCubemx (ну, я не думаю, что они делают)). У них есть CMSIS и, возможно, стандартная периферийная либера

Я не уверен, будут ли гигадевики главным игроком, но их линия F103 будет быстрее и дешевле, чем линия F103, и GD также делает F2, и я думаю, что они могут лицензировать F4 в какое -то время (кто знает)

Интересно, стоит ли рассмотреть вопрос о том, как, если вообще, можно было бы иметь ядро ​​HAL Type для GD32, а также STM32 ???

Стевех
Сб 29 августа 2015 г. 1:55 утра
Я работал с Arms в течение многих лет, в Encedded (профессиональная работа). Использовал NXP, Freescale, Atmel и My Fav, St. Никогда не слышал о GD.

Смирением их веб-сайта, я вижу документы слишком застенчиво, а не приемлемо для английских спикеров.

Какова привлекательность досок на основе GD32 (не чипсы)?

Rogerclark
Сб 29 августа 2015 г., 2:54
GD32, кажется, предлагает большую производительность по той же или меньшей цене, и, кажется, близко (хотя и не полная совместимость) с STM32

Как ни странно, GD32F103 имеет специфические максимальные часы 108 МГц, но теперь, когда у меня есть одна из этих досок, и я пытаюсь заставить USB работать, похоже, вы не можете запустить его на 108 МГц и иметь USB.

Это потому, что ему потребуется соотношение разделителей USB 2.25 но у него было только коэффициенты разделителей 1, 1.5, 2 и 2.5

Таким образом, чтобы использовать USB, вы можете запустить GD32 только на расстоянии 96 МГц и быть в пределах спецификации, или запустить его на скорости 120 МГц (11% над тактовым) и использовать 2.5 разделитель.

Но на данный момент я думаю, что я, должно быть, испортил настройки PLL, так как я не могу заставить USB вообще перечислять, даже на 72 МГц (Div 1.5) :-(


Думая об этом, мне интересно, почему они реализуют USB -разделитель 2.5 Если они не думали, что смогут запустить GD32 на 120 МГц, но, возможно, в производстве их доход

Но это просто предположение от моего имени

Sheepdoll
Сб 29 августа 2015 г., 3:56 утра
я смущен. PIN -штифт GD32 и периферийные устройства совместимы с STM32? Сайт не очень помогает. Если они второй источник, это хорошо. Если они используют одни и те же номера деталей для направления трафика на свой сайт, то это имеет сомнительное значение.

Я немного посмотрел на то, что делал с CMSIS. Этот CMSIS бьется по CMSIS, используемому в таких вещах, как Koduino, и я думаю, что ядра Areoquad F4. Если GD32 является отдельным продуктом, то мы должны относиться к нему как к NXP и TI (вне объема этих ядер.)

У меня сложилось впечатление, что проводка и обработка - это в основном передние концы для 8 -битных периферийных устройств AVR и Atmel Style. Таким образом, ядро ​​в основном должно подражать atmel gpio и т. Д. Это более просто в случае с должным, так как существует совпадение в том, как инициализируются периферийные устройства.

Еще в 2012 году. GPIO, сериал и SPI. Я просматривал это. У меня есть нечеткое воспоминание, посещающее семинар об этом. В то время, когда ST выдвигал инструменты IAR и Kiel, поэтому код записан в том же стиле, но используя имена функций проводки/обработки. Полученный код рядом с нечитаемым.

Настоящим сердцем любого ядра Arduino для коры состоит в том, чтобы создать картирование булавок к тому, что пользователь Arduino ожидает их. Это, в свою очередь, делает PIN -коэффициент критической проблемы. Под Maple это вызывает прямой доступ к структурам регистра (как это происходит в вариантах Atmel.) Это разваливается между F1 и F4, так как имена CMSIS различаются между семьями. С достаточным количеством общности, чтобы сбивать с толку.

Затем добавить соус в гусь (я думаю, это старое выражение) нужно иметь дело с небольшими штифтами по сравнению с большими устройствами PIN. (Наверное, почему ST придумал Cube.) Это означает, что структуры отображения PIN действительно должны быть изменчивыми, поскольку пользователь ожидает, что полученное устройство будет действовать как Atmel AVR, с динамическими конфигурациями регистра на лету. (В AVR я склонен включать светодиоды через переключение регистра DDR между входами Tristate и 0 тока состояния.) Если мне нужен второй SPI или серийный порт, я утомил его. Для расширенных регистров смены я использую каскадные таймеры и прерывания. Я подозреваю, что все это можно сделать в STM32, с различным синтаксисом и мышлением.

Rogerclark
Сб 29 августа 2015 г., 4:04
Re: GD32

Afik, я думал, что устройства совместимы с PIN -код и имели очень близкую совместимость с программным обеспечением. я.E @Jaconson999 запускает его с использованием существующего общего ядра STM32F103C, и должен был только изменить определенный для задержки ().

Он управлял этим, потому что доска, которая находится на Таобао (которую я сейчас имею в изобилии - благодаря приводе в заказе с моей стороны), использует генератор / кристалл 12 МГц, поэтому настройки ПЛЛ одинаковы I.E 9 x 12 МГц = 108 МГц вместо 9 х 8 МГц, что дает нам 72 МГц для STM32

Однако я не могу получить работу USB :-(.... И похоже, что устройства GD не поддерживают USB, когда они работают на своих максимальных часах (так как им не хватает правильного варианта разделителя часов (2.25) Чтобы облегчить это... В любом случае я не буду пересекать сообщение ;-)

Rogerclark
Сб 29 августа 2015 г., 4:14
Новое репо для зала MX Core ?

Привет, ребята,

Теперь, когда я обращаю ваше внимание (крича ;-)....

Я думаю, что было бы лучше, если бы я поместил ядро ​​HALMX в отдельное репо, так как существующий репо уже довольно большой, и в идеале должен был быть разделен на F1, F3 и F4.......


У меня есть еще одна учетная запись GitHub для STM32Duino.com, так что я думаю, что это, вероятно, имело бы смысл, если бы я взял ядро ​​Джули и создал новую мастер -копию в учетной записи GitHub STM32DUINO.

Вероятно, лучший способ сделать это - разделить библиотеку на свой собственный репо и инструменты в другой репо, а затем иметь одно главное репо, у которого есть ядро ​​HALMX и инструменты в качестве подмодулей.

Или кто -нибудь может подумать о лучшем способе сделать это.

Я также решал, как лучше всего поддерживать требования к упаковке Manager Arduino Manager (для будущего развертывания) и рассматривал возможность разделения инструментов на Tools_win, Tools_linux и Tools_osx и, возможно, Tools_source, поскольку менеджер плат нуждается (Ну, в идеале это так, чтобы сохранить пользователи Linux, загружающие бывших, в которых они не нужны и т. д. и т. Д.)

Но еще один вариант - система GitHub "Relases". Я не использовал его раньше, но я видел сценарии релиза.

Так что это может быть лучшим способом обработки развертывания инструментов для каждой отдельной ОС.

Другой вопрос - библиотеки.

Я предполагаю, что Spi Lib, написанная для ядра HALMX, будет работать на F1, F2, F3, F4, F7 и т. Д.
Эн.глин. Я заметил, например, что настройки скорости GPIO на F1 и F4 не совпадают. Из того, что смутно вспоминает, что F4 имеет большую гранулярность GPIO, чем F1, и он использует разные определения для некоторых скоростей.
Так что при написании либеров и т. Д., где, кажется, различается между сериями устройств, необходимо воспринимать заботу.

Rogerclark
Пт
Ребята,

Я собираюсь попытаться справиться с кодом HALMX в моем репо (который является копией SheepDoll, S Repo).

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

эн.глин. В кубе вам изначально нужно указать количество каналов USART, которые вы хотите использовать, а также количество таймеров, каналов SPI, устройств I2C и т. Д.
Затем, на втором этапе конфигурации Cubemx, я думаю, вам нужно сделать подборы из -за распределения выводов для каждой из функций, так как большинство контактов имеют несколько функций, а некоторые таймеры выделяются для конкретных целей, поэтому, если вы включите конкретные Функция, CubeMX показывает некоторые таймеры в красном, чтобы указать, что они больше не доступны для общего использования.

Однако я не уверен, что что -то из этого имеет значение для нас, я.E, используется ли это только для настройки того кода инициализации, который генерирует Cubemx.

Я полагаю, что нам нужно общий набор инструкций, которые позволят нам генерировать файлы HALMX для всех вариантов процессора, которые нам нужны.
(Я думаю, что эта информация находится в публикации на форуме, но она должна быть в вики для репо)

Кроме того, я подозреваю, что нам, вероятно, потребуется изменить некоторые файлы, либо вручную, либо использовать скрипт. Например, для использования загрузчика, VECT_TAB_OFFSET, который определяется в одном из заголовков CMSIS как 0x00, необходимо изменить, чтобы быть извне определены.

В идеале Cubemx завершит это в #ifndef, но это не в коде в репо (но мне нужно будет взглянуть на последние файлы, которые я экспортировал из Cubemx на случай, STM улучшил это).

И, конечно, нам нужно изменить основную.C, чтобы добавить вызовы в setup () и loop () в Main.в



В целом, я думаю, что нам нужно начать пробовать этот репо, чтобы понять, что нам еще нужно делать ;-)

Sheepdoll
Сб 05 сентября 2015 3:16
Я скопировал некоторую информацию о настройке из потоков здесь в несколько Readme.txt файлы, которые находятся в репо.

https: // github.com/rogerclarkmelbourne/ ... _настраивать.текст

и

https: // github.com/rogerclarkmelbourne/ ... атмосфера.txtt

Rogerclark
Сб 05 сентября 2015 г. 5:58 утра
Спасибо, я копирую текст в 2 разных вики -страниц в репо, чтобы мы могли отформатировать его и легче обновить его

Стевех
Солнце 06, 2015 1:02 утра
Я хорошо прослушанный пользователь Cubemx и HAL от ST.
Не могли бы вы, людям, понравившейся помощи?

Стив

Rogerclark
Солнце 06, 2015 1:10
Привет, Стив

Да. Я подозреваю, что нам нужна помощь ;-)

Я просто не уверен в том, какую помощь нам нужна в данный момент

Возможно, вы хотели бы попробовать запустить Core Hal Mx Core https: // github.com/rogerclarkmelbourne/ ... ino_stm32/

Получение USB для работы на F103 было бы первым, что я думаю, что нам нужно сделать, так как не у всех есть Stlink.

Затем мы можем использовать существующий загрузчик для загрузки (после того, как мы разработали лучший способ изменить значение смещения таблицы векторов CMSIS, чтобы перенести смещение начала на 0x2000 (i.e Начальный адрес 0x8002000)

Чтобы работать с загрузчиком, нам также необходимо выяснить, как контролировать DTR и ChARS на сериале USB, поскольку существующий код использует специальную последовательность для запуска перезагрузки процессора (в загрузчик)

Стевех
Пн сентября 07, 2015 12:03
Рад был помочь.
Чтобы калибровать меня...
Правильно ли я понимаю цель HALMX...

Библиотеки HAL = HAL, которые заменяют SPL (стандартные периферийные библиотеки). Для STM32F1XX и F4XX?

MX = инструмент Cubemx ST. Да? С Cubemx, продвинутым пользователем, возможно, от имени начинающих или людей, которые хотят взять доску и соответствующую конфигурацию Cubemx. Как показано ниже, но предварительная конфигурация для этого типа пользователя. Метод продвинутого пользователя...
  • Выберите чип STM32 и тип пакета. Или вы начинаете с заданной/предварительной конфигурации Cubemx и измените ее, чтобы получить новый другой для текущего проекта.
  • Выберите периферийные устройства, необходимые для определенного приложения. Это независимый о том, как штифты MCU подключены к любой плате ПК или макет. Вы настраиваете систему по умолчанию и режимам шины и разделители и PLL, используя графический пользовательский интерфейс.
  • Для каждого необходимого периферийного устройства вы сообщаете Cubemx (через графический пользовательский интерфейс), что периферийное устройство отображается с тем, какие штифты на пакете MCU (все же, а не конкретно плата).
  • Затем для каждого периферийного устройства вы настраиваете все его режимы и параметры, e.глин., Коллективная скорость SPI, скорость бодского дела UART, GPIO In/OUT/OUT UPUP, внешние прерывания и т. Д.
  • Настройте желаемые режимы: опросы, прерывание, DMA и другие детали для каждого периферийного устройства, которое вы конфигурируете. И так далее. Все это сделано, вы выбираете целевой компилятор (IAR, Keil, GCC и избегаете того, что такое IDE).
  • Затем скажите Cubemx для создания проекта для целевого компилятора/IDE. Он генерирует код для настройки системных перегородков и PLL. Он собирает весь код HAL, необходимый для удовлетворения выбранных периферийных устройств.
  • Он генерирует код для инициализации каждого периферийного устройства в выбранных режимах. Он создает обработчики прерываний для каждого периферийного устройства, с дополнительными обратными вызовами в приложение пользователя. Это создает Main ().
  • Вы кодируете в main () что угодно. setup () не требуется для инициализации ввода/вывода. loop () находится в пределах main (), который вы измените в соответствии с.
Отсюда, где это становится нечетким для меня. IDE Arduino IDE и его командные строки компилятора GCC несовместимы с вышеупомянутым? Концепция Ардуино проанализировать все .C и .Файлы CPP для автоматических прототипов функций могут противоречить Cubemx и HAL, которые используют традиционные .H файлы. Необходимый .H Файл #includes создан автоматически Cubemx.

Что касается специфичного для доски. Я сделал один проект, в котором я использовал Cubemx и Hal и написал код для некоторых вызовов проводки (Digital.Напишите/прочитать) и векторное установление прерываний (прикрепите прерывание). Я сделал это с «слабой» дани, которую Cubemx использует для прерываний и других вызовов - поэтому эти слабые функции могут быть переопределены вами, кодируя функцию с тем же именем, в C (не перегрузка C ++).

Все, если это в c. C ++ не требуется. Но можно использовать. Не использовать кучу, но может быть использована.

Для меня я перешел от библиотек Ардуино, так как они являются глюми и небольшой подмножеством того, что находится в HAL ST. Freescale имеет меньший, но аналогичный эквивалент HAL и Cubemx.

Это, я смог сосредоточиться на приложении, не писать драйверы и библиотеки ввода -вывода, избежать открытого исходного кода, но несовместимых миопических библиотек, и т. Д.
=========================

Я смог взять вышеупомянутое и интегрировать протоколы Big Radiohead... Написано для Arduino, но замените библиотеки HAL на библиотеки Arduino, нацеливаясь на STM32F. Чтобы включить SPI, прерывания изменений, таймеров, микросхемы () и т. Д. Этот набор кода - тяжелый C ++, но стал совместим со смесью C и C ++ HAL и кода пользователя.

Это говорит о том, что Arduino IDE заменяется обычной IDE (нет .Ино, используйте обычные методы). Эти IDE могут быть Eclipse (не интуитивно), бесплатный только Windows Visualmicro+Visual Studio Community Edition), VisualGDB или Ye Ole Makefiles для тех, кто предпочитает это. Яр и Кейл там, но бесплатно только для проектов 32 КБ. Я использовал IAR в течение многих лет (профессионально).

ХОРОШО... Это цель для halmx_arduino? Я думаю, ответ нет. Но для меня проекты выполняются намного быстрее с Cubemx и огромным количеством поддерживаемого кода в HAL. (К счастью, мне редко приходится смотреть внутрь кода Хэла) .. Просто API.

Рик Кимбалл
Пн сентября 07, 2015 1:22
Стевех написал:Для меня я перешел от библиотек Ардуино, так как они являются глюми и небольшой подмножеством того, что находится в HAL ST. Freescale имеет меньший, но аналогичный эквивалент HAL и Cubemx.

Sheepdoll
Пн сентября 07, 2015 1:29
Привет, Стив;

Посмотрели ли вы на грубых текстовых файлах документации, которые я поместил в HALMX_ARDUINO_STM32 Lashup Я предоставил Roger? Есть прямые ссылки на них, которые Роджер занимается в проекте Wiki.

Цель всего этого состояла в том, чтобы сделать что -то, что можно было бы быстро настроить и быть понятым кем -то с одним из праймеров Arduino. Некоторые из нас используют *NIX Systems, OS X, Linux, а не Window $. Альтернативой для пользователей Non M $ является использование Eclipse.

Я использую аналогичный метод вашего предварительного пользователя. В моем случае я сосредоточен на нуклео и наборах Discovery. Я выбираю их из настройки платы. Настроить и сопоставить функции PIN -кода, где существуют конфликты с более ожидаемыми функциями. Затем генерируйте код для рабочих систем, совместимых с GCC,.

Похоже, нет никакой проблемы с использованием традиционных .H Файл под Arduino IDE. Компилятор Arduino - это просто GCC, доска.Файл TXT в координации с платформами.Настройка TXT Параметры компилятора GCC. а .INO -файл может содержать любые обратные вызовы HAL в качестве .H файлы включены через эти сценарии.

Цель состояла в том, чтобы как -то «поплавать» API Arduino на вершине API HAL. Большая часть этого была сделана с помощью простого кода «клея», и некоторые определяют, где были функции практически одинаковые. Пока единственные крючки, которые мне нужны, - это основное.C и Main.час. Как и вы, я редко заглядываю внутрь кода HAL, однако я имею широкое отношение к .PDF, который описывает API. Я также считаю, что примеры, содержащиеся в папке STMCube/Repository «прошивка», являются наиболее поучительными. Смотрите папку «Примеры» в HALMX_ARDUINO_STM32, где это было сделано, чтобы сделать мгновение и простой серийный набросок.

Мне нравится использовать git, чтобы содержать Cubemx .МОК, я читал на форумах STM, что кто -то другой, хотя это хорошая идея. Таким образом, легко создавать новые варианты в качестве филиалов. Это также хорошо для отката обратного обратного сгенерированного кода, если что -то сломается. Я использую редактор различий, GIT предоставляет ту же информацию, что и часть отчетов о статусе GIT.


Одним из больших различий между подходом STM и Arduino, которое также может привести к тому, что некоторые из нечеткости является то, как код загружается на кремний. Я приехал из миров 8051 и AVR и предпочитаю JTAG Dongles, чтобы сделать загрузку/отладку. Похоже, есть желание заставить загрузчик работать так же, как это происходит, прозрачно на Arduino через DFU CDC. Похоже, что некоторые незначительные изменения в ядре CMSIS могут быть изменены, чтобы распределить пространство для загрузки.

Стевех
Пн сентября 07, 2015 1:39
Я не использовал HAL/Cubemx с GCC; Только IAR.
Я не нашел проблем со сценарием линкера для IAR - но я отредактировал его, чтобы избежать использования некоторых областей вспышки, чтобы я мог использовать их для памяти, как на прочтении, например, 64 КБ, поскольку '415 имеет 4x16KB, а остальная часть 1 МБ составляет 64 КБ секторы.

Я нашел только две или около того ошибки в драйверах HAL - и они предназначены для эзотерических драйверов (наполовину дуплексный режим UARTS).
Приложение, которое у меня есть, составляет около 35 файлов C, все библиотеки HAL для
Uart Half -Duplex; UART Нормальный полный дуплекс, оба управляемых прерыванием, один при 250 кбо, другой в 115K
SDIO и FATFS, 16 ГБ USD, DMA для чтения и написания
Два канала SPI, DMA
Внешний штифт прерывается
два таймера
Systick 1msec (встроенный в HAL)

Драйверы HAL на самом деле обертки на драйверах SPL.

Букер
Пн, 01 августа 2016 г. 12:04
Привет, Роджер:

Я загружаю halmx_arduino_stm32. и получить ошибку с наброском Build Blink на Arduino IDE 1.6.5.
Ниже сообщения об ошибке:

C: \ users \ booker \ appdata \ roaming \ arduino15 \ packages \ arduino \ tools \ arm-none-eabi-gcc \ 4.8.3-2014q1/bin/arm-none-eabi-ar rcs {archive_file_path} r: \ temp \ build2787883865254039219.TMP \ WString.CPP.о
C: \ users \ booker \ appdata \ roaming \ arduino15 \ packages \ arduino \ tools \ arm-none-eabi-gcc \ 4.8.3-2014q1/bin/arm-none-eabi-g ++ -os -wl,-gc-sections -mcpu = cortex-m3 -tc: \ users \ booker \ documents \ arduino \ hallware \ halmx_arduino_stm32-master \ halmx \ variants \ Mxbluepillf103c8/sw4stm32/mxbluepillf103c8/stm32f103c8tx_flash_0x2000.ld -Wl, -map, r: \ temp \ build2787883865254039219.TMP/Blink.CPP.Карта -lc: \ users \ booker \ documents \ arduino \ halpware \ halmx_arduino_stm32 -master \ halmx \ variants \ mxbluepillf103c8/ld -o r: \ temp \ build278783865254039219.TMP/Blink.CPP.ELF -LR: \ Temp \ Build2787883865254039219.tmp -lm -lgcc -mthumb -wl,-cref -wl,-проверка-wl,-gc-sections -wl,-неразрешенные символы = отчет-all -wl,-warn-common- Wl,-Warn-section-align -wl,-Warn-unresolved-symbols -wl,-начальная группа R: \ temp \ build2787883865254039219.TMP \ Blink.CPP.o r: \ temp \ build2787883865254039219.tmp \ startup_stm32f103xb.С.o r: \ temp \ build2787883865254039219.TMP \ System_stm32f1xx.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_ADC.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_ADC_EX.в.o r: \ temp \ build2787883865254039219.tmp \ stm32f1xx_hal_cortex.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_DMA.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_FLASH.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_FLASH_EX.в.o r: \ temp \ build2787883865254039219.tmp \ stm32f1xx_hal_gpio.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_I2C.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_PCD.в.o r: \ temp \ build2787883865254039219.tmp \ stm32f1xx_hal_pcd_ex.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_PWR.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_RCC.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_RCC_EX.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_SPI.в.o r: \ temp \ build2787883865254039219.tmp \ stm32f1xx_hal_spi_ex.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_TIM.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_TIM_EX.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_UART.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_LL_USB.в.o r: \ temp \ build2787883865254039219.TMP \ USBD_CDC.в.o r: \ temp \ build2787883865254039219.TMP \ USBD_CORE.в.o r: \ temp \ build2787883865254039219.TMP \ USBD_CTLREQ.в.o r: \ temp \ build2787883865254039219.TMP \ USBD_IOREQ.в.o r: \ temp \ build2787883865254039219.TMP \ ADC.в.o r: \ temp \ build2787883865254039219.TMP \ gpio.в.o r: \ temp \ build2787883865254039219.TMP \ i2c.в.o r: \ temp \ build2787883865254039219.TMP \ Main.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_HAL_MSP.в.o r: \ temp \ build2787883865254039219.TMP \ STM32F1XX_IT.в.o r: \ temp \ build2787883865254039219.tmp \ tim.в.o r: \ temp \ build2787883865254039219.TMP \ USART.в.o r: \ temp \ build2787883865254039219.TMP \ USBD_CDC_IF.в.o r: \ temp \ build2787883865254039219.TMP \ USBD_CONF.в.o r: \ temp \ build2787883865254039219.TMP \ USBD_DESC.в.o r: \ temp \ build2787883865254039219.tmp \ usb_device.в.o r: \ temp \ build2787883865254039219.TMP \ _spi.в.o r: \ temp \ build2787883865254039219.TMP \ Variant.CPP.o r: \ temp \ build2787883865254039219.TMP/Core.a -wl,-конечная группа
ARM-None-Eabi-G ++: Ошибка: R: \ Temp \ Build2787883865254039219.TMP/Core.A: нет такого файла или каталога
Ошибка компиляции.

Sheepdoll
Пн, 01 августа 2016 г., 2:27
Привет, Букер

Похоже, вы, возможно, не установили G ++ с менеджера по доходам. Запустите диспетчер доски и выберите Due. Инструменты Arm-None-Eabi не установлены по умолчанию.

Другая проблема в том, что есть некоторые пути Windows с '\' Slash. Большая часть материала HALMX разработана на UNIX или Linux. Windows на самом деле не поддерживается. Обходной путь заключается в том, чтобы изменить локальную копию платформы.TXT, где генерируется путь UNIX для использования сепаратора Windows '\'.

-Джули
Букер написал:Привет, Роджер:

Я загружаю halmx_arduino_stm32. и получить ошибку с наброском Build Blink на Arduino IDE 1.6.5.
Ниже сообщения об ошибке:
...
ARM-None-Eabi-G ++: Ошибка: R: \ Temp \ Build2787883865254039219.TMP/Core.A: нет такого файла или каталога
Ошибка компиляции.

Букер
Пн, 01 августа 2016 г., 13:25
Привет, овчар:

Спасибо за ответ. Я забыл установить посылку.
Я попробую еще раз.

Спасибо, овчар .