Forth http://fforum.winglion.ru/ |
|
Форт-система для смарт-карт AtMega163+24c256 http://fforum.winglion.ru/viewtopic.php?f=39&t=2868 |
Страница 1 из 1 |
Автор: | Ethereal [ Сб авг 18, 2012 05:41 ] |
Заголовок сообщения: | Форт-система для смарт-карт 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 Но все работает. И упомянутая прошивка для канала классическй музыки Mezzo этот Mezzo открывает.>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 ; Вот это карта для которой Форт : А вот ее схема : Download embedded Ethereal Forth V01.04 for AtMega163+24c256 smart-cards with sources : http://www.karelmasters.com/download/viaforth_v0104.rar |
Автор: | oco [ Вс авг 19, 2012 15:43 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
Цитата: Выложил ее на сайте Пирамида, посвященном спутниковому телевидению. А можно еще куда-нибудь? Влом регистрироваться. |
Автор: | Ethereal [ Ср авг 22, 2012 15:55 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
А, пожалуйста ! Вставил ссылку в самый конец своего сообщения выше. |
Автор: | Ethereal [ Сб авг 25, 2012 15:54 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
Обновил версию в связи с исправлением ошибок в документации и оптимизацией кода. Ссылка на новую версию в первом сообщении топика. |
Автор: | paskal [ Пн авг 27, 2012 22:27 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
Ethereal писал(а): Итак, Форт-система для смарт-карт. Зашивается в смарт-карту, там и работает. Общение с ней происходит через терминал. Через принятый для работы со смарт-картами Phoenix-интерфейс, который подключается к COM-порту. А можно схему этого феникс-интерфейса показать? |
Автор: | Ethereal [ Вт авг 28, 2012 03:02 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
Вот простой его вариант : http://killall.net.ru/wp-content/upload ... oenixs.bmp Взял отсюда : http://killall.net.ru/phoenix-interface ... to-feniks/ |
Автор: | paskal [ Вт авг 28, 2012 19:19 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
Ethereal писал(а): Вот простой его вариант : http://killall.net.ru/wp-content/upload ... oenixs.bmp Что то я не въезжаю как это будет работать. По-моему такая схема феникса не стыкуется со схемой карты выложенной в первом посте. В карте контакты 4 и 8 подключены к mosi и sck соответственно. А на схеме феникса на них ничего не идет. Получается на карту поступает резет, тактовая частота процессора и одна линия данных к порту. Но IMHO этого недостаточно для обмена. Что я не так понял? |
Автор: | Ethereal [ Вт авг 28, 2012 20:05 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
Контакты оригинальной смарт-карты, если карту положить контактными площадками вверх и чипом влево : Контактный пятак Vpp использовался только на самых древних оригиналках на чипе Mc68hc05sc21 от Моторолы. paskal писал(а): В карте контакты 4 и 8 подключены к mosi и sck соответственно. А на схеме феникса на них ничего не идет. Контактные пятаки mosi и sck используются только для прошивания процессора в пиратской карте AtMega.Но не для работы с готовой (прошитой) пираткой или c оригиналкой. Они используются в программаторе, но не в Фениксе. paskal писал(а): Получается на карту поступает резет, тактовая частота процессора и одна линия данных к порту. Но IMHO этого недостаточно для обмена. Почему недостаточно ?Если все без исключения смарт-карты именно так и работают. Через сброс, клок и единственный пятак для обмена данными. paskal писал(а): Что я не так понял? Контактный пятак для обмена данными - есть выход с открытым |
Автор: | paskal [ Ср авг 29, 2012 21:44 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
Разобрался. Я не знал что карты по UARTу обмениваются. А то что контакты идут на MISO, MOSI, SCK сбило с толку - подумал что обмен по SPI. Но есть другая неясность - на чем бы этот форт попробовать. Такой карты у меня нет, да и процессор давно снят с производства. Однозначно, надо пробовать в Протеусе. Но и тут засада. В Протеусе тоже нет модели ATmega163. Ближайший аналог который есть - ATmega16. Поэтому вопрос: а будет ли этот форт работать на ATmega16? |
Автор: | Ethereal [ Ср авг 29, 2012 22:28 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
Не могу сказать уверенно, но похоже он будет работать и на AtMega16. Назови мне все отличия AtMega163 и AtMega16 и тогда я скажу точно. Ну не сравнивать же мне по буквам два даташита. По ключевым местам в даташитах, разницы между ними я не увидел. |
Автор: | WingLion [ Чт авг 30, 2012 15:56 ] |
Заголовок сообщения: | Re: Форт-система для смарт-карт AtMega163+24c256 |
paskal писал(а): одна линия данных к порту линия данных то явно двунаправленная |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |