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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Сб авг 18, 2012 05:41 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Форт-система для смарт-карт AtMega163+24c256


Выложил ее на сайте Пирамида, посвященном спутниковому телевидению. Здесь :
http://viaccessfree.biz/forum/showthrea ... post718924

Итак, Форт-система для смарт-карт. Зашивается в смарт-карту, там и работает.
Общение с ней происходит через терминал. Через принятый для работы со
смарт-картами Phoenix-интерфейс, который подключается к COM-порту.

Терминальные программки для MS-DOS..Win-98 прилагаются. Для более поздних
Windows надо бы написать оконную терминальную программу, да у меня руки не
дошли. Одна из терминальных програмок предназначена для общения с картой,
а вторая для сбрасывания ей на компиляцию текстовых файлов. Исходники
прилагаются.

В Форт-системе используется механизм самоперешивания флеш кодом из флеш
(бутлоадера), который имеется у процессоров AtMega. Т.е. если вы при
работе с данной Форт-системой наберете в терминале
: HELLO ." Hello, world !" ;
то это слово сразу же скомпилируется во флеш.
Откат скомпилированного производится словом MARKER

Форт-система 16-разрядная. Соответствует стандарту ANS-Forth, за исключением
словарей. Я не стал делать стек словарей, поскольку у процессора на борту итак
совсем мало ОЗУ и реализовал некий гибрид словарей из Forth-79 и FIG-Forth.
А точнее сделал так, как прочел в книге Баранова и Ноздрунова.
Шитый код в Форт-системе подпрограммный. Оптимизатор кода ограничивается
вставкой однословного rcall там где это возможно вместо двухсловного call.

Словарь Форт-системы ведется во встроенной в карту 24c256, в самом ее хвосте.
Поэтому после написания приложения он отсекается автоматически. Его можно
стереть, а можно про него просто забыть.

Форт-система состоит из двух частей. Первая часть написана на ассемблере.
Она содержит все примитивы, которые определяют быстродействие системы и
минимальный набор слов, обеспечивающих Форту возможность самораскрутки.
Вторая часть Форт-системы написана на Форте. В ней все слова расставлены в
таком порядке, чтобы каждое последующее слово требовало для своего определения
только слова из предыдущих. Т.е Форт-слова выстроены в порядке самораскручивания.
Для сборки полной Форт-системы вторая часть должна быть скормлена через
терминал на компиляцию первой.

Форт-система проиллюстрирована конкретным приложением для смарт-карты.
А именно - пиратской прошивкой, которая открывает канал MEZZO со спутника
HotBird 12245H идент 007400 системы условного доступа Виаксесс.

Форт-система содержит массу программистской шизы. Например
- Перешивание флеш кодом из флеш идет страницами. Т.е. страница в 128 байт
целиком стирается, а потом в нее прошиваются новые данные. Но менять-то мне
нужно, как правило, только один байт. Программист, начитавшийся Дейкстры,
обязательно задействовал бы для этого дела буфер в ОЗУ 128 байт длиной. Тем
более, что и документация на AtMega163 о том недвусмысленно говорит.
Мной же используется безбуферный метод перешивания единственного байта, пусть
и посредством перезаписи целого блока. Метод шизовый, я его лично придумал.
Буфер я выстроил не в ОЗУ, а на защелках внутренних регистров карты, отвечающих
за запись. Благодаря интуитивному пониманию процессов, что при этом происходят.
- В коде Форт-системы используются rjmp-ы с заворотом по адресному
пространству. rjmp из самых младших адресов до самых старших не дотягивается.
Ну так и не надо дотягиваться. Чтобы попасть в самый старшие адреса из
самых младших нужно прыгать в отрицательные адреса. До них-то рукой подать.
Адресное пространство ведь сложено гармошкой.
- Ассемблерный код написан так, что получающийся после его компиляции HEX
двойного назначения. Он - есть прошивка и для флеш AtMega163 и для 24c256.
- Ассемблерный код всюду оптимизирован самым жесточайшим образом. Повсеместно
код использует побочные эффекты предыдущего кода ради экономии такта и байта. В
результате код с трудом читаем и почти не модифицируем. Все переплетено так,
что тронь и рассыплется. Дейкстра сразу идет лесом.
- В той части системы, что написана на Форте, в одном месте используется вызов
не слова, а части слова. Вот здесь слово S> вызывает часть слова C> :
Код:
: C>
  [F]COUNT [ [F]HERE ] HERE 21 + 2DUP C! TUCK >R
  FOR CHAR+ OVER [F]C@ OVER C! SWAP CHAR+ SWAP NEXT
  2DROP R>
;
: S>  [ COMPILE, ] COUNT  ;
- В той-же части Форт-системы порой используются самые феерические
управляющие конструкции. Но они тщательно подобраны так, чтобы порождать
самый лаконичный шитый код.
Как вам, например, такие архитектурные построения :
Код:
: >NAME
  >R VOC-LINK
  BEGIN
    BEGIN
      [F]@ DUP
      WHILE [ ROT ]
        DUP CELL- [F]@ ?DUP
    UNTIL
    BEGIN
      DUP NAME> R@ <>
    WHILE [ ROT ]
      N>LINK [EE]@ ?DUP
  UNTIL
    REPEAT
        NIP
      THEN RDROP
;
Но все работает. И упомянутая прошивка для канала классическй музыки Mezzo этот Mezzo открывает.

Вот это карта для которой Форт :
Изображение
А вот ее схема :
Изображение

Download embedded Ethereal Forth V01.04 for AtMega163+24c256 smart-cards with sources :
http://www.karelmasters.com/download/viaforth_v0104.rar


Последний раз редактировалось Ethereal Вс мар 03, 2013 18:12, всего редактировалось 16 раз(а).


За это сообщение автора Ethereal поблагодарил: paskal
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Вс авг 19, 2012 15:43 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 196
Откуда: Хмельницкий
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
Цитата:
Выложил ее на сайте Пирамида, посвященном спутниковому телевидению.

А можно еще куда-нибудь? Влом регистрироваться.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Ср авг 22, 2012 15:55 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
А, пожалуйста ! Вставил ссылку в самый конец своего сообщения выше.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Сб авг 25, 2012 15:54 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Обновил версию в связи с исправлением ошибок в документации и оптимизацией кода.
Ссылка на новую версию в первом сообщении топика.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Пн авг 27, 2012 22:27 
Не в сети

Зарегистрирован: Вс авг 26, 2012 17:55
Сообщения: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Ethereal писал(а):
Итак, Форт-система для смарт-карт. Зашивается в смарт-карту, там и работает.
Общение с ней происходит через терминал. Через принятый для работы со
смарт-картами Phoenix-интерфейс, который подключается к COM-порту.

А можно схему этого феникс-интерфейса показать?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Вт авг 28, 2012 03:02 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Вот простой его вариант : http://killall.net.ru/wp-content/upload ... oenixs.bmp
Взял отсюда : http://killall.net.ru/phoenix-interface ... to-feniks/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Вт авг 28, 2012 19:19 
Не в сети

Зарегистрирован: Вс авг 26, 2012 17:55
Сообщения: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Ethereal писал(а):
Вот простой его вариант : http://killall.net.ru/wp-content/upload ... oenixs.bmp

Что то я не въезжаю как это будет работать.
По-моему такая схема феникса не стыкуется со схемой карты выложенной в первом посте. В карте контакты 4 и 8 подключены к mosi и sck соответственно. А на схеме феникса на них ничего не идет. Получается на карту поступает резет, тактовая частота процессора и одна линия данных к порту. Но IMHO этого недостаточно для обмена. Что я не так понял?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Вт авг 28, 2012 20:05 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Контакты оригинальной смарт-карты, если карту положить контактными площадками вверх и чипом влево :
Изображение
Контактный пятак Vpp использовался только на самых древних оригиналках на чипе Mc68hc05sc21 от Моторолы.
paskal писал(а):
В карте контакты 4 и 8 подключены к mosi и sck соответственно. А на схеме феникса на них ничего не идет.
Контактные пятаки mosi и sck используются только для прошивания процессора в пиратской карте AtMega.
Но не для работы с готовой (прошитой) пираткой или c оригиналкой.
Они используются в программаторе, но не в Фениксе.
paskal писал(а):
Получается на карту поступает резет, тактовая частота процессора и одна линия данных к порту. Но IMHO этого недостаточно для обмена.
Почему недостаточно ?
Если все без исключения смарт-карты именно так и работают.
Через сброс, клок и единственный пятак для обмена данными.
paskal писал(а):
Что я не так понял?
Контактный пятак для обмена данными - есть выход с открытым коллектором истоком. Он должен быть подтянут к питанию через сопротивление. И карта и устройство с которым она общается пользуются этим пятаком по очереди, вырабатывая импульсы для передачи данных коммутацией этого пятака на землю.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Ср авг 29, 2012 21:44 
Не в сети

Зарегистрирован: Вс авг 26, 2012 17:55
Сообщения: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Разобрался. Я не знал что карты по UARTу обмениваются. А то что контакты идут на MISO, MOSI, SCK сбило с толку - подумал что обмен по SPI.
Но есть другая неясность - на чем бы этот форт попробовать.
Такой карты у меня нет, да и процессор давно снят с производства. Однозначно, надо пробовать в Протеусе. Но и тут засада. В Протеусе тоже нет модели ATmega163. Ближайший аналог который есть - ATmega16. Поэтому вопрос: а будет ли этот форт работать на ATmega16?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Ср авг 29, 2012 22:28 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 520
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 22 раз.
Не могу сказать уверенно, но похоже он будет работать и на AtMega16.

Назови мне все отличия AtMega163 и AtMega16 и тогда я скажу точно.
Ну не сравнивать же мне по буквам два даташита.
По ключевым местам в даташитах, разницы между ними я не увидел.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-система для смарт-карт AtMega163+24c256
СообщениеДобавлено: Чт авг 30, 2012 15:56 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
paskal писал(а):
одна линия данных к порту

линия данных то явно двунаправленная

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

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


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

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


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

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