Evgeny_CDАрхитектор (05.01.2010 01:20, просмотров: 174) ответил teap0t на Скажите, господа, не встречали ли вы чего либо подобного M$ Foundation Classes, но для аппаратуры? Какой-нибудь стройной системы формального описания железа, отвязанной от конкретной аппаратной реализации.
Готовой такой системы нет. И непонятно, когда она будет - это если в варианте переносимости между семействами. Чтобы понять всю сложность такой затеи, попробуйте написать код законченного приложения на С, который бы одинаково успешно скомпилировался под PIC18|PIC24|dsPIC|AVR|Cortex под всеми возможными компиляторами для этих платформ :)
Принципиально решения у такой задачи два:
* С++
* кодогенераторы
На С++, конечно, можно навернуть любой уровень абстракции, но: С++ существует для существенно меньшего числа платформ, чем С, и накладные расходы на С++ малопредсказуемы. Т.е. в общем случае надо смотреть, что там компилер наворотил, и насколько это допустимо.
Как тут уже много раз писали, отладка C++ кода в embedded варанте - довольно тоскливое занятие. Преде всего потому, что каждой строке кода на С несложно сопоставить конкретные объекты в памяти контроллера (код и данные), а вот для С++ привязка всей этой виртуальности к реальным адресам куда сложнее.
Кодогенераторы - это более перспективное, но малоразвитое направление. Суть в следущем
* есть библиотека готовых элементов на С, например. Для каждого элемента этой библиотеки четко прописано:
- что использует от OS
- что экспортирует во внешний мир (типы данных, глобальные переменные, макросы, функции)
- что импортирует из внешнего мира (чтобы выстроить таблицу зависимостей и автоматически включить все нужное)
- зависимости от параметров конфигурации - условная компиляция и пр.
Код целевого приложения пишется на некотором специализированном языке, к С в общем случае отношения не имеющему, в котором прописываются связи между описанными выше элементами и параметры конфигурации.
Затем запускается кодогенератор, который из этого метафайла синтезирует исходник на С.
Это отчасти на поминает С++, но гораздо более прозрачно и управляемо.
Если Вы сделаете такое - Вам просто памятник при жизни поставят.