ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
842780 Топик полностью
Связанные сообщения
АрхитектураHal
LL vs Registers - стоит ли заморачиваться LL? Посмотрел на LL примеры для stm32, он дает достаточно длинный и сложный на первый ...2024-05-04
Подскажите как сейчас правильно организовать в микроконтроллере программные таймеры?2020-10-23
При наличии полноценного компилятора не при чём (не хуже чем 16 бит). Но как правило с этим проблемы. Для всех кроме AVR у многи...2020-02-28
Выводы контроллера всегда управляются в контексте управления каким-либо более крупным аппаратным ресурсом. I2C-шиной, например. ...2019-12-17
Железо нужно симулировать не на уровне битов и фронтов сигналов, а на уровне высокоуровневых операций (например, чтение-запись б...2019-11-07
Да, примерно об этом я и думаю. Что систему КА можно запускать параллельно, на пуле потоков, по выбирая готовые к запуску по мер...2019-10-22
Как запустить параллельную систему КА написано у Шалыто лет 20 тому назад. Впрочем и самому додуматься можно. Тема уже изъезженн...2019-10-22
Ровно наоборот. Конечные автоматы подразумевают ЯВНОЕ выделение всех возможных состояний программы (как множества состояний сист...2019-10-21
Выскажу ещё раз: FreeRTOS сырая недоделка, смысла особого, без реализации ряда перечисленного (см. ниже) не имеет и, хуже того, ...2019-10-18
От проекта зависит. Насколько чётко выделена аппаратно-зависимая часть и насколько абстракции используемые в старом проекте реал...2019-05-24
Собственно можно код запускать в эмуляторе процессора (qemu), которому привязать симуляцию нужной аппаратуры, или заменить HAL н...2019-02-06
Подход, если не нужно реальное вытеснение (т.е. критично время реакции), порочный: сложные системы в "больших компьютерах", наоб...2015-09-12
Одни абстракции заменяются на другие, которые тоже нужно учить, документировать и запоминать, учитывать возможные побочные эффек...2015-07-23
Жалкая паделка финских студентов написана на 100% на C, из ассемблера только вектора прерываний, crt и ещё мелочи, в C30 v3.31. ...2014-04-10
Да, трэш угар и содомия. Иногда абстракции через край, поэтому я имею такое мнение, что иногда и не грех в исходники прямо вписа...2013-12-29
Не совсем. Над HAL может быть ещё один слой, уже нужный для совмещения разных программных интерфейсов. Т.е. есть модуль A, котор...2013-10-25
Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг...2013-07-31
Топик посвящён программированию микроконтроллеров в условиях необходимости экономии электроэнергии и архитектуре ПО в целом.2011-10-24
Полезны аж 3 прослойки (ассемблеристам дальше лучше не читать):2011-10-13
Тут очень любят рассуждать о RTOS и всём таком. Но как-то массово замалчивается, что стандартная C-библиотека для неопределённог...2011-08-13
fk0легенда (23.05.2018 10:19, просмотров: 693) ответил evgeniy1294 на Что такое синтетические порты?
Когда ПО прибора запускается на обычном ПК. Для этого обычно ПО разделяется на два слоя, как минимум: платформо-независимый (большая часть, условно 90%) и уровнь абстракции (HAL, 10%). Последний отдельно реализуется для МК и для ПК (где симулируется работа аппаратуры). Так же пишутся тесты для HAL, чтобы отладить HAL на МК. ПО прибора же отлаживается по большей части на ПК с использованием доступных на ПК средств отладки (http://caxapa.ru/789975.html) и потом переносится на МК и почти сразу работает. Уровень HAL стоит стремиться отделить не на уровне регистров и GPIO характерных для конкретного прибора, а несколько более общим (что позволяет, потенциально, другую реализацию, другим образом, на других МК). Но при этом не нагружать HAL слишком сложной логикой (больше отлаживать на МК). По-возможности HAL не должен хранить состояние и реализовывать какую-то логику управления, а должен только выполнять какие-то конкретные действия со стороны высокоуровневой программы, которая должна реализовывать логику, но не иметь возможности непосредственного выполнения каких-либо управляющих воздействий. С другой стороны абстракция должна быть достаточно общей, не слишком привязанной к конкретным техническим решениям. Из-за этого может возникать трёхслойная архитектура: * управляющее ПО верхнего уровня (не зависит от аппаратуры); * модуль, реализующий абстрактный интерфейс для ПО верхнего уровня, и при этом управляющий аппаратурой конкретного типа (хранит состояние, содержит логику управления) без привязки к конкретной реализации в железе (использует HAL нижнего уровня); * уровень HAL связанный непосредственно с аппаратурой. Например, в случае управления нагревателем, на уровень HAL выносятся функции измерения температуры и включения/выключения нагревателем. А алгоритм управления остаётся в платформенно-независимом коде. Или в случае управления электродвигателем, возможно, полезна будет трёхуровневая архитектура: на нижний уровень HAL выносятся функции управления H-мостом, например, в промежуточном уровне находится алгоритм управления двигателем конкретного типа (шаговый, BLDC, коллекторный) и через свой интерфейс позволяет задание скорости/позиции, чем уже пользуется ПО верхнего уровня.
[ZX]