Cubemx -> Makefile Utility

Рик Кимбалл
Вт 16 июня 2015 г., 19:39
Вдохновленный успехом @sheepdolls, я решил еще раз взглянуть на новейшие Cubemx и Hal Api. Я попробовал openstm32... И человек, какой беспорядок на Linux на данный момент. Еще нужно кипеть еще немного. Тем не менее, я наткнулся на полезную утилиту:

http: // www.BA0SH1.com/stm32cubemx-gcc-makefile/
https: // github.com/baoshi/cubemx2makefile

Вы используете Cubemx IDE, создаете свою конфигурацию, а затем генерируете исходный код. Вы должны нацелиться на Truestudio Ide. Эта утилита Python считывает файлы конфигурации TrueStudio и извергает MakeFile для Arm-None-Eabi-GCC. Вы только что изменились на исходный каталог и тип .. БИНГО БАНГОНО .. это компилируется. Это полезно, даже если вы не планируете использовать командную строку. Лучшее, что он делает для вас, - это определить все каталоги включения и определить флаги, необходимые для компиляции командной строки.. Скажи как то, что ты делаешь на платформе.текст. Кроме того, если вы используете IDE Eclipse, он может создать новый проект из Makefile. Я использовал эту функцию довольно безболезненно, чтобы импортировать файлы Cubemx в стандартное затмение и составьте их.

Единственный недостаток для использования пользователей Linux .. Текущая версия Cubemx не может создать некоторые из необходимых файлов, необходимых для генерации кода Truestudio. Мне пришлось запустить версию Windows Cubemx, чтобы сгенерировать файлы, но затем я использовал скрипт Python от Linux, чтобы сделать все преобразование.

* Подробнее здесь *
https: // my.ул.com/public/ste2ecommuniti ... TVIEWS = 291

-рик

Martinayotte
Вт 16 июня 2015 г., 19:45
Интересный !
Что именно терпит неудачу на Linux ? Можно ли исправить ?

Рик Кимбалл
Вт 16 июня 2015 г., 19:49
Он генерирует файл LDScript нулевой длины. Вы можете генерировать его в Windows и сохранить. Файл будет таким же независимо от ОС.

Sheepdoll
Вт 16 июня 2015 г., 11:30 вечера
Я заметил, что ссылка на обсуждение STM в OP немного датирована в 2014 году. Обсуждаемая версия Cubemx (4.5.0) версия, которую я работаю, составляет (4.8.0), который, кажется, работает на Mac. Единственная проблема, которую я обнаружил до сих пор, заключается в том, что невозможно отредактировать некоторые поля на вкладке «Конфигурация».

Я сделал сравнение между истинным файлом LD Studio и SW4STM32, который я решил использовать. Нет никаких различий, кроме заголовка шаблона наверху.

Последнее, что я видел на форумах ST, было то, что существуют проблемы с чувствительностью случая на платформах ОС, не являющихся Windows. Это может не позволить создать некоторые пути.
Как я отметил в потоке настенного текста, я обнаружил, что если я сначала сгенерирую все библиотеки, то переключаюсь только на библиотеки, я получаю некоторые из недостающих разделов, таких как пути стартапа GCC с небольшим типом S, который должен быть Сделано в большой S для системы сборки Arduino, чтобы найти.

Я еще не пробовал Eclipse или OpenStm32. OSTM, похоже, не имеет большого трафика, и вам нужно зарегистрироваться, чтобы просмотреть. Существует более старая поток в отношении OSX, и установщик, похоже, хочет запустить как Birary Windows. В конце концов я могу использовать OSTM для более серьезных проектов. А пока я могу моргать светодиодами и отправлять серийные струны с ардуиноидом.

Утилита выглядит интересно. Я скучаю по отладчику с графическим интерфейсом, хотя я думаю, что это сторонние плагины в Eclipse.

Sheepdoll
Чт 18 июня 2015 г., 2:42
Мне повезло с этим больше, чем Eclipse/OpenOCD.

Truestudio создает нулевой .LD -файл под OSX.
Я скопировал .LD от SW4STM32 и переименован в его. Из моих экспериментов на Windows (я думал, что сделал это на Mac), файлы идентичны, кроме Coilerplate.

Сценарий Python жаловался на «Тип файла Unknow Source: Drivers/CMSIS/NULL», поэтому я взломал его комментариями. Makefile и LD были получены. Оба выглядят разумно. Может попытаться импортировать в мое искаженное затмение.

Посмотрим, что будет дальше.

Рик Кимбалл
Чт 18 июня 2015 г., 3:44
После того, как вы сгенерировали Makefile, работает ли он на ОС/X ?

Sheepdoll
Чт 18 июня 2015 г., 6:13
Рик Кимбалл написал:После того, как вы сгенерировали Makefile, работает ли он на ОС/X ?

Sheepdoll
Чт 18 июня 2015 г., 21:09
У меня наконец -то появился макияж, чтобы бежать под затмением.

Мне пришлось вручную проверить и установить пути примерно в полдюжине локаций, щелкнув правой кнопкой мыши на различные файлы проекта, чтобы открыть различные диалоговые акты, которые не всегда отражают те же значения, что и свойства свойств или предпочтений. Подобные вещи должны быть сделаны с помощью подключений OpenOCD и GDB.

Я, наверное, смущен тем, что запускаю это под OSX 10.7.5 и решил указать на ардуино.CC установленные инструменты, а не загружать второй набор инструментов. Ардуино.Инструменты CC по -прежнему построены с совместимостью до 10.7.5.

