STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 25484
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="a5021",url="/forum/viewtopic.php?p=3896374#p3896374"]У вас галлюцинации? Разуйте глаза: я цитировал вас и вашего визави целиком. Причем, уже не один раз.[/uquote]
Еще раз. Вы методично пытаетесь вешать лапшу на уши, привязавшись к нестрогому термину "указатель volatile", который ОЧЕВИДНО не имеет смысла как volatile-указатель. Пропущенный предлог "на" так же очевидно следует из контекста и по сути ошибкой не является. Просто потому, что рассматривать отдельно, как особый случай, volatile-указатели нет никакого смысла. Они ничем не отличаются от volatile-переменных в смысле их использования.
Однако дело тут совершенно в другом. И это лично мне так же очевидно. Ведь Тимофеев как раз ПОДТВЕРЖДАЕТ изначальную постановку вопроса. ВАШЕГО, милейший, вопроса. И к тому же, Мурик ранее привел ссылку на pdf той же статьи Тимофеева и ЛИЧНО ВЫ эту ссылку привели как поучительную...
А дело тут в "Маньке" и ее "буферАх"... Ну если не считать воспаленное "самизнаетечто" у Вас, любезный....
За сим и закончим беспредметное пикирование. Лично я все давно понял.
Реклама
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896380#p3896380"]приведение типов обыденная для С программиста процедура, выполняемая много раз в день.[/uquote]
Желаю это видеть. Попробуйте унять компилятор здесь приведением типов. Буду следить за этим с нескрываемым интересом.

[uquote="КРАМ",url="/forum/viewtopic.php?p=3896392#p3896392"]Лично я все давно понял.[/uquote]
Не поняли вы только одного -- когда у вас выходит лажа, надо уметь признавать ее и отвечать за свои слова. Но этому не научить, к сожалению.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3896395#p3896395"]Желаю это видеть. Попробуйте унять компилятор здесь приведением типов. Буду следить за этим с нескрываемым интересом.[/uquote]Хотеть не вредно. Пример я приводил. Да и не припомню я чтобы когда-то что-то вам задолжал. Успехов в войне с ветряными мельницами. Чао.
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896407#p3896407"]Пример я приводил.[/uquote]
Лажу вы приводили. Фиг с ним, что оно не портабельно и не собирается шлангом. Я исправил. Но проблема ровно на том же месте, где и была. Вы не понимали этого и не понимаете сейчас.

Изображение

Я не стал заострять, но, как оказалось, напрасно. На данный момент в рамках этого обсуждения вы уже дважды отказались отвечать за свои слова. Показательно.
Успехов в войне с ветряными мельницами. Чао.
Да мне-то все равно. Гоните лажу, важно вытягивайте шею. Вы в своем праве.
Вложения
volatile3.jpg
(55.78 КБ) 583 скачивания
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Clang выступил в роли капитана очевидность. Я и без него знаю, что внутри функции не будет volatile, он там и не нужен. Нет никакой проблемы. Код компилируется и работает как задумано. А то что вы не знаете что такое uint32_t(adr)... Да чего удивляться то после всего вышенаписанного.
Реклама
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896426#p3896426"]Clang выступил в роли капитана очевидность. Я и без него знаю, что внутри функции не будет volatile, он там и не нужен. Нет никакой проблемы. Код компилируется и работает как задумано.[/uquote]
Вот так он компилируется:

Изображение

Если было задумано, чтобы варнинги были на каждой строчке, то цель, безусловно, достигнута. Поздравьте себя.
А то что вы не знаете что такое uint32_t(adr)...
Вы возомнили себя единственным знатоком заплесневелого легаси? Офигеть!
Вложения
legacy_and_ugly.jpg
(64.57 КБ) 560 скачиваний
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А говорил не собирается... Наврал? Ты ещё MISRA запусти. Своей головой думать надо! :kill:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896500#p3896500"]А говорил не собирается... Наврал?[/uquote]
В си и не должно собираться. Таковы видать у вас представления о доступном изложении -- намотать бреда и побольше.
Своей головой думать надо!
Главное, чтобы не вашей.
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А с чего вы взяли, что это должно Си собираться? В С++ более строгий контроль типов, если что. Я в своих прошивка ещё вот такой код-барьер от желающих Си собирать вставляю.

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

int main()
{
  [](){[](){[](){[](){[](){}();}();}();}();}();


}
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

VladislavS писал(а):

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

[](){[](){[](){[](){[](){}();}();}();}();}();
Лишний код в прошивке.

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

(32)      [](){[](){[](){[](){[](){}();}();}();}();}();
200001FC	add.w	r3, r7, #8
20000200	mov	r0, r3
20000202	bl	0x200001c4 <<lambda()>::operator()(void) const>
А по поводу доказывания необходимости volatile, вот что вспомнилось.
Спойлер
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896527#p3896527"]Я в своих прошивка ещё вот такой код-барьер от желающих Си собирать вставляю.[/uquote]

И какую цель это преследует? Как обычно, произвести впечатление на несведующих? А есть ведь и разумное решение:

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

#ifndef __cplusplus
  #error "Error while compiling C++ code."
#endif
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Мурик",url="/forum/viewtopic.php?p=3896560#p3896560"]Лишний код в прошивке.[/uquote]Выкиньте компилятор, который на это выражение код генерит :)

[uquote="a5021",url="/forum/viewtopic.php?p=3896564#p3896564"]И какую цель это преследует?[/uquote]Вас забыл спросить. :)))
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896527#p3896527"]Я в своих прошивках ещё вот такой код-барьер от желающих Си собирать вставляю.[/uquote]
Какой бы "барьер" для любителей компилить сишный код посредством не gcc. а g++ придумать?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

VladislavS писал(а):Выкиньте компилятор, который на это выражение код генерит
Что предлагаете взамен gcc-arm-none-eabi-9-2020-q2? :)
Думаете компилятор кейла лучше будет? :dont_know:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

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

Сообщение VladislavS »

[uquote="Мурик",url="/forum/viewtopic.php?p=3896635#p3896635"]
VladislavS писал(а):Выкиньте компилятор, который на это выражение код генерит
Что предлагаете взамен gcc-arm-none-eabi-9-2020-q2? :)[/uquote]Тогда научитесь им пользоваться. А скорее всего, правильно читать листинги. Вот добавление этого выражения не добавило ни одного байта к прошивке.Изображение
null.png
(62.43 КБ) 371 скачивание
[uquote="Мурик",url="/forum/viewtopic.php?p=3896635#p3896635"]Думаете компилятор кейла лучше будет? :dont_know:[/uquote]Прыгать с компилятора на компилятор сейчас особого смысла нет. Лучше хорошо уметь пользоваться каким-то одним и дружить с остальными.
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896957#p3896957"]Прыгать с компилятора на компилятор сейчас особого смысла нет.[/uquote]
Прыгать может и нет, а проверить, как проект собирается разными компиляторами, полезно.
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Кстати, насчёт разных компиляторов...

Прикупил такую плату с камерой и дисплеев для экспериментов. Товарищи китайцы даже на github для неё разные Examples держат.

Что плохо - проекты делались под Keil uVision. Попытался их проект для "куба" в вариант под GCC/Makefile переделать, пробросил недостающие DEFINEs (из xml-ки проекта uVision), пути к includes/sources. Проект компилируется. Но:
- с GCC версий 8 или выше - дисплей не инициализируется, шум на нём. Беру GCC 7 или младше - работает (пример 03-LCD_Test)
- с GCC любой версии пока не удалось запустить камеру (пример 08-DCMI2LCD). Сильно не копал, но видно, что вроде как коллбэки от камеры не приходят, код висит в ожидании флага о наличии нового фрейма.

Если прошивать их hex-ы с github (сделанные в uVision), проекты работают.

В общем, совместимость там та ещё...
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

А с какими параметрами оптимизации проект собирался под "GCC 8 или выше" ?
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

-Og во всех случаях. Пытался отключать вообще, но эффекта не было.

Ещё пытался сделать следующего "Франкенштейна":
- Собрал 7-м gcc работающую прошивку, сохранил из сборки сгенерённый объектник lcd.o, почистил проект
- Собрал 8-м gcc неработающую прошивку.
- Заменил объектник lcd.o сохранённым, перелинковал

В таком сочетании заработало. То есть, проблема либо в коде lcd.c, либо в возможно встраивающихся в него функциях из других файлов (хотя lto не включен, так что вряд ли).

P.S. Если интересно покопать, положил свои эксперименты сюда. Там в архиве есть каталоги с продуктами сборки от обеих версий gcc, логи сборки из консоли. Возможно, что-то полезное дало бы сличение файлов lcd.lst в обоих случаях, но "я уже в пижаме"...
Контактная информация:
Ответить

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