Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[13]

8 Операционная система OS

Теперь реализуем два метода:

:N0NAME ( о -- )>R R@ х @ R@ у @ AT-XY R@ text @ R> len @ TYPE ;

button defines draw

:N0NAME ( addr u о -- ) >R 0 R@ x ! 0 R@ у! R@ len ! R> text ! ; button defines init

В качестве примера наследования определим класс bold-button без новых переменных и методов

button class end-class bold-button

: bold27 EMIT ." [lm" ;

: normal27 EMIT ." [Om" ;

:N0NAME bold [ button :: draw ] normal ; bold-button defines draw

И наконец некоторый код, демонстрирующий создание объектов и применение методов:

button new CONSTANT foo s" thin foo" foo init foo draw

bold-button new CONSTANT bar s" fat bar" bar init bar draw

8 Операционная система os

Операционная система os32 - система программирования на Форте для встраиваемых яя

;тем , построенная на основе е оптимизирована под язык Форт.

систем , построенная на основе виртуальной стековой машины , система команд которой

• Крайне высокая переносимость между разными компьютерами и ОС - ядро системы (интерпретатор байт-кода) переписывается под любую хост-систему35 всего за несколько часов.

или в целевой компилятор.

защиты данных, контроля работы программы в процессе выполнения.

32полный комплект исходных текстов см. http: akps.ssau.ru/forth/os/

33embedded

34чисто программном интерпретаторе байт-кода без какой-либо компиляции в машинный код реальной машины типа JIT

35железо и ОС

версия 26 октября 2005 г.ФОРТ


Основное средство разработки - целевой компилятор36, написанный в виде расширения стандартной форт-системы.

К сожалению, авторы компиляторов C++ пока не изъявили желание сделать кодогенератор для os.

При необходимости вы можете написать собственную верцию целевого компилятора, который будет генерировать настоящий машинный код целевой платформы, при условии что ваши программы на работают напрямую с байт-кодом и словарем,

Это условие не выполняется для самомодифицирующихся программ, в том числе и для интерактивной форт-системы, которая в дальнейшем возможно кем-то будет написана. Если написать такую форт-систему, она совместит в себе интерпейс командной строки, монитор, средство on-board разработки и ручного управления, загрузчик конфигурационных файлов (если движок их поддерживает) и т.п.

Движок os позволяет очень легко использовать любые возможности хост-платформы (железа и ОС, на которой работает виртуальная машина), а в некоторых случаях получить функциональность, не поддерживаемую хост-системой (например многозадачность или распределенные вычисления на нескольких процессорных узлах).

8.1Байт-код

os использует подпрограммный шитый код, причем используются не машинные команды, выполняемые аппаратно, а команды виртуальной машины (байт-код). Эта технология также используется некоторыми форт-системами, и называется tokenized threaded code (ТТС) или switched threaded code. Набор команд и архитектура ВМ оптимизирована для языка Форт, в частности все команды выполняют действия, аналогичные небольшому набору форт-слов из CORE WORDSET стандарта языка.

8.2Движок для DOS на C++

Дистрибутив37 включает пример виртуальной машины для DOS, написанной на Borland СП-Ь 3.1. Выбор этого варианта был сделан исходя из простоты работы с полноэкранной графикой и 16-битной разрядности ОС, которая очень близка к реальным встраиваемым системам и иногда в них применяется.

9 Паяем самодельный компьютер

9.1 Модель микропроцессора Almel AVR (ATmega8515) на Форте

В последнее время я увлекся программированием самых маленьких компьютеров, доступных сейчас в магазинах - микроконтроллеров AVR (Atmel). Всего за $5-10 вы получаете маленький компьютер, который можно использовать для сбора данных с датчиков, например отслеживать изменение температуры на улице с небольшим интервалом, управлять окнами с электроприводом в зависимости от температуры в вашей домашней теплице, ну и в конце-концов можно сделать электронные часы с десятком будильников, срабатывающих в нужное вам время.

Чтобы получить минимальную работающую систему, нужно всего лишь купить чип AVR (я предпочитаю АТ*8515 в корпусе PDIP) и источник питания 5 В (несколько батареек, аккумуляторов или сетевой блок питания и стабилизатор КР142ЕН5А или 1705).

36ассемблер стековой машины

37http: akps.ssau.ru/forth/os/

ФОРТверсия 26 октября 2005 г.


Уже в этой комплектации это достаточно функциональное устройство управления. Не обязательно даже подключать кварц - достаточно встроенного генератора на RC-цепочке, если не нужна высокая скорость или ее стабильность (частота генератора зависит от температуры).

Для программирования AVR нужно спаять простенький кабель-программатор на LPT-порт вашего компьютера38, подробное описание которого см. на [akps] в разделе "Железо для ничинающих".

Для программирования AVR через LPT-кабель я использую программу avreal, а для разработки прошивок пакет AVR Studio и маленький набор форт-примочек, который и будет описан в этом разделе книги.

Этот раздел послужит примером практического использования Форта именно в той области39, для которой этот язык был первоначально разработан и применяется до сих пор.

9.1.1 Краткое описание архитектуры AVR

AVR - 8-битный RISC микропроцессор, поставляемый фирмой Atmel40.

Для хранения данных и операций с ними используются 32 8-битных регистра R0-R31.

В модели для хранения регистров используем байтовый массив

CREATE reg 0x20 ALLOT reg 0x20 0 FILL

При выполнении слова reg ( - addr ) на стек будет положен адрес первого элемента массива - регистра R0.

Для работы с регистрами определим несколько вспомогательных слов:

: r@ ( idx -- value ) \ прочитать содержимое регистра reg + СО

: г! ( value ide -- ) \ записать регистр reg + С!

Операция reg + ( idx - addr ) выполняет разиндексацию одномерного байтового массива reg, то есть возвращает линейный адрес элемента reg[idx], (idx=0..31) в адресном пространстве форт-системы.

9.2 Кластерная сеть на последовательной шине UARTnet

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

Самый простой вариант объединить несколько контроллеров (узлов) в сеть - использование кольца, соединив входы и выходы порта UART каждого узла, и добавив в прошивки всех узлов кучка кода, который должен

38если у вас есть свободный ISA-слот, желательно поставить в него старую мультикарту с LPT, a LPT на материнской плате отключить - если вам не повезет, и вы спалите LPT-порт, дешевле заменить мультикарту (100 р зу пучок), чем менять материнскую плату

программирование встраиваемых систем 40http: www.atmel.ru

версия 26 октября 2005 г.ФОРТ



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15]