Forth http://fforum.winglion.ru/ |
|
Помогите найти хоть бы один кросс-компилятор, что ли? http://fforum.winglion.ru/viewtopic.php?f=39&t=2268 |
Страница 1 из 4 |
Автор: | RodionGork [ Вт сен 01, 2009 05:03 ] |
Заголовок сообщения: | Помогите найти хоть бы один кросс-компилятор, что ли? |
Уважаемые товарищи! Если так дальше пойдет, я скоро отчаюсь. ![]() Посмотрел несколько вариантов ФОРТ для 51-х процессоров. По-видимому все они желают быть вписанными в собственно какой-нибудь 8051-й чип или ROM от него, и работать, осчастливливая пользователя уже оттуда. Я бы предпочел кросс-компилятор. Или, так сказать, систему ФОРТ работающую на настольном компе, но генерирующую результирующий код для записи в микроконтроллер. Я догадываюсь, что это, видимо, требует того чтобы основные слова в такой системе имели по два варианта. Нет, то есть по три, правильно? Для run-time, для compile-time на стороне хоста и для compile-time целевой системы. Но не думаю, чтобы это было необъезжаемой проблемой? Или как? Я вообще что, в корне не прав в своем желании? (а как вообще работать с некросс-компилируемым фортом в условиях возни с микроконтроллерами? прошить ядро форта в процессор, а потом по УАРТу залить в него программулину - при этом он должен будет еще перепрошить себя изнутри... amForth вроде что-то такое предлагал, но он не заработал, а разбираться пока руки не дошли...) |
Автор: | RodionGork [ Вт сен 01, 2009 05:23 ] |
Заголовок сообщения: | |
(кстати, я эту тему хотел в разделе для новичков задать, но почему-то сюда попал, извините) Второй вопрос: а вообще возможен ли полноценный ФОРТ в микроконтроллере где память программ и данных разделена, причем вторая имеет небольшой размер? Ну то есть, я так понимаю, что нет проблемы в том, чтобы в микроконтроллере работала программулина, на протяжении всей своей жизни выполняющая уже скомпилированные слова, находящиеся в словаре, живущем тут же в памяти программ. Но вот допустим кто-то сочинил программу, которая в ходе своей деятельности постоянно порождает новые словеса (ну, допустим, он предусмотрел необходимое периодическое очищение словаря от ненужных слов). Хотя впрочем... Я так понимаю, пусть они себе живут в памяти данных (тем более, что это, вероятно, слова имеющие к данным непосредственное отношение будут)... Главное чтобы ее хватало, хотя это уже проблема второстепенная. М-да. Вопроса, наверное, как такового нету... |
Автор: | Kopa [ Вт сен 01, 2009 05:27 ] |
Заголовок сообщения: | |
А смотрели ли ff303 Здесь можно найти оригинальную и модифицированную студию \ FIRMWARE STUDIO by Brad Eckert для ATMEGA128 И здесь ff303 В ней поддержаны и 51 и AVR и др. IDE и описание и ещё много всего и бесплатно и юзабельно. P.S. Лично я с ней имел длительный опыт работы:) |
Автор: | Kopa [ Вт сен 01, 2009 05:46 ] |
Заголовок сообщения: | |
RodionGork писал(а): (кстати, я эту тему хотел в разделе для новичков задать, но почему-то сюда попал, извините) Это более правильное место. RodionGork писал(а): ( Второй вопрос: а вообще возможен ли полноценный ФОРТ в микроконтроллере где память программ и данных разделена, причем вторая имеет небольшой размер? Насколько полноцненный это требует уточнения или решения из ресурсов МК чем можно пожертввовать. Общий ответ -Да RodionGork писал(а): Но вот допустим кто-то сочинил программу, которая в ходе своей деятельности постоянно порождает новые словеса (ну, допустим, он предусмотрел необходимое периодическое очищение словаря от ненужных слов). Хотя впрочем... Я так понимаю, пусть они себе живут в памяти данных (тем более, что это, вероятно, слова имеющие к данным непосредственное отношение будут)... Главное чтобы ее хватало, хотя это уже проблема второстепенная. М-да. Вопроса, наверное, как такового нету...
Вопрос похоже надуманный поэтому и непонятный. На период отладки алгоритма контроллер вообще может только работать в качестве транслятора команд скриптовой Форт программы для внешней периферии. А дальше всё равно прошивка программы будет, а также самопрограммирование Flash существует P.S. c amForth iv_ru сам разбирается в рамках дипломного проекта задавая вопросы по необходимости ( если почитать топики ) Есть и ещё достойные решения, но с возможными ограничениями реализации. Выбор за Вами Удачи |
Автор: | RodionGork [ Вт сен 01, 2009 06:07 ] |
Заголовок сообщения: | |
Забавно, кстати... Я как раз зашел сказать, что после унылого глядения на коммерческие проекты и на явно не работающий сайт tinyboot.com я, наконец, преодолел собственную тупость и на форуме нашел ссылку на живой дистрибутив как раз ff303. От топиков уже голова кругом слегка. Да и компетенции мне не хватает. %) Продолжаю разбираться. |
Автор: | garbler [ Вт сен 01, 2009 10:22 ] |
Заголовок сообщения: | |
RodionGork писал(а): Продолжаю разбираться.
вот ещё один подход, на целевой системе оставляют простейший монитор - http://pygmy.utoh.org/3ins4th.html - Михаил Максимов с таким баловался, ему можешь вопросы позадавать. |
Автор: | chess [ Вт сен 01, 2009 16:15 ] |
Заголовок сообщения: | |
RodionGork писал(а): Я бы предпочел кросс-компилятор. Или, так сказать, систему ФОРТ работающую на настольном компе, но генерирующую результирующий код для записи в микроконтроллер.
Я подобный сделал. Взять можно здесь http://www.chess2007.nm.ru/~chess.zip |
Автор: | mOleg [ Вт сен 01, 2009 20:19 ] |
Заголовок сообщения: | |
по поводу ваших вопросов рекомендую дочитать содержимое статьи "Moving Forth" первую часть которой я перевел для форума, думаю у вас отпадет куча вопросов тем более, что в статье приводится и обосновывается разработка в том числе Форта под 51-ую машинку, о которой вы спрашивали. Тем более, что это классика. |
Автор: | mOleg [ Вт сен 01, 2009 20:37 ] |
Заголовок сообщения: | |
да, захотелось добавить насчет кросс-компиляции. Обычно так не делают по очень простой причине - транслятор очень маленький, а все используемые при его создании слова везде широко используются. Таким образом от удаления кода пары примитивов выигрыша не наблюдается, а от убирания кода транслятора - исчезает возможность легко и оперативно вмешиваться в работу системы. Поэтому стоит хорошо подумать над необходимостью кросскомпиляции. |
Автор: | Hishnik [ Вт сен 01, 2009 21:08 ] |
Заголовок сообщения: | |
mOleg писал(а): Обычно так не делают по очень простой причине - транслятор очень маленький, а все используемые при его создании слова везде широко используются. Таким образом от удаления кода пары примитивов выигрыша не наблюдается, а от убирания кода транслятора - исчезает возможность легко и оперативно вмешиваться в работу системы. Поэтому стоит хорошо подумать над необходимостью кросскомпиляции.
В усредненной задаче для МК, тем более такого некрупного, как 8051, Форт как процесс, обрабатывающий входной поток в цикле, не нужен в 95% случаев. Разве что понадобится мощный терминал с возможностью настраиваемого обмена с хост-машиной. В то же время, возможность управлять размером/производительностью путем выбора нужной модели ШК (или переходом к машинному коду) может оказаться очень важной. Правда, тут из ШК подойдет какая-нибудь разновидность индексного с индексом размером в один байт, ради максимальной экономии памяти. И вот именно кросс-транслятор, хранящий заголовки словарных статей только на PC, а в МК отсылающий исключительно тела статей, т.е. только код, может очень даже пригодиться. По крайней мере, компактные приложения, управляющие периферией и что-нибудь снимающие/собирающие/упаковывающие/передающие, с кросс-трансляторами получаются достаточно хорошо. |
Автор: | Mihail [ Вт сен 01, 2009 23:43 ] |
Заголовок сообщения: | |
RodionGork писал(а): Посмотрел несколько вариантов ФОРТ для 51-х процессоров. Давным давно создал http://fpauk.narod.ru/spf51t.rar сегодня попробовал, не запускается базовая Форт-система под winXP Скрестил с системой под МСП получил: http://www.easy-share.com/1907582759/spf51.7z Генерятся листинг и 3 формата загрузочного модуля, т.ч. все можно посмотреть. Однако, я не знаю что собой должны представлять эти модули, для нормальной работы. Контроллера с 8051 у меня нет, попробовать не могу. Если мне предоставить листинг рабочего примера, я смогу создать рабочую программу. RodionGork писал(а): Для run-time, для compile-time на стороне хоста и для compile-time целевой системы. Что-то не особо понял. Моя система работает в 2х режимах: целевой компиляции (ЦК) и распределенная система. ЦК - генерация модуля для загрузки в ПЗУ. Распределенная система - это взаимодействие с удаленным контроллером по средствам УАРТа. При этом память удаленного процессора представляется как виртуальная на хосте. RodionGork писал(а): на форуме нашел ссылку на живой дистрибутив как раз ff303.
Вещь мощная, но слишком мудреная. Если возникнут проблемы, вряд-ли кто-то что-то подскажет. Я предлагаю доработать spf51.7z (совместными усилиями). |
Автор: | Kopa [ Ср сен 02, 2009 03:38 ] |
Заголовок сообщения: | |
Mihail писал(а): RodionGork писал(а): на форуме нашел ссылку на живой дистрибутив как раз ff303. Вещь мощная, но слишком мудреная. Если возникнут проблемы, вряд-ли кто-то что-то подскажет. . Меня спросите:) P.S. Каким она переделкам подвергалась при переносе и добавлении возможностей можно сравнить с адаптацией для PDP-11 ( почти MSP430) Есть немного "вольного" перевода документации. Михаил. Варианты её использования или произвольной переработки со "скрещиванием" c другими Форт системами могут быть разные. |
Автор: | chess [ Ср сен 02, 2009 07:36 ] |
Заголовок сообщения: | |
Хищник писал(а): По крайней мере, компактные приложения, управляющие периферией и что-нибудь снимающие/собирающие/упаковывающие/передающие, с кросс-трансляторами получаются достаточно хорошо.
Могу только сказать, что приложения могут быть любые, а не только перечисленные. Кросс-компилятор не накладывает каких-либо ограничений в этом плане. |
Автор: | RodionGork [ Ср сен 02, 2009 09:03 ] |
Заголовок сообщения: | |
Уважаемые товарищи, всем привет! Отвечаю по порядку. garbler: за ссылку спасибо. Ну да, это монитор. Транслятор к нему надо сочинять отдельно - кроме того для контроллеров с разделенными адресными пространствами надо еще что-то отдельное придумывать, либо виртуальное объединение адресных пространств, либо больше команд... ![]() chess: тоже за ссылку спасибо, что-то с утра она у меня не открылась. На какой-то квип-видео с обломом вела. А сейчас чуть позже, вроде, открывается. Странно это все. %) Что касаемо содержимого, будем разбираться, спасибо! mOleg: статью почитаю, поскольку предоставленный любезно вами перевод первой ее части имел среди меня популярность и успех ![]() - встраивание интерфейса в контроллер похитит, я думаю, 4-8 килобайт памяти программ, не вполне ясное количество ОЗУ, ну и сам канал займет (хотя если он для работы с терминалом используется, это не так печально - а если, скажем, с модемом - уже нехорошо) - при этом если сама задача требует от контроллера такое же количество ресурсов (или даже меньшее - согласитесь, мелких задачек куча) - то это будет уже не очень приятно (ну, скажем, если себестоимость изделий изменится с $2 до $3 на партии в 1000 штук, уже задумчивость придет); - с другой стороны обработка исходного текста на стороне хоста может осуществляться с произвольно высокой степенью комфорта, я полагаю, как раз в виду неограниченности ресурсов; - необходимость вмешательства в работу системы - спорный аргумент; безусловно это хорошо при отладке (особенно если нет других средств) - впрочем если разработкой занимается не такой чайник, как, скажем, я, то он обычно делает меньше ошибок и принципиально готов порой жить вообще без отладки, или отлаживаться по миганию одного светодиода (если, опять же, речь идет о небольших задачах) - когда же процесс разработки считается завершенным, я думаю, любую возможность вмешательства разработчик заколотит большими гвоздями, если не будет иметь возможности удалить ее напрочь. Хищник: вы вообще очень правильно отметили выгодные моменты которые можно получить на мелких процах; хотя цена на чипы зависит, как можно видеть, в том числе даже и от их популярности в народе, все таки с объемом набортной памяти она обычно коррелирует достаточно четко, а этот момент порой исключительно важен. Mihail: ух, будем смотреть! Что касаемо запускания/незапускания - вот я б точно предпочел кросс-компилятор ФОРТа видеть написанным на Си, учитывая что если программист не совсем безнадежен, то добиться переносимости сишной консольной программулины (в мире настольных компьютеров а не МК) обычно несложно (без требования соединения с целевой системой, а просто преобразующий файл исходного текста в файл прошивки); в общем, по результатам посмотрения сообщу мысли дополнительно. Chess: еще раз очень точно подмечено, что кросс-компилятор позволяет иметь большую свободу (хотя, как верно заметил mOleg, возможно за счет отказа от некоторых необязательных удобств). с уважением, Родион |
Автор: | chess [ Ср сен 02, 2009 09:11 ] |
Заголовок сообщения: | |
RodionGork писал(а): chess: тоже за ссылку спасибо, что-то с утра она у меня не открылась. На какой-то квип-видео с обломом вела. А сейчас чуть позже, вроде, открывается. Странно это все. %)
Там в конце ссылки на файл точка(.) стояла. |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |