DrobyshevAlex

Компиляция для STM32

195 posts in this topic

Давайте без ругательств) Холивары были етсь и будут есть. Постоянно писать фразы типа

21 минуту назад, mail_robot сказал:

Рукожоп конкретный

Пытаясь показать что он крутой прогер... ну это такое себе доказательства. К чему вообще пальцем тыкать, а вот он делает так...  Я уже привел несколько примеров прогеров с гугла и эйпла.

Просто сказать я считаю что у ртос преимущество такие то, удобно сделать то то. Чо вот это переходить на личности, или ставить кого то в пример, а может он гавно ест, так мне тоже есть?) Сорри за мой французский))

Да, если брать пояснение как работают потоки в ОС, и это так, ясное дело что просто так задержка в 100 мс не появится) Но какая то появится естественно, ибо код есть, и он занимает не мало места, а значит на его выполнение нужно время)) Или эти крутые программисты написали код таким образом что он включает сразу все в себя, даже если ты не юзаешь, например stream он все равно включает даже если ты не подключил инклуд, ну то есть оне не вынесен отдельно, или сразу идет все в зависимостях друг от друга... Тогда я сомневаюсь в тех программистах)

 

Share this post


Link to post
Share on other sites
30 минут назад, DrobyshevAlex сказал:

О чем вы всегда пишите что мне еще очень далеко а я спрашиваю где я не прав а вы не тыкнете пальцем) Чем отличается мк от "больших машин" в данном вопросе?

Отличие очень простое, и сразу бросается в глаза. Программный код для больших машин пишется о чрезвычайно вольном стиле. Какое-то принудительное деление на отдельные потоки для задачи или множества задач - это всё стезя гиков и перфекционистов. Основная масса программистов даже не думает над этим вопросом, компилятор всегда умнее. В процессоре может быть разное количество ядер и аппаратных потоков. Но это не мешает выполнению программы.

Для мк это дело выглядит несколько проще. Каждая отдельная задача всегда автономна, по сути это функция на Си с атрибутом "без возврата". Это означает что компилятор не отслеживает поведение задачи для анализа последствий в функции её запустившей. Для мк это просто новый кусок кода с автономным стеком.

Сам код на ARM собирается и выполняется иначе чем на 86 машине. Прикол с параллельным выполнением двух задач в одном потоке как на 86 - тут не работает. Тут ужаснее и страшнее - часть функций одного потока могут выполняться одновременно. Эта хрень называется - предварительное исполнение кода (или что-то похожее по сути). Засунуть что-то ещё в один поток просто невозможно, там и так уже каша.

По этому ос для ARM ядра просто сохраняет/восстанавливает все регистры процессора при переключении задач. Для задачи просто выключается машинное время пока другие работают. Спешу успокоить, ей не больно и она ничего не чувствует (наверное :wacko:).  Ос для 86 сохраняет не все регистры, хотя вам лучше не знать как она вообще работает - для сохранения психического спокойствия.

Ос для ARM бывают двух типов: вытесняющая, и потоковая. Разница в работе приоритетов.

Для вытесняющей - приоритет позволяет буквально выключить все задачи ниже себя по уровню. Многим это нравится... Яркий пример FreeRTOS.

В потоковом типе - все задачи выполняются независимо и безусловно, но разное время, которое тут является аналогом приоритета. Это позволяет одновременно запускать множество задач без потери производительности. Если задаче нечего делать в конкретный момент времени - она просто передаёт управление. При этом сохраняя сверх низкую задержку в реакции на внешнее воздействие. Это например embOS от segger.

Кроме того ARM имеет аппаратную поддержку приоритетов прерываний, то чего нет в 86, пиков и атмела. И разные ос для мк по разному используют эту возможность. Некоторые складывают всё в одну большую кучу, и отдельно программно разгребают её содержимое. Потому-что выросли из маленьких чипов, когда аппаратной возможности ещё не существовало. Более свежие ос - дают возможность исполняться прерываниям в нативном виде. Оно и быстрее и проще. 

Для самих задач получается арифметика на уровне третьего класса средней школы. Допустим две задачи будут выполняться в два раза больше по времени чем одна. Но подобное представление только при решении в лоб. В реальности задача должна быть выполнена к моменту когда её результат будет кому-то нужен. Не сразу "кровь из носу", не потом после всех "я только спросить", а параллельно с задачей пережёвывающей предыдущую порцию данных. Это и называется - выполнить к моменту актуальности данных. К слову - вытесняющая многозначность меньше всего подходит под это дело, чисто физически. 

Share this post


Link to post
Share on other sites
38 минут назад, AVI-crak Home сказал:

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

Эх... как же тяжко... я спросил, лишь, код выполняется параллельно или последовательно, а вы начинаете писать о компоте и мухах)

Вы мне ответили, что параллельно) При чем тут вообще стиль кода??)

38 минут назад, AVI-crak Home сказал:

Какое-то принудительное деление на отдельные потоки для задачи или множества задач - это всё стезя гиков и перфекционистов. Основная масса программистов даже не думает над этим вопросом, компилятор всегда умнее.

Мдя, вот после этого я вас даже читать дальше не хотел))

Допустим вы пишите код, ну простенький сервер для игры. Вы просто пишите код, не создавая треды, а компилятор сам за вас это делает? Вы вообще в курсе что такое треды?) Компилятор умнее, ага. нафиг программисты))

То есть по сути типы которые FreeRTOS писали тоже дурные, зачем они кодили разделение на потоки если это компилятор сам сделает.

То есть берем пишем просто, ну очень упрощенно вариант раскидывание клиентов для игры по комнатам и выполнение апдейт цикла комнат

while(client = getClient()) {
	room = getNextRoom();
	room->addUser(client);
	room->update();
}

Все, дальше умный компилятор, сам создаст пулл потоков в зависимости от количества ядер, он же компилируя знает сколько их. А еще он будет плавающий, то есть зачем пладитьп отоки в памяти, и если новый не нужен не создавать.

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

И функцию апдейт он так же знает что нужно выполнять параллельно, будет брать из пулла свободный поток, брать из очереди пакет от клинета, и выполнять позаботившись о том, что бы другой поток не перезаписл где то в другом месте что то, то етсь он даже сам знает где мьютексы расставить)

Блин, продайте мне свой компилятор))

Но потом, кое что вы написали как будто знаете о чем говорите))

Edited by DrobyshevAlex

Share this post


Link to post
Share on other sites

Старт складской программы по Wi-Fi/ Bluetooth-чипам от Espressif

На склад КОМПЭЛ поступили чипы, модули и отладочные платы от компании Espressif Systems на базе ESP8266 и ESP32. Стоимость всех изделий данной линейки – в 2-3 раза ниже ближайших аналогов, чипы занимают минимальное место на плате, энергоэффективны и универсальны в применении

Подробнее...

BARS_    992
4 часа назад, mail_robot сказал:

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

Читать внимательно научись. Мои программы как раз работают очень быстро.

 

4 часа назад, mail_robot сказал:

Однако при помощи того же хал и той же ос мне удавалось включить в петлю пару 8266 и заставить их слать друг дружке на скорости 3,5 мб/с с реалтаймовой параллельной обработкой потока. (причем по UART!).

Ну ничего себе! По UART. Не позорься, мыша.

 

4 часа назад, mail_robot сказал:

вторая через 100 мс

Ты совсем тупенький, мыша? Где я писал, что у меня были задержки 100мс? У меня то как раз спокойно молотит RS485 вместе с ЛВС чипом через SPI без всяких тупняков (при этом может быть открыто до 5 сокетов от разных ЭВМ). При этом МК работает с GUI, получает по второму UART данные от GPS, а по второму SPI может идти обмен с ПЛИС непрерывным потоком. Про работу с кнопками и EEPROM даже не упоминаю, уж сильно детские задачки. Я и от 8051 ядра спокойно получаю требуемую производительность выполнения кода. А вот ты не сможешь, говнолиб ведь там нет.

 

4 часа назад, mail_robot сказал:

Все эти рассуждения просто от неумения и нежелания вникать глубже в толковые в принципе темы.

И снова ты ничего не можешь привести кроме рассуждений на вольные темы. Надоел, кыш.

 

3 часа назад, DrobyshevAlex сказал:

Давайте без ругательств) Холивары были етсь и будут есть.

Могу дать совет. Если действительно есть желание научиться кодить под STM, то идите на форум easyelectronics. Там действительно сидят люди, которые могут научить и объяснить, а не пихать RTOS и HAL в каждую щель, как это делает мыша. Я сам не единожды получал там грамотную помощь.

Edited by BARS_

Share this post


Link to post
Share on other sites
mail_robot    1502
18 hours ago, BARS_ said:

Сталкивались мы по работе с программерами STM, поставили 40х камень (или даже 70х, но не суть), развернули на нем RTOS и управляли источником питания. И вроде как все ничего, пока не начали опрашивать блок по RS, получив задержку ответа около 100мс (!!!!)

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

9 hours ago, DrobyshevAlex said:

Мдя, вот после этого я вас даже читать дальше не хотел))

ну, я вот тут тоже не понял. Как компилятор сам дербанит код на трэды? Небыло этого никогда и надеюсь не будет.

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

9 hours ago, DrobyshevAlex said:

код выполняется параллельно или последовательно

мне например сложно ответить однозначно на этот вопрос. Код выполняется в порядке приоритетов, которые устанавливает разработчик. И который определен настройками ОС

Share this post


Link to post
Share on other sites

Вебинар Литиевые ХИТы FANSO или что нужно знать инженеру о батарейках»

20 июня компания Компэл приглашает всех желающих принять участие в вебинаре, посвященном литиевым батарейкам FANSO. На вебинаре будет рассказано о параметрах батареек, их зависимости от режима работы и эксплуатации. Будет дана информация о том, на какие параметры следует обращать внимание, выбирая литиевый ХИТ, и как избежать некоторых проблем.

Подробнее...

mail_robot    1502
10 hours ago, AVI-crak Home said:

Если задаче нечего делать в конкретный момент времени - она просто передаёт управление. При этом сохраняя сверх низкую задержку в реакции на внешнее воздействие. Это например embOS от segger.

ну это свойство всех ОС - отдать все неиспользуемое машинное время для пользы дела. И поэтому мне непонятно откуда берутся тормоза, если обычно при использовании ОС свободными остаются более 90% ресурсов. Большинство задач связанных с пользователем спят. Задачи обновления данных управляются изменением этих данных. Задачи поллинга четко квантуемы (если вообще есть). Прерывания так и работают как раньше, с разницей только на характер сообщений в ОС. ДМА точно так же независим. Откуда тормоза то? Ответ - мы мало читали, и мало знаем про диспетчер потоков, но очень хотим порассуждать на тему какое же ОС говно.

Если же появляется задача, которая потребляет больше ресурсов, чем может отдать ОС, то это повод задуматься о том, что следует отказаться от ее использования, потому как это уже не имеет смысла. На оставшиеся задачи будет выделено слишком мало ресурсов и проще реализовать их выделение вручную. Вот и вся мудрость. Либо второй вариант - увеличить производительность аппаратной базы, оставив программный инструментарий неизменным. Все зависит от экономической составляющей. Время на разработку порой дороже одиночного камня, но серия камней из миллиарда дороже разработки. Для хобби важнее первый аргумент, для промышленности второй

Там где много полусонных потоков ОС очень выгодна. Опять же повторюсь - по одной простой причине - экономия времени на разработку и реализацию.

Есть еще места где с ОС надобно думать внимательно. Маленькие камни типа F030 содержат слишком мало аппаратных ресурсов, для того чтобы использование ОС было по настоящему целесообразным (но и на них отлично все работает!). Этим всем проще управлять вручную классическими методами. С библиотеками там или без - совершенно по барабану.

В общем случае я бы поставил критерий так - все зависит от числа и типа задач, которые возложены на контроллер и характера их взаимодействия. А такие понятия как - нет, не применять ни за что, или да - применять в любом случае. Это вот только барсик так рассуждать умеет. Ну и еще парочка индивидуумов тут бывающих. Применять надо тогда, когда это целесообразно тот инструмент, который наиболее подходит для решения задачи по целевой функции. Варианты этой функции - время/деньги/трудозатраты.

А не только - полюбуйтесь как мы красиво сделали, правда убивались десять лет. У меня вот сосед через забор увидел видос про то как чувак делает крутые топоры. Ну он тоже решил. Замутил горн, отковал топор, отполировал его, вылизал ручку. Отличный получился топор. Заглядение.

За это время я срубил сарай и построил гараж для грузовика с хозблоком и мастерской. Зато у него топор красивый

 

Edited by mail_robot

Share this post


Link to post
Share on other sites
9 часов назад, DrobyshevAlex сказал:

Мдя, вот после этого я вас даже читать дальше не хотел))

Да я уже заметил... Вас постоянно кидает в крайности, от безумно простого - до задач уровня нобелевской премии. И подорожник тут не поможет.

Share this post


Link to post
Share on other sites
41 минуту назад, mail_robot сказал:

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

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

Share this post


Link to post
Share on other sites
Sancta    19

@BARS_ Конечно вы всё описываете круто и уровень у вас гораздо выше тут присутствующих.

Но для начала всё таки удобнее кубемх. С ним по крайней мере можно быстро начать. Такой себе быстрый переход от ардуино )

Share this post


Link to post
Share on other sites
9 часов назад, BARS_ сказал:

то идите на форум easyelectronics.

Да я там даже есть) Пару раз задавал вопрос.

3 часа назад, mail_robot сказал:

Код выполняется в порядке приоритетов, которые устанавливает разработчик.

Да про приоритеты у меня нет вопросов, я знаю что это) Меня интересовало в равном приоритете, я даже писал про это

21 час назад, DrobyshevAlex сказал:

Они запущены в двух различных тредах с одинаковым приоритетом.

Вообщем то, вроде бы выяснили, ну если человек прав, то параллельно, по кусочку, как мне и хотелось бы)

3 часа назад, mail_robot сказал:

Маленькие камни типа F030

Да не фига они не маленькие, как раз вчера про них узнал, и что они стоят как атмега8 и удивился нафиг я на атмеге8 сидел если тут всего больше в f030 :D

3 часа назад, mail_robot сказал:

или да - применять в любом случае

мне казалось, что это как раз вы советовали)

 

Share this post


Link to post
Share on other sites
mail_robot    1502
4 hours ago, DrobyshevAlex said:

Да не фига они не маленькие, как раз вчера про них узнал, и что они стоят как атмега8 и удивился нафиг я на атмеге8 сидел если тут всего больше в f030

я тоже когда про них узнал, решил что в 8-битках больше просто нет никакого смысла. В любых. Заказал сотню этих буках в разных корпусах из недорогих серий (F4P6, K6T6 etc) и пихаю их теперь везде даже не задумываясь. При цене в 30 рублей за камень и при такой колоссальной разнице в производительности (в сравнении с атмегой или PIC16) думать просто не требуется. Более крупные задачи штучные и там другая песня.

4 hours ago, DrobyshevAlex said:

мне казалось, что это как раз вы советовали)

ну найдите где я это советовал. Я такого не помню

Edited by mail_robot

Share this post


Link to post
Share on other sites
7 часов назад, mail_robot сказал:

ну найдите где я это советовал. Я такого не помню

Перечитал, не вы советовали, ну и немного приукрасил. Просто как получается, я написал, что изучу RTOS но не сразу буду с ней делать) Хочу почитать статьи и доку по stm32 именно, зачем мне сразу начинать читать с ртос?) могу я для начала прочесть что такое стм32 и как он настраивается, вот вопрос про systick возник из за чего? из за того что в первой де статье было ртос а я даже не знал что это таймер тоже) А когда я почитал другие статьи, о дма таймерах и тд, вопрос про систик отпал)

Просто у меня складывается ощущение, что меня пытаются убедить тут все кроме барса, что без РТОС работать з значит ты тупой, и учить надо только ртос не зная что за регистры вообще у мк есть))

Share this post


Link to post
Share on other sites
BARS_    992
16 часов назад, mail_robot сказал:

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

 И где же там написано, что это МОЙ код и МОЙ МК?

 

16 часов назад, mail_robot сказал:

Сталкивались мы по работе с программерами STM

Это для кого было сказано? Мыша, чини голову давай, до добра не доведет.

 

13 часа назад, Sancta сказал:

Но для начала всё таки удобнее кубемх. С ним по крайней мере можно быстро начать. Такой себе быстрый переход от ардуино )

Нифига удобного нет. Удобно понимать, что и для чего написано в коде и уметь быстро сменить те же настройки железа. С AVR я очень быстро перешел на STM8/STM32, а по работе еще и по 8051 ядро писать научился. Видимо это от того, что ардуйней никогда пользовался и кодил под чистый AVR. А с таким переходом знания работы железа будут ровно такие же, как и в ардуйне. Вот только тут МК куда сложнее и бузе знаний железа никуда. Да даже на более простых МК пробелы в знаниях железа вылазят боком. Приведу случай из своей практики.

Писал программу для МК C8051F580, в частности, была работа с обоими UART. Я мельком пробежал даташит и взял настройку и работу с UART из примеров производителя (они там на все железо МК есть). Так вот, после запуска МК все было гуд, но по прошествии времени при интенсивном обмене один UART стабильно валился и начинал выдавать одно и то же значение. При этом перезапуск UART проблему устранял. Полез читать даташит, но уже внимательнее. Оказалось, что на том UART, который валился, есть FIFO буфер на 3 байта и при попадании в прерывание по приему читать значение регистра надо не один раз, а до тех пор, пока не перестанет выставляться флаг наличия в буфере данных. Я же читал лишь один раз и не опустошал FIFO. В примере про эту особенность ни слова. Так что залог правильно работающей программы, в первую очередь, знание работы железа.

 

46 минут назад, DrobyshevAlex сказал:

Просто у меня складывается ощущение, что меня пытаются убедить тут все кроме барса, что без РТОС работать з значит ты тупой, и учить надо только ртос не зная что за регистры вообще у мк есть))

Именно в этом мыша всегда и убеждает. Он по другому не работает... Потому я и задаю вопросы по МК исключительно на easyelectonics, там мыша не в чести и не лезет с тупыми советами. Зато нормальные люди всегда помогают.

Share this post


Link to post
Share on other sites
mail_robot    1502
4 hours ago, BARS_ said:

Так что залог правильно работающей программы, в первую очередь, знание работы железа

а кто сказал, что программирование под ОС или с использованием ХАЛ возможна только с отключенным мозгом? Или те люди резко теряют память и опыт и разучиваются читать даташиты? Рассуждения ваши - детский сад штаны на лямках. Опять же указывает на рассуждения о вкусе устриц по картинке в зоологическом справочнике. Говоря по русски - не знаешь, не трынди барсик

Edited by mail_robot

Share this post


Link to post
Share on other sites
tar    39

Годы идут а холивары не угасают на эту тему. 

Как показала лично моя практика - пока у меня небыли необходимости писать напрямую в регистры без хала, есть конечно некоторые хаки для работы с ДМА и тп которые идут в обход хала но как бы на этом наверное все, все остальное если рассматривать стандартную периферию, все вроде как работает без особых проблем. 

В чем реально кайф хала - это то что люди другие воспринимают код гораздо лучше чем набор регистров. Это кардинально меняет работу в команде, когда вы в паре пишите код в одном и том же стиле добавляя нужные вам фишки при этом не мучая друг друга вопросами о том что делает та или иная самописная обертка.

Но тут надо тоже понять некоторую вещь - я не программист железа и под железо пишу исключительно под конкретные задачи нашей организации. То есть появляется задача, если я могу ее решить на STM32 я просто беру и накидываю железяку на хале, она запускается и работает и все счастливы. Куб очень облегчает изначальную конфигурацию железа и маппинг портов конечной железки. Это экономит в первую очередь кучу времени и именно эмоциональных затрат на разработку железа. У меня по сути нету времени заниматься железом, я пишу еще на куче других языков типа php Javascript Python мне приходится знать кучу всякой дичи типа фреймворков и тп херни типа SQL особенности баз данных, типа полнотекстовых поисков в Postgresql и еще ОЧЕНЬ ОЧЕНЬ много всякой херни. И вот занимаясь всей этой херней, когда появляется задача сделать что то в железе, я просто беру и делаю это  и с минимальными эмоциональными затратами для себя. А это хотелось бы напомнить для меня это - необходимость изучать дополнительный софт, целый язык программирования СИ, я уж не говорю про минимальный набор знаний для работы с электроникой, разводкой печатных плат и тп. 

При всех этих условиях, извините меня грешного, я не собираюсь изучать набор регистров микроконтроллеров, у меня чисто физически подобная необходимость вызывает боль. Оставьте уже ХАЛ в покое. Хал дарит таким людям как я добро и счастье, и приносит в прямом смысле тепло в дома. 

По поводу ОС в МК, тут все гораздо проще. Если вы пишите что то линейное, без интерфейса и тп. То ОС не нужна, вам наоборот проще будет прописать весь сценарий линейно и работать с ним не задумываясь о том как он будет работать в ОС. Когда же вы пишите какие то асинхронные штуки, работу с интерфейсом и тп. То тут конечно лучше использовать ОС, если она конечно удовлетворяет вашим требованиям. 

Так что если кто хочет просто влится в программирование на STM32 то как по мне лучше просто взять какой нибудь простой камень F0 серии или L0 серии хотя как по мне она немного по сложнее. Например какой нибудь STM32F030K6T6 он и паяется на старте хорошо и выводов под множество задач хватит. Взять ST-Link какой нибудь (для начала ваще не принципиально). Поставить бесплатный кейл + кубМХ и начинать писать параллельно читая документацию на ту или иную периферию. 

Иначе же возникает вопрос, вам шашечки или ехать? Если ехать, то уже можно начинать. 

Share this post


Link to post
Share on other sites

Ну так я согласен, я тоже пишу по работа js, ruby, c++, php, и тд. А это так, для себя) У атмеги8 нет проблем, особых с регистром, я там быстро накидываю что надо, поглядывая конечно в даташит, но там не много мне нужно настроить, да и не раз делал по этому помню более менее.

А тут я покодю может первый и последний раз) Я явно не выучу все регистры, по этому куб я оставил)) Я не знаю на сколько глубоко буду изучать мк, все вроде сегодня завтра освобожусь и сяду, а что то да опять надо сделать... И ни как не сяду) Хотя по чуть чуть почитываю )) Но без постоянной практики сложно заучить все регистры и тд... По этому думаю куб мне в помощь))

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

Прерывание отловить не уверен, но думаю тоже не сложно, что то в виде простой функции)

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

Share this post


Link to post
Share on other sites
mail_robot    1502
35 minutes ago, tar said:

В чем реально кайф хала - это то что люди другие воспринимают код гораздо лучше чем набор регистров

мне не верят когда я так говорю

35 minutes ago, tar said:

Если вы пишите что то линейное, без интерфейса и тп. То ОС не нужна, вам наоборот проще будет прописать весь сценарий линейно и работать с ним не задумываясь о том как он будет работать в ОС. Когда же вы пишите какие то асинхронные штуки, работу с интерфейсом и тп. То тут конечно лучше использовать ОС, если она конечно удовлетворяет вашим требованиям

здесь тоже не верят

35 minutes ago, tar said:

вам шашечки или ехать?

не, на этом месте обычно уже начинают хамить и изобретают третий вариант - закидать кирпичами :D

