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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

А в чем фигня то не понял? Как раз таки красивая оптимизация

А по поводу кода он не мой я интерпретировал что показали, значит он ранее конфигурировал ее. Поэтому это не ко мне.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904908#p3904908"]А в чем фигня то не понял?[/uquote]Написано два доступа к регистрам. А компилятор взял и выкинул один. Нормально?

[uquote="Oxford",url="/forum/viewtopic.php?p=3904908#p3904908"]А по поводу кода он не мой я интерпретировал что показали, значит он ранее конфигурировал ее. Поэтому это не ко мне.[/uquote]Что и требовалось доказать. В этом примитивном коде вы не способны увидеть что он реально делает. Ошибка пропущена.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Да это нормально. Оптимизировал и правильно. Не везде отключать оптимизацию надо.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Вы считаете правильным, что компилятор выкидывает операции записи в регистры периферии? Остаётся только покрутить у виска.
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

В данном случае все корректно и оптимизировано. Разрыв шаблонов C++?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3904901#p3904901"]Боюсь даже представить размер "портянки" для какого-нибудь 240-ногого F7.[/uquote]
Так ведь никто кроме тебя не рискнул привести пример инициализации для LTDC, хотя там всего лишь 100 ногий H750 обещающий быть очень популярным. Пять портов, пусть даже 5 регистров по 20 строк на каждый, итого ~500 строк, у меня это 11 экранов текста. И вроде все понятно, но смотришь на строку, а в ней 1/5 инициализации VSYNC или 1/90 от общей инициализации LTDC, остальные 89 частей равномерно размазаны по всем этим страницам :)
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904919#p3904919"]В данном случае все корректно и оптимизировано. Разрыв шаблонов C++?[/uquote]Нет! Я написал программу, которая последовательно пишет в регистры два разных значения. В первом случае это работает, во втором нет.
Последний раз редактировалось VladislavS Вс окт 11, 2020 09:40:47, всего редактировалось 2 раза.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Ты даже свой код не понимаешь о чем тогда речь.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Давай ещё раз медленно и на пальцах. Вот этот код дёрнет ногой.

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

GPIOB->BSRR = GPIO_BSRR_BS_4;
GPIOB->BSRR = GPIO_BSRR_BR_4;
    ldr r3, [pc, #52]
    movs r2, #16
    str r2, [r3, #24]
    mov.w r2, #1048576	; 0x100000
    str r2, [r3, #24]
А вот этот нет.

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

*(uint32_t *)&GPIOB->BSRR = GPIO_BSRR_BS_4;
*(uint32_t *)&GPIOB->BSRR = GPIO_BSRR_BR_4;
    ldr r3, [pc, #48]
    mov.w r2, #1048576	; 0x100000
    str r2, [r3, #0]
И это ничем кроме разрядности не отличается от примера выше. Вот и весь сказ.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Ну че программируешь то и делает. Ты же программист
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904928#p3904928"]Ну че программируешь то и делает. Ты же программист[/uquote]Я то программист. А вот автор вот этого не очень :([uquote="Oxford",url="/forum/viewtopic.php?p=3904859#p3904859"]
*(volatile uint64_t *) GPIOA = (
a5021 зачем volatile обьявлять, здесь это не требуется.[/uquote]
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Дык а че там не так :tea: не работает без volatile?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Перечитай последние сообщения, я не попугай, чтобы одно и то же повторять.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Ну ты там чет левые какие то программы показывал, а по тому что я писал не работает без volatile?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А это заранее неизвестно. Я должен каждый раз молиться нажимая кнопку Build, чтобы был нужный компилятор c правильными ключами оптимизации? Вместо того чтобы один раз написать правильно? А если результат не гарантирован, то я считаю такой код ошибочным.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

Oxford, тебе про volatile уже объясняли, насколько помню не раз, точно было на easyelectronics. И с BSRR vs ODR то же самое(в обоих темах были мы с VladislavS). Прошел год или два и все по новой :)
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Ну так че работает или нет без volatile? Ну так раз вы его не изучили, вот по новой.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904948#p3904948"]Ну так че работает или нет без volatile?[/uquote]Тебе же написали ЗАРАНЕЕ НЕ ИЗВЕСТНО, то есть, как звёзды лягут.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

А что тебе там должно быть известно? Тебе конкретный код дали. Работает без volatile? Чел конфигурит порт А
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Ответить

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