OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 23:44

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 30 Июль, 2012 10:36 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
BlackBox как компилятор для микроконтроллеров начиная с ATMega16.

Уважаемые коллеги.

Видимо, назрела еще одна платформа, на которой можно применить BlackBox. Разработка программ для однокристальных микроЭВМ (микроконтроллеров) занимает значительную часть времени при разработке электронных устройств. При этом многие недостатки языков программирования ассемблера и Си давно исправлены в BlackBox. Наличие средства разработки, по удобству равного BlackBox, намного облегчила бы задачу разработок прошивок. Существующие компиляторы MicroPascal и EmbeddedPascal, видимо, сделаны не очень качественно. Компилятор Astrobe для языка Oberon-07 для довольно дорогого микроконтроллера Cortex M3 показывает, что можно успешно применять обероноподобные языке для однокристальных микроЭВМ.

Компилятор BlackBox, как известно, состоит из трех частей:
1) синтаксического анализатора;
2) древовидной структуры данных;
3) кодогенератора.

В компиляторе gcc древовидная структура данных построена на основе шаблонов (template), то есть, по сути заменой одних кусков текстов другими. По сравнению с ней структура данных BlackBox, построенная на основе типизированных указателей на записи, намного удобней (трудней сделать ошибку). Можно прямо TRAPом останавливать и смотреть внутреннюю структуру данных или распечатать рекурсивным алгоритмом. И при этом для gcc есть компиляторы для микроконтроллеров Atmel. Что мешает сделать компиляторы для микроконтроллеров на основе BlackBox!

Дополнительные помогающие факторы:
1) ассемблер для микроконтроллеров применяется довольно часто (в то время как для настольных компьютеров сегодня ассемблер применяется редко). В свое время Линус Торвальдс начал разрабатывать свою открытую операционную систему именно с целью изучения ассемблера для i386. Таким образом, кто не хочет вернуться к старым пробелам программирования после BlackBox и в то же время хочет в совершенстве освоить микроконтроллеры, могут совместными силами разрабатывать компиляторы для микроконтроллеров на основе BlackBox;
2) после большой практики разработки компиляторов для микроконтроллеров на основе BlackBox будет намного легче сделать самим 64 битную версию BlackBox, которая актуальна в линуксовой версии при массовом засилье 64 битных хостингов для web-приложений;
3) разработка программ для микроконтроллеров открывает для программистов мир производства товаров массового потребления, рынок которого имеет намного больший объем, чем рынок программного обеспечения;
4) сами микроконтроллеры и программаторы очень дешевы (100 р. и 900 р. соответственно), для программиста не проблема покупать их для экспериментов и таким образом инвестировать в свой бизнес по производству электронной техники.

Какие могут быть предложения для реализации?

1. Если делать серию компиляторов, для каждого должен быть свой модуль SYSTEM, так как в разных микроконтроллерах есть разное количество портов, периферийных устройств и т.д.
2. Кроме непосредственно компиляторов часть ассемблерных команд надо вывести в библиотеки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Июль, 2012 16:36 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Тут вот какие мысли возникают.

1) Значит, ББ расширяется разработкой сменных (или переключаемых) кросс-компиляторов (в асмы, отличающиеся от представляющих СК/архитектуру исполняющей платформы). А какой ЯВУ разработки принять? КомПас? Оберон-07? иной? Один для всех целевых платформ или разные?

2) Одним из ключевых обоснований идеи м.б. использование подхода ББ к документированию (ТКИ-комплексдоки). В то же время у практиков программирования МК есть и такой опыт, как отражён здесь и здесь. Быть может, ещё один путь повышения удобства для разработчика - дать ему схемные представления ЯВУ-текста? Возможно, прежде всего для "проявления вещей, неочевидных в тексте", как говорил Илья?..

3) Иной раз нужно будет и для МК программировать системы процессов, могущих протекать и параллельно. И механизмы взаимодействия, видимо, хорошо бы включить в библиотеки (в т.ч. и асмовые варианты где-то)?..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Июль, 2012 16:46 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
Как среду разработки конечно можно и нужно.

Это идея бродит у меня уже давно. Язык можно взять Оберон-0 (где-то лежат исходники).
Схема получается такая:
Исходный текст -> [СКАНЕР] - Поток токенов, сохраняемый в файл (Токен-файл);
Токен-файл -> СИНТАКСИЧКИЙ АНАЛИЗАТОР (ПАРСЕР) -> Синтаксической дерево, сохраняемое в файл (СД-файл);
СД-файл -> ОПТИМИЗАТОР 0-уровня -> СД-файл;
СД-файл -> КОДОГЕНЕРАТОР блоков -> Объектный файл (О-файл);
О-файл -> СБОРЩИК -> исполняемый образ.

Таким образом под каждую платформу можно иметь набор Парсер + Кодогенератор + Сборщик.
----
А вот использовать КП для программирования МК - нет.

Во-первых, сходу отпадает поддержка динамической памяти, а значит и нужно ограничить использование указателей. Вопрос что и как ограничивать. Во-вторых стандартных численных типов данных не достаточно, нужно расширять (не надо говорить o SYSTEM). А из этого вытекает и расширенная поддержка операций с этими данными. В-третьих, необходима поддержка ассемблера, как встроенная в язык, так и объектных файлов. В-четвертых, язык должен быть однозначно ориентирован на статическую модель.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 31 Июль, 2012 06:48 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Язык, конечно, не Component Pascal, так как там слишком много чего для микроконтроллеров. Можно посмотреть, как сделали в Oberon-07.

Было бы хорошо иметь языковой общий знаменатель, чтобы была возможность разрабатывать
модули, применяемые как для программ для i386, так и для микроконтроллеров,

отделяя платформозависимый код в отдельные модули.

А среду лучше построить на основе расширения BlackBox. Как, например, пишутся сейчас консольные программы для Linux в BlackBox для Windows.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 03 Август, 2012 20:51 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Вот хорошо это (общий знаменатель и смена языков ВУ и кода), судя по всему, сделано в структурном редакторе: viewtopic.php?p=72098#p72098 ... но это другой продукт...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB