Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
Новая разработка автора топика. [url=https://sourceforge.net/projects/libsfc/]Расширяемое FORTH окружения написанное на С для процесоров cortex которое можно легко использовать в вашем проекте.[/url]
|
|
|
|
Добавлено: Вт авг 07, 2018 13:00 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
Согласен с предыдущими ораторами. Компиляция происходит сразу в флэш (у mecrisp удобно сделано: можно в ram для отладки или на постоянку в флэш)? Для f4xx сборочка будет?
Согласен с предыдущими ораторами. Компиляция происходит сразу в флэш (у mecrisp удобно сделано: можно в ram для отладки или на постоянку в флэш)? Для f4xx сборочка будет?
|
|
|
|
Добавлено: Пт май 13, 2016 23:28 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
KPG cпасибо за замечания, исправим по поводу CREATE DOES> да планируется
KPG cпасибо за замечания, исправим по поводу CREATE DOES> да планируется
|
|
|
|
Добавлено: Пт май 13, 2016 19:04 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
Hishnik писал(а): Лесом, лесом... Сколько людeй, столько и мнений. P.S. ТС, механизм слов CREATE ... DOES> планируется? Или это будет Форт подобный язык? Работа со словарём VOCABULARY организуется тоже обычно стандартно.
[quote="Hishnik"]Лесом, лесом... :)[/quote] :) Сколько людeй, столько и мнений.
P.S. ТС, механизм слов CREATE ... DOES> планируется? Или это будет Форт подобный язык? Работа со словарём VOCABULARY организуется тоже обычно стандартно.
|
|
|
|
Добавлено: Пт май 13, 2016 18:49 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
KPG писал(а): В стандарте 94г. Лесом, лесом... Вообще, при явном противоречии со здравым смыслом продукция евролузеров выкидывается на помойку мгновенно. Реальные потребности имеют однозначный приоритет. Другое дело, что в Форте уже по факту устоялись определенные предпочтения. Тот же комментарий, C@ W@. Специально переиначивать их нет смысла. Предлагать "переписать, если кому-то надо" тоже нет большого смысла - раз надо подавляющему большинству для практических целей, то лучше и сделать сразу именно так.
[quote="KPG"]В стандарте 94г.[/quote] Лесом, лесом... :)
Вообще, при явном противоречии со здравым смыслом продукция евролузеров выкидывается на помойку мгновенно. Реальные потребности имеют однозначный приоритет. Другое дело, что в Форте уже по факту устоялись определенные предпочтения. Тот же комментарий, C@ W@. Специально переиначивать их нет смысла. Предлагать "переписать, если кому-то надо" тоже нет большого смысла - раз надо подавляющему большинству для практических целей, то лучше и сделать сразу именно так.
|
|
|
|
Добавлено: Пт май 13, 2016 18:39 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
Небольшие ремарки по документации Описано: POSTPONE ИМЯ - По стандарту компилирует период исполнения слова с именем ИМЯ в независимости от флага выполнения слова COMPILE ИМЯ - компилировать в не зависимости от IMMEDIATE (стандарт 83г.)
RUN - выполняет слово, а в Форт стандартно EXECUTE ( xt -- ) # - комментарий обычно со слова \ H@ - лучше W@ (чтение 16 битного числа) B@ - стандартно С@ чтение байта (char) H! B! - смотри выше и стандартны W@ и С@ SP@ - текущий адрес стека (естьи SP0@ - начальный адрес стека данных Форт системы)
Небольшие ремарки по документации Описано: POSTPONE ИМЯ - По стандарту компилирует период исполнения слова с именем ИМЯ в независимости от флага выполнения слова COMPILE ИМЯ - компилировать в не зависимости от IMMEDIATE (стандарт 83г.)
RUN - выполняет слово, а в Форт стандартно EXECUTE ( xt -- ) # - комментарий обычно со слова \ H@ - лучше W@ (чтение 16 битного числа) B@ - стандартно С@ чтение байта (char) H! B! - смотри выше и стандартны W@ и С@ SP@ - текущий адрес стека (естьи SP0@ - начальный адрес стека данных Форт системы)
|
|
|
|
Добавлено: Пт май 13, 2016 18:29 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
KPG писал(а): Согласен, но думать что "ты" умнее того что уже делали "классики" "20-ть" лет назад может быть ошибочной стратегией. Здесь опять же два момента 1) "Классики" (они явно сделали лучше) 2) "20 лет назад" (20 лет назад были другие условия) Я в целом согласен, что предлагаемая вещь вряд ли произведет революцию и продвинет Форт. Тем не менее, СвойФорт (tm) - это своеобразная клубная карточка. Так что новому фортеру - добро пожаловать в клуб
[quote="KPG"]Согласен, но думать что "ты" умнее того что уже делали "классики" "20-ть" лет назад может быть ошибочной стратегией.[/quote] Здесь опять же два момента 1) "Классики" (они явно сделали лучше) 2) "20 лет назад" (20 лет назад были другие условия)
Я в целом согласен, что предлагаемая вещь вряд ли произведет революцию и продвинет Форт. Тем не менее, СвойФорт (tm) - это своеобразная клубная карточка. Так что новому фортеру - добро пожаловать в клуб :)
|
|
|
|
Добавлено: Пт май 13, 2016 18:00 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
Hishnik писал(а): KPG писал(а): P.S. TC существующие варианты рассматривались? Тут вообще есть два противоположных подхода Главное, последовательно идти по выбранному пути. Согласен, но думать что "ты" умнее того что уже делали "классики" "20-ть" лет назад может быть ошибочной стратегией.
[quote="Hishnik"][quote="KPG"]P.S. TC существующие варианты рассматривались? [/quote] Тут вообще есть два противоположных подхода Главное, последовательно идти по выбранному пути.[/quote] Согласен, но думать что "ты" умнее того что уже делали "классики" "20-ть" лет назад может быть ошибочной стратегией.
|
|
|
|
Добавлено: Пт май 13, 2016 17:55 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
KPG писал(а): P.S. TC существующие варианты рассматривались? Тут вообще есть два противоположных подхода 1) "Есть готовые форт-трансляторы, значит, мне не надо писать еще один" 2) "Есть готовые форт-трансляторы, значит, люди их пишут, значит, мне тоже стоит написать свой" Главное, последовательно идти по выбранному пути.
[quote="KPG"]P.S. TC существующие варианты рассматривались? [/quote] Тут вообще есть два противоположных подхода 1) "Есть готовые форт-трансляторы, значит, мне не надо писать еще один" 2) "Есть готовые форт-трансляторы, значит, люди их пишут, значит, мне тоже стоит написать свой" :)
Главное, последовательно идти по выбранному пути.
|
|
|
|
Добавлено: Пт май 13, 2016 17:38 |
|
|
|
|
|
Заголовок сообщения: |
Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx |
|
|
Hishnik писал(а): fenenko писал(а): Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/ Кто здесь не знает, что такое Форт, отпишитесь... Тоже умилило P.S. TC существующие варианты рассматривались? Маленький размер Форт - не показатель по предоставляемому функционалу. Какие "фишки" у данного варианта? P.P.S. То ТС - Ранее была проверена работоспособность VFX Forth для камня STM32L в частном порядке. Но, хорошо что хоть редкие публичные статьи о Форт находят благодарных читателей.
[quote="Hishnik"][quote="fenenko"]Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/[/quote] Кто здесь не знает, что такое Форт, отпишитесь... :D [/quote] Тоже умилило :)
P.S. TC существующие варианты рассматривались? Маленький размер Форт - не показатель по предоставляемому функционалу. Какие "фишки" у данного варианта? P.P.S. То ТС - Ранее была проверена работоспособность VFX Forth для камня STM32L в частном порядке. Но, хорошо что хоть редкие публичные статьи о Форт находят благодарных читателей. :)
|
|
|
|
Добавлено: Пт май 13, 2016 17:30 |
|
|
|
|
|
Заголовок сообщения: |
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.
Сейчас идет написания библиотеки для работы с переферией где например работа с портом выглядит так: [code] STM32F0XX RCC PORTC ENABLE STM32F0XX GPIO PORTC 8 OUTPUT PUSH-PULL CONF STM32F0XX GPIO PORTC 8 SETPIN [/code] Также идут работы по написанию IDE Мое видения что в дальнейшем с появлением IDE, библиотек для работы с переферией, должна получится простая система для работы на ARM, что то по философии похожее на arduino.
|
|
|
|
Добавлено: Пт май 13, 2016 17:04 |
|
|
|
|
|
Заголовок сообщения: |
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 как вход
[quote="fenenko"]Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https ... ost/29967/[/quote]
Кто здесь не знает, что такое Форт, отпишитесь... :D
А какое развитие предполагается для этой системы? Куда это вообще потом должно выйти? Я вижу, что используется ассемблер, т.е. привязка к ARM уже имеет место. В принципе, это имеет смысл, тем более что размер получается совсем маленький.
# - это, видимо, ни в одной реализации Форта не комментарий, читать текст не очень удобно
Можно сразу начать описывать системные константы
[code]48000000 @ FFFFFFFFC AND 48000000 ! # Настраиваем pin0 PORTA как вход [/code] Будет:
[code]PORTA_DIR @ FFFFFFFFC AND PORTA_DIR ! # Настраиваем pin0 PORTA как вход[/code]
|
|
|
|
Добавлено: Пт май 13, 2016 16: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 ! # включаем прерывания по заднему фронту сигнала ;
Для примера работы продемонстрируем как засветит светодиоды на плате stm32f0discovery данный код необходимо ввести в программе терминала которая подключенна к порту usart1 с контроллера с установленной системой simple-forth-c, [code] HEX # переходим в шестнадцатеричный режим : LED_INIT 40021014 # считываем значение регистра RCC_AHBENR 80000 OR # включаем тактирование порта C 40021014 ! # записываем значения в регистр 48000800 @ 50000 OR 48000800 ! # настраиваем PC8,PC9 на выход ; : LEDS_ON 300 4800814 ! # включаем светодиоды на пинах PC8,PC9 ; [/code] данная программа создаст два новых слова LED_INIT и LEDS_ON чтобы светодиоды зажигались при загрузке микроконтроллера необходимо создать слово BOOT с таким содержимым [code] : BOOT LED_INIT LEDS_ON ; [/code] Использование simple-forth-c для обработки прерывания по exti0 на плате stm32f0discovery мы будем использовать кнопку для включения и выключения светодиода который находится на PORTC 8 вот код данного примера [code] 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 ! # включаем прерывания по заднему фронту сигнала ; [/code]
|
|
|
|
Добавлено: Пт май 13, 2016 10:20 |
|
|
|
|
|
Заголовок сообщения: |
Система 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
Представляю вашему вниманию систему 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://habrahabr.ru/post/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://habrahabr.ru/post/29967/ Как собрать и установить на плату stm32f0discovery смотри вложения Для общения с внешним миром программа использует usart1 контроллера. В данный момент голая инсталяция системы занимает приблизительно 6,5 кбайт памяти. Сама система [url]https://sourceforge.net/projects/simpleforthc/files/simple-forth-c/simple-forth-c.zip/download[/url] Как установить на stm32f0discovery [url]https://yadi.sk/d/tQ1Fhq0PrFNja[/url]
|
|
|
|
Добавлено: Пт май 13, 2016 10:16 |
|
|
|
|