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/ |