5277 (5277) wrote,
5277
5277

Category:

Оффтоп, stm32h750 cortex_m7

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

В настоящее время существует понятие в обществе, что ничего нет лучше STM32 и Си. Так как есть библиотеки, HAL, достаточно серьезные аппаратные реализации, среды разработки и тому подобное.

Просто делюсь свои опытом, сейчас я нахожусь на уровне 'пишу свою прошивку на асме без использования сторонних библиотек' параллельно создаю операционку для STM32(только первые шаги).

Изначально я выбрал стандартную IDE STMicroelectronics со стандартным проектом на Си и стандартным HAL. Я даже реализовал на 80% свою задачу(тестирование SD карт), но на определенном этапе я столкнулся со сложностями, все эти колоссальные труды производителя с аппаратной поддержкой SD привели к результату 3МБ/с, не более, для чипа в 480МГц.
Все попытки выжать большую скорость приводили к сбоям.
Вопрос, зачем нужен хал, который не может интуитивно понятно раскрыть возможности чипа? И каков уровень такого профессионала 'разработавшего HAL'?

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

Пару дней назад я набрал инструментария для разработки проекта на чистом ассемблере. И о чудо, я стал понимать с чем я имею дело, все встало на свои места, исчез 'высокоуровневый туман', скрывающий от меня примитивный и интуитивно понятный механизм работы с оборудованием на уровне регистров(просто читаем даташит и шлем нахер си).

Я конечно понимаю, что есть фанатики, и среди Си и STM их больше всего. Но я не понимаю, что их делает фанатиками? Способность следовать только шаблонам типа HAL? Он же просто кусок говна написанный индусами, неужели вы это не видите?

UPDATE.

Я вижу многие противники ассемблера не понимают, почему я пишу именно на нем, а не на Си.
1) Как схемотехник я являюсь любителем, как программист - профессионал с большим стажем работы.
И затраты времени при выполнении своих задач зачастую связаны с решением головоломок, а не с кодингом так называемой 'бизнес логики'.
Не сложно написать простую ОС на ассемблере или на Си, сложно реализовать само решение, и на это уходит гораздо больше сил, чем на кодинг на асме или си.
2) Существует предвзятое мнение, что почему-то на ассемблере, особенно при работе с регистрами, нужно постоянно дербанить даташиты и каждый раз заново писать код. Полная чушь, асм код точно также выноситься в отдельные файлы в виде библиотек, а регистры имеют хоть и сокращенное название но запоминаются не хуже названий структур Си. Более того, дербанить даташиты нужно что на Си, что на ассемблере. Если конечно Вы не пишете что-то очень простое, но много.
3) Существует мнение, что кодер на асме умственно отсталый, ведь какой специалист, будет оптимизировать код, при чипах работающих почти на гигагерцах. Может быть не стоит считать людей за идиотов основываясь чисто на своих представлениях о жизни? Лично я пишу на асме, потому, что для меня это более эффективный инструмент, а не потому, что я пытаюсь экономить каждый такт.
Хотя в моей ОС для AVR мне часто приходиться именно экономить память и процессорное время.
4) Главная отличие микроконтроллеров от остальных процессорных решений - периферия, именно для работы с периферией мне и нужны микроконтроллеры. И для того, чтобы знать эту периферию - нужно работать с даташитом и регистрами. Здесь ассемблер подходит идеально.
Не забываем, что кроме МК есть еще и чипсеты(которые, например используются с смартфонах и микрокомпьютерах - отличное решение для бизнес логики)
5) Еще раз, работая на асме вы работаете напрямую с регистрами описанными в даташите. При дебаге вы видите в точности тот код, который написали. Соответственно и выполнение, выполняется ровно то, что вы написали, без влияния компиляторов. Если вы не умеете писать алгоритмы, то да, асм не для вас, и уж точно вы не инженер-программист, максимум техник.

Для понимания, как я 'работаю с регистрами' на ассемблере:


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

А вот так я инициализирую драйвер DHT11


P.S. Что-то мне подсказывает, что люди выступающие против ассемблера его совершенно не знают, или не способны создавать алгоритмы или просто пишут на контроллерах тот функционал, который я бы вынес на чипсеты.
Tags: Оффтоп
Subscribe

  • No C C++

    Хотите немного шаблонов? Их есть у меня. Ни строчки кода Си и Си++ на конечных устройствах и шлюзах. Вся реализация на девственно чистом старом…

  • Вопрос

    Допустим, Вы стали обладателем квартиры, в новом доме. И приступили к возведению стен, заливки пола, проводке силовых и коммуникационных линий, и…

  • 5277, варианты подключения группы устройств

    Буду говорить об элементарном, но вдруг кому-то будет интересно. Я запилил небольшую блок-схему: На ней я описал модель подключения…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 19 comments

  • No C C++

    Хотите немного шаблонов? Их есть у меня. Ни строчки кода Си и Си++ на конечных устройствах и шлюзах. Вся реализация на девственно чистом старом…

  • Вопрос

    Допустим, Вы стали обладателем квартиры, в новом доме. И приступили к возведению стен, заливки пола, проводке силовых и коммуникационных линий, и…

  • 5277, варианты подключения группы устройств

    Буду говорить об элементарном, но вдруг кому-то будет интересно. Я запилил небольшую блок-схему: На ней я описал модель подключения…