Forth
http://fforum.winglion.ru/

m3forth - форт для ARM Cortex-M3
http://fforum.winglion.ru/viewtopic.php?f=39&t=2952
Страница 1 из 5

Автор:  oco [ Сб июл 06, 2013 01:01 ]
Заголовок сообщения:  m3forth - форт для ARM Cortex-M3

Всем здравствуйте!

Недавно увлекся микроконтроллерами и, насытившись AVR-ами, решил попробовать что-то посеръезнее. Остановился на STM32vldiscovery (ARM Cortex-M3).
Отыскал несколько форт-систем, но подходящего ничего не нашел, так как заранее захотел себе систему отладки, как в С. Пришлось долго продираться по дебрям отладочных форматов и документации ARM. И вот результат, m3forth!
Написан на sp-forth 4.20 (в комплекте). За основу взят macroforth by David Kuhling.

Краткие характеристики:
- 32-бита, подпрограммный шитый код
- Соответствует стандарту для кросс-компиляторов, предложенному Forth, Inc. (можно почитать здесь, здесь и здесь)
- Встроенный Thumb2-ассемблер
- Оптимизатор (аналогичный таковому в SwiftX)
- Интерпретатор
- Генерация стандартных elf-файлов с отладочными символами, что позволяет отлаживать форт-программы в gdb (скриншот сессии отладки в DDD).

Пока работает только в Linux
Для установки вам понадобится:
- тулчейн (я использовал CodeSourcery). Нужен для генерации листинга и отладки. Готовый архив здесь
- st-link - для прошивки и отладки программ непосредственно на контроллере
- qEMU - эмулятор (вам нужна только его ARM-часть)
- библиотеки libelf и libdwarf.so (последняя в комплекте, для ubuntu 12.10, 13.04, ее нужно скопировать в usr/lib; если не подойдет, собрать из исходников)
- ddd (data display debugger) - визуальный отладчик

В папке examples два тестовых проекта:
- tester - стандартный форт-тестер tester.spf
Можно протестировать на эмуляторе, запускайте:
make run - попадете в терминал (эмулятор),
make debug - отладка в эмуляторе
make test - тестирование интерпретатора (эмулятор)
make flash - прошивка микроконтроллера
make debug2 - отладка непосредственно в микроконтроллере

- led - мигаем светодиодами на stm32vldiscovery
make flash - прошивка микроконтроллера
make debug2 - отладка непосредственно в микроконтроллере

Версия 0.5

Качать можно здесь или здесь (гитхаб)

Автор:  VoidVolker [ Сб июл 06, 2013 08:55 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

Урра!
Вообще, хорошо бы выложить все необходимые компоненты одним файлом и чтобы можно было использовать из коробки.
И конечно пошаговую инструкцию по процессу заливки всего этого в железку.
Я вот несколько месяцев назад искал форт как раз под М3 - нашелся Pygmy Forth, но вот на той самой дискавери он так и не завелся. Может конечно я что-то не так делал в силу отсутствия глубоких знаний в МК. А автор ответил - "ничего не знаю".

Какие основные особенности данного форта?

Автор:  oco [ Вс июл 07, 2013 12:28 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

VoidVolker писал(а):
Урра!
Вообще, хорошо бы выложить все необходимые компоненты одним файлом и чтобы можно было использовать из коробки.

Из коробки не получится, линуксы у всех разные.
st-link придется собирать из исходников, это просто.
DDD, qEMU, libelf ставятся обычным способом.
libdwarf.so я приложил
Тулчейн качайте здесь
VoidVolker писал(а):
И конечно пошаговую инструкцию по процессу заливки всего этого в железку.

После того, как все соберете, просто
Код:
make flash

VoidVolker писал(а):
Какие основные особенности данного форта?

Я выше вкратце указал.
В общем, пробуйте, если конкретные вопросы какие будут - обязательно отвечу

Автор:  Mihail [ Пн июл 08, 2013 11:09 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

oco писал(а):
Из коробки не получится, линуксы у всех разные.

Сборка elf и bin файлов от системы не должна зависеть.
oco писал(а):
make run - попадете в терминал (эмулятор),
make debug - отладка в эмуляторе
...

Где просто компиляция?

Автор:  oco [ Пн июл 08, 2013 12:27 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

Mihail писал(а):
oco писал(а):
Из коробки не получится, линуксы у всех разные.

Сборка elf и bin файлов от системы не должна зависеть.

Сборка elf файла зависит от libelf и libdwarf, следовательно и от системы
Mihail писал(а):
oco писал(а):
make run - попадете в терминал (эмулятор),
make debug - отладка в эмуляторе
...

Где просто компиляция?

Просто make

Автор:  Mihail [ Пн июл 08, 2013 12:59 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

oco писал(а):
Где просто компиляция?

Просто make


У меня под UBUNTU/32
Код:
Exception #-2 at: /home/mihail/work/arm/m3forth/lib/dwarf/libdwarf.spf:5:16:
USE libdwarf.so
              ^ libdwarf.so: cannot open shared object file: No such file or dir


Для компиляции не нужен dwarf.

ЗЫ: В общем, работа большая и хорошая.
Ошибок и нерациональностей с ходу не нашел.

Автор:  oco [ Пн июл 08, 2013 13:14 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

Mihail писал(а):

У меня под UBUNTU/32
Код:
Exception #-2 at: /home/mihail/work/arm/m3forth/lib/dwarf/libdwarf.spf:5:16:
USE libdwarf.so
              ^ libdwarf.so: cannot open shared object file: No such file or dir


Для компиляции не нужен dwarf.

ЗЫ: В общем, работа большая и хорошая.
Ошибок и нерациональностей с ходу не нашел.

Положите libdwarf.so (в проекте есть) в /usr/lib
В общем, сделаю генерацию отладочных символов отключаемой, тогда и elf не нужен, оставить только bin?

Автор:  KPG [ Пн июл 08, 2013 15:26 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

Пример мигания в Proteus y меня "не завёлся" - в свойствах контроллера был указан hex, а в проекте его не оказалось,
заменил на elf из проекта и с ним тоже не мигает.

P.S. А возможно ли пошаговое исполнение Форт кода программы в Proteus по отладочной информации в файле?
(интуиция подсказывает, что вряд ли) и какие "рецепты" по опробованию данного Форта из под Windows?

Автор:  oco [ Пн июл 08, 2013 20:14 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

KPG писал(а):
Пример мигания в Proteus y меня "не завёлся" - в свойствах контроллера был указан hex, а в проекте его не оказалось,
заменил на elf из проекта и с ним тоже не мигает.

P.S. А возможно ли пошаговое исполнение Форт кода программы в Proteus по отладочной информации в файле?
(интуиция подсказывает, что вряд ли) и какие "рецепты" по опробованию данного Форта из под Windows?

В протеусе пока не работает, нужно рыть документацию на контроллеры, которые протеус может эмулировать, у меня еще только stm32f10x. Однако, пошаговая отладка в протеусе работает, проверял.
Под виндой не пробовал, нужно искать libelf, libdwarf для виндовс и немного переделывать систему.

Автор:  Ilya [ Вт июл 09, 2013 00:16 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

А из чего можно нагенерить файлы из папки /devices для stm32L-discovery?

Автор:  oco [ Вт июл 09, 2013 01:35 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

Ilya писал(а):
А из чего можно нагенерить файлы из папки /devices для stm32L-discovery?

Из CMSIS. На сайте st.com ищем микроконтроллер, установленный на плате. В разделе Design Resources ищем standard peripherals library. Качаем, в ней ищем файл Device/ST/контроллер/include/контроллер.h. Для STM32L152RB это будет stm32l1xx.h, в нем все есть

Автор:  Ilya [ Вт июл 09, 2013 02:08 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

oco писал(а):
Ilya писал(а):
А из чего можно нагенерить файлы из папки /devices для stm32L-discovery?

Из CMSIS. На сайте st.com ищем микроконтроллер, установленный на плате. В разделе Design Resources ищем standard peripherals library. Качаем, в ней ищем файл Device/ST/контроллер/include/контроллер.h. Для STM32L152RB это будет stm32l1xx.h, в нем все есть

Ок!
Имеем: вроде тестовые проекты компилятся и даже шьются в контроллер, а вот как получить доступ к терминалу (у меня LXDE)?
ЗЫ
Чутка пришлось ковырять makefile ибо при st-flash v2 - у меня автоматом пытался найти v1.

Автор:  oco [ Вт июл 09, 2013 03:29 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

Ilya писал(а):
Имеем: вроде тестовые проекты компилятся и даже шьются в контроллер, а вот как получить доступ к терминалу (у меня LXDE)?

Тут несколько вариантов (для проекта tester):
1. Моделируем в qEMU. Просто make run - получаем терминал
2. Хотим в контроллере:
2а. Подключаем контроллер к COM-порту, дописываем форт-систему. Пока не реализовано
2б. semihosting - очень удобная штука, позволяет подключиться к контроллеру через отладочный интерфейс. К сожалению, st-link не умеет его. Можно использовать openocd. make debug3 подключает терминал к stm32vldiscovery. Для вашей платы нужно подправить конфигурационный файл openocd, также в файле tester.spf раскомментировать строку
Код:
S" lib/semihosting.spf" INCLUDED
и закомментировать
Код:
S" lib/qemu-uart.spf" INCLUDED
. К сожалению, вариант очень медленный - скорость выдачи - около 1 символа в секунду :(. Возможно скорость можно увеличить, выдавая не по 1 символу, а целой строкой, думаю попробовать.

P.S. замените в makefile xfce4-terminal на ваш.

Автор:  oco [ Вт июл 09, 2013 18:22 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

KPG писал(а):
Пример мигания в Proteus y меня "не завёлся" - в свойствах контроллера был указан hex, а в проекте его не оказалось,
заменил на elf из проекта и с ним тоже не мигает.

Да, посмотрел сейчас, протеус эмулирует контроллеры LM3S3хх - в них вся периферия организована по-другому и на других адресах, программы для протеуса придется писать отдельно.

Автор:  KPG [ Вт июл 09, 2013 21:41 ]
Заголовок сообщения:  Re: m3forth - форт для ARM Cortex-M3

Название m3Forth несовсем удачно выбрано т.к.
с таким названием есть другой Форт для Cortex M3 LPC17xx m3Forth Cliff Biffle

Страница 1 из 5 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/