Литература для stm32

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

Re: Литература для stm32

Сообщение VladislavS »

Вот неугомонный то :) Эту бы энергию да в изучение чего-нибудь нового.

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4235525#p4235525"]
Вот прямо в вашей фразе звучит две отдельных задачи: сконфигурировать, переключать.
Ну так любую задачу можно разбить на подзадачи.[/uquote]Между можно и нужно большая разница.


[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4235525#p4235525"]И сколько вариантов периферии вы реализовали? Отдельно светодиод. Что еще?[/uquote]Я работаю с радиотехниками, там всяких синтезаторов частот, аттенюаторов, dds, коречипов вагон и тележка. И в разных изделиях их применяют в разных сочетаниях и количествах. И это не считая всяких чисто наших эмбеддерских микросхем памяти, разнообразных датчиков, индикаторов, клавиатур и т.д. Так что, дофига и больше, если быть совсем точным.

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4235525#p4235525"]У вас часто возникает задача генерировать такие контроллеры и настраивать именно урезанные пины?[/uquote]Ну вот в июне будет очередной проект с Microblaze. Только какое отношение моя практика имеет к принципу построения библиотеки?

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4235525#p4235525"]Да, по фрагментам. Даже ваши фрагменты занимают раза в три больше места, чем аналогичный макрос.[/uquote]Аналогичный макрос? Так его просто не существует. Как можно сравнить размер с тем чего нет?

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4235525#p4235525"]Выигрыш в пару тактов у вас только там, где вы заморочились с ручной оптимизацией (вроде байтового доступа к регистрам).[/uquote]Вы так ничего и не поняли. Нет никакой ручной оптимизации. Это делает компилятор по тем правилам, которые я ему один раз рассказал.
Спойлер

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

GpioA<0xFFFF> pa0_15;
GpioA<0x0FF0> pa4_11;
GpioA<0xFF00> pa8_15;
  
// pa0_15.clear();
        LDR.N    R0,??DataTable2_2   // &GPIOA->ODR
        MOVS     R1,#+0         
        STR      R1,[R0, #+0]        // 32 битный доступ в ODR
// pa4_11.clear();
        MOV      R2,#+4080      
        STRH     R2,[R0, #+6]        // 16 битный доступ в старшую часть BSRR
// pa8_15.clear();  
        MOVS     R3,#+0         
        STRB     R3,[R0, #+1]        // 8 битный доступ во второй байт ODR
Где тут ручная оптимизация? Компилятор сам всё сделал.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4235525#p4235525"]Зачем вы врете? Компилятор не имеет права разивать 32-битный регистр на байты, это вы делали вручную.[/uquote]Если прогуливать уроки физики в школе, то окружающий вас мир наполнится магией и волшебством :) Так же и с программированием. Я могу "рассказать" компилятору как это сделать и он будет послушно это делать всегда и везде. И это никакое не волшебство, а банальное инстанцирование шаблона в зависимости от данных. Объяснение того что происходит под прошлым спойлером тут
Спойлер

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

  template<uint32_t PM=PinsMask>
  static inline void clear()
  {
    if constexpr (PM == 0xFFFF)
      base()->ODR = 0;
    else if constexpr (PM == 0x00FF)
      *pVU8(&base()->ODR) = 0;
    else if constexpr (PM == 0xFF00)
      *(pVU8(&base()->ODR) + 1) = 0;
    else if constexpr((PM & 0xFF)==0)
      *(pVU8(&base()->BSRR)+3) = PM>>8;
    else
      *(pVU16(&base()->BSRR)+1) = PM;
  }
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4235525#p4235525"]На Земле. Это третья планета солнечной системы.[/uquote]Это там где Принцессы «пукают фиалками»? И это рассказывает человек, у которого в коде официально костыль задокументирован, иначе два раза вызывается :)

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4235525#p4235525"]Хорошо, но какое это имеет отношение к разбиению линии данных по портам?
Изменить способ обмена через define ничуть не сложнее.[/uquote]Такое, что вам придётся вручную раскладывать доступ по портам, а я просто укажу на каких ногах какой сигнал подключен и дальше... Ну вы знаете, компилятор "всё сделает сам". :)
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Литература для stm32

Сообщение Reflector »

[uquote="AVI-crak",url="/forum/viewtopic.php?p=4235550#p4235550"]Красиво, это когда все ноги с одной линии контактов - без переходов уходят на чип с параллельным портом, одной красивой полосой проводников.
Да, красиво, да работает - но в 100 раз медленнее чем могло-бы работать.
А это означает что можно было взять чип в 100 раз слабее и дешевле. Мысль понятна?[/uquote]
Если можно написать простой, компактный и быстро работающий код, то большего ничего и не нужно. Дальше уже программист решает хочется ли ему скорости, тогда можно выбрать пины с одного порта и желательно не в разброс, а кому-то нравится красиво разведенные платы и он все тянет одной красивой полосой проводников. Скорость тоже не везде нужна, те же семисегментники можно проинитить так же просто:
using segs = PinList<PC7, PA4, PA10, PB10, PB11, PD3, PB9, PA11>;
using digits = PinList<PC0, PB8, PA3, PC6>;
Semiseg<digits, segs> semiseg;
semiseg.init();
А можно написать:

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

using segs = PinList<PB15, PB14, PB13, PB12, PB11, PB10, PB9, PB8>;
И будет одна запись в половинку ODR...
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Литература для stm32

Сообщение ARV »

мой скептицизм на счет С++ местным завсегдатаям известен, но против правды не попрешь: VladislavS действует правильно.

я сравниваю с Pascal, ООП в котором появилось раньше, чем С++, но и по сей день ООП в паскале остается вкладыванием коробочек в коробочки... а в данном случае налицо реальная польза. и тот факт, что С++ я понимаю, как таджик на стройке понимает русский, не умаляет ценность предложенного решения. и если бы я умел работать на плюсах, я бы обязательно скачал бы все его "библиотеки" и на их основе дальше делал бы свои поделки. но рожденный ползать летать не может, увы.

только вот спор об эффективности мне кажется великой глупостью: для чего вам создали МК с дикими мегагерцами? чтобы вы продолжали убивать время на оптимизацию каждого такта? для чего вам флеша напихивают в МК сверх меры? чтобы вы, как и 30 лет назад, экономили каждый её байт? в данном случае это не критика подхода VladislavS-а, у него эта "экономия" по сути является побочным эффектом проектирования, что минусом быть не может. а вот трата времени на достижение этой цели иными, менее "автоматическими" способами, это, имхо, глупость.

и пару слов о кодогенераторах. имхо, это тоже тупик для интеллекта. опять же на примере мною любимого паскаля, а именно Delphi, которая самая первая внедрила концептуальный подход программирования мышкой... и что в итоге? 99% кода, написанного "пользователями" дельфи является нечитаемой кашей из макарон. 98% "программистов" за 20 лет существования Delphi так и не приучили себя давать осмысленные имена сущностям, которые Delphi автоматически генерирует, до сих пор в их программах Button123 и Form321 вкупе с переменными i12 и m8...

увы, концепция кнопки "сделай за меня хорошо и правильно" в программировании не работает. но тем не менее, эта концепция продолжает жить и пестоваться различными "гуру"... и единственное, чем я могу это объяснить (не скатываясь на позиции теорий заговора) - это то самое изобилие мегагерцев и мегабайтов, которые попросту "гуру" не знают, куда деть. поэтому и появляются идеи типа "а давайте в следующей версии иконки сделаем с 64-битной глубиной цвета и 3D-анимацией"... ну или "а давайте сделаем кнопку, нажав на которую пользователь сразу получит работающее, как ему хочется, приложение". последняя идея очень перспективна в плане самообеспечения работой: ведь добавлять возможности в эту кнопку можно (и неизбежно придется) вечно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Re: Литература для stm32

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

Вот о чем я и говорю. VladislavS невтуда применяет свои силы. Да, у него было много свободного времени и он, пока бездельничал, написякал дофига букавок для конфига портов. Но профессиональный практикующий программист скажет, глядя на эти портянки: "И это всё, что ты сделал?" А ответить то будет нечем. Потому что любой "кубист" уделает VladislavS-а за минуту, а доводы, что инит портов на 100 тактов быстрее будут отклонены с насмешкой "Ты чо, на 480 МГц твои сто тактов растворятся как ложка соли в пяти литрах бульона". Конечно, такое поражение сложно принять, потому и доводы не будут услышаны. Это ж не практикующий программист, а программист-теоретик с массой свободного времени.
Реклама
Эиком - электронные компоненты и радиодетали
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Литература для stm32

Сообщение Reflector »

[uquote="НовыйДень",url="/forum/viewtopic.php?p=4235553#p4235553"]Ну так зачем делать конфигуратор, который будет генерить плохой код? Хороший конфигуратор выдаст код длиной в несколько строчек, в которых будет чисто конкретно только то, что нужно.
Некоторые из вас никак не могут понять, что все эти длинные портянки, которые тут показывал VladislavS, прячутся в недра конфигуратора (они даже могут быть написаны на любом другом языке, хоть на Питоне), а на выходе в файле исходника получается короткая выжимка, всё чисто по месту. И верх красоты - конфиг нужных пинов в одном месте за раз.[/uquote]
Вопрос в том как сделать конфигуратор который выдаст код длиной в несколько строчек без использования продвинутых библиотек... Берем те же пины для семисегментника:

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

using segs = PinList<PC7, PA4, PA10, PB10, PB11, PD3, PB9, PA11>;
using digits = PinList<PC0, PB8, PA3, PC6>;
Я их просто указал и все, внутри будет простая запись:

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

segs::write(comAnodeTbl[ch] & ~dot);
digits::write(1 << digit);
Покажи как аналоги этих двух строк будут выглядеть после отработки хорошего конфигуратора выдающего код в котором не будет ничего лишнего :)
Реклама
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: Литература для stm32

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

Reflector, точно так же, как и у тебя, только без ненужного текста. Вы просто не понимаете смысла, не работали в больших проектах, и вам обидно за потраченное на ерунду время, потому и очень рьяно защищаете свой подход, своё потраченное впустую время. Нынче любой "кубист" сделает всё быстрее, а на ваши доводы о лишних тактах презрительно усмехнется и сплюнет, мол, чувак, поучи-ка жену щи варить.
Такова жизнь, такова вот "селяви". Да, я тоже через это проходил, когда вручную писал USB, а в это время "кубисты" просто генерили проект и сдавали его раньше. Так же сейчас и вас уделают, когда потребуется.
Последний раз редактировалось НовыйДень Вс май 22, 2022 11:41:20, всего редактировалось 1 раз.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Литература для stm32

Сообщение ARV »

Reflector писал(а):как аналоги этих двух строк будут выглядеть после отработки хорошего конфигуратора выдающего код в котором не будет ничего лишнего
назовите конфигуратором компилятор С++, и проблема решена :))) интерфейс у конфигуратора - текстовый, символами ставится задача, и он генерирует максимально оптимальный код в соответствии с заданием.

все счастливы.

Добавлено after 2 minutes 34 seconds:
НовыйДень писал(а):Нынче любой "кубист" сделает всё быстрее, а на ваши доводы о лишних тактах презрительно усмехнется и сплюнет
это верно. только что сделает кубист на небольшое изменение задачи типа "блин, на этот пин нельзя вешать SDA, там светодиод нужен, давай переставим их местами"? я так понимаю, Reflector в своем PinList вместо P1 поставит P22 и посмотрит на кубиста, как на говно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Литература для stm32

Сообщение Reflector »

[uquote="ARV",url="/forum/viewtopic.php?p=4235566#p4235566"]а вот трата времени на достижение этой цели иными, менее "автоматическими" способами, это, имхо, глупость[/uquote]
Сколько бы усилий на либу потрачено не было, по крайней мере она повсеместно используется и будет полезна в дальнейшем. Сравни это, например, со своим любимым впихиванием невпихиваемого в tiny13, что из этого большая глупость?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Литература для stm32

Сообщение VladislavS »

Так чё, нет в рукаве никакого продвинутого конфигуратора с кодогенератором эффективного кода? А есть только куб, код USB которого не помещается в младшие контроллеры F0? Расходимся, нас в очередной раз наипали диванные эксперты.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Литература для stm32

Сообщение Reflector »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4235576#p4235576"]Так чё, нет в рукаве никакого продвинутого конфигуратора с кодогенератором эффективного кода?[/uquote]
Напоминает рассказы чудака который на форумах рекламирует некий "ассемблер высокого уровня", который лучше C/C++, но пока в закрытом доступе :)
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: Литература для stm32

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

[uquote="VladislavS",url="/forum/viewtopic.php?p=4235576#p4235576"]Т нет в рукаве никакого продвинутого конфигуратора с кодогенератором эффективного кода? А.[/uquote]
У меня - есть :))) ! Написан совместно с коллегами :))) "Но я тебе его не дам"(С)
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Литература для stm32

Сообщение Reflector »

[uquote="НовыйДень",url="/forum/viewtopic.php?p=4235587#p4235587"]У меня - есть :))) ! Написан совместно с коллегами :)))[/uquote]
Обычным любителям что делать? Чужой конфигуратор(кроме куба) им не дадут, а чтобы написать свой нужно быть профессиональным разработчиком с кучей таких же коллег, так что ничего кроме написания своих либ и не остается.
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: Литература для stm32

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

Есть два пути. Один из которых - вначале написать огромные проприетарные портянки, а потом выдвигать их как "прорыв и новое слово отечественного кодопейсательства". Либо Не писать портянок, понимая, что конфиг портов - это не самая главная часть в предстоящей работе и занимает ноль целых хрен тысячных всего затраченного на написание кода времени. И все свои умения по продвинутому С++ гораздо важнее применить в более подходящем для этого месте.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Литература для stm32

Сообщение VladislavS »

В каком, например? И откуда инфа что не применяется?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Литература для stm32

Сообщение ARV »

Reflector писал(а):Сравни это, например, со своим любимым впихиванием невпихиваемого в tiny13, что из этого большая глупость?
во-первых, признаюсь: моё предположение, что слежение за контекстом в крови программиста, оказалось ошибочным - ты явно не следишь за контекстом написанного мною.
во-вторых, моё впихивание невпихуемого - это хобби, т.е. я это делаю из чисто спортивного интереса. у тебя задачи профессиональные - сколько раз мне нужно повторить, что сравнивать профессионала с любителем-хоббистом некорректно? warning тебе - сравнение операндов разных типов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Литература для stm32

Сообщение Reflector »

[uquote="ARV",url="/forum/viewtopic.php?p=4235596#p4235596"]во-вторых, моё впихивание невпихуемого - это хобби, т.е. я это делаю из чисто спортивного интереса. у тебя задачи профессиональные - сколько раз мне нужно повторить, что сравнивать профессионала с любителем-хоббистом некорректно?[/uquote]
Вроде писал и не раз, что программист, но не эмбеддер, следовательно все мои игры с мк - такое же хобби, мне за это никто не платит.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Литература для stm32

Сообщение ARV »

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

Мой уютный бложик... заходите!
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Литература для stm32

Сообщение Reflector »

[uquote="ARV",url="/forum/viewtopic.php?p=4235604#p4235604"]дело не в том, платят или нет, а в навыках, опыте и подходах.[/uquote]
Навыки, опыт и подходы могут быть другие, а мотивация та же самая - спортивный интерес.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Литература для stm32

Сообщение Eddy_Em »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4235576#p4235576"]А есть только куб, код USB которого не помещается в младшие контроллеры F0?[/uquote]
В смысле не помещается? А как тогда калокуберы с STM32F0x2 работают? =D
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Литература для stm32

Сообщение VladislavS »

Ну не то чтобы совсем не помещается, это я образно написал, но что-то полезное рядом с ним уже будешь утаптывать.

Добавлено after 14 minutes 44 seconds:
Вот, кстати, из полезного неногодрыжного. Таблица перекодировки. Где-то уже показывал, не помню где. Тут же налетели ястребы - да мы, да это всё внешними утилитами генерится и чуть ли не в виде бинарных файлов прилинковывается.
Спойлер

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

template <typename T, size_t SIZE>
struct ENCODE_TABLE
{
  template <typename F>
  constexpr ENCODE_TABLE(F f) { size_t i{}; for(auto& x:table) x=f(i++); }
  constexpr auto operator()(const size_t n) const { return table[n]; }
  constexpr auto& operator[](const size_t n) const { return table[n]; }  
private:
  T table[SIZE]{};
};
Ответить

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