Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 13:25

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 151 ]  На страницу 1, 2, 3, 4, 5 ... 11  След.
Автор Сообщение
 Заголовок сообщения: Очередной AVRForth
СообщениеДобавлено: Пн янв 16, 2012 04:05 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 202
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
Заинтересовался недавно микроконтроллерами ATMEL.
Захотел найти себе форт под них, основные цели были такими:
1. Минимальный по объему генерируемый код без словарных статей
2. Возможность работы под Linux
3. Простой, без наворотов
4. Желательно, с библиотеками для i2c, lcd и т.д
5. Отладчик не критичен

Смотрел несколько вариантов:
1. AMForth.
Вроде хороший, но много занимает памяти, используется косвенный шитый код - медленно, возможность расширения прямо в контроллере мне не нужна была - отбросил
2. http://krue.net/avrforth/
На gforth для linux, но неудобно после каждого слова ставить "]", опять словарные статьи в коде - отбросил
3. Firmware Studio
Почти то, что нужно. Но библиотек нет, среда неудобная, современные контроллеры нужно самому вносить, под Windows, но работает в Wine. Поигрался и бросил :)
4. http://fpauk.narod.ru/avr4th.1.rar
Это только заготовка для транслятора

И тогда, как настоящий фортер, решил написать собственный форт для 8-bit AVR :)
За основу взял 4-й вариант.
Исправил ошибки, пересобрал под spf для linux.
Добавил управляющие слова CREATE, DOES>
Добавил необходимые примитивы (в основном перенес из Firmware studio)
Можно использовать контроллеры mega8515, mega8, 48,88,168. Добавить новые - не проблема
В прошивку попадают только реально используемые слова (пока это реализовано полуавтоматически, в программе надо самому указать, какие слова используются)
Переделал создание листинга
Написал библиотеки:
- для подключения lcd индикаторов типа wh1602
- i2c (twi)
- часы DS1307
- ОС (диспетчер задач)
- обработчик кнопок с подавлением дребезга и автоповтором
Вроде бы все работает.
Моделировал в proteus-е и гонял на железе

Недостатки:
- постарался по мере возможности от недостатков избавиться :)

Работает и под Windows.

Смотрите примеры в каталоге examples и документацию

Буду править этот пост, помещая сюда последние версии:
Вот, собственно, результат:
http://oco.org.ua/download/forth/avrforth-1.3.tar.gz


Последний раз редактировалось oco Чт авг 08, 2013 14:32, всего редактировалось 15 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Пн янв 16, 2012 15:59 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
oco писал(а):
Возможно будет работать и под Windows, если везде в путях поменять все прямые слэши на обратные.

под виндой слеши любые нормально проходят.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Пн янв 16, 2012 16:20 
oco писал(а):
И тогда, как настоящий фортер, решил написать собственный форт для 8-bit AVR :)


Насколько имеет смысл для 8-ми битного контроллера
использовать размер ячейки 16-бит?

P.S. на sourceforge есть ещё Форт-ы для AVR и ещё некоторое
количество в разных вариантах:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Пн янв 16, 2012 16:24 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
oco писал(а):
Смотрел несколько вариантов

Вам был нужен кросскомпилятор.
oco писал(а):
Добавил необходимые примитивы (в основном перенес из Firmware studio)

Примитивами принято называть слова-команды виртуальной машины если шитый код не подпрограммный.
oco писал(а):
1. Неоптимальный по размеру код (может отказаться от макросов?).

Надо отказываться если памяти мало, а макросы туда кладутся, и программы критичны по быстродействию.
oco писал(а):
В прошивку попадают только реально используемые слова (пока это реализовано полуавтоматически, в программе надо самому указать, какие слова используются)

Для автоматической подгрузки только нужных слов можно сделать два прохода компиляции. При первом проходе помечаются слова,
которые входят в главное слово. При втором проходе из помеченных слов формируется ядро поддержки слов главного слова.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Пн янв 16, 2012 16:35 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Гость писал(а):
Насколько имеет смысл для 8-ми битного контроллера
использовать размер ячейки 16-бит?

Все зависит от задач, которые нужно решать. Какова должна быть точность, если что-то измеряется или чем-то прецезионно управляем. И с какой скоростью это надо делать. Я делал на 8-ми разрядном контроллере ячейку 16-бит и поддерживал операции с двойной точностью 32-бит. При быстрых процессорах это нормально.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Пн янв 16, 2012 22:43 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Попробовал скомпилировать примеры под spf4 для Windows
tst.spf и tst1.f скомпилировались, но размер bin файла отличается (lst и hex не сравнивал)
clock и tst_lcd пока не смог скомпилировать (лезут непонятные ошибки, возможно какую то системную переменную в spf4 необходимо "подкрутить")

P.S. В файлах для Windows плохо воспринимаемая кодировка (UTF-8). лучше, по возможности, использовать KOI8-R.
Из Firmware можно взять и ассемблер (builder), по желанию и расширить командами как в доработанном fs303m128. (там же
есть вариант плавающей точки написанный на Forth )


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 00:57 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 202
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
oco писал(а):
Возможно будет работать и под Windows, если везде в путях поменять все прямые слэши на обратные.

под виндой слеши любые нормально проходят.

Спасибо, попробую

Гость писал(а):
oco писал(а):
И тогда, как настоящий фортер, решил написать собственный форт для 8-bit AVR :)


Насколько имеет смысл для 8-ми битного контроллера
использовать размер ячейки 16-бит?

P.S. на sourceforge есть ещё Форт-ы для AVR и ещё некоторое
количество в разных вариантах:)


Как-то над размером ячейки не задумывался :)
На sourceforge не заходил, обязательно посмотрю

P.S
Из тех, что раньше не видел, есть FlashForth
Опять не подходит, кидает все слова в прошивку вместе с заголовками статей, в общем не кросс-транслятор.


Последний раз редактировалось oco Вт янв 17, 2012 01:26, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 01:01 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 202
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
chess писал(а):
oco писал(а):
Смотрел несколько вариантов

Вам был нужен кросскомпилятор.

Это точно!
chess писал(а):
oco писал(а):
Добавил необходимые примитивы (в основном перенес из Firmware studio)

Примитивами принято называть слова-команды виртуальной машины если шитый код не подпрограммный.

Подпрограммный шитый код
chess писал(а):
oco писал(а):
1. Неоптимальный по размеру код (может отказаться от макросов?).

Надо отказываться если памяти мало, а макросы туда кладутся, и программы критичны по быстродействию.

Да, тут палка о двух концах, конечно
chess писал(а):
oco писал(а):
В прошивку попадают только реально используемые слова (пока это реализовано полуавтоматически, в программе надо самому указать, какие слова используются)

Для автоматической подгрузки только нужных слов можно сделать два прохода компиляции. При первом проходе помечаются слова,
которые входят в главное слово. При втором проходе из помеченных слов формируется ядро поддержки слов главного слова.

Я думал сделать так: компилируем текущее определение не в целевую память, а куда-то отдельно, если встречаем незнакомые слова, то компилируем их в целевую память одно за другим, а затем переносим текущее определение в целевую память.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 01:06 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 202
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
Kopa писал(а):
Попробовал скомпилировать примеры под spf4 для Windows
tst.spf и tst1.f скомпилировались, но размер bin файла отличается (lst и hex не сравнивал)
clock и tst_lcd пока не смог скомпилировать (лезут непонятные ошибки, возможно какую то системную переменную в spf4 необходимо "подкрутить")

P.S. В файлах для Windows плохо воспринимаемая кодировка (UTF-8). лучше, по возможности, использовать KOI8-R.
Из Firmware можно взять и ассемблер (builder), по желанию и расширить командами как в доработанном fs303m128. (там же
есть вариант плавающей точки написанный на Forth )

clock расчитан на мегу8, поэтому нужно в файле compile поправить название файла контроллера
tst_lcd - mega168
Но конечно, закиньте ошибки на форум, посмотрю.

Насчет кодировки - возьмите редактор, который поддерживает разные, например SciTe...
Там на русском только комментарии.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 01:29 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 202
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
Kopa писал(а):
Из Firmware можно взять и ассемблер (builder), по желанию и расширить командами как в доработанном fs303m128. (там же
есть вариант плавающей точки написанный на Forth )

Ассемблер уже есть, только расширить немного нужно, fs303m128 смотрел, спасибо.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 09:28 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
oco писал(а):
Я думал сделать так: компилируем текущее определение не в целевую память, а куда-то отдельно, если встречаем незнакомые слова, то компилируем их в целевую память одно за другим, а затем переносим текущее определение в целевую память.

В таком варианте придется перенос текущего определения в целевую память делать с правкой адресных смещений в коде для кода содержащего структуры управления. Поэтому я от такого варианта и воздержался.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 14:48 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 202
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
chess писал(а):
oco писал(а):
Я думал сделать так: компилируем текущее определение не в целевую память, а куда-то отдельно, если встречаем незнакомые слова, то компилируем их в целевую память одно за другим, а затем переносим текущее определение в целевую память.

В таком варианте придется перенос текущего определения в целевую память делать с правкой адресных смещений в коде для кода содержащего структуры управления. Поэтому я от такого варианта и воздержался.

Да, придется.
Мне кажется, двухпроходный вариант сложнее. Нужно посмотреть коды инструкций условных и безусловных переходов (только относительных), может в них есть что-то общее.
Впрочем, детально еще не обдумывал.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 15:10 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
Я прошу прощения, что вклиниваюсь!
А кто-нибудь встречал реализации FORTH-а для XMega ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 15:36 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Wlad писал(а):
Я прошу прощения, что вклиниваюсь!
А кто-нибудь встречал реализации FORTH-а для XMega ?

Так там AVR Core CPU, поэтому любой форт под AVR пойдет. Разве что про периферию надо немного дописать. :)

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Очередной AVRForth
СообщениеДобавлено: Вт янв 17, 2012 15:40 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
oco писал(а):
Да, придется.
Мне кажется, двухпроходный вариант сложнее. Нужно посмотреть коды инструкций условных и безусловных переходов (только относительных), может в них есть что-то общее.

Вся прелесть двухпроходного варианта в том и состоит, что не надо разбираться с переходами. :)
PS. Да еще кроме главного слова, надо учитывать подпрограммы обработки прерываний. Они тоже главные слова.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 151 ]  На страницу 1, 2, 3, 4, 5 ... 11  След.

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


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

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


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

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