Kopa 0 15 июня, 2009 Опубликовано 15 июня, 2009 (изменено) · Жалоба исходники spf, особенно compiler и asm. Возможно стоит посмотреть на решения использования Spf4 для разных контроллеров. на базисе spf Форт для MSP430 Возможно, у меня пока каша в голове. Я пока представляю себе процесс следующим образом: 1. Делаю инлайн-(или кросс?)-ассемблер. 2. На основе него строю ядро таргет-системы. 3. На полученное ядро навешиваю остальное "мясо" В разработке выше примерно так и сделано, за исключением, что выходные бинарные коды формируются в файлы проекта для IAR ( что не обязательно ) В tinyboot для интеграции произвольного контроллера, в основном, необходимо создать три модуля - дизасемблер, билдер ( некоторые отличия по функциональности от ассемблера), и поддержку ядра. P.S. Использовать, в полной, степени исходники SPF4 для MSP430 не получится, но как вариант изучения возможной схемы можно. В этом плане можно порекомендовать посмотреть разработку forkа spf4 от mOleg fork spf4 Полдня вчера исходники колупал, в некоторых местах понятно, некоторые - как китайская грамота... У Форта почти нет ограничивающих факторов для конструирования программ:) Изменено 15 июня, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 15 июня, 2009 Опубликовано 15 июня, 2009 · Жалоба Возможно в Scite есть там специально добавляли поддержку Форт языка. ( узнать поподробнее можно на форуме поддержки разработки ) Посмотрел, замечательная вещь вместо вордпада, однако поддержка языков там на уровне подсветки синтаксиса, и форта нет (есть nnCron), но при желании легко добавить свою конфигурацию подсветки. MSP430 TARGET ! или MSP430 TO TARGET Да, точно. выходные бинарные коды формируются в файлы проекта для IAR ( что не обязательно ) Не только не обязательно, а категорически нежелательно. В крайнем случае под GCC У Форта почти нет ограничивающих факторов для конструирования программ:) Вот это и привлекает, причём для построения своей системы или изменения существующей не обязательно перелопачивать горы талмудов типа гнушных мануалов (mspgcc собрать так и ниасилил, видать не дорос пока...) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 15 июня, 2009 Опубликовано 15 июня, 2009 · Жалоба Только что вот наткнулся ещё на одну книжку (pdf) типа сборной солянки из многих источников. FORTH Spirit of Babylon, (С) RU FIG, Понятов Д.А. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 15 июня, 2009 Опубликовано 15 июня, 2009 (изменено) · Жалоба Только что вот наткнулся ещё на одну книжку (pdf) типа сборной солянки из многих источников. FORTH Spirit of Babylon, (С) RU FIG, Понятов Д.А. Раньше этот материал распологался здесь у Понятов Д.А. ( сейчас, похоже, url уже битый ) (mspgcc собрать так и ниасилил, видать не дорос пока...) Можно собрать LCC для MSP с разным выходным кодом. Правда оптимизатор там слабый:) Изменено 15 июня, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 15 июня, 2009 Опубликовано 15 июня, 2009 · Жалоба Возможно стоит посмотреть на решения использования Spf4 для разных контроллеров. на базисе spf Форт для MSP430 В разработке выше примерно так и сделано, за исключением, что выходные бинарные коды формируются в файлы проекта для IAR ( что не обязательно ) а, теперь до меня таки дошло, что там происходит! Осталось разобраться в механизмах... Опять же, очень не хватает "View Definition"... Насколько я понял, исходник, который компилируется, это ~mak/msp430/src.f Однако, не совсем понятно, что именно будет включено в конечный образ. REQUIRE CASE-INS lib\ext\caseins.f : MREAD-FILE READ-FILE ; : MC! C! ; : MC@ C@ ; : MW! W! ; : MW@ W@ ; : M! ! ; : M@ @ ; : M+ + ; : MNEGATE NEGATE ; : MOVER OVER ; : MAND AND ; : MCR CR ; : MEXECUTE EXECUTE ; : MVARIABLE VARIABLE ; REQUIRE >NAME ~mak\LIB\fpc.f REQUIRE NUMBER? ~mak\LIB\fpcnum.f TRUE VALUE QUICK : SL\ POSTPONE \ ; IMMEDIATE [DEFINED] GUI-CONSOLE [iF] : FJB GUI-CONSOLE::FlushJetBuf ; [ELSE] : FJB ; [THEN] REQUIRE TC_?LIMIT ~mak\LIB\THERE\STAT.f MODULE: TC_M REQUIRE T_@ ~mak\LIB\THERE\mthere.f ;MODULE REQUIRE TH_H- ~mak\LIB\THERE\RECOM.F \ REQUIRE CS-! ~mak\ext.f REQUIRE ASMINF_MOD ~mak\MSP430\SRC\ASMMSP.f ~mak\MSP430\SRC\LEX.F ~mak\MSP430\SRC\prefix.f \ EOF \ REQUIRE DISMSP ~mak\MSP430\SRC\DISMSP.f : M\ POSTPONE \ ; IMMEDIATE REQUIRE T-START ~mak\MSP430\SRC\tc.f [iFNDEF] W>S : W>S ( w -- n ) \ Расширение знакового 16 разрядонго числа до 32 разрядного 0xFFFF AND \ удаляем грязь из старших разрядов 0x8000 XOR 0x8000 - ; [THEN] : HH.+ DUP C@ 2 H.R 1+ ; : INST.+ HH.+ ." " ; : MINST ( ADDR1 ADDR2 -- ADDR1 ADDR1 ) \ F7_ED DUP H. 9 EMIT 9 EMIT INST.+ BEGIN 2DUP U> WHILE \ DUP 7 AND 0= IF CR DUP H. 9 EMIT THEN INST.+ REPEAT ; REQUIRE INCLUDED_AL ~mak\LIB\THERE\mlist.f \ DIS-OPT 0 VALUE ROM-HERE 0 VALUE FID CREATE FTST 0x2000 ALLOT CASE-INS ON 0x4000 TO CODE-SIZE 0xFC00 TO T-ORG \ Начальный целевой адрес области кода T-ORG VALUE MT-ORG 0x5000 TO D-ORG \ Начальный целевой адрес области данных 0x5000 CONSTANT SP0@ \ дно стека данных 0x7F00 CONSTANT RP0@ \ дно стека возвратов \ CREATE CS-ORG 1 CS-CELLS ALLOT T-ORG TO INCL-HH ' NOOP TO <PRE> [DEFINED] DBG_STOP [iF] DBG_STOP [THEN] CR .( T-ORG=) T-ORG H. \ S" devel\~mak\MSP430\BLOAD.F" INCLUDED \EOF T-START S" devel\~mak\MSP430\ROM.f" INCLUDED HERE TO ROM-HERE MCR .( ROM=) HERE T-ORG - . .( safasfs) S" F.C" CSAVE S" F.BIN" TSAVE S" F.HEX" T-SAVE \ T-ORG HERE OVER ALSO FORTH - PREVIOUS DISMSP T-STOP Ладно, пойду пока тренироваться на кошках (верблюдах :) ) Там вроде всё прозрачно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 16 июня, 2009 Опубликовано 16 июня, 2009 (изменено) · Жалоба Насколько я понял, исходник, который компилируется, это ~mak/msp430/src.f Однако, не совсем понятно, что именно будет включено в конечный образ. Можно предположить, что содержимое файла rom.f c формированием выходных файлов *.f_al и они и используются при сборке в проекте IAR ещё далее формируются с, bin, hex файлы содержимое FORTH_IMG ( наверное пробный cм. в main если его подключить, то первые байты это код примитива DUP ) ... T-START S" devel\~mak\MSP430\ROM.f" INCLUDED ... HERE TO ROM-HERE MCR .( ROM=) HERE T-ORG - . .( safasfs) S" F.C" CSAVE S" F.BIN" TSAVE S" F.HEX" T-SAVE \ T-ORG HERE OVER ALSO FORTH - PREVIOUS DISMSP T-STOP Ладно, пойду пока тренироваться на кошках (верблюдах :) ) Там вроде всё прозрачно. Удачи!. Опять же, очень не хватает "View Definition"... Хорошо помогает Поиск по словам в Far:) а, теперь до меня таки дошло, что там происходит! Осталось разобраться в механизмах... Да у Михаила свой, неповторимый, способ Форт программирования. Достаточно посмотреть на его макрооптимизатор в spf4 :) Изменено 16 июня, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба Сейчас ещё глянул SwiftX - вот практически эталон того, что мне нужно. Жаль, без исходников... Но кое-что можно почерпнуть. Например, отличный стиль, а также готовые файлы описания периферии (кстати, я имею право их использовать, сохранив копирайт?) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба Сейчас ещё глянул SwiftX - вот практически эталон того, что мне нужно. Жаль, без исходников... Но кое-что можно почерпнуть. Вроде какая то версия для PC имеет исходники Но кое-что можно почерпнуть. Можно при изучении брать материал из разных Форт систем:) ( и не только комерческих ) Например, отличный стиль, а также готовые файлы описания периферии (кстати, я имею право их использовать, сохранив копирайт?) Не знаю, но думаю не возбраняется:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mak4444 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба Можно предположить, что содержимое файла rom.f c формированием выходных файлов *.f_al и они и используются при сборке в проекте IAR Так и есть. ещё далее формируются с, bin, hex файлы содержимое FORTH_IMG ( наверное пробный cм. в main если его подключить, то первые байты это код примитива DUP ) Командами сохранения загрузочного образа: S" F.C" CSAVE S" F.BIN" TSAVE S" F.HEX" T-SAVE Можно будет пользоваться если вся программа будет скомпилирована средствами Форта. В данном примере, часть программы компилируется средстваим IAR . Честно говоря, компиляция конечного модуля в взаимодействии с IAR не очень удобна. При изменении целевой программы в части форта ( devel\~mak\MSP430\rom.f ) требуется запустить TST.BAT затем компиляцию IAR и снова TST.BAT затем компиляцию IAR . Это чтобы правильно установились ссылки. Программа для прошивки данного примера является частью распределенной форт системы. Если контроллер с данной прошивкой подъкрючить к COM порту персоналки, то запустив TST.BAT можно взаимодействовать с удаленным контроллером в интерактивном режиме. Для примера можно запустить TEST.F затем TEST . Для генерации листинга: S" TEST.F" INCLUDED_AL Еще рекомендую комманду E> E> + E> MAIN E> TEST В редакторе, клавиша F11 - гипертекстовый вызов определения форт-слова. Клавиша F12 - вернутся обратно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба Вот такой кусочек из asm.f ( DEFER SOME WORDS FOR EASE IN PORTING TO A CROSS ASSEMBLER ) DEFER CODE-C, ' C, IS CODE-C, ( X -- ) DEFER CODE-W, ' W, IS CODE-W, ( X -- ) ... Что такое DEFER и почему это облегчает портирование? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 17 июня, 2009 Опубликовано 17 июня, 2009 (изменено) · Жалоба Вот такой кусочек из asm.f ( DEFER SOME WORDS FOR EASE IN PORTING TO A CROSS ASSEMBLER ) DEFER CODE-C, ' C, IS CODE-C, ( X -- ) DEFER CODE-W, ' W, IS CODE-W, ( X -- ) ... Что такое DEFER и почему это облегчает портирование? DEFER ИМЯ создаёт векторное слово xt IS ИМЯ определяет его текущее наполнение простой вариант получения xt ' СЛОВО P.S. DEFER ( в spf4 VECT ) часто определяются для использования когда конкретное его наполнение еще не определено, но использование целесообразно. Например в tinyboot DEFER позволяет в процессе использования конкретного контроллера вынести вариантную часть во время настройки на работу с ним не пересобирая базовое ядро кросс системы. Вопросы? Изменено 17 июня, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 17 июня, 2009 Опубликовано 17 июня, 2009 · Жалоба Вопросы? Вопросы появляются в процессе, а не при таких занятиях урывками, как у меня. Сегодня случайно занесло меня в англоязычную педию, разница ощутима. Наши хоть бы для начала английскую версию перевели... Очень развёрнутая статья про форт, оттуда попал на gforth - первое впечатление очень положительное. Особенно от документации. Сейчас докачаю исходники, буду смотреть. С GСС отношения более-менее сложились, по крайней мере легче будет оттолкнуться, чем от пустого места. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 17 июня, 2009 Опубликовано 17 июня, 2009 (изменено) · Жалоба Сегодня случайно занесло меня в англоязычную педию, разница ощутима. Наши хоть бы для начала английскую версию перевели... Что понравилось? Английская версия И в чём русская статья "проиграла"? Русская версия Очень развёрнутая статья про форт, оттуда попал на gforth - первое впечатление очень положительное. Особенно от документации. Сейчас докачаю исходники, буду смотреть. На Си есть ещё много Форт реализаций:) ( BigForth, kforth, ficl, pforth ... ) На асме, например, reva, retro. и ещё интересны разные подходы в других Форт системах:) и близких разработок ( например давнишняя Timbre - из Форта делает Cи код для ускорения ) С GСС отношения более-менее сложились, по крайней мере легче будет оттолкнуться, чем от пустого места. Возможно GCC уже оптимизирует Форт реализации? Было бы неплохо. Изменено 17 июня, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 17 июня, 2009 Опубликовано 17 июня, 2009 · Жалоба Возможно GCC уже оптимизирует Форт реализации? Было бы неплохо. Система работает как компилятор: gforth *.fs [ключи] Ещё бросилась в глаза система автодокументирования по типу doxygen, через \G : save-input ( -- x1 .. xn n ) \ core-ext \G The @i{n} entries @i{xn - x1} describe the current state of the \G input source specification, in some platform-dependent way that can \G be used by @code{restore-input}. (save-input) current-input @ swap 1+; из си перекочевало include, хотя в форте это по-моему require с небольшими нюансами А, нет, нашёл. : include ( ... "file" -- ... ) \ gforth \G @code{include-file} the file @var{file}. name included; : require ( ... "file" -- ... ) \ gforth \G @code{include-file} @var{file} only if it is not included already. name required; Всё-таки разные вещи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 17 июня, 2009 Опубликовано 17 июня, 2009 · Жалоба Насколько я понял из беглого диагонального прочтения доки, есть возможность включения форт-ядра в программы на си (например, в качестве скриптового движка), и есть возможность обращения к сишным функциям и библиотекам из форта. Использование ассемблера в тексте не приветствуется. В данный момент читаю про кросс-компиляцию (пока наиболее актуально для меня, уже хочется что-то склепать). Также упомянута тесная интеграция с emacs, включая возможность компиляции. Тоже интересно. Наконец-то скачал эти несчастные 6 метров (по 1к/с) Попробовал. Убойная штука see !!! "Скриншот" терминала: see code : code header here 8 + cfa, 0 init-asm; ok ok see : : : header (:noname); ok see 2DUP Code 2dup ( $402FE3 ) mov dword ptr 42A6F8 , ebx \ $89 $1D $F8 $A6 $42 $0 ( $402FE9 ) mov eax , dword ptr 4 [esi] \ $8B $46 $4 ( $402FEC ) mov edx , dword ptr [esi] \ $8B $16 ( $402FEE ) sub esi , # 8 \ $83 $EE $8 ( $402FF1 ) add ebx , # 4 \ $83 $C3 $4 ( $402FF4 ) mov dword ptr 4 [esi] , eax \ $89 $46 $4 ( $402FF7 ) mov dword ptr [esi] , edx \ $89 $16 ( $402FF9 ) mov edi , dword ptr FC [ebx] \ $8B $7B $FC ( $402FFC ) jmp 4014A4 \ $E9 $A3 $E4 $FF $FF end-code ok Получается встроенный дизассемблер-дисфорт! Ох...рененная штука! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться