← Архив: Common Lisp

Common Lisp для PIC-контроллеров

Author: · 12.01.2011 18:48
· original author: LispUser
Известно ли кому-нибудь о использовании Common Lisp  для программирования PIC-контроллеров?
Возможно ли это?
Каким образом?
Спасибо!
· original author: 1349
Такой большой язык для такого маленького процессора? Нет.
Какой-нибудь просто лисп попробуй, типа thinlisp.
· original author: vsedach
Возможно, но на данный момент такая система не существует. Самый перспективный метод это наверное взять VM CLISPа и сделать порт на PIC, потом кросс-компилировать на него. Не знаю получится ли, тк байт-код CLISPа не самый компактный.
http://www.ift.ulaval.ca/~dadub100/files/ll3.pdf
http://www.ift.ulaval.ca/~dadub100/files/picbit.pdf
Вот реализация R4RS Scheme на PICe. Думаю что тот VM будет годен и для CL, но придется сделать новый компилятор.
Такая штука существовала когда то для m68k (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2.1953), ну и в принципе Movitz тоже основан на базе кросс-компилятора.
А ThinLisp это транслятор с Common Лиспа на Си, вроде как Parenscript. Генерированный код требует libc, и имеет свою рантайм библиотеку которая тоже не мала. Удобно если кто то требует Си код но не знает что это такое и не собирается на него смотреть, но на PIC точно не влезет.
· original author: slav
Я бы не стал даже пытаться перенести весь CL на микроконтроллер (ибо очень большой и содержит элементы, которые тяжело переносить и исполнять на МК, к примеру сборщик мусора). ИМХО лучше написать свой лиспоподобный язык для МК с нужными тебе фичами, транслируемый сразу в маш. код заданного МК (благо системы команд микроконтроллеров довольно просты). Типа того, как сделан thinlisp, только транслировать сразу в маш. код. Не знаю, может кто-то это уже делал, но мне не встречалось.
У микроконтроллеров гораздо меньше ресурсов чем у обычных компьютеров (и быстродействия, и (особенно!) памяти), поэтому писать под них в том же стиле, как обычно пишут на CL, всё равно не получится. А вот использовать CL для написания компилятора своего лиспа под МК - вполне.
· original author: megamanx
а поинтересоваться можно, какой pic? Хотя бы разрядность. Можно forth использовать, он для pic написан. И на нём уже писать что-то больше.
· original author: LispUser
PIC16F630 14-Pin, Flash-Based 8-Bit CMOS Microcontrollers
А Forth как использовать, какая-то есть система программирования на языке Forth для микроконтроллеров?
· original author: megamanx
он 8-битный(((. Системы программирования на форте вроде нет, есть реализации ядра форта, но самую мелкую видел только для 16-битных. Я писал just for lulz, на AVR 8-битный в  несколько команд на асме. Там в sram можно ораганизовать свой стек и т.д. и т.п. Но это очевидно не замена нормального ЯП типа basic или C.
· original author: andy128k
> Но это очевидно не замена нормального ЯП типа basic или C.
Правильно приготовленный Forth -- не только замена, но и предпочтительный вариант. :)
· original author: cvb
>Правильно приготовленный Forth -- не только замена, но и предпочтительный вариант. :)
Эти форты чего-то с трудом влазиют на avr серии mega, о tiny можно и не думать :)
От лиспа думаю тоже профита не будет, нужен какой-то статически типизированый лисп, да без clos c gc и кондишенов с рестартами, так же никакой динамической разработки, из плюшек - только макросы и останутся. 
· original author: LispUser
> Правильно приготовленный Forth -- не только замена, но и предпочтительный вариант. :)
Я читал, что программы на Forth часто короче и быстрее их аналогов даже на ассемблере.
Как готовить Forth для микроконтроллеров?
Укажите направление, пожалуйста, если Вам оно известно.
(Понятно, Гугл, но, может, Вы уже что-то отобрали отличное и полезное).
· original author: andy128k
> Эти форты чего-то с трудом влазиют на avr серии mega, о tiny можно и не думать :)
А сколько там памяти? Хоть пара килобайт есть?
· original author: andy128k
> Я читал, что программы на Forth часто короче и быстрее их аналогов даже на ассемблере.
Это зависит от реализации. Суть в "шитом" коде (threaded code) и его вариациях.
Можно гибко варьировать длину и скорость.
> Как готовить Forth для микроконтроллеров?
> Укажите направление, пожалуйста, если Вам оно известно.
Не известно. Но свою реализацию форта можно написать за несколько часов.
· original author: cvb
>А сколько там памяти? Хоть пара килобайт есть?
В серии мега от 16кб под код и около 1кб оперативки, на tiny и того меньше. Нехватает, как я понимаю, как раз оперативки. Вообще, как мне кажется, сделать форт для мк можно, только нужен матерый компиляторостроитель, знающий форт и готовый выложить мотом свое творение людям, ну тоесть проблемы тяжелых фортов - не технические.
· original author: andy128k
> В серии мега от 16кб под код
Это ПЗУ?
> Нехватает, как я понимаю, как раз оперативки.
Помню, одна из реализаций для 8080 (К580...) занимала 2 килобайта. Код вполне можно весь в ПЗУ перенести. А оперативка вся будет для программы.
· original author: _lee
А есть ли такое применение для PIC, где был бы востребован Lisp?
Где была бы сложность, не позволяющая применять ассемлер/C .
· original author: LispUser
Хотелось бы совместить приятное (Lisp) с полезным (программирование контроллера).
· original author: cvb
>Это ПЗУ?
Ну да, пзу для кода, есть еще пзу для данных немного, но оно медленное, и озу.
>Помню, одна из реализаций для 8080 (К580...) занимала 2 килобайта. Код вполне можно весь в ПЗУ перенести. А оперативка вся будет для программы.
Можно конечно и есть коммерческие реализации, но вот из свободных все почему-то хотят интерактивности и делают интерпретаторы, ну и плюс такому форту надо бы уметь еще и сишные .h файлы поспринимать с сишными макросами, как минимум. В общем задача трудоемкая. Будь форт популярен - конечно написали бы, а так шансов мало.