(OT) Я пытаюсь остаться с 10.7.5 Как я могу, поскольку Apple вытащила MIDI -поддержку из QuickTime (действительно следует назвать Quartz Graphic Gputime) в более новых ревизиях ОС. Это ломает способность играть в Миди из Finder, просто попав в космический бар. С 10 000+ MIDI -файлами на моем диске мне нравится просматривать MIDI с Coverflow/QuickLook.(/OT)

Мадиас
Чт 18 июня 2015 г., 21:55
This breaks being able to play MIDI from the finder

Kont-Noor
Сб 04 февраля 2017 г. 11:53
Привет!
Я только что установил последнюю STM32Cubemx и сгенерировал тестовый код (OSX Sierra)
Затем я попытался генерировать создание:
./CubeMX2Makefile.py ../test

Kont-Noor
Сб 04 февраля 2017 12:37
Ну, я решил свою проблему. Было 2 различия между ожидаемым `.cproject` файл и мой. Был твердый домен (атрибут Superclass) и атрибут разных имен.
Ниже есть разница. Это может быть полезно.
--- a/CubeMX2Makefile.py +++ b/CubeMX2Makefile.py @@ -138,7 +138,7 @@ def main(): root = tree.getroot() # MCU - mcu_node = root.find('.//toolChain/option[@superClass="fr.ac6.managedbuild.option.gnu.cross.mcu"][@name="Mcu"]') + mcu_node = root.find('.//tool/option[@name="Microcontroller"]') try: mcu_str = mcu_node.attrib.get('value') except Exception as e: @@ -166,7 +166,7 @@ def main(): c_defs_subst += ' -D{}'.format(c_def_str) # Link script - ld_script_node_list = root.find('.//tool/option[@superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script"]') + ld_script_node_list = root.find('.//tool/option[@name="Linker script"]') try: ld_script_path = ld_script_node_list.attrib.get('value') except Exception as e:

Sheepdoll
Сб 04 февраля 2017 г., 19:58
Я только что подтолкнул свой сценарий Makefile к GitHub
https: // github.com/sheepdoll/xstmscrips.git

Сценарий написан на языке PostScript и оптимизирован для прохождения через интерпретатор GhostScript. https: // en.Википедия.org/wiki/ghostscript Для получения дополнительной информации https: // www.Ghostscript.ком/ для страниц сообщества.

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

Некоторые заметки о чтении кода GitHub. Поскольку есть только один файл, я бы порекомендовал прочитать его изнутри GitHub в качестве клонирования, он сделает скрипт нечитаемым или попыткой запустить просмотрщик Cups, такой как предварительный просмотр на Mac. (который по соображениям безопасности отключает файловую систему.)
Чтение кода в просмотре файла GitHub также использует выделение цвета синтаксиса, что делает код более читабельным.

PostsScript основан на стеке и синтаксис RPN, поэтому операнды выдвигаются на стек и выводят оператор. Классический пример состоит в том, чтобы добавить 2 номера. Синтаксис будет 2 2 добавить, что оставит 4 в верхней части стека.

PostScript также использует словарные клавиши, такие как база данных SQL. (Почему я так люблю язык.) Словарь выдвигаются в стек. Они могут быть явно созданы с помощью количества, такого как 10 дикта. Операнд 10 оставлен от версии 1, это сколько ключей в дикте.

Чтобы сделать словарь, который текущий оператор «начинается», чтобы «открыть» его. Любой ключ в словаре может быть непосредственно упомянут. Когда словарь открыт. Чтобы закрыть словарь, используется конец оператора. Есть отдельный стек DICT, и объекты можно найти из любого открытого дикта. Дикты похожи на объекты C ++.

Дикты также могут быть созданы с помощью '<<' и '>>'Я называю эти французские цитаты. Они не смены или маркеры потока.

Именам в PostScript предшествует черта SO /nameExample - это ссылка, что это указатели на объект. Нажатие nameExample на стеке загрузит значение из любого открытого словаря. Оператор «def» используется для связи с именем с объектом. Ключи имени не выполняются до тех пор, пока не будет прочитано DEF.

Кодовые объекты вложенные внутри скобки '{}' Они выполняются при загрузке имени.

Строковые объекты содержатся внутри паратиза. '()'

Массивы находятся внутри тортов '[]'

Комментарии предшествует процент «процент»

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

Реальный код начинается вокруг строки 375 (\ 033 [0; 32M) Печать Это какой -то код, который делает зеленый текст на заднем канале, используя последовательности Escape ANSI. Print '=' и '==' Операторы все записывают текст на задний канал.

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

PostScript известен как Язык с самодокументированием, поэтому я ожидаю, что немногие здесь будут заинтересованы в этом коде. Я лично нахожу это полезным и считаю, что Python задом наперед и его трудно следовать из -за отсутствия кодовых блоков и ненужного использования в отступлениях.

Я хотел, чтобы этот код также смог создать код таблицы имен вывода. Это потребует большей работы, как мне нужно, по мнению человека, с которым я разговаривал в STM, чтобы заглянуть в сами базы данных Cube. В идеале этот инструмент будет непосредственно частью генерации кода куба, или ST должен предоставить крючки для генерации кода для любого IDE из этих файлов настройки. В настоящее время ST, по -видимому, считает, что пользователь скопирует код из каталога баз данных кода "Repository", где хранятся примеры. Некоторые из них генерируются автоматически, что имеет минимальное использование, поскольку периферийные устройства только частично настроены.

Я все еще работаю над расширением этого кода для создания платы.TXT и платформа.текст. Скорее всего, это будет отдельный сценарий, добавленный в папку GitHub, когда он будет готов.