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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 10:16 
Не в сети

Зарегистрирован: Чт май 05, 2016 18:59
Сообщения: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Представляю вашему вниманию систему simple-forth-c https://sourceforge.net/projects/simpleforthc/ это реализация диалекта языка программирования forth для микроконтроллеров семейства cortex-m.
В данный момент полностью поддерживаются микроконтроллеры фирмы ST семейства stm32f0xx,stm32f1xx
Simple-forth-c доступен под лицензией MIT.
Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/
Как собрать и установить на плату stm32f0discovery смотри вложения
Для общения с внешним миром программа использует usart1 контроллера.
В данный момент голая инсталяция системы занимает приблизительно 6,5 кбайт памяти.Представляю вашему вниманию систему simple-forth-c https://sourceforge.net/projects/simpleforthc/ это реализация диалекта языка программирования forth для микроконтроллеров семейства cortex-m.
В данный момент полностью поддерживаются микроконтроллеры фирмы ST семейства stm32f0xx,stm32f1xx
Simple-forth-c доступен под лицензией MIT.
Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/
Как собрать и установить на плату stm32f0discovery смотри вложения
Для общения с внешним миром программа использует usart1 контроллера.
В данный момент голая инсталяция системы занимает приблизительно 6,5 кбайт памяти.
Сама система
https://sourceforge.net/projects/simpleforthc/files/simple-forth-c/simple-forth-c.zip/download
Как установить на stm32f0discovery
https://yadi.sk/d/tQ1Fhq0PrFNja


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 10:20 
Не в сети

Зарегистрирован: Чт май 05, 2016 18:59
Сообщения: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Для примера работы продемонстрируем как засветит светодиоды на плате stm32f0discovery
данный код необходимо ввести в программе терминала которая подключенна к порту usart1 с контроллера с установленной системой simple-forth-c,
Код:
HEX # переходим в шестнадцатеричный режим
: LED_INIT
40021014 # считываем значение регистра RCC_AHBENR
80000 OR # включаем тактирование порта  C
40021014 ! # записываем значения в регистр
48000800 @ 50000 OR 48000800 ! # настраиваем PC8,PC9 на выход
;
: LEDS_ON
300 4800814 ! # включаем светодиоды на пинах PC8,PC9
;

данная программа создаст два новых слова LED_INIT и LEDS_ON
чтобы светодиоды зажигались при загрузке микроконтроллера необходимо создать слово BOOT с таким содержимым
Код:
: BOOT
LED_INIT
LEDS_ON
;

Использование simple-forth-c для обработки прерывания по exti0 на плате stm32f0discovery
мы будем использовать кнопку для включения и выключения светодиода который находится на PORTC 8
вот код данного примера
Код:
HEX
: led_init # настрока PORTC 8 на выход для led
40021014  @ # считываем значения регистра разрешения тактирования
80000  OR    # включаем тактирования порта C
40021014 !  # записываем значения в регистр
48000800  @ FFFCFFFF  AND # считываем значения настройки порта C
10000 OR 48000800 !      # настраиваем PORTC 8 на выход
48000804 @ FEFF         # настраиваем PORTC 8 push-pull   
AND 48000804 !            #   
48000808 @ FFFCFFFF      # Настраиваем PORTC 8 medium spead     
AND 10000 OR 48000808 !   #
4800080C @ FFFCFFFF      # очищаем   
AND 4800080C !         
;
: led_on
48000818 @ 100 OR 48000818 !
# Включаем светодиод
;
: led_off
48000818 @ 1000000 OR 48000818 !
# Выключаем светодиод bit set
;

HEX
: exti0_interrupt   # создаем слово обработчик прерывания EXTI0
1 40010414 ! # очищаем флаг прерывания EXTI0
   ." CLICK " CR  # выводим в терминал сообщения
   48000810 @ 100 AND  # проверяем включен ли PORTC 8
   IF          # Слово IF берет верхнее число со стека и если оно не равно 0
            # то интерпретирует его как истина
      led_off    # Если включен то выключаем
   ELSE
      led_on   # Иначе включаем
   THEN
;
FIND exti0_interrupt # находим адрес слова обработчика прерыванием
8000054           # адрес прерывания EXTI0
INTERRUPT          # регистрируем слово exti0_interrupt как прерывания по адресу 0x8000054
: exti0_init  # создаем слово настройки EXTI0
40021014  @ 20000
OR 40021014 !                    # Включаем тактирования PORTA

48000000  @ FFFFFFFFC
AND 48000000 !       # Настраиваем pin0 PORTA как вход

E000E100 @ 20         
OR E000E100 !      # включаем прерывания EXTI0
     
40010408 @ 1
OR 40010408 !      # включаем прерывания по переднему фронту сигнала
   
40010400 @ 1
OR 40010400 !      # включаем прерывания по заднему фронту сигнала
;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 16:20 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
fenenko писал(а):
Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/


