Forth http://fforum.winglion.ru/ |
|
Система forth для микроконтроллеров stm32f0xx stm32f1xx http://fforum.winglion.ru/viewtopic.php?f=39&t=3100 |
Страница 1 из 1 |
Автор: | fenenko [ Пт май 13, 2016 10:16 ] |
Заголовок сообщения: | Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Представляю вашему вниманию систему 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 |
Автор: | fenenko [ Пт май 13, 2016 10:20 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Для примера работы продемонстрируем как засветит светодиоды на плате 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 ! # включаем прерывания по заднему фронту сигнала ; |
Автор: | Hishnik [ Пт май 13, 2016 16:20 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
fenenko писал(а): Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/ Кто здесь не знает, что такое Форт, отпишитесь... А какое развитие предполагается для этой системы? Куда это вообще потом должно выйти? Я вижу, что используется ассемблер, т.е. привязка к ARM уже имеет место. В принципе, это имеет смысл, тем более что размер получается совсем маленький. # - это, видимо, ни в одной реализации Форта не комментарий, читать текст не очень удобно Можно сразу начать описывать системные константы Код: 48000000 @ FFFFFFFFC AND 48000000 ! # Настраиваем pin0 PORTA как вход Будет: Код: PORTA_DIR @
FFFFFFFFC AND PORTA_DIR ! # Настраиваем pin0 PORTA как вход |
Автор: | fenenko [ Пт май 13, 2016 17:04 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Сейчас идет написания библиотеки для работы с переферией где например работа с портом выглядит так: Код: STM32F0XX RCC PORTC ENABLE STM32F0XX GPIO PORTC 8 OUTPUT PUSH-PULL CONF STM32F0XX GPIO PORTC 8 SETPIN Также идут работы по написанию IDE Мое видения что в дальнейшем с появлением IDE, библиотек для работы с переферией, должна получится простая система для работы на ARM, что то по философии похожее на arduino. |
Автор: | KPG [ Пт май 13, 2016 17:30 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Hishnik писал(а): fenenko писал(а): Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/ Кто здесь не знает, что такое Форт, отпишитесь... Тоже умилило P.S. TC существующие варианты рассматривались? Маленький размер Форт - не показатель по предоставляемому функционалу. Какие "фишки" у данного варианта? P.P.S. То ТС - Ранее была проверена работоспособность VFX Forth для камня STM32L в частном порядке. Но, хорошо что хоть редкие публичные статьи о Форт находят благодарных читателей. |
Автор: | Hishnik [ Пт май 13, 2016 17:38 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
KPG писал(а): P.S. TC существующие варианты рассматривались? Тут вообще есть два противоположных подхода 1) "Есть готовые форт-трансляторы, значит, мне не надо писать еще один" 2) "Есть готовые форт-трансляторы, значит, люди их пишут, значит, мне тоже стоит написать свой" Главное, последовательно идти по выбранному пути. |
Автор: | KPG [ Пт май 13, 2016 17:55 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Hishnik писал(а): KPG писал(а): P.S. TC существующие варианты рассматривались? Тут вообще есть два противоположных подхода Главное, последовательно идти по выбранному пути. Согласен, но думать что "ты" умнее того что уже делали "классики" "20-ть" лет назад может быть ошибочной стратегией. |
Автор: | Hishnik [ Пт май 13, 2016 18:00 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
KPG писал(а): Согласен, но думать что "ты" умнее того что уже делали "классики" "20-ть" лет назад может быть ошибочной стратегией. Здесь опять же два момента 1) "Классики" (они явно сделали лучше) 2) "20 лет назад" (20 лет назад были другие условия) Я в целом согласен, что предлагаемая вещь вряд ли произведет революцию и продвинет Форт. Тем не менее, СвойФорт (tm) - это своеобразная клубная карточка. Так что новому фортеру - добро пожаловать в клуб |
Автор: | KPG [ Пт май 13, 2016 18:29 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Небольшие ремарки по документации Описано: POSTPONE ИМЯ - По стандарту компилирует период исполнения слова с именем ИМЯ в независимости от флага выполнения слова COMPILE ИМЯ - компилировать в не зависимости от IMMEDIATE (стандарт 83г.) RUN - выполняет слово, а в Форт стандартно EXECUTE ( xt -- ) # - комментарий обычно со слова \ H@ - лучше W@ (чтение 16 битного числа) B@ - стандартно С@ чтение байта (char) H! B! - смотри выше и стандартны W@ и С@ SP@ - текущий адрес стека (естьи SP0@ - начальный адрес стека данных Форт системы) |
Автор: | Hishnik [ Пт май 13, 2016 18:39 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
KPG писал(а): В стандарте 94г. Лесом, лесом... Вообще, при явном противоречии со здравым смыслом продукция евролузеров выкидывается на помойку мгновенно. Реальные потребности имеют однозначный приоритет. Другое дело, что в Форте уже по факту устоялись определенные предпочтения. Тот же комментарий, C@ W@. Специально переиначивать их нет смысла. Предлагать "переписать, если кому-то надо" тоже нет большого смысла - раз надо подавляющему большинству для практических целей, то лучше и сделать сразу именно так. |
Автор: | KPG [ Пт май 13, 2016 18:49 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Hishnik писал(а): Лесом, лесом... Сколько людeй, столько и мнений. P.S. ТС, механизм слов CREATE ... DOES> планируется? Или это будет Форт подобный язык? Работа со словарём VOCABULARY организуется тоже обычно стандартно. |
Автор: | fenenko [ Пт май 13, 2016 19:04 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
KPG cпасибо за замечания, исправим по поводу CREATE DOES> да планируется |
Автор: | Ilya [ Пт май 13, 2016 23:28 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Согласен с предыдущими ораторами. Компиляция происходит сразу в флэш (у mecrisp удобно сделано: можно в ram для отладки или на постоянку в флэш)? Для f4xx сборочка будет? |
Автор: | KPG [ Вт авг 07, 2018 13:00 ] |
Заголовок сообщения: | Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
Новая разработка автора топика. Расширяемое FORTH окружения написанное на С для процесоров cortex которое можно легко использовать в вашем проекте. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |