Что
такое TINI
и с чем его есть ?
Собственно
говоря TINI является самостоятельной аппаратно-програм-мной
платформой базирующийся на высокоскоростном микроконтроллере DS80C390*
производства
Dallas Semiconductor
и работающей под управлением собственной
OS (если
конечно так можно выразится) базирующийся на основе
Java VM.
Я не опечатался, да, да именно встроенная
Java машина написанная для 51
ядра. |
|
|
Говорить высоким "штилем" к чему можно прикрутить сей
замечательный девайс видимо глупо, применений немерянно (и все дифирамбы можно «прослушать»
на куче сайтов, да в конце концов есть и фантазия) , а я постараюсь описать
свои опыты и ощущения при работе с TINI
(далее если не собьюсь, буду называть ее «машинкой», больно она мне нравится).
Начнем
с ознакомительного курса.
Итак,
вкратце что может «машинка» ? Может (или не может, как напишите софтяру)
справляется с интеграцией довольно медленных однопроводных (и двух и
n-проводных
J)
рассредоточенных сетей с более производительными сетками типа
Ethernet. Во
невидаль скажите Вы, ага, почти, а может ли скажем
PicoWEB (ни в
коем случае не умоляя достоинств последнего) аль ему подобный, легонько так
перебросить пару пакетов из MicroLAN в Ethernet,
принимать команды через WEB
интерфейс и заметнуть данные в
Modbus ? Нет ?
НЕТ !Плюс к этому, SMTP,
плюс FTP в
общем плюсов много, хотя надо признать и не один сплошной плюс, есть и своя
ложка дегтя. Но пока только мед, деготь далее . Если серьезно, то на плате
размером с
SIMM
модуль имеет в своем комплекте интерфейсы:
Ethernet
(полный со всеми формирователями), RS-232
, 1-Wire,
CAN ,
I2C,
SPI
(реализуются программно) и естественно параллельную шину, по сути просто
доступные для Вашей работы стандартные 51-е порты. Вот вкратце описание, теперь
думаю пора перейти от лирики к архитектуре.
АРХИТЕКТУРА
TINI Board
TINI
Board представляет из себя стандартный 72х пиновый
SIMM
модуль на котором установлен так называемый
TINI Chip Set,
базой которого является как уже говорилось выше
DS89C390
(или новый DS89C400,
но на его основе уже совершенно другая плата)
- Машинный цикл за 4
такта
- Максимальная тактовая
частота – 40 МГц
- Встроенный мат.
сопроцессор – 16/32 бит
-
4 Кб встроенного статического ОЗУ
-
4 Кб встроенного статического ОЗУ (ее можно
использовать как память
программ /данных/стек)
-
2 встроенных
CAN 2.0B
контроллера (формирователи не установлены)
-
2 встроенных последовательных порта
-
WDT
(сторожевой таймер)
ну и естественно программная совместимость со стандартными
MSC-51 семейством
К базовыми элементами
TINI относятся:
- Микроконтроллер принадлежащий к очень интересному семейству
High Speed
компании Dallas Semiconductor,
который при прочих равных условиях в 2-3 раза производительнее стандартного
8051. Частота опорного кварцевого генератора на плате составляет 18.432 МГц,
далее внутри самого «чипа» производится удвоение тактовой частоты, т.е. он
(микроконтроллер) фактически работает на частоте 36.864.
-
Флэш-память –
AMD AM29F040B
объемом 512 Кб
-
Статическое ОЗУ – в оригинале
HY628400A
(в моем варианте установлен SEC
K6T4008C1B)
объемом от 512 Кб до 1024 Кб
в зависимости от варианта исполнения (да здравствуют паяльники )
-
Интерфейсы CAN
и UARTы
встроены в сам микроконтроллер, для формирования стандартных уровней
RS-232 на плате
установлен чип DS232A,
для CANа
же требуется отдельный внешний драйвер
-
Так же на плате установлен отдельный контроллер
Ethernet SMC LAN91C96
+ «сетевой» трансформатор + вся необходимая мелочевка для получения полноценно
10Base-T
Ethernet
-
Дополнительно к TINI
можно «прикрутить» внешний контроллер
последовательных портов типа 16C552
и таким образом можно получить дополнительно 2 полноценных
RS-232
-
На плате установлен драйвер внешней однопроводной шины
DS2480
подключенный ко второму UARTу,
который вполне может выполнять роль и второго
CAN интерфейса
-
Естественно всякая обвязка из
EEPROM (DS2433)
и EPROM MAC
адреса для Ethernet
(DS2502)
Память
TINI Board
разделена на 3 сегмента:
-
Сегмент памяти кодов размером
1Мб (0х000000 – 0х0FFFFF)
-
Сегмент памяти данных размером
2 Мб (0x100000
– 0x2FFFFF)
-
Сегмент периферии размером 1
Мб (0x300000
– 0x3FFFFF)
Вся
память у нас распределена таким образом:
-
Bootstrap Loader
(начальный загрузчик)
-
OS
-
JAVA API
- и, ура 64 Кб
для приложений, по умолчанию*NIX
подобная оболочка операционной
среды, называемая slush
( с разговорного аглицкого переводится как
сентиментальная болтовня :-)
В
адресное пространство сегмента данных вписывается ОЗУ где расположена файловая
система (жалко что винт нельзя навесить ..хотя такой проект уже есть) и «куча»
Java VM. При
обесточивании TINI
происходит автоматическое подключение ОЗУ к литиевой батарейки .
Про сегмент флэш-памяти сказать особо нечего и так все ясно. В периферийном
адресном пространстве обитает Ethernet
контроллер и часы реального времени (DS1315).
Все остальное свободное адресное пространство можно и нужно использовать по
своему усмотрению. К примеру как я уже писал выше, можно добавить
последовательные порты, подключить LCD
и еще много чего ( у кого на что хватает фантазии и
денег)в общем остается примерно 920 Кб адресов (во написал, грузите апельсины
бочками…)
Естественно
TINI
поддерживает 1-Wire
интерфейс. MicroLAN двух «веточный», 1-я «ветка» зарезервированная для
внутреннего применения на нее навешаны EEPROM и EPROM
MAC адреса
Ethernet (очень интересная сноска на
это есть в «Лицензионном соглашении» советую прочитать ), вторая «ветка»
подключена через драйвер формирователь
DS2480 и используется для внешних подключений ( с
возможность программирования 1-Wire EEPROM).
С чем есть
TINI ?
Второй
составной частью платформы TINI
является фирменное программное обеспечение. Для
TINI написана
специальная (и сколько я не смотрел похоже единственная)
Java машина и
соответствующие библиотеки Java
классов. При разработке используется свободно
распространяемое программное обеспечение основанное на кросс-платформенном языке
JAVA.
Для программиста доступны основные базовые классы
Java API:
-
java.lang -
java.io
-
java.net
- java.util
Для работы
со специфичными функциями TINI
используются следующие базовые классы:
-
com.dalsemi.system -
com.dalsemi.tininet
-
com.dalsemi.shell
-com.dalsemi.comm
-
com.dalsemi.onewire
Эти
классы являются фирменными и включены в стандартный
freeware пакет ПО для
TINI Board. В
основном они предназначены для поддержки аппаратуры
TINI, обеспечивают сетевую
поддержку, реализуют сервисы типа FTP,
TELNET.
Так же существует множество классов от сторонних поставщиков, в основном
реализованных в рамках программы
OpenSource (встречаются даже такая экзотика, типа -
классы работы с протоколами ModBus
).
Для
непосредственного низкоуровневого доступа к «железякам», программист имеет
возможность использовать так называемый
Native Method, т.е. по сути, писать
кусок наиболее критичного кода на «Нативном», т.е. родном для контроллера языке
ассемблера.
Операционка TINI
состоит из трех основных компонентов:
- Планировщик – процессов
и потоков
-
Подсистема управление памятью
-
Подсистема управление вводом/выводом
Собственно
планировщики работают в циклическом режиме. Каждому процессу (более подробно
организация и ограничения планировщиков описаны в главе «Ограничения» для каждой
конкретной версии TINI firmware) для
работы выделяется 8-миллесекундный интервал , по истечению которого процесс
приостанавливается и помещается в конец очереди. Кучей называется сегмент
оперативной памяти начинающийся с конца системной области и протирается до конца
сегмента данных. В эту самую кучу сваливаются неиспользуемая более память, а
дальше уже трудиться «сборщик мусора» являющийся автостартуемым, независимым
процессом занимающимся освобождением драгоценной для нас памяти в случае если
Ваше приложение явно вернуло выделенную ему память по окончанию работы .
Подсистема
ввода/вывода разделена на две части: одна часть работает с
TCP/IP
стеком, другая обслуживает все остальные
периферийные устройства. И хотя на данный момент реализация
TCP/IP
не является полной, однако поддерживаются все
основные сетевые примочки типа PPP,
TELNET,
HTTP,FTP,SMTP.
Вторая часть обозначенная на рисунке как менеджер ввода/вывода непосредственно
отвечает за работу периферийных интерфейсов
UART,1-Wire,CAN
портами ввода/вывода.
В
принципе думаю для ознакомления с платформой
TINI вполне достаточно и можно
сформировать какое никакое свое мнение. Далее рекомендую прочитать «Главу»
описывающую ограничения TINI Board.
Особо
хочется поблагодарить моего «крестного» за то, что, он купился на мои уговоры и
отдал мне в бессрочное пользование комплект
TINI. Без его консультаций мне было
бы существенно тяжелее осваивать «машинку», да что там говорить студенческие
заработки не позволяют разбрасываться денежками на финансирование интересов
:-).
БОЛЬШОЕ Спасибо, «Дядя Миша»
:-)
|