Как собрать Forth для встраиваемых устройств

До сих пор я только что нашел эту статью, которая дает руководство для достижения этого: ДВИЖЕНИЕ ВПЕРЕД. Часть 1: Проектные решения в четвертом ядре

  1. Есть более свежий гайд?

  2. Какой Форт лучше для этой цели?

Я планирую использовать его с PIC16F877A, и я знаю, что PicForth существует, но это всего лишь компилятор, а не система для связи с окном терминала через последовательное соединение (поэтому я собираюсь использовать Forth).

Похоже, PIC16 не подойдет для pForth; Я обновил свой ответ, чтобы порекомендовать PIC32.

Ответы (3)

Взгляните на Mecrisp Forth . Я использовал его на микроконтроллерах STM32.

Он компилируется примерно до 25 КБ и, вероятно, требует много работы (язык ассемблера), чтобы заставить его работать на PIC32. Но если вы это сделаете, у вас будет быстрая небольшая реализация Forth. Если вы это сделаете, дайте мне знать.

Это стоит посмотреть, так как это самая передовая реализация Forth, которую я видел.

Даже самые маленькие детали STM32 на несколько порядков больше, чем у PIC16, на который хотел ориентироваться автор.
Не размещайте личную информацию в ответах
Я нашел то же самое и использовал stm32f103, так как они имеют одинаковую цену, но я использовал пользовательскую версию с непрямой потоковой передачей и использовал код из mecrisp «компилировать в RAM и FLASH», jones forward «model» и hforth «multitasking». Я использовал непрямую поточность, чтобы ее было легко портировать, и я думаю, что оптимизация - это не очень хорошая идея: «внедрение ассемблерного кода - хорошее решение для кросс-компиляции». Кстати, mecrisp четвертый очень хорош, см. этот документ hightechdoc.net/mecrisp-stellaris/_build/html/…

Возможно, вы захотите попробовать pForth , переносимую реализацию на C. PIC16F877A имеет 14 КБ флэш-памяти и всего 368 байт ОЗУ, поэтому pForth никак не подойдет. PIC16F877A также имеет 16-уровневый аппаратный стек, используемый только для адресов возврата, и не имеет стека параметров. Эти ограничения, вероятно, в любом случае исключили бы использование PIC16 для pForth, даже если бы вы могли получить его с достаточным количеством флэш-памяти и оперативной памяти.

Основываясь на ответе gbarry, похоже, вам понадобится микроконтроллер гораздо большего размера для pForth. Вы также можете пропустить PIC18 (максимальный размер программы которого составляет 128 КБ), а также PIC24 (который также имеет максимальный размер 128 КБ) и использовать PIC32. PIC32MX170F256B имеет 256 КБ флэш-памяти и 64 КБ ОЗУ и стоит менее 4 долларов . Однако он поставляется в 28-контактном DIP-разъеме вместо 40-контактного.

Вы также можете ознакомиться со следующими книгами:

Программирование проблемно-ориентированного языка: Форт - как работает внутреннее устройство Чарльза Х. Мура (первоначального создателя Форта)

Эта книга доступна только в виде книги Kindle, но вы можете получить бесплатную программу для чтения для ПК и большинства портативных устройств, таких как эквиваленты iPhone, iPad и Android.

Методы применения Forth: тетрадь курса , 5-е издание Элизабет Д. Разер (которая была соучредителем Forth, Inc.)

По совету @tcrosley я скачал pForth, скомпилированный под OS X, а самостоятельный образ весит 180 Кб. Это один из нескольких камней преткновения, которые не позволили мне реализовать цель, аналогичную цели автора. Только я уже 15 лет пытаюсь :) Большинство слишком большие, у некоторых нет интерпретатора, некоторые не на C, некоторые не собирались, некоторые ожидали среды Windows и так далее.

Информация, предоставленная Брэдом Родригесом, по-прежнему применима для создания ряда систем FORTH. Я ничего не знаю о каких-либо обновлениях, а так как это его сайт, то там и будут все обновления. Я недавно ссылался на эти документы и все еще пытаюсь создать свой собственный небольшой FORTH, написанный на C. У меня был небольшой успех, но я могу вам сказать, что в деталях очень много. Это не то, что вы можете сделать, одновременно пытаясь добиться прогресса во встроенном проекте.

Обратите внимание, что изначально предполагалось, что FORTH будет иметь блок оперативной памяти, в котором будут компилироваться новые словарные слова. Либо приходится иметь дело с не очень большим объемом оперативной памяти, либо придумывать способ записи программы на flash.

Я также попробовал что-то под названием FlashForth (написано на ассемблере), и оно сработало, но я поставил его на довольно большой PIC18F6620. Я отвлекся, пытаясь понять, как устроен словарь и где хранятся данные, поэтому я так и не добрался до того места, где я мог бы заняться его разработкой. Я предлагаю попробовать, если у вас есть что-то в семействе PIC18F... даже просто попробовать. В этой заметке есть некоторые детали 18F, которые совместимы по выводам с их аналогами 16F, поэтому, если вас беспокоит стоимость, просто используйте более крупные детали для разработки, если FORTH на самом деле не входит в конечный продукт.

Спасибо за полезную информацию о размере pForth. Я изменил свои рекомендации с PIC16F на PIC32MX. Все еще менее чем за 4 доллара и доступный в DIP-пакете. Я также понял, что PIC16, вероятно, не подойдет для Forth, поскольку он имеет ограниченный 16-уровневый аппаратный стек возврата и не имеет стека параметров.