dOb 10 December 23, 2025 Posted December 23, 2025 · Report post Или с работой напрямую с регистрами? Лично для меня HALы выглядят совершенно противоестественными - они скрывают суть. Потом увеличивается трудоёмкость. Сначала нужно разобраться что делать, а потом как это сделать через... Quote Share this post Link to post Share on other sites More sharing options...
Priest_89 29 December 23, 2025 Posted December 23, 2025 · Report post Если говорить про STM-овский HAL, то не стОит. Quote Share this post Link to post Share on other sites More sharing options...
mantech 139 December 23, 2025 Posted December 23, 2025 (edited) · Report post 1 час назад, dOb сказал: Или с работой напрямую с регистрами? Да уж сразу с питонов и рустов наверно, а чего, стильно, модно, молодежно))))))))) Ну а если серьезно, я например не особо знаю регистры АРМа и его ассемблер, скорее так, в основном понимаю, могу сделать несложные правки, но с нуля написать на асме не смогу, хотя на АВРках писал на асме по десять и более килобайт, там просто асм куда проще АРМовского, на АРМе сугубо на Си, без плюсов, меня на данный момент полностью устраивает, как для простых МК Кортекс-М, СТМ32.. так и для более навороченных Кортекс-А (Аллвиннер), как-то так... Понимание иметь нужно, но писать проги не обязательно. По типу программирования, есть варианты бареметал, т.е. написание кода на "голом" МК, т.е. без каких-либо ОС, как в старые, добрые времена, либо можно изучать линукс и писать на более высоком уровне под него. Первый вариант, как по мне проще и понятнее, особенно начинающему, ты видишь свой проект полностью, до каждой строчки кода, и можешь проанализировать, что и где глючит и почему. Можно использовать удобные ИДЕ для сборки и компиляции кода. Второй вариант требует понимания линуксовой философии, вкратце - есть ядро линукса, в котором 99% вы не разберетесь никогда, как там все работает, будете работать с ним, как с "черным ящиком", которому передаете запросы, он их выполняет и выдает вам результат, там нет никаких ИДЕ, это абсолютное царство командной строки, мейк-файлов, файлов конфигурации на птичьем языке(DTS) и т.п. Если это вас не пугает - то можно работать так, возможностей больше, поддержка разный сложных протоколов и режимов уже "из коробки", графики и пр. Вообщем вариантов много, выбирать вам)))))) Edited December 23, 2025 by mantech Quote Share this post Link to post Share on other sites More sharing options...
siargy 18 December 23, 2025 Posted December 23, 2025 · Report post 1 hour ago, dOb said: они скрывают суть. в ардуино тогда вобще магия происходит 1 hour ago, dOb said: Сначала нужно разобраться что делать, а потом как это сделать самый лучшый вводный курс по мк который я видел, это уроки к пиккит2 для демоплаты - маленькие примерчики работы с периферией. когда будет понимание как оно работает вцелом, тогда ужэ можно будет лезть в регистры и забираца с часностями. Quote Share this post Link to post Share on other sites More sharing options...
gridinp 11 December 23, 2025 Posted December 23, 2025 · Report post 2 часа назад, dOb сказал: Или с работой напрямую с регистрами? Лично для меня HALы выглядят совершенно противоестественными - они скрывают суть. Потом увеличивается трудоёмкость. Сначала нужно разобраться что делать, а потом как это сделать через... конечно стоит, когда заработает можно по частям разбираться с регистрами, можно брать HAL функции + описание и самому оптимизировать исходники 1 Quote Share this post Link to post Share on other sites More sharing options...
Vlad_G 10 December 23, 2025 Posted December 23, 2025 · Report post 2 часа назад, dOb сказал: Или Самое разумное - это комбинирование. Другое ограничение - работодатель, который может однозначно определить: HAL, регистры, асм... по своим внутренним соображениям. Мне встретился глюк в первых версиях cubeide - HAL не переключал тактирование АЦП на системную шину, а тактировал от своего встроенного генератора. Другой момент, последовательность действий по настройке периферии (не вспомню, что именно), ERRATA сказала, что, да, допустили не точность в RM, но если вы используете HAL, то там последовательность установки бит правильная. Так что, таки да, где HAL, а где ручками. Quote Share this post Link to post Share on other sites More sharing options...
novikovfb 40 December 23, 2025 Posted December 23, 2025 · Report post 31 minutes ago, gridinp said: конечно стоит, когда заработает можно по частям разбираться с регистрами, можно брать HAL функции + описание и самому оптимизировать исходники имея пример уже реализованной функции, проще разбираться с теми же регистрами, чтобы не забыть что-то, написанное на совсем другой странице описания и меньше гадать, почему работает не так Quote Share this post Link to post Share on other sites More sharing options...
engel65536 18 December 23, 2025 Posted December 23, 2025 · Report post Всё зависит от того, какая цель ставится. Если цель - научиться делать "максимально правильно и вдумчиво, прорабатывая все детали и нюансы, с by-design гарантией надёжности и работоспособности" или как-то близко к этому, то работа на регистрах - единственный возможный путь, так как требует внимательного изучения документации. Разумеется, что при таком подходе HAL и прочие не отметаются, как минимум при недостаточной полноте документации, при сомнениях в трактовке так или иначе всё равно придётся заглядывать в библиотеки, чтобы посмотреть "как сделано у них" и сделать свои выводы. Ну и такой подход формирует в голове куда более чёткое понимание работы периферии. Если же цель - просто "писать чтобы как-нибудь работало", то можно пользоваться библиотеками в формате "пробуем библиотеку, получилось - хорошо, не получилось - берём следующую". В таком случае в голове будет формироваться либо сильно упрощённая картина того, как работает периферия - либо вообще извращённая картина, не соответствующая реальности. Первый подход хорошо подходит для "серьёзной" разработки, где есть возможность потратить значительные человеко-часы на вдумчивое написание "хорошего" кода. Для случаев создания "быстрых наколенных прототипов" как будто лучше годится второй подход, однако он (в случае, если далее прототип будет развиваться в "серьёзный" проект) дальше сделает больно и всё равно потребует приближаться к первому подходу - а имея за плечами более-менее значительный опыт "работы на регистрах", даже прототипирование на регистрах пишется почти так же быстро, как и на библиотеках. Ну и первый подход позволяет реализовать всё точно так, как требуется, а второй подход в некоторых ситуациях приводит к тому, что для реализации требуемого приходится либо городить городушки, либо модифицировать библиотечный код, либо ещё как-то выкручиваться. Лично я придерживаюсь первого подхода. 2 Quote Share this post Link to post Share on other sites More sharing options...
artemkad 179 December 23, 2025 Posted December 23, 2025 · Report post 1 час назад, gridinp сказал: конечно стоит, когда заработает можно по частям разбираться с регистрами, можно брать HAL функции + описание и самому оптимизировать исходники Чушь полная. Когда заработает нет никакого смысла разбираться с регистрами. Особенно с учетом того, что громадная работа проведена для освоения HAL и повторять ее для освоения переферии контроллера никто не станет. А не имея понимания как работает оптимизировать что либо тоже возможности не будет. Quote Share this post Link to post Share on other sites More sharing options...
novikovfb 40 December 23, 2025 Posted December 23, 2025 · Report post 9 minutes ago, artemkad said: Чушь полная. Когда заработает нет никакого смысла разбираться с регистрами. Особенно с учетом того, что громадная работа проведена для освоения HAL и повторять ее для освоения переферии контроллера никто не станет. Есть смысл. Можно оптимизировать программу. Можно добиться нужного поведения меньшей кровью (с Миландром пришлось повоевать с DMA) Quote Share this post Link to post Share on other sites More sharing options...
artemkad 179 December 23, 2025 Posted December 23, 2025 · Report post 4 минуты назад, novikovfb сказал: Есть смысл. Можно оптимизировать программу. Можно добиться нужного поведения меньшей кровью (с Миландром пришлось повоевать с DMA) Смысл оптимизировать, если с одной стороны и так работает, а с другой работа периферии не освоена т.к. осваивалась не она, а как заставить работать надстройку. Quote Share this post Link to post Share on other sites More sharing options...
novikovfb 40 December 23, 2025 Posted December 23, 2025 · Report post 5 minutes ago, artemkad said: Смысл оптимизировать, если с одной стороны и так работает, а с другой работа периферии не освоена т.к. осваивалась не она, а как заставить работать надстройку. Во встраиваемых приложениях размер занятой памяти и скорость работы могут быть весьма критичны, а HAL часто занимается тасованием байтов по переменным, что ни память не экономит, ни время. Имея работающую программу, можно посмотреть содержимое функций HAL и переписать критичные куски вручную, напрямую управляя регистрами. Quote Share this post Link to post Share on other sites More sharing options...
dOb 10 December 23, 2025 Posted December 23, 2025 · Report post 27 минут назад, artemkad сказал: Когда заработает А если не заработает? "Не думай о микросекундах свысока" А если в циклограмму не успеваешь? Посмотрел как колбэки сделаны... Quote Share this post Link to post Share on other sites More sharing options...
artemkad 179 December 23, 2025 Posted December 23, 2025 · Report post 12 минут назад, novikovfb сказал: Во встраиваемых приложениях размер занятой памяти и скорость работы могут быть весьма критичны, а HAL часто занимается тасованием байтов по переменным Тогда зачем его вообще осваивать? Может разумнее сразу заняться освоением периферии вместо освоения этой поделки? 12 минут назад, dOb сказал: А если не заработает? Значит все время на освоения прокладки было затрачено зря. Quote Share this post Link to post Share on other sites More sharing options...
novikovfb 40 December 23, 2025 Posted December 23, 2025 · Report post 27 minutes ago, artemkad said: Тогда зачем его вообще осваивать? Может разумнее сразу заняться освоением периферии вместо освоения этой поделки? описание может быть довольно сумбурным: есть в регистре битовое поле MODE, а что оно означает - написать забыли или написали, но не указали, что для этого регистра. Или что для работы JTAG нельзя изменять некоторые биты в регистре, о чем в описании сказано в совсем другом разделе и можно про это забыть. И т.д. и т.п. В этом случае работающая реализация настроек дает конкретный пример, который можно переделать под свои нужды и радоваться Quote Share this post Link to post Share on other sites More sharing options...