Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс окт 17, 2021 20:10

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 100 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Пт фев 19, 2021 22:00 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 208
Откуда: Минск
Благодарил (а): 17 раз.
Поблагодарили: 2 раз.
Total Vacuum писал(а):
Hishnik писал(а):
Главное, чтобы потом можно было сделать DUP :))
:D Ха! При таком раскладе DUP должно удваивать сумму...
Стоило мне промазать... :)
Цитата:
Так что тут остается либо мириться с неудобством терминалов, либо изобретать какую-то более удобную альтернативу...
Увеличить скорость обмена до 460800, и написать свой НОРТОН, как в старые добрые времена! :)
Создать несколько дисков: ПЗУ, ОЗУ, Регистры, и т.п.
Но у меня F103, а там уже мало места: free
FLASH..TOTAL.REPORTED:.65536.USED:.42716.FREE:.22820
RAM....TOTAL..PRESET:...20000.USED:....772.FREE:.19228

Жду КИТ на F411, там уже можно будет, на 512К пробовать создать оболочку.
Как базовый будет H7, но это уже в готовые изделия - управление станками.

_________________
Сотник.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Пт фев 19, 2021 22:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7291
Благодарил (а): 21 раз.
Поблагодарили: 126 раз.
zma писал(а):
Как у Вас реализуется много поточность в Форте? Отдельный экземпляр системы на каждый поток или как-то по-другому? Если несколько экземпляров, то как они синхронизируются и обмениваются сообщениями?

В современных системах (и Qt, и Lazarus, на которых все пробовалось) есть библиотеки для поддержки потоков. В Lazarus 2.0, который вышел буквально полгода назад, неожиданно много хороших изменений. В частности, запуск нового потока делается очень просто, на уровне "указать адрес процедуры, которую надо запустить".
В приложении есть основной поток, который запускает N форт-машин. Каждая машина "упакована" в собственный экземпляр объекта TForth и при запуске потока начинает ждать заполнения Terminal Input Buffer и интерпретировать его по установке флага. В основном потоке происходит управление всеми виджетами с помощью достаточно разветвленного обработчика. Форт-потоки не могут напрямую получить объекты основной программы, там есть много нюансов с динамическим созданием объектов, как в Qt, так и в Lazarus. Поэтому в каждой форт-машине есть очередь сообщений, которые постоянно проверяются основным потоком. При наличии в какой-то очереди записи с полями ObjectType, ObjectIndex, MessageType и т.д. все это передается на соответствующий обработчик, который, к примеру, для кнопки с индексом 0 выполняет Show. Основной поток может напрямую работать с памятью форт-машин и стеком, поэтому сообщения вида "прочитать строку из поля ввода" вызывают также приостановку форт-машины с ожиданием сброса семафора, которое выполнится основным потоком после помещения содержимого запрашиваемого поля в память форт-машины. Соответственно, синхронизация выносится в сам обработчик сообщений, что дает возможность писать нечто вроде TEXTEDIT.GETINTEGER и забирать со стека целое число, соответствующее введенному тексту в поле на экране.

4 потока компилируются статически. Первые пробы с 16 потоками вполне ощутимо притормозили Core i7. Сейчас и 4 потока забирают дополнительные 25% процессора. Много там, в принципе, не нужно, отдельный поток пока видится для работы с UART, а там будет видно.



За это сообщение автора Hishnik поблагодарил: zma
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Сб фев 20, 2021 16:16 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 208
Откуда: Минск
Благодарил (а): 17 раз.
Поблагодарили: 2 раз.
(1) "Так что тут остается либо мириться с неудобством терминалов, ...

Это не для нас. Нас ждут великие дела!

(2) ...либо изобретать какую-то более удобную альтернативу..."

Даже если вас съели, всё равно у вас есть два выхода! :cry:

(3) "Увеличить скорость обмена до 460800, и написать свой НОРТОН, как в старые добрые времена!  "

Вспомнился "аля нортон" из SMAL32 Ларионова, вроде как аж от 1995 года.
Такой код для каждого камня придётся адаптировать свой
и тратить память камня, что для мелких может быть невозможно.

Ночь не спалось, всё снились пины, стеки, бабы, ROT, DUP и DROP - под утро озарило! :)

(4) Просто из буфера обмена отправить в порт.

nncron вполне справиться - надеюсь он у всех зависает и помогает
Вариант универсален для любых случаев и камней!

Два слова решат задачку.

- определить что в буфере обмена обновился текст, и начинается со строки: \ STM32F103 COM 5 115200 8N1
- передать содержимое буфера в "СОМ 5" порциями, ожидая ответ "ok."
Успеет ли интерпретатор "переварить" быстро переданную порцию?

Остаётся только выделить текст, и скопировать в буфер.

Прошу помощи сообщества, кто может для nncron накидать пару строк? :)

_________________
Сотник.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Вт фев 23, 2021 07:28 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1500
Благодарил (а): 4 раз.
Поблагодарили: 55 раз.
Two/three USB-to-serial bridges with build in Forth for STM32F103


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Вт фев 23, 2021 10:21 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7291
Благодарил (а): 21 раз.
Поблагодарили: 126 раз.
FT2232H - USB в 2 универсальных порта UART/SPI/JTAG/I2C
FT4232H - USB в 4 универсальных порта UART/SPI/JTAG/I2C

И в чем глубокий смысл "переписывания всего на Форте" с получением результата, который уже есть в готовом виде, только в случае Mecrisp оно проверено буквально на одном МК. Кроме того, в TODO стоит "to comply with USB specs". То есть оно, в случае чего, может быть отключено привередливым хостом из-за отказа отвечать на команду "усни"? Ну и вишенкой "Check and test max and min baudrates and data bits, parity and so on". То есть оно просто не проверено. А ситуация "заработало" это только первый лабораторный тест, и по сравнению с прогоном во всех режимах и с разными сочетаниями аппаратуры выглядит совершенно непривлекательно.

Да, STM-то код для VCP/HID/MassStorage генерирует из IDE для выбранного МК. Так что вообще непонятно, чего ради было время тратить.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Ср фев 24, 2021 02:36 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 208
Откуда: Минск
Благодарил (а): 17 раз.
Поблагодарили: 2 раз.
Hishnik писал(а):
Если брать совсем широко, то вместо адаптации Форта под разные платы можно брать настроенную плату с готовым HAL от производителя и добавлять туда форт-машину.
https://sourceforge.net/p/mecrisp/discussion/general/thread/8b483ab971/#ef48

The beauty of the solution is that STM IDE can eb used to port to any supported STM board, including all F3, F4 and F7 processors.
Cube can be used to initialise all peripherals and resources, and mixed FORTH / C/ C++ solutions become possible.
This immediately opens up many new possibilities, including TCP/IP, IOT, Wireless and industrial products released recently.
The IDE and debugger are fully operational.

Прелесть решения в том, что STM IDE может использоваться для переноса на любую поддерживаемую плату STM, включая все процессоры F3, F4 и F7.
Cube можно использовать для инициализации всех периферийных устройств и ресурсов, и становятся возможными смешанные решения FORTH/C/C++.
Это сразу же открывает множество новых возможностей, включая TCP / IP, IOT, беспроводную связь и недавно выпущенные промышленные продукты.
IDE и отладчик полностью работоспособны.

_________________
Сотник.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Ср фев 24, 2021 03:12 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7291
Благодарил (а): 21 раз.
Поблагодарили: 126 раз.
Я это себе немного не так вижу. Берем forth.h и подключаем к проекту. Становятся доступными слова ядра, доступ к стеку и памяти форт-машины, Evaluate(str), плюс возможность сделать обертки над функциями для работы с периферийным оборудованием. А заходить через какую-то систему, которую нужно специально адаптировать и запускать... ну, это сразу себя поставить в ситуацию "я очень люблю Форт и готов возиться с ним, даже если явно неудобно".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Пн мар 01, 2021 15:25 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 184
Откуда: Москва
Благодарил (а): 33 раз.
Поблагодарили: 6 раз.
Кстати, кто-нибудь знает, чем собирается mecrisp-stellaris из исходников?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Вт мар 02, 2021 01:54 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1500
Благодарил (а): 4 раз.
Поблагодарили: 55 раз.
Total Vacuum писал(а):
Кстати, кто-нибудь знает, чем собирается mecrisp-stellaris из исходников?

Под Линуксом сделал ./make (может и ./configure) при установленном arm- тулчейне и всё собралось.
(в мк не прошивал, но думаю собирается рабочая прошивка)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Вт мар 02, 2021 09:04 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7291
Благодарил (а): 21 раз.
Поблагодарили: 126 раз.
На "50-60 слов + проектные слова" можно и для STM собрать виртуальную машину...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Вс апр 04, 2021 18:44 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 208
Откуда: Минск
Благодарил (а): 17 раз.
Поблагодарили: 2 раз.
$E000E010 constant NVIC_ST_CTRL_R
$E000E014 constant NVIC_ST_RELOAD_R
$E000E018 constant NVIC_ST_CURRENT_R

\ слово irq-systick ( - adr ) оставляет адрес $20004FD0 \ есть в базовом наборе
: Irq-systick ( - ) ; \ тут ваш код

Код:
: Init-Delay ( -- )       \ Start free running Systick Timer without Interrupts     Начать запуск таймера Systick без прерываний
    0           NVIC_ST_CTRL_R    !    \ Disable SysTick during setup               Отключить SysTick во время установки
    $00FFFFFF   NVIC_ST_RELOAD_R  !    \ Maximum reload value for 24 bit timer      Максимальное значение перезагрузки для 24-битного таймера
    0           NVIC_ST_CURRENT_R !    \ Any write to current clears it             Любая запись в текущий очищает его
    %111        NVIC_ST_CTRL_R    !  ; \ Enable SysTick with core clock             Включить SysTick с частотой ядра
                                       \ Enable the systick interrupt.       \ Включить прерывание от systick.

Вот что получилось. выскакивает раз в секунду:
init-delay \ запустить таймер
Unhandled Interrupt 0000000F !
Unhandled Interrupt 0000000F !
Unhandled Interrupt 0000000F !
Unhandled Interrupt 0000000F !
Unhandled Interrupt 0000000F !
И только через Reset...
\ как должно завершаться прерывание ?

_________________
Сотник.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Пн апр 05, 2021 14:51 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 184
Откуда: Москва
Благодарил (а): 33 раз.
Поблагодарили: 6 раз.
Этот обработчик прерывания каких-то особенных действий при завершении не требует.
Попробуйте так:
: hndlr 123 . ; \ новый обработчик
['] hndlr irq-systick !
$FFFFFF STKLOAD !
7 STKCTRL !
Вместо "Unhandled" будет выводиться 123...



За это сообщение автора Total Vacuum поблагодарил: Sotnik
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Пн апр 05, 2021 15:30 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 208
Откуда: Минск
Благодарил (а): 17 раз.
Поблагодарили: 2 раз.
Total Vacuum писал(а):
Этот обработчик прерывания каких-то особенных действий при завершении не требует.
Мне остаётся по завершении слова только Sleep до прерывания.
Цитата:
Попробуйте так:
: hndlr 123 . ; \ новый обработчик
['] hndlr irq-systick !
$FFFFFF STKLOAD !
7 STKCTRL !
Вместо "Unhandled" будет выводиться 123...

Ура!!! Никаких "вылетов"! :pilot2;

_________________
Сотник.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Пн апр 05, 2021 15:40 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 184
Откуда: Москва
Благодарил (а): 33 раз.
Поблагодарили: 6 раз.
Поздравляю... :) Правильнее, естественно, фразу
['] hndlr irq-systick !
писать внутри какого-нибудь определения (например, внутри init-delay), т.к. ['] в режиме интерпретации работать не обязано, впрочем, в mecrisp'e и так работает... :)
Так ведь "вылетов" и не было: запускался обработчик по умолчанию, адрес которого был записан в переменную irq-systick, этот обработчик и выводил "unhandled ..."


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Announcing Mecrisp-Stellaris for ARM Cortex M
СообщениеДобавлено: Пн апр 05, 2021 16:32 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 208
Откуда: Минск
Благодарил (а): 17 раз.
Поблагодарили: 2 раз.
Total Vacuum писал(а):
Поздравляю... :) Правильнее, естественно, фразу
['] hndlr irq-systick !
писать внутри какого-нибудь определения (например, внутри init-delay), т.к. ['] в режиме интерпретации работать не обязано, впрочем, в mecrisp'e и так работает... :)
Так ведь "вылетов" и не было: запускался обработчик по умолчанию, адрес которого был записан в переменную irq-systick, этот обработчик и выводил "unhandled ..."

Понятно. Обработчик берёт адрес из переменной irq-systick и передаёт по этому адр управление.
Я затормозил... Смотрел на примеры из Си.

Осталось разобраться как его усыпить по Sleep, чтоб не тарахтел впустую.
У меня все слова вызываются через диспетчер по 1 ms прерыванию.
Всё под контролем. Никакая самостоятельность не допускается! :dmad;

_________________
Сотник.


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

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


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

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


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

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