я вот сегодня не поленился и еще раз листанул код библиотеки. И еще раз убедился в гениальности кодеров, которые это писали. HAL умеет существовать в любом уровне - от сверхвысокого, до практически голого регистрового кода. И написать на нем код, не уступающий по скорости рукописному - фигня делов. И читаться будет по прежнему отлично. И скомпилируется компактно. Причем я это раз 10 озвучивал - никто не верит. Такое ощущение что исходники библиотеки все активные спорщики начисто игнорируют. А кто смотрел, так только по диагонали наверное. Единственное, что это потребует от программиста чуть бОльшей аккуратности. И все

HAL это многоуровневая либа. И лишнего там практически ничего и нет по сути. И не подключает она по 5 хедеров друг за другом, как утверждают некоторые. Все согласно конфигурации.

Edited by mail_robot

Share this post


Link to post
Share on other sites
28 минут назад, mail_robot сказал:

мне не верят когда я так говорю

Тут такой момент... Я вот видел код HAL и код без HAL, переключение ножки) Честно скажу после кода с HAL я не хотел даже браться за кодинг)

Как минимум на вид это громоздко после avr))

HAL_GPIO_WritePin(PORT_LED, PIN_LED, GPIO_PIN_SET);
HAL_GPIO_WritePin(PORT_LED, PIN_LED, GPIO_PIN_RESET);

Против

PORT_LED->ODR |= 1 << PIN_LED;
PORT_LED->ODR &= ~(1 << PIN_LED);

Если вы пишите на JS или php это ен повод не знать работы с битами

Или же с макросами которыми я пользуюсь в авр

PORT_LED->ODR |= _BV(PIN_LED);
PORT_LED->ODR &= ~_BV(PIN_LED);

Или

SetBitVal(PORT_LED->ODR, PIN_LED, HI);
SetBitVal(PORT_LED->ODR, PIN_LED, LOW);

Или

SetBit(PORT_LED->ODR, PIN_LED);
ClrBit(PORT_LED->ODR, PIN_LED);

Адаптировать под порт STM

SetPort(PORT_LED, PIN_LED);
ClrPort(PORT_LED, PIN_LED);

Ну при всем уважении к любителям HAL, любой вид записи короче, как говорил ранее @BARS_, и я с ним по этому поводу полностью согласен, не вижу экономию времени в написании кода) Тут пальцы и клавиатуру сотрешь быстрей чем приложение напишешь :)

Говорить, что напарник кодит и не понимает, ну блин, если он не понимает эти макросы, то я не уверен стоит ли ему кодить...

 

А еще нужно глянуть HAL_GPIO_WritePin - макрос или функция) А то еще и выигрыш в скорости работы получим))

Погуглил, пишут функция, ну да, ща конечно мне скажут, что это фигня, стм32 на столько быстрая, что пофиг на скорость работы, но это уже другой холивар :D

Edited by DrobyshevAlex

Share this post


Link to post
Share on other sites
40 минут назад, DrobyshevAlex сказал:

Ну так я согласен, я тоже пишу по работа js, ruby, c++, php, и тд.

Это наверное уже не хобби, а основная работа. Когда имеющийся рога опыт мешает изучению нового материала. Ну не нужно изучать все регистры побуквенно, тот-же хал - вариация составных команд, изучать все вариации - сдохнуть можно преждевременно. Достаточно уловить суть работы с регистрами, последовательность чтения англоязычной справочной документации, и немного разобраться и id - хватит уровня обезьяны (кнопки нажимать).

У вас ещё на первой странице должны были появиться вопросы выше уровня домохозяйки. Для этого достаточно запустить дефолтный проект от самой id, и приступить к его изменению. 

А чтоб дело было веселей - завести черепаху (обязана быть), и слить проект на гит или bitbucket.org. Не потому что это круто, а как инструмент обратной связи - который явно надёжнее испорченного телефона.

Share this post


Link to post
Share on other sites
tar    39
31 минуту назад, DrobyshevAlex сказал:

Тут такой момент... Я вот видел код HAL и код без HAL, переключение ножки) Честно скажу после кода с HAL я не хотел даже браться за кодинг)

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

32 минуты назад, DrobyshevAlex сказал:

Ну при всем уважении к любителям HAL, любой вид записи короче, как говорил ранее @BARS_, и я с ним по этому поводу полностью согласен, не вижу экономию времени в написании кода) Тут пальцы и клавиатуру сотрешь быстрей чем приложение напишешь

А ты уверен что тебе надо будет вообще писать какой то код, который ты бы уставал писать при использовании хала? И это при условии что чаще тебе нужно будет написать слово HAL_ПЕРЕФЕРИЯ после чего тебе IDE сама предложит все что нужно. Чаще тебе нужно описывать свою логику и тп а Халом только запускать пару функций. 

Хотя я уже понял что это просто копание совочком в песочнице. Как в детский сад попал. Тут мы короче опять к шашечкам возвращаемся. пора бы уже заканчивать пи"№ть и взяться за работу. 

Share this post


Link to post
Share on other sites
1 час назад, AVI-crak Home сказал:

Когда имеющийся рога опыт мешает изучению нового материала.

при чем тут мешает изучать, и заучить регистры? Я сказала то я заучивать не хочу 100500 регистров) Если я делал на атмеге раз 10-15 на протяжении нескольких лет что нибудь для себя, так я запомнил много по памяти, что там в регистрах, а тут у меня в планах пока только 1 девайс сделать)

1 час назад, AVI-crak Home сказал:

Достаточно уловить суть работы с регистрами

Ну так я именно ЭТО и писал изначально, что хочу прочесть что может СТМ а потмо читать про RTOS :) Я уже пару дней как прочел) Ничего не понятного не увидел)

1 час назад, AVI-crak Home сказал:

У вас ещё на первой странице должны были появиться вопросы выше уровня домохозяйки

Я вообще уже почлушал ответы профессионалов про то что компиляторы сами приложения на потоки разбивают)

Где тут вообще вопросы в теме кроме двух)

1) На чем компилировать лучше, я пока остановился на Кокосе или Keil'е

2) FreeRTOS потоки может выполнятьп о кускам или нет, выяснили что может по кускам.

Больше я тут вопросов не вижу, даже не вижу вопроса юзать HAL или нет. Так же не вижу Юзать РТОС или нет вопроса.
Я как нибудь решу по ходу дела что мне юзать)
 

Для управления ножкой я точно ХАЛ юзать не хочу, это мое дело) Мне не передавать код какому то тупому программисту который не знает битовых операций и не разберется, а если писатьв для работы, там будет обговорено что как и на чем пишем)

FreeRTOS думаю заюзаю все же, надеюсь памяти хватит) Не думаю что так много кода будет, просто 8кб по моим подсчетам на атмеге8 могло не хватить, а у стм32ф103 и памяти в разу больше и скорость работы. Думаю 10 кб останется под ОС.

Даже если HAL идет прицепом к FreeRTOS ( а это означало бы что программисты FreeRTOS внедрили зависимость, и показало бы их уровень как программистов ) все равно я не буду юзать такие длинные конструкции для установки битов)

1 час назад, AVI-crak Home сказал:

слить проект на гит или bitbucket.org

Ну так то у меня гит на своем сервере поднят) Но, если возникнут вопросы по коду, мне не сложно вылить на гитхаб будет) Хотя по коду я вроде вопросов не задавал, у меня были организационные вопросы) На чем лучше кодить, что бы памяти хватило) Ибо я написал изначально, что начитался что жрет память ужасно быстро и не хватает ни на что толковое)

Я понял что это бред, вопросов на данный момент я уже несколько дней как не имею) Как будут, обязательно задам.

49 минут назад, tar сказал:

что бы понять суть сей писанины.

Я ни де не писал что мне не понятно, все там понятно HAL - от имени либы) WritePin предполагаю от английских слов, записать в вывод, что означает видимо, что писаться будет в регистр ODR,  GPIO - оно и есть GPIO, SET - видимо от установить (HI level), RESET - сбросить бит (в low).

Вообще ничего ен понятного не вижу, просто два вопроса

1) Зачем юзать функцию замедляя работу мк, ах да забыл, он е очень скоростной, значит можно :D
2) зачем так много букф писать

Это риторические вопросы) Ответа не нужно)

49 минут назад, tar сказал:

А ты уверен что тебе надо будет вообще писать какой то код, который ты бы уставал писать при использовании хала?

Ну я выше уже написал, я как начну, так решу, на уровне установки бит в порт, я решил, что мне хал не нужен, это не красиво даже на вид :)

49 минут назад, tar сказал:

пора бы уже заканчивать пи"№ть и взяться за работу

Я уже писал, что жду модули с китая)) Там даже трек номеров нет) Не знаю когда прийдут. Пока есть только мк и программатор)

А что вы тут пишите я не знаю, для чего вы это пишите, я на первой странце еще вроде бы написал, что я прочту пару статей просто по мк, птомо про фриРТОС, я это сделал) В чем тут писанина я не знаю)

Я не знаю ваших уровней программирования) Некоторые ответы наводят на мысль что некоторые люди тут даже не знают о чем пишут) Тут нет ни одного вопроса про кодинг, и даже я НЕ спрашивал нужно ли использовать ОС или хал!

Я услышал вас, спасибо за то что подсказали что есть в современном мире для stm, это значительно облегчило мне поиск информации на данные темы.

Я не спрашиваю совета, нужно ли мне юзать в моем проекте то или иное. Про ХАЛ я уже писал я решу по ходу дела, пока конкретно для управления выводом я хал юзать не собираюсь.

РТОС, скорей всего буду. Как я писал ранее, что бы понять нужна ли она мне и облегчает ли разработку, нужно хотя бы раз с ней покодить) Что я и собираюсь сделать.

 

Edited by DrobyshevAlex

Share this post


Link to post
Share on other sites
BARS_    992
5 часов назад, tar сказал:

В чем реально кайф хала - это то что люди другие воспринимают код гораздо лучше чем набор регистров. Это кардинально меняет работу в команде, когда вы в паре пишите код в одном и том же стиле добавляя нужные вам фишки при этом не мучая друг друга вопросами о том что делает та или иная самописная обертка.

Конечно, ведь уже хрен что можно проверить по даташиту. Зато читать ой как удобно! Такое ощущение, что вы сказки для детей пишите, а не программы! С HAL читать красиво, и объем кода в 10-15 раз больше. Заодно палец потренируешь, пока до нужной строки кода доберешься! Красота!  Программист МК, если он программист, прекрасно понимает, что записано в регистрах. Да и было бы что понимать, даже начальных знаний английского достаточно чтобы развернуть аббревиатуры из заголовочника в словосочетания. Ладно бы в регистры писалось все виде чисел в HEX. Но нет, в заголовочниках все очень грамотно прописано! Кому это может быть непонятно - ума не приложу. Про то, что HAL и SPL содержат уйму лишнего кода (ага, защита на защите, как будто не программисты, а дети писать будут) я уже писал выше и не раз. Плюс одна либа тянет за собой пару соседних. И в чем удобство то? Писанины больше, читать сложнее (про упрощение могу согласиться только в настройке портов на 10х серии), с даташитом не сверить.

 

5 часов назад, tar сказал:

У меня по сути нету времени заниматься железом, я пишу еще на куче других языков типа php Javascript Python мне приходится знать кучу всякой дичи типа фреймворков и тп херни типа SQL особенности баз данных, типа полнотекстовых поисков в Postgresql и еще ОЧЕНЬ ОЧЕНЬ много всякой херни. И вот занимаясь всей этой херней, когда появляется задача сделать что то в железе, я просто беру и делаю это  и с минимальными эмоциональными затратами для себя. А это хотелось бы напомнить для меня это - необходимость изучать дополнительный софт, целый язык программирования СИ, я уж не говорю про минимальный набор знаний для работы с электроникой, разводкой печатных плат и тп.

Поверьте, это не только у вас так. Я могу как писать прошивку под готовую плату (схемотехника которой, обычно, согласована со мной), стоящую в блоке, так и делать эту самую плату с нуля. Причем параллельно может идти несколько задач. Но куб юзаю только чтобы глянуть где из МК какая периферия торчит, ибо лезть для этого в даташит тупо лень. А настроить периферию в регистровом виде у меня занимает меньше времени, чем у вас с HAL, т.к. что-то особенное нужно редко, а все стандартные настройки уже давно мной расписаны и вынесены в отдельный файл. Закинул его в проект, отредактировал под конкретную задачу и все. Вот и получается, что скорость написания программы зависит лишь от умений программиста, а не от либ. Ладно еще для ПК, когда программы сложные и большие. Там множество доступных либ здорово экономит время. Но на МК вся экономия нивелируется.

 

4 часа назад, tar сказал:

И это при условии что чаще тебе нужно будет написать слово HAL_ПЕРЕФЕРИЯ после чего тебе IDE сама предложит все что нужно

Как бы для регистров оно тоже работает:crazy:

 

5 часов назад, tar сказал:

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

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

 

5 часов назад, tar сказал:

Когда же вы пишите какие то асинхронные штуки, работу с интерфейсом и тп. То тут конечно лучше использовать ОС, если она конечно удовлетворяет вашим требованиям.

Расскажите это моим программам. Они знатно поржут.

 

5 часов назад, mail_robot сказал:

И еще раз убедился в гениальности кодеров, которые это писали

Еще бы мыша, тебе то оно не дано, вот и заришься на чужое:lol2: Ну и если для тебя этот код гениален, то больше даже трогать тебя не буду, тебе и так не сильно по жизни повезло:lol2:

 

Да и вообще, уважаемые, и не очень, оппоненты. Вот вы когда учились программить к вам кто-то лез с советами и тыкал в лицо HAL, Регистры, RTOS и т.п.? Вы САМИ до этого дошли согласно специфике своей работы и знаний. Так чего мы на автора накинулись? Он сам в состоянии попробовать и то, и это, и выбрать свой путь. А мы тут хоть лопнуть можем, толку от этого не будет.

Share this post


Link to post
Share on other sites
Oxford    37

DrobyshevAlex, для  1 девайса не надо ничего изучать, просто закажите прошивку

Edited by Oxford

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...