189 похожих чатов

Прошу прощения за возможно глупый вопрос, но все же. Есть

какие-то рекомендации по тому, как в пределах проекта организовывать зависимости между файлами? Просто столкнулся с тем что нужно написать как можно более легко портируемую библиотеку (обязательные условия - api интерфейса связи микроконтроллера и чипа - cmsis-driver I2c, а так же api cmsis-os2 для всех функций ос) для одного чипа и застрял на прерываниях. Функции-обработчики прерываний от периферии микроконтроллера живут вроде бы в отдельном своем файле. В файлах моей библиотеки есть функция обработчик события. Осталось совместить, но как то я не уверен что в лоб в файле с обработчиками прерываний писать #include "Stupid_library.h" это красиво. Вообще накопать какую-то литературу с примерами по архитектуре по для микроконтроллеров оказалось не так просто.. Да и висит вся эта история на i2c который могут и другие потоки использовать. Логика шепчет что нужен мутекс, но как и где его создать и передать кому и куда непонятно
Сейчас нашел книжку Embedded Systems Architecture (Daniele Lacamera), но если у кого-то есть пример организации проекта, то это было бы очень кстати

7 ответов

11 просмотров

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

Maxim-Khodnenko🌈 Автор вопроса
Serg
Низкоуровневый драйвер i2c, использующий мютекс -...

получается, стоит завести на каждый физический интерфейс по потоку?

если потокобезопасное,то можно иметь слой драйверов для операционки,как это сделано в esp idf

Maxim-Khodnenko🌈 Автор вопроса
Serg
Низкоуровневый драйвер i2c, использующий мютекс -...

Вроде как реализация драйвера у меня есть, cmsis-driver. Сделать для него прослойку, в которой инициализировать мютекс и интерфейс через который потоки смогут перехватывать контроль над i2c в принципе можно..

Maxim-Khodnenko🌈 Автор вопроса
Roman
если потокобезопасное,то можно иметь слой драйверо...

Хотелось бы да, потокобезопасное. В идеале еще и всю "бизнес-логику" вынести в непривилегированные потоки

Вызов interrupt call back тз прерывания, их по месту надо будет вставлять и вск

Maxim-Khodnenko🌈 Автор вопроса
Andrey Ermakov
Вызов interrupt call back тз прерывания, их по мес...

Ну получается что нужно создать ещё один уровень, который будет иметь доступ к библиотеке, связанной с чипом (чтобы взять оттуда функцию обратного вызова) и доступ к всякому там hal_exti для структур, связанных с прерываниями. Что-то такое и думал, спасибо:)

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта