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

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

Сообщение Oxford »

С управляющими любыми на этапе компиляции я могу препроцессор запрограммировать, но если и данные надо то это нужно 8 бит анализировать в какие порты и какие биты записывать. Это дополнительный код будет в рантайме. Потому что данные неизвестны на этапе компиляции.
Поэтому нужно разобраться с шиной данных чтобы я смог правильно код написать на си
Инженер R@D

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

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904356#p3904356"]но данные на этапе компиляции не делаются же, только в рантайме.[/uquote]
Берем 8 пинов в старшей половине порта, получаем запись в половину ODR:

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

PinList<PB15, PB14, PB13, PB12, PB11, PB10, PB9, PB8> pins;
pins.write(GPIOA->IDR);

// ldr r3, [r3, #16] 
// ldr r2, [pc, #700]
// uxtb r3, r3 
// strb r3, [r2, #0]
Сдвигаем пины в середину и указываем в обратном порядке, компилятор автоматические добавит сдвиг и RBIT, а запись теперь будет выполняться в BSRR:

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

PinList<PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10> pins;
pins.write(GPIOA->IDR & 0xFF);

// ldr r3, [r3, #16] 
// uxtb r3, r3 
// rbit r3, r3 
// lsrs r3, r3, #21 
// ldr r6, [pc, #708]
// and.w r3, r3, #0x7f8 
// orr.w r3, r3, #0x7f80000 
// str r3, [r6, #24]
Теперь возьмем пины с двух портов:

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

PinList<PC13, PB11, PC11, PC10, PB8, PC8, PB6, PB5> pins;
pins.write(GPIOA->IDR & 0xFF);

// ldr r3, [r3, #16] 
// ldr r1, [pc, #508]
// ldr r6, [pc, #508]
// uxtb r3, r3 
// lsls r2, r3, #6 
// lsls r3, r3, #5 
// and.w r2, r2, #0x2d00 
// and.w r3, r3, #0x960 
// orr.w r2, r2, #0x2d000000 
// orr.w r3, r3, #0x9600000 
// str r2, [r1, #24] 
// str r3, [r6, #24] 
Далеко не для всех это очевидно, но данный список пинов удобен для обработки, т.к. на PB5 проецируется 0-й бит входных данных, на PB6 - первый, на PB8 - 3-й и т.д., т.е. разница между номером пина и номером бита везде равна пяти и это означает, что можно одной маской выделить сразу 4 бита для PB, а другой - сразу 4 бита для PC, затем полученные значения сдвигают и накладываются на посчитанные маски для BSRR, которые по 4 бита очищают. Это обобщенный алгоритм, даже для первого случая, когда писался байт в ODR, все рассчитывалось именно так, но на заключительной стадии записи в регистр выполняется дополнительная оптимизация в результате которой компилятор решает сохранять данные именно как байт, следовательно не нужно дополнительно ничего очищать и сдвигать.
Далее можно взять этот список и добавить к нему парочку управляющих сигналов:

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

using Data= PinList<PC13, PB11, PC11, PC10, PB8, PC8, PB6, PB5>;
PinList<WR, RS, Data>::write(GPIOA->IDR & 0xFF);
Теперь в списке 10 пинов, при записи 8-ми битного значения в управляющие сигналы запишутся нули, если новых портов не добавилось, то получим дополнительно одну инструкцию.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Как я и говорил бестолковое программирование на С++. За это увольнять надо за такой код.
Я такой исход и предполагал. Ничего нового.
Это не обобщенное программирование это бредятина.
Инженер R@D

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

Сообщение Reflector »

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

Сообщение Oxford »

Так он и есть дополнительный код генерируется. Производительность будет плавать. На этапе компиляции просто создается код для рантайма как будет обрабатываться маска.
На Си мне такое никогда не требовалось, так как все гораздо проще программируется.
Никогда этим голову не забивал, и другим не советую.

Так как максимальная производительность будет когда все 8 пинов в одном байте. Другие варианты я даже не рассматриваю еще на этапе дизайна и выбора МК, потому как разбросанные пины шины не гуд.
Это просто ты себе проблему создал про разные пины и начал ее решать на C++.
DMA тоже гемморой прикрутить будет, особенно с разбросанными пинами.
Поэтому не надо голову всякой дрянью забивать себе и людей баламутить.
А так все понятно теперь. Спасибо С++ мне не надо, я дальше как все на Си буду прогать.

https://habr.com/ru/post/474732/
Инженер R@D

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

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904396#p3904396"]https://habr.com/ru/post/474732/[/uquote]
В статье описан полуфабрикат который даже write/read() не умеет, а set/reset() - это простые функции, объединил маску каждого пина и получил общую, даже порядок пинов не важен, не говоря уже о каком-то дополнительном анализе.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Reflector а с DMA будет пример назначения разных пинов. :tea: да еще и строб надо будет пихнуть.
Или только ногодрыг могем?

Блин и все это ради того чтобы не покупать 100 ногий и не юзать FSMC + DMA :))) ну или SPI дисплей просто взять
Есть же специальные интерфейсы

А так в принципе очередная ардуино либа там тоже никто не заморачивался над оптимизацией и обьемом кода, важна была универсальность. :tea:
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Сб сен 26, 2020 14:21:35
Откуда: Казань

Сообщение u-vovchika »

Подскажите пожалуйста, с какой средв разработки надо начинать изучать программирование на STM32FXXX
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="u-vovchika",url="/forum/viewtopic.php?p=3904454#p3904454"]с какой среды[/uquote]С той, в которой удобно работать!
Можно и просто по F4 в mcedit/vim/nano код наколачивать...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Сб сен 26, 2020 14:21:35
Откуда: Казань

Сообщение u-vovchika »

А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???
Открыл глаза
Аватара пользователя
Сообщения: 56
Зарегистрирован: Вт дек 29, 2015 11:33:49

Сообщение pavell »

[uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???[/uquote]
Хм, неужто сенсей еще личку не заспамил ))))
А чем открытые источники знаний не устраивают?
Родился
Сообщения: 7
Зарегистрирован: Сб сен 26, 2020 14:21:35
Откуда: Казань

Сообщение u-vovchika »

[uquote="pavell",url="/forum/viewtopic.php?p=3904499#p3904499"][uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???[/uquote]
Хм, неужто сенсей еще личку не заспамил ))))[/uquote]
Это как ??

Добавлено after 1 minute 5 seconds:
[uquote="pavell",url="/forum/viewtopic.php?p=3904499#p3904499"][uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???[/uquote]

А чем открытые источники знаний не устраивают?[/uquote]
Устраивают конечно, чем и занимаюсь. Но от личного общения и учения, не откажусь
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??[/uquote]
Калокуб - плохая идея...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Сб сен 26, 2020 14:21:35
Откуда: Казань

Сообщение u-vovchika »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3904532#p3904532"][uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??[/uquote]
Калокуб - плохая идея...[/uquote]
"кокос" ????
Электрический кот
Аватара пользователя
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Сообщение 240265 »

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

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

u-vovchika писал(а):"кокос" ????
Тогда лучше EmBitz.
Родился
Сообщения: 7
Зарегистрирован: Сб сен 26, 2020 14:21:35
Откуда: Казань

Сообщение u-vovchika »

Скачал кокос
В инете много уроков по нему
По крайне мере уже светодиодами моргаю и понял по настройкам пинов
Но я так понимаю, что это типа библиотек уже готовых
А вот понимание, как по битам настраивать, пока ищу хелпы
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Делайте как я.... Если с нуля и по битам, то самое нормальное это любая среда программирования (IDE) и тупо рефренс мануал на ваш МК и сидеть разбираться с CMSIS. Не так страшен черт, как его малюют. Все получится, только надо внимательно РМ читать, чтобы понять что-то. ))))
Станислав
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

СКАЗОЧНИК писал(а):Делайте как я
Судя по форуму, у вас изучение проходит туго.
Как бы не ругали SPL, но с ее использованием обучение и дальнейшая разработка проходит быстрее и меньше ошибок и сложностей портирования на другие МК.
Электрический кот
Аватара пользователя
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Сообщение 240265 »

Мурик, Но её сожалению похерили и на новые МК нету.
IVL ex UA6PJ
Ответить

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