сборка проекта для STM32
сборка проекта для STM32
Здравствуйте.
Возникла задача сборки проекта для контроллера STM32 из исходников (.h и .c). Когда-то и кем-то была написана прошивка в среде Keil, а теперь надо эту прошивку скорректировать, и залить в микроконтроллер.
Платными программами пользоваться нельзя, объём прошивки не маленький, поэтому поставил CooCox. Насколько я понимаю, надо ещё компилятор GCC-ARM установить, а также что-то ещё понадобится непосредственно для заливки прошивки в контроллер.
Пока проблемы следующие: загрузил файлы .h и .c в пустой проект, но программа не видит стандартных библиотек, появились следующие ошибки на следующих строках:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>,
Пишет unresolved iclusion. Но это же типовые библиотеки, не понимаю, как их подключать.
До этого с STM пору раз игрался через среду типа Nucleo, поэтому таких проблем не возникало.
Прошу помощи!
Как именно правильно собрать проект из таких исходников, и как его загрузить в мк. Прочитал уже много информации, но везде она довольно разрозненная. В крайнем случае могу ещё Cube поставить, если это может помочь.
Возникла задача сборки проекта для контроллера STM32 из исходников (.h и .c). Когда-то и кем-то была написана прошивка в среде Keil, а теперь надо эту прошивку скорректировать, и залить в микроконтроллер.
Платными программами пользоваться нельзя, объём прошивки не маленький, поэтому поставил CooCox. Насколько я понимаю, надо ещё компилятор GCC-ARM установить, а также что-то ещё понадобится непосредственно для заливки прошивки в контроллер.
Пока проблемы следующие: загрузил файлы .h и .c в пустой проект, но программа не видит стандартных библиотек, появились следующие ошибки на следующих строках:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>,
Пишет unresolved iclusion. Но это же типовые библиотеки, не понимаю, как их подключать.
До этого с STM пору раз игрался через среду типа Nucleo, поэтому таких проблем не возникало.
Прошу помощи!
Как именно правильно собрать проект из таких исходников, и как его загрузить в мк. Прочитал уже много информации, но везде она довольно разрозненная. В крайнем случае могу ещё Cube поставить, если это может помочь.
- Реклама
- >TEHb<
- Друг Кота
- Сообщения: 5732
- Зарегистрирован: Ср ноя 11, 2009 17:19:30
- Откуда: Воронеж
- Контактная информация:
Re: сборка проекта для STM32
Раз такой настрой, то можно сразу CubeIDE и попробовать поставить. Бесплатная, полнофункциональная среда от производителя чипов. Там и библиотеки, и загрузчик, и отладчик.
"Привет!" - соврал он.
Re: сборка проекта для STM32
Просто мне изначально показалось, что в Кокосе как-то проще в проект подкинуть исходники проекта, всё довольно очевидно даже если его включил первый раз. Все файлы легко подцепились, кроме указанных в первом сообщении главных библиотек.
А в Кубе я как-то разок попробовал, но там уже при формировании проекта куча каких-то "лишних" папок формируется, и с ходу не смог понять, как туда добавлять файлы с исходниками.
А в Кубе я как-то разок попробовал, но там уже при формировании проекта куча каких-то "лишних" папок формируется, и с ходу не смог понять, как туда добавлять файлы с исходниками.
Re: сборка проекта для STM32
В EmBitz тоже не сложно и все что нужно (либы, компилятор, отладчик/прошивальщик) в комплекте. Нужно искать версию 2.30. Текущая 2.41 не стартует на русской винде из-за санкций!Tibman писал(а):Просто мне изначально показалось, что в Кокосе как-то проще в проект подкинуть исходники проекта
Re: сборка проекта для STM32
Нашёл рекомендованную версию EmBitz. В нём удалось всё быстро собрать, всё довольно понятно, благодарю, на фоне всех остальных программ эта действительно дружелюбна.
Пытаюсь скомпилировать проект из исходников. Непонятно, как его писали, но якобы он был рабочий. Сначала у меня сыпалось много ошибок, но вот теперь осталась только одна, мешающая успешной компиляции.
Кусок кода, взаимодействующий с микросхемой eeprom по I2C.
int EE_WriteBlock(u16 addr, int len, void *buf)
{
int i;
for (i=0; i<len; i++) {
if (eewrite(addr++, *((byte*)buf)++)) break; - вот по этой строке выкидывает ошибку "lvalue required as increment operand"
}
return i;
}
Я хоть и читаю сейчас про работу с указателями, должным образом ещё не вник как следует в эту тему, и не могу с ходу понять суть ошибки.
Ругается что ли на то, что инкрементируем указатель ((byte*)buf) ?
Пытаюсь скомпилировать проект из исходников. Непонятно, как его писали, но якобы он был рабочий. Сначала у меня сыпалось много ошибок, но вот теперь осталась только одна, мешающая успешной компиляции.
Кусок кода, взаимодействующий с микросхемой eeprom по I2C.
int EE_WriteBlock(u16 addr, int len, void *buf)
{
int i;
for (i=0; i<len; i++) {
if (eewrite(addr++, *((byte*)buf)++)) break; - вот по этой строке выкидывает ошибку "lvalue required as increment operand"
}
return i;
}
Я хоть и читаю сейчас про работу с указателями, должным образом ещё не вник как следует в эту тему, и не могу с ходу понять суть ошибки.
Ругается что ли на то, что инкрементируем указатель ((byte*)buf) ?
Последний раз редактировалось Tibman Пн апр 11, 2022 15:30:58, всего редактировалось 2 раза.
- Реклама
Re: сборка проекта для STM32
Ух блин, CooCox уже ж лет 10 как мертв, а тут его вспомнили всуе, (тьфу-тьфу, не к ночи будет помянут)...
Бесплатное - CubeIDE. Правда, чет краем уха слышал, его загрузку заблочили для РФии. Пробуйте Atollic поставить, он бесплатный, хоть и прекращен выпуск его из-за перекупа и ребрендинга под CubeIDE.
Бесплатное - CubeIDE. Правда, чет краем уха слышал, его загрузку заблочили для РФии. Пробуйте Atollic поставить, он бесплатный, хоть и прекращен выпуск его из-за перекупа и ребрендинга под CubeIDE.
EEPROM есть только сериях STM32L. В остальном - это эмуляция через тот же самый флеш.Кусок кода, взаимодействующий с eeprom.
Он не понимает, что за тип byte, если он не описан ранее. Учебник по языку программирования Си от авторов Ритчи и Кернигана - фпомощь!Ругается что ли на то, что инкрементируем указатель ((byte*)buf) ?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: сборка проекта для STM32
[uquote="НовыйДень",url="/forum/viewtopic.php?p=4212940#p4212940"]В остальном - это эмуляция через тот же самый флеш.[/uquote]Сказано же на I2C.
Добавлено after 59 seconds:
[uquote="Tibman",url="/forum/viewtopic.php?p=4212934#p4212934"]и не могу с ходу понять суть ошибки.[/uquote]Ошибку стоит приводить как её выдаёт компилятор, чтобы не гадать в хрустальном шаре.
Добавлено after 59 seconds:
[uquote="Tibman",url="/forum/viewtopic.php?p=4212934#p4212934"]и не могу с ходу понять суть ошибки.[/uquote]Ошибку стоит приводить как её выдаёт компилятор, чтобы не гадать в хрустальном шаре.
Re: сборка проекта для STM32
Топикстартер позже это исправил, вначале было иначе написано.
А в остальном - там просто неправильная работа с указателями и постинкрементом при явном приведении типов, ошибка так и записана полностью, как и выдает ее компилятор, да и догадаться можно. Следует записать *((uint8_t*)buf++), перенеся скобку. Или, если тип byte определен, тогда *((byte *)buf++)
А в остальном - там просто неправильная работа с указателями и постинкрементом при явном приведении типов, ошибка так и записана полностью, как и выдает ее компилятор, да и догадаться можно. Следует записать *((uint8_t*)buf++), перенеся скобку. Или, если тип byte определен, тогда *((byte *)buf++)
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: сборка проекта для STM32
У инкремента приоритет выше. Скобки в обоих случаях лишние и ничего не меняют.
Re: сборка проекта для STM32
Зато не в том месте поставленная скобка меняет всё!
могли бы и сами уж догадаться, коль про приоритеты фкурсах.
Re: сборка проекта для STM32
Да для РФ заблочили софт от ST, но через VPN Скачать можноНовыйДень писал(а):Бесплатное - CubeIDE. Правда, чет краем уха слышал, его загрузку заблочили для РФии.
Re: сборка проекта для STM32
Да и врот им компот, путь подавятся. Нынче в ближайшем обозримом будущем актуальность продукции ST вообще упала до практически нуля, учитывая расколбас 2020 года и нынешний. Ищем альтернативы - GD, ESP32 и иное подобное.
Re: сборка проекта для STM32
у меня ST блокирует и через VPN.
Актуальность STM никуда не делась. Процы продаются на алибабе.
Более того - среда и код STM32 подходят к соответствующим моделям GD32.
Актуальность STM никуда не делась. Процы продаются на алибабе.
Более того - среда и код STM32 подходят к соответствующим моделям GD32.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: сборка проекта для STM32
Не нужны там скобки, как ты их не расставляй через void не перепрыгнешь. Правильно вот такили вот так
Я предпочитаю первое, чтобы при каждом вызове c чем-то отличным от (uint8_t *) компилятор предлагал подумать что ты делаешь.
Код: Выделить всё
uint32_t EE_WriteBlock(uint32_t addr, uint32_t len, uint8_t *buf)
{
uint32_t i;
for (i=0; i<len; i++)
if (eewrite(addr++, *buf++)) break;
return i;
}Код: Выделить всё
uint32_t EE_WriteBlock(uint16_t addr, uint32_t len, void *buf)
{
uint32_t i;
uint8_t *pbuf = (uint8_t *)buf;
for (i=0; i<len; i++)
if (eewrite(addr++, *pbuf++)) break;
return i;
}Re: сборка проекта для STM32
Блин, да я че, что-то другое про скобки написал? Там проблема была в скобке не в том месте. Лишние скобки ошибкой не считаются и в текстах могут использоваться для визуального отделения. А про явное приведение типов - почитай учебник по языку Си и не гунди
Приведение типов можно делать сразу в параметрах ф-ции, а не выносить это отдельно в лишнюю переменную. И void* - это универсальный и удобный тип, нередко применяется. Благодаря нему в ту ф-цию можно передать указатель хоть на 4-байное слово или любую структуру, а разбито оно будет всё равно побайтно, указатель будет двигаться побайтно.
Почитай про void*, посмотри реализацию этого во FreeRTOS например:
Без void* реализация показанной ф-ции на Сях была бы невозможна.
Почитай про void*, посмотри реализацию этого во FreeRTOS например:
Код: Выделить всё
BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
...
...
-----> void * const pvParameters, <----
....
.... )
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: сборка проекта для STM32
Знатный бредогенератор.
Re: сборка проекта для STM32
Вы самокритичны
Ну чтож, запутались в приведении типов и инкрементах указателей, ну это не страшно, не отчаивайтесь, не всем дано понять указатели 
Re: сборка проекта для STM32
Качай.Да для РФ заблочили софт от ST, но через VPN Скачать можно
https://cloud.mail.ru/public/nHhe/3KgLU3G9w
Re: сборка проекта для STM32
tonyk, да, спасибо, и остальным полезно будет
Всегда знал, что есть обходные пути.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47


