Концепция универсального программатора и ее реализация |
Автор ARV | ||||||
23.07.2007 г. | ||||||
Среди огромного многообразия современных микроконтроллеров слегка "особняком" стоят микроконтроллеры семейства AT89Сх051 фирмы Atmel. Это MCS51-совместимые микроконтроллеры с 1, 2 или 4К Flash-памяти программ в компактном 20-выводном корпусе. При этом они содержат встроенный компаратор. Благодаря гармоничной системе команд, неплохому набору встроенной периферии, широкому спектру средств разработки программ, малым габаритам и невысокой стоимости эти микроконтроллеры могли бы стать настоящей находкой для радиолюбителей. Однако, к сожалению, этому препятствует невозможность внутрисистемного (ISP - in system programming) программирования. Причина проста - эти микроконтроллеры используют "полупараллельный" интерфейс программирования с использованием повышенного напряжения, т.е. для их программирования необходим специальный программатор.
Схем программаторов для упомянутых микроконтроллеров известно немало, взять хотя бы публикации в журнале "Радио" (да и в сети их немало), но все они (в разной степени) имеют ряд недостатков:
Кроме вышеизложенных обстоятельств, на разработку нового программатора автора сподвиг так же опыт работы с всем известным программатором PonyProg. Очень даже неплохой продукт все-же обладает и недостатками, причем из-за своей незначительности ужасно надоедающими (ну, как мухи!): путаница с установкой Fuse-битов, бесконечные нажатия на кнопки в окошках типа "Все успешно сделано", полная неинформативность о причинах возникающих ошибок и т.п. К тому же полная "закрытость" проекта - раз любимый контроллер автор PonyProg не счел нужным поддерживать, значит, так тому и быть, ничего не поделаешь... Ну, а раз так - надо сделать свой программатор, и точка. Но, как водится, "целовать - так королдеву, воровать - так миллион", поэтому было решено не ограничиваться программированием какого-то набора микросхем, а поставить более высокие цели. Итак, вот требования к программно-аппаратному комплексу для программирования устройств (да-да, не микроконтроллеров, а более широко - в принципе, любых электронных программируемых устройств), которые были поставлены:
Для реализации поставленных задач после длительного обдумывания был разработан, как мне кажется, ранее ни разу не использовавщийся подход, который чем-то напоминает объектно-ориентированный подход в обычном программировании. Суть его в следующем. Если абстрагироваться от внутренней архитектуры, то любые программируемые устройства (от микросхем ПЗУ до мобильных телефонов) можно представить как совокупность неких наборов непрерывных блоков данных, каждый из которых имеет определенный размер (в рамках одного устройства, разумеется) и определенную функциональную значимость, при этом обладает определенным набором свойств, которые в свою очередь определяют набор действий, которые могут быть выполнены над содержимым этого блока.
Поясню на примерах.
Надеюсь, подход ясен. Теперь, используя абстрактные "блоки" с их свойствами, любые операции по программированию любых устройств можно свести всего к четырем (!!!): чтение блока, запись блока, стирание блока, стирание всего устройства. Более того, раз блоки абстрагированы от конкретной аппаратной архитектуры устройства, то в некоторых случаях можно использовать не традиционное двоичное (шестнадцатиричное - не суть!) предстваление данных блока, а существенно более вразумительное смысловое представление. Простой пример: при любом раскладе, установка той или иной комбинации конфигурационных битов всегда может быть описана "человеческим" языком, т.е. вместо традиционного "установить биты RSE, BODEN и LB1" (взято с потолка), используем фразу "режим сброса при понижении питающего напряжения". При этом пользователю вовсе не нужно знать, как именно эти (или те) биты "устанавливаются" (программированием "0" или "1" - вспомните Fuse-биты в PonyProg!). Если пользователь понял, что за функцию он использует, этого и достаточно - конкретную "установку" делает программа! Естественно, традиционный "низкоуровневый" подход так же может быть сохранен. Собственно, о принципе все. Конкретно первая версия программатора ChipBoom уже создана (см. проект ChipBoom) и реализует вышеизложенный подход к работе с блоками. Универсальность оболочки достигается использованием системы плагинов, которых предусмотрено 3 типа: плагины программатора, плагины формата ввода-вывода и плагины дополнительных функций. Сведения о том, какие именно блоки и с какими свойствами есть у того или иного устройства, ChipBoom получает из плагина программатора. Смысловое предстваление данных того или иного блока так же определяется плагином программатора. Этот плагин отвечает так же за реализацию протокола программирования каждого из блоков и за интерфейс с аппаратной частью. Плагины могут поддерживать одно или несколько устройств, а так же один или несколько вариантов схем аппаратных программаторов. Оболочка ChipBoom содержит необходимые средства для выбора и конфигурирования плагинов. Аппаратная поддержка разлячных программируемывх устройств реализуется различными адаптерами. В настоящее время основной упор делается на простейшие схемы адаптеров, но ничто не препятствует применять и более сложные "профессиональные" схемы.
Для работы с различными файлами данных служат плагины другого типа - плагины формата ввода-вывода, которые отвечают за преобразование файловых форматов во внутренний двоичный формат. Таким образом, можно реализовать работу с файлами любых типов. Помимо базовых функций "чтение-запись-стирание" оболочка ChipBoom содержит некоторый набор сервисных функций (например, заполнения блока одинаковой последовательностью данных). Дальнейшее расширение функциональности так же реализовано при помощи плагинов дополнительных функций. Уже разработано несколько различных плагинов всех трех типов, а так же несколько адаптеров поддержки различных популярных микроконтроллеров и микросхем памяти i2c. Все имеющиеся плагины, а так же схемы адаптеров, и другие материалы размещены на сайте в соответствующих разделах: файловом архиве и проектах. Эпилог Проект ChipBoom - открытый проект. Особая надежда на поддержку широких масс: в одиночку автор не в состоянии быстро разработать адаптеры и соответствующие плагины для всего того многообразия программируемых устройств, что активно используется любителями и профессионалами! Вы можете посодействовать развитию проекта! Если у вас есть собственные наработки схем программаторов и ПО для их работы, то (на определенных взаимоприемлемых условиях) возможна интеграция(адаптация) их в(для) ChipBoom. При этом соответствующий плагин вы сможете сделать самостоятельно (если у вас имеется опыт в разработке DLL). Так же буду благодарен за любые советы, вопросы, замечания, критику и т.п., т.е. за все, что поможет усовершенствовать ChipBoom. Добавить в любимые (0) | Просмотров: 34739
Только зарегистрированные пользователи могут оставлять коментарии. |
« Пред. |
---|