Ну, основной вопрос составляет то, как заставить компилятор вырабатывать объектные файлы под вариант архитектуры arm cortex m3, на которой построены данные микроконтроллеры. Сама компиляция осуществляется, если я ничего не напутал, командой arm-none-eabi-gcc. Почитав интернет, наткнулся на статью, где её автор писал про данную компиляцию. Проблема его статьи была в том, что в самой статье команд на компиляцию он не привёл, а отвёл роль изучения данных команд на приложенный к статье makefile, который скачать было нельзя, а из той-же самой статьи следовало то, что cortex m3 это упрощённая версия arm, в которой отсутствует как минимум 1 команда (там-же приведённая). Так вот, как должна быть составлена команда на компиляцию, чтобы компилятор выработал код, полностью совместимый с данной архитектурой? Так-же, заодно вопрос, как выработанный код преобразовать в файл .hex? Так-же, при попытке скомпилировать программу, подсунув ему нужные файлы из cmsis выдаёт следующие сообщения об ошибках: core_cm3.c: In function 'uint32_t __get_PSP()': core_cm3.c:445:12: error: cannot allocate stack for variable 'result', naked function. uint32_t result=0; ^~~~~~ core_cm3.c: In function 'uint32_t __get_MSP()': core_cm3.c:479:12: error: cannot allocate stack for variable 'result', naked function. uint32_t result=0; ^~~~~~ In file included from system_stm32f10x.c:65:0: stm32f10x.h:96:3: error: #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)" #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
А при попытке подсунуть файл startup_stm32f10x_cl.s кучу сообщений такого рода: startup_stm32f10x_cl.s:349: Error: bad instruction `else '
Как это можно исправить? И, если знаете толковые материалы про использованию arm-gcc для stm32, подскажите, пожалуйста.
_________________ Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
# Некоторые дефайны - нестандартная частота кварца, тип кристалла и заглушка для HAL драйвера (который работает БЕЗ остальной части нормально). DEFS = -DSTM32F103xB -DHSE_VALUE=12000000 -DUSE_HAL_DRIVER
Советую в Makefile добавить после цели all еще такое:
Код:
debug: CFLAGS += -DEBUG -Werror debug: all
В итоге для отладки не надо долго мучиться, а достаточно написать make debug. Можно вообще удалить цель all и сделать по умолчанию вывод подсказки, запилив две цели: debug и release. Но мне проще так. Ну и да, мало ли, куда вы положите arm-none-eabi? Скажем, у меня в генте проблема с "коробочным" gcc под arm: он пытается запустить аппаратное деление на STM32F0, поэтому я пишу:
Код:
PREFIX ?= /opt/bin/arm-none-eabi
И в Makefile можно для F1 либо переписать путь, либо make вызвать с измененной опцией PREFIX. P.S. Крайне не рекомендую пользоваться калом.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Мне нужны были от него заголовочники. А без дефайна они не подключались в тот момент. А может дефайн остался случайно. Но вот их *.c файлы я стараюсь не использовать.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
А можете пояснить, что должно лежать по путям DEVICE, CORE и CMSIS? Структура каталогов STM32F10x_StdPeriph_Lib отличается от cubemx. Я так полагаю, CORE - core_cm3.h, CMSIS - stm32f10x.h и system_stm32f10x.h? И ещё, как быть с файлами *.c лежащими по данным каталогам? Я так полагаю, они в принципе не обязательны, но нужны, если потребуются функции из заголовочных файлов, и, в принципе, их можно скомпилировать раз, оформить из них библиотеку и подсовывать компилятору уже её каждый раз, для простоты?
Мурик писал(а):
Почему бы не использовать IDE с компилятором GCC?
Мне надо понять, как это работает. Дальше уже можно и IDE настроить соответствующим образом.
_________________ Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
Мне надо понять, как это работает. Дальше уже можно и IDE настроить соответствующим образом.
Все это не нужно знать при использовании IDE. Посмотрите например этот материал. http://purebasic.mybb.ru/viewtopic.php?id=575 Рассматривается использование различных библиотек (SPL, HAL, LL и вовсе без библиотек) и ни разу не потребовалось знание того как производится компиляция.
Если нужна сборка без IDE выше написали как ее производить.
Проблема этих IDE в том, что они созданы под windows. Собственно, я и затеял разбор GCC с тем, чтобы слезть с кейла, который под виртуальной машиной гонял, т.к. на линукс его никто не портировал, а под wine он работал настолько криво, что использовать его по назначению возможным не представлялось. Да и интересно мне, как это всё работает без IDE.
Кстати, мой вопрос про пути всё ещё в силе.
_________________ Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
тут для начала простейший пример "STM32F103RB a minimal example" для GCC http://pandafruits.com/stm32_primer/stm ... inimal.php без CMSIS, стартапа и прочих инклудов. Затем можно сделать минимальный проект в кубе от ST - а он делает проект и для GCC, правда там хал получается прицеплен. Но хал легко из такого проекта выкашивается, зато остаются все цмисы и пр. самые свежие. В этом проекте несложный мейкфайл - для разбора и понимания и правки сгодится. з.ы. Кейл под вайном нормально работает, настроить отладку даже вроде можно (не пробовал - мне не надо было). Надо Кейл установить на ПК с виндовс, потом просто скопировать папку себе в линукс и запускать экзешник - вайн запускает. Кейл вполне портабелен - запускал и v4 и v5, пользуюсь в основном v4 для поддержки старых проектов.
з.ы. Кейл под вайном нормально работает, настроить отладку даже вроде можно (не пробовал - мне не надо было). Надо Кейл установить на ПК с виндовс, потом просто скопировать папку себе в линукс и запускать экзешник - вайн запускает. Кейл вполне портабелен - запускал и v4 и v5, пользуюсь в основном v4 для поддержки старых проектов.
Ну, не знаю, как у других, а у меня в кейле при попытке создать проект - абсолютно пустое меню выбора устройства. Причём - что у установленного через wine, что у скопированного из windows.
_________________ Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
Проблема этих IDE в том, что они созданы под windows.
Тогда вообще непонятно, в чем проблема! Я пользуюсь qt-creator, никаких косяков нет. В отличие от мазохистов-геймеров, в линуксе четкая иерархия файловой системы и нет проблем написать раз и навсегда Makefile и пользоваться им! По клавосочетанию можно запустить make, можно даже прошивать по клавосочетанию. А для любителей внутрисхемной отладки есть интеграция с gdb.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
wine 5.0-rc2 из репозитория сам обновился, и на 4 версиях работало: з.ы. геймеры на линукс перебираются - "Proton - уже 4000 подобных Windows-игр, идеально доступных для игр под Linux". Vulkan API linux выдает больше FPS, чем на Windows 10
А можете пояснить, что должно лежать по путям DEVICE, CORE и CMSIS? Структура каталогов STM32F10x_StdPeriph_Lib отличается от cubemx. Я так полагаю, CORE - core_cm3.h, CMSIS - stm32f10x.h и system_stm32f10x.h?
Не совсем. Всё это названия... грубо говоря, наборов файлов. Изначально - какие-то заголовочные файлы Куба. А переименовывать было лень. Чаще всего там находятся *.h файлы, которые требуются для сборки проекта. Если хочется - можно свалить все эти файлы прямо в проект (копипастом, ага). Но после десятого-двадцатого каталога, занимающего по паре десятков мегабайт, становится стыдно перед собой же, и наконец в файле оказываются ссылки.
В общих чертах, gcc будет искать указания на файлы #include <something.h> в тех каталогах, которые будут указаны.
И ещё, как быть с файлами *.c лежащими по данным каталогам?
*.c, лично я, складываю в папку. Изредка требуется один-два хитрых .c и это тот случай, когда проще их скопировать. Тем более, что часто они платформо-зависимы (зависят от ядра и иногда даже конкретной модели контроллера).
Я так полагаю, они в принципе не обязательны, но нужны, если потребуются функции из заголовочных файлов, и, в принципе, их можно скомпилировать раз, оформить из них библиотеку и подсовывать компилятору уже её каждый раз, для простоты?
*.c файлы указываются в makefile'е явно. Смотрите директиву SRC = ... Это все те файлы, которые в итоге будут участвовать в сборке и ТОЛЬКО те, которые в итоге будут переданы линковщику для окончательной сборки исполняемого файла.
Проблема этих IDE в том, что они созданы под windows. Собственно, я и затеял разбор GCC с тем, чтобы слезть с кейла, который под виртуальной машиной гонял, т.к. на линукс его никто не портировал, а под wine он работал настолько криво, что использовать его по назначению возможным не представлялось. Да и интересно мне, как это всё работает без IDE.
Кстати, мой вопрос про пути всё ещё в силе.
И Вы хотите потоптаться по тем же граблям? Ну... могу только посочувствовать.
И... порекомендовать таки поставить Eclipse + OpenOCD + плагины + *.vxd файлы описания периферии... в общем, в итоге ЭТО будет работать лучше чем Keil. Повертье моим шишкам. Даже почти удобно получится. Хотя имеет свою специфику.
по зеленой иконке это 5 Кейл. Установщик ставит только uVision и тулчейн. Библиотеки и примеры устанавливаются через Pack Installer - только то, что нужно. Если какого-то устройства в данный момент нет, можно установить Legacy Support для нужной серии. Когда то делал уже забыл. Все есть мануале http://www.keil.com/support/man/docs/uv ... taller.htm
по зеленой иконке это 5 Кейл. Установщик ставит только uVision и тулчейн. Библиотеки и примеры устанавливаются через Pack Installer - только то, что нужно. Если какого-то устройства в данный момент нет, можно установить Legacy Support для нужной серии. Когда то делал уже забыл. Все есть мануале http://www.keil.com/support/man/docs/uv ... taller.htm
Дело всё в том, что изначально он содержит как минимум просто arm архитектуры. Конкретно в этой версии уже были установлены пакеты для stm (взял с вирт. машины). Как видите - к использованию не пригоден.
Добавлено after 4 minutes 5 seconds: Ладно, всем, кто отвечал - спасибо. Буду разбираться.
_________________ Ответы на вопросы иногда бывают настолько просты, что найти их практически невозможно.
Если еще актуальный вопрос, вот тут https://bevice.ru/posts/1590.html начал примерно его и разбирать. Пока фиг знает, как быстро и понятно про CMake написать, но компиляция и линковка разобраны.
Ну вот есть у меня проект, в котором требуется собрать несколько десятков почти одинаковых прошивок. Незначительно отличаются параметрами сборки и шифруются по серийному номеру. После сборки нужно отправить обновления в другой офис и зарегистрировать на сервере обновлений. У меня это решает CI, и после коммита в соответствующую ветку все происходит само-собой. А как вы эту задачку решите? Да, некоторые параметры сборки задаются в другом офисе, а серийные номера вообще на сборке.
_________________ После нас - хоть потоп (с) Лойсо
Сейчас этот форум просматривают: serg_svd и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения