сборка проекта для STM32

Кто любит RISC в жизни, заходим, не стесняемся.
Tibman
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт июн 28, 2011 13:52:36

сборка проекта для STM32

Сообщение Tibman »

Здравствуйте.
Возникла задача сборки проекта для контроллера 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

Сообщение >TEHb< »

Раз такой настрой, то можно сразу CubeIDE и попробовать поставить. Бесплатная, полнофункциональная среда от производителя чипов. Там и библиотеки, и загрузчик, и отладчик.
"Привет!" - соврал он.
Реклама
Tibman
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт июн 28, 2011 13:52:36

Re: сборка проекта для STM32

Сообщение Tibman »

Просто мне изначально показалось, что в Кокосе как-то проще в проект подкинуть исходники проекта, всё довольно очевидно даже если его включил первый раз. Все файлы легко подцепились, кроме указанных в первом сообщении главных библиотек.
А в Кубе я как-то разок попробовал, но там уже при формировании проекта куча каких-то "лишних" папок формируется, и с ходу не смог понять, как туда добавлять файлы с исходниками.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: сборка проекта для STM32

Сообщение Мурик »

Tibman писал(а):Просто мне изначально показалось, что в Кокосе как-то проще в проект подкинуть исходники проекта
В EmBitz тоже не сложно и все что нужно (либы, компилятор, отладчик/прошивальщик) в комплекте. Нужно искать версию 2.30. Текущая 2.41 не стартует на русской винде из-за санкций!
Реклама
Эиком - электронные компоненты и радиодетали
Tibman
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт июн 28, 2011 13:52:36

Re: сборка проекта для STM32

Сообщение Tibman »

Нашёл рекомендованную версию 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) ?
Последний раз редактировалось Tibman Пн апр 11, 2022 15:30:58, всего редактировалось 2 раза.
Реклама
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: сборка проекта для STM32

Сообщение НовыйДень »

Ух блин, CooCox уже ж лет 10 как мертв, а тут его вспомнили всуе, (тьфу-тьфу, не к ночи будет помянут)... :)
Бесплатное - CubeIDE. Правда, чет краем уха слышал, его загрузку заблочили для РФии. Пробуйте Atollic поставить, он бесплатный, хоть и прекращен выпуск его из-за перекупа и ребрендинга под CubeIDE.
Кусок кода, взаимодействующий с eeprom.
EEPROM есть только сериях STM32L. В остальном - это эмуляция через тот же самый флеш.
Ругается что ли на то, что инкрементируем указатель ((byte*)buf) ?
Он не понимает, что за тип byte, если он не описан ранее. Учебник по языку программирования Си от авторов Ритчи и Кернигана - фпомощь!
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: сборка проекта для STM32

Сообщение VladislavS »

[uquote="НовыйДень",url="/forum/viewtopic.php?p=4212940#p4212940"]В остальном - это эмуляция через тот же самый флеш.[/uquote]Сказано же на I2C.

Добавлено after 59 seconds:
[uquote="Tibman",url="/forum/viewtopic.php?p=4212934#p4212934"]и не могу с ходу понять суть ошибки.[/uquote]Ошибку стоит приводить как её выдаёт компилятор, чтобы не гадать в хрустальном шаре.
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: сборка проекта для STM32

Сообщение НовыйДень »

Топикстартер позже это исправил, вначале было иначе написано.
А в остальном - там просто неправильная работа с указателями и постинкрементом при явном приведении типов, ошибка так и записана полностью, как и выдает ее компилятор, да и догадаться можно. Следует записать *((uint8_t*)buf++), перенеся скобку. Или, если тип byte определен, тогда *((byte *)buf++)
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: сборка проекта для STM32

Сообщение VladislavS »

У инкремента приоритет выше. Скобки в обоих случаях лишние и ничего не меняют.
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: сборка проекта для STM32

Сообщение НовыйДень »

Зато не в том месте поставленная скобка меняет всё! :) могли бы и сами уж догадаться, коль про приоритеты фкурсах.
The Rock
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт июн 05, 2012 23:32:13

Re: сборка проекта для STM32

Сообщение The Rock »

НовыйДень писал(а):Бесплатное - CubeIDE. Правда, чет краем уха слышал, его загрузку заблочили для РФии.
Да для РФ заблочили софт от ST, но через VPN Скачать можно
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: сборка проекта для STM32

Сообщение НовыйДень »

Да и врот им компот, путь подавятся. Нынче в ближайшем обозримом будущем актуальность продукции ST вообще упала до практически нуля, учитывая расколбас 2020 года и нынешний. Ищем альтернативы - GD, ESP32 и иное подобное.
pixar
Потрогал лапой паяльник
Сообщения: 314
Зарегистрирован: Чт ноя 29, 2012 08:27:22

Re: сборка проекта для STM32

Сообщение pixar »

у меня ST блокирует и через VPN.
Актуальность STM никуда не делась. Процы продаются на алибабе.
Более того - среда и код STM32 подходят к соответствующим моделям GD32.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: сборка проекта для STM32

Сообщение VladislavS »

Не нужны там скобки, как ты их не расставляй через void не перепрыгнешь. Правильно вот так

Код: Выделить всё

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;
}
Я предпочитаю первое, чтобы при каждом вызове c чем-то отличным от (uint8_t *) компилятор предлагал подумать что ты делаешь.
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: сборка проекта для STM32

Сообщение НовыйДень »

Блин, да я че, что-то другое про скобки написал? Там проблема была в скобке не в том месте. Лишние скобки ошибкой не считаются и в текстах могут использоваться для визуального отделения. А про явное приведение типов - почитай учебник по языку Си и не гунди :) Приведение типов можно делать сразу в параметрах ф-ции, а не выносить это отдельно в лишнюю переменную. И void* - это универсальный и удобный тип, нередко применяется. Благодаря нему в ту ф-цию можно передать указатель хоть на 4-байное слово или любую структуру, а разбито оно будет всё равно побайтно, указатель будет двигаться побайтно.
Почитай про void*, посмотри реализацию этого во FreeRTOS например:

Код: Выделить всё

BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
                            ...
                            ...
                   ----->  void * const pvParameters, <---- 
                            ....
                            .... )
Без void* реализация показанной ф-ции на Сях была бы невозможна.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: сборка проекта для STM32

Сообщение VladislavS »

Знатный бредогенератор.
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: сборка проекта для STM32

Сообщение НовыйДень »

Вы самокритичны :))) Ну чтож, запутались в приведении типов и инкрементах указателей, ну это не страшно, не отчаивайтесь, не всем дано понять указатели :)))
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: сборка проекта для STM32

Сообщение tonyk »

Да для РФ заблочили софт от ST, но через VPN Скачать можно
Качай.

https://cloud.mail.ru/public/nHhe/3KgLU3G9w
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: сборка проекта для STM32

Сообщение НовыйДень »

tonyk, да, спасибо, и остальным полезно будет :)) Всегда знал, что есть обходные пути.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: сборка проекта для STM32

Сообщение VladislavS »

Изображение
void_increment.png
(7.62 КБ) 1106 скачиваний
Ответить

Вернуться в «ARM»