Перейти к содержанию

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


DrobyshevAlex

Рекомендуемые сообщения

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

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

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

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

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

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

 

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

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

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

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

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

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изменено пользователем DrobyshevAlex
Ссылка на комментарий
Поделиться на другие сайты

Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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 в каждую щель, как это делает мыша. Я сам не единожды получал там грамотную помощь.

Изменено пользователем BARS_
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

18 hours ago, BARS_ said:

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

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

9 hours ago, DrobyshevAlex said:

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

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

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

9 hours ago, DrobyshevAlex said:

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

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

10 hours ago, AVI-crak Home said:

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

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

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

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

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

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

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

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

 

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

9 часов назад, DrobyshevAlex сказал:

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, BARS_ сказал:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Ссылка на комментарий
Поделиться на другие сайты

4 hours ago, DrobyshevAlex said:

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

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

4 hours ago, DrobyshevAlex said:

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

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

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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, там мыша не в чести и не лезет с тупыми советами. Зато нормальные люди всегда помогают.

Ссылка на комментарий
Поделиться на другие сайты

4 hours ago, BARS_ said:

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

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

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

35 minutes ago, tar said:

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

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

35 minutes ago, tar said:

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

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

35 minutes ago, tar said:

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

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

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

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

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

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

Изменено пользователем DrobyshevAlex
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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, это значительно облегчило мне поиск информации на данные темы.

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

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

 

Изменено пользователем DrobyshevAlex
Ссылка на комментарий
Поделиться на другие сайты

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 и т.п.? Вы САМИ до этого дошли согласно специфике своей работы и знаний. Так чего мы на автора накинулись? Он сам в состоянии попробовать и то, и это, и выбрать свой путь. А мы тут хоть лопнуть можем, толку от этого не будет.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...