Кто здесь не знает, что такое Форт, отпишитесь... :D

А какое развитие предполагается для этой системы? Куда это вообще потом должно выйти? Я вижу, что используется ассемблер, т.е. привязка к ARM уже имеет место. В принципе, это имеет смысл, тем более что размер получается совсем маленький.

# - это, видимо, ни в одной реализации Форта не комментарий, читать текст не очень удобно

Можно сразу начать описывать системные константы

Код:
48000000  @ FFFFFFFFC
AND 48000000 !       # Настраиваем pin0 PORTA как вход

Будет:

Код:
PORTA_DIR  @
FFFFFFFFC AND
PORTA_DIR !       # Настраиваем pin0 PORTA как вход


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 17:04 
Не в сети

Зарегистрирован: Чт май 05, 2016 18:59
Сообщения: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Сейчас идет написания библиотеки для работы с переферией
где например работа с портом выглядит так:
Код:
STM32F0XX RCC PORTC ENABLE
STM32F0XX GPIO PORTC 8 OUTPUT PUSH-PULL CONF
STM32F0XX GPIO PORTC 8 SETPIN

Также идут работы по написанию IDE
Мое видения что в дальнейшем с появлением IDE, библиотек для работы с переферией, должна получится простая система для работы на ARM, что то по философии похожее на arduino.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 17:30 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
fenenko писал(а):
Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/

Кто здесь не знает, что такое Форт, отпишитесь... :D

Тоже умилило :)

P.S. TC существующие варианты рассматривались?
Маленький размер Форт - не показатель по предоставляемому функционалу.
Какие "фишки" у данного варианта?

P.P.S. То ТС - Ранее была проверена работоспособность VFX Forth для камня STM32L в частном порядке.
Но, хорошо что хоть редкие публичные статьи о Форт находят благодарных читателей. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 17:38 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
P.S. TC существующие варианты рассматривались?

Тут вообще есть два противоположных подхода
1) "Есть готовые форт-трансляторы, значит, мне не надо писать еще один"
2) "Есть готовые форт-трансляторы, значит, люди их пишут, значит, мне тоже стоит написать свой"
:)

Главное, последовательно идти по выбранному пути.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 17:55 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
KPG писал(а):
P.S. TC существующие варианты рассматривались?

Тут вообще есть два противоположных подхода
Главное, последовательно идти по выбранному пути.

Согласен, но думать что "ты" умнее того что уже делали "классики" "20-ть" лет назад может быть ошибочной стратегией.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 18:00 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
Согласен, но думать что "ты" умнее того что уже делали "классики" "20-ть" лет назад может быть ошибочной стратегией.

Здесь опять же два момента
1) "Классики" (они явно сделали лучше)
2) "20 лет назад" (20 лет назад были другие условия)

Я в целом согласен, что предлагаемая вещь вряд ли произведет революцию и продвинет Форт. Тем не менее, СвойФорт (tm) - это своеобразная клубная карточка. Так что новому фортеру - добро пожаловать в клуб :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 18:29 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Небольшие ремарки по документации
Описано:
POSTPONE ИМЯ - По стандарту компилирует период исполнения слова с именем ИМЯ в независимости от флага выполнения слова
COMPILE ИМЯ - компилировать в не зависимости от IMMEDIATE (стандарт 83г.)

RUN - выполняет слово, а в Форт стандартно EXECUTE ( xt -- )
# - комментарий обычно со слова \
H@ - лучше W@ (чтение 16 битного числа)
B@ - стандартно С@ чтение байта (char)
H! B! - смотри выше и стандартны W@ и С@
SP@ - текущий адрес стека (естьи SP0@ - начальный адрес стека данных Форт системы)


Последний раз редактировалось KPG Пт май 13, 2016 18:57, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 18:39 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
В стандарте 94г.

Лесом, лесом... :)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 18:49 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
Лесом, лесом... :)

:) Сколько людeй, столько и мнений.

P.S. ТС, механизм слов CREATE ... DOES> планируется?
Или это будет Форт подобный язык?
Работа со словарём VOCABULARY организуется тоже обычно стандартно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 19:04 
Не в сети

Зарегистрирован: Чт май 05, 2016 18:59
Сообщения: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
KPG cпасибо за замечания, исправим
по поводу CREATE DOES> да планируется


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт май 13, 2016 23:28 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Согласен с предыдущими ораторами.
Компиляция происходит сразу в флэш (у mecrisp удобно сделано: можно в ram для отладки или на постоянку в флэш)?
Для f4xx сборочка будет?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Вт авг 07, 2018 13:00 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Новая разработка автора топика.
Расширяемое FORTH окружения написанное на С для процесоров cortex которое можно легко использовать в вашем проекте.


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

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


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

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


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

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