Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт окт 19, 2018 10:49

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Форт для PDP-11 (1806ВМ2) + AVR(demo симуляция AVR)
СообщениеДобавлено: Сб июл 13, 2013 15:08 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 891
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
Из ранего описания возможностей среды разработки (далее CР) Форта для PDP-11
Автор оригинальной СР (FF303 - FIRMWARE STUDIO) Брэд Экерт (Brad Eckert).
Код:
          При адаптации среды не везде удалось сделать ее полный аналог, но такой цели и не стояло. В данном варианте она вполне функциональна и может быть без большого труда быть привязана к любому железу использующую команды процессора PDP-11 или аналогов.

Краткий обзор возможностей, среды  разработки: 

1. Возможность разработки мобильного ПО для различных микропроцессоров.
   Уменьшение различий в ПО, связанно с использованием общего макроязыка  (форто-подобный язык) и ассемблеров с общими сходными чертами.
   Высокая мобильность ПО достигается за счет определенной внутренней идеологии среды, которая позволяет гибко использовать возможности СР.

2. Легкая адаптации СР на различные процессорные платформы за счет гибкости  среды  и наличия полных исходных листингов, с возможностью расширения  функциональности СР для приведения ее к заданным требованиям.
   ( на данный момент кроме, проведенной мной адаптации среды для 1806, она поддерживает такие микроконтроллеры как 1816ве51, АVR, Motorola 6032 и др.)

3. Хорошая эргономика, интеграция и документация. (СР является программой для Windows).
   Удобство написания программ в редакторе, исправления ошибок (переход на место ошибки ...).
   Возможность интеграции с Windows программами.

4. Возможность отладки программ на железе из-за имеющегося и поддержанного средой  протокола взаимодействия с блоком (через COM-порт, параллельный, и нестандартные  устройства вплоть до взаимодействия по сети).
   Данный протокол, в частности, позволяет следить за ячейками памяти блока,  снимать данные с записью в файл, строить по ним графики и, кроме того,  выполнять интерактивно пошаговое выполнение программы, (пультовые команды и меню) взаимодействовать с блоком, c возможностью ввода  программ в блок на языке форт.

5. Высокая эффективность программирования встраиваемых систем достигается при  использовании языка высокого уровня Форт(даже без аппаратного форт-процессора)

6. Использование ассемблера данной СР позволяет добиться высокой читаемости и  модифицируемости ассемблерного кода программы.
   Это достигается, в частности, возможностью ассемблера использовать такие структурные операторы как IF, ELSE, THEN, BEGIN, WHILE, UNTIL, REPEAT, CASE,  и мн.др. (т.е. программа структурируется и может не иметь явных меток )

7. Относительно легкий процесс перенос наработанного ПО.
   Имеется возможность при переносе включать бинарные файлы, написанные с использованием другого инструментария.

8. При написании программы на языке форт программа становится переносимой,  по исходным листингам, на любой тип микропроцессора поддерживаемого СР

9. Возможность разработки ПО на ранних стадиях разработки аппаратуры.  При этом у разработчиков аппаратуры есть более удобная  возможность   самостоятельно писать тестовые программы.

10.Дополнительный имеется симуляции процессора, соединение через сом-порт или TCP/IP с основной оболочкой. Симулируемый процессор выступает в качестве  черного ящика. Но допускает написание и пристыковку внешних моделей.  Язык разработки Форт SPF4.

Главное отличие от предыдущего варианта: (ссылки в i-net битые)
Организован интерфейс взаимодействия среды IDE с симулируемым процессором PDP-11 (реализация SPF4+asm) с использованием пункта меню TCP/IP
т.к. ранее используемый вариант с использованием виртуального последовательного порта COМ (при отсутствии реальных на компьютере) на имеющемся железе и с применённым вируального порта VSPEот Eterlogic не получилось запустить (чего то не хватило, а раньше запускался, но тоже не всегда с первой попытки соединения)
Остальное почти не претерпело изменений, (в том числе и закоментированный отладочный код или включающий, например, режим трассировки в программе. За это заранее извиняюсь)

В реализации функции TCP/IP заменяют defered определённые функции COM интерфейса и если закоментировать tspserver.f то останутся активными функции COM порта
Сам код последовательного порта не деактивирован и настроен на COM2 порт. Среда IDE собрана на использование COM1 порта.
При использовании виртуального COM соединения (по используемому) и предотвращения аппаратных конфликтов возможно придётся отключить аппаратные COM порты в Биосе.


Компилировать файл demopdp.ff можно двумя способами

1. запустив 0.bat файл
2. запустив ff.exe и загрузить demopdp.ff

После компиляции создаются файлы rom.bin, rom.asm, demopdp.sav

Сеанс работы с симулируемым процессором:

1. Запустить скомпилированный demopdp.sav файл в симуляторе:
pdp.exe demopdp.sav

2. Запускаем ff.exe
Загружаем demopdp.f
Выбираем тип соединения TCP/IP
Соединяемся с таргет с помощью "красной" таргет соединения кнопки.
После успешного соединения команды Форт языка можно вводить для исполнения на симулируемом процессоре. Также активны и другие
пункты интерфейса (но возможна некоторая нестабильность среды и какие то ошибки среды разработки. Из замеченных особенностей при загрузке файла из среды, при какой то ошибке в файле, не выводит диагностических сообщений в отличии от компиляции того же через bat файл)

Важно: При возникновении "ошибок" экземпляр ff.exe может остаться в списке процессов!!
Запустив пример симуляции и выведя отображение переменных watch target - непрерывная симуляция у меня останавливается через какое-то время с нереагированием ff303 IDE


P.S: Система команд процессорв PDP-11 (1806ВМ2) симулируется почти полностью, за исключением некоторых "незначительных" моментов.
При текущем реализованном соединении через TCP/IP в команде обработке кодов (в цикле ожидания выполнения команд ядром процессора добавлена
"незначащаяся" печать пробела в консоль (может быть и другой символ) т.к. без такого "хака" соединение очень сильно тормозит, а чем и как это обходится не ясно - может кто подскажет)
Скорость соединения приблизительно соответствует не самому скоростному соединению через соединение последовательных портов.
Ядро процессора, по умолчанию, использует скорость 38400.
База исходного кода (source) cреды IDE для компиляции PDP-11 кода, в некоторых "моментах" была изменена.
Близкий аналог PDP-11 контроллер MSP430 и если попробовать его просимулировать, то неясно поможет ли код симуляции PDP-11 и как лучше
его организовать для "гибкой" поддержки симуляции, например, MSP430 при этом. (процессор PDP-11 не очень прост для симуляции и сам компьютер PDP-11, в данной разработке не симулируется, но можно сделать т.к. часть "необходимого" симулируемого функционала PDP-11 осталась в коде и "запустить" PDP-11 в рамках Форт системы)

P.S. В стадии "обкатывания" есть вариант симулируемого процессора AVR c соединением по COM порту с данной средой (тормозов не выявлено)
и имеет ещё "нестабилизированые" моменты и поэтому не выкладывался. (если есть желание потестить и "повылавливать" ошибки или попеределывать, то прикреплён в другом посте далее.

Приложения:
ffpdp

И версия Win32Forth на которой компилируется данный вариант IDE ff303 для PDP-11
Win32Forth6
Для компиляции последним Win32Forth необходимо править исходники для совместимости:) (разобраться конечно можно в дальнейшем)

Прикрепить к сообщению файлы на форуме не получилось (нет данного пункта) и поэтому вложения размещены на свободных ресурсах

Ссылка где можно найти оригинальную и изменённую ff303 для AVR Среда для программирования и внутрисхемной отладки AVR и др


Последний раз редактировалось KPG Вс июл 14, 2013 10:46, всего редактировалось 23 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт для PDP-11 (1806ВМ2)
СообщениеДобавлено: Сб июл 13, 2013 16:32 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1255
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
Залил в облако: ffpdp Win32Forth6

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт для PDP-11 (1806ВМ2) + AVR(демо)
СообщениеДобавлено: Сб июл 13, 2013 18:04 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 891
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
Не удержался:)
fs303m128 + Демонстрационный вариант симулятора классического AVR (пример demoavr кода) (использован SPF4)
Соединение пока через COM порт, в отличии от FFPDP (прикрутить TCP/IP из FFPDP не должно составить труда) и "куча" ошибок (шаг "влево"-"вправо" при "перестройке" проекта может привести к неработоспособности кода , например, нет контроля генерации команд перехода) + незадействованных возможностей, а также нереализованных "хотелок" (прежде всего включение базы других AVR фортов и убирания "лишнего" кода из результирующей прошивки для "маломощных" контроллеров в окончательном варианте и мало ли ещё чего - может встроенную "оболочку" для симулируемого AVR)

Запуск: avr.exe rom.bin (посмотреть, что работает мультизчность код в окне Watch Target - "бинокль" считывается и отображается циклическая переменная)

Симуляция AVR неполная (не сделано mega команд и могут быть ошибки см. форт примитив < ,с чем пока не совсем разобрался
и поэтому немного "хакнул" пока данное место для AVR в вариации Форт ядра). Cимуляция через Форт код с минимальным использованием ассемблера.

Приложено: fs303 for AVR (также на свободном ресурсе) компилируется Win32Forth6 из первого поста.

Наличие соединения с ядром симулятора AVR и "примитивы" языка позволяют его тестировать и исправлять обнаруженные ошибки, а также "включать" возможности ff303 в приемлемом варианте. или изменять возможности IDE. Хотелось бы кроме ядра также дополнить симуляцией периферии и других "девайсов".

P.S. Код fs303m128 в директории source "значительно" отличается от такого в ffpdp. (для PDP были "тонкие" моменты при реализации)
P.P.S. Впечатления и обсуждение "хотелок" в развитие данного подхода можно высказывать и проводить здесь.
Будет хорошим тоном на указание неработоспособных мест или их исправление. Критика и улучшение частей кода не возбраняется.
(т.к. считаю что, прежде всего, лучше иметь работающий код, чем "красиво" и "правильно" спроектированный)


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

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB