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