реклама на сайте
подробности

 
 
5 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Basic Interpreter for AVR, Хочу написать
dxp
сообщение Apr 4 2006, 06:16
Сообщение #16


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Даешь Python для AVR! А что, это было бы круто! Только очень медленно. smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 4 2006, 06:30
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Насколько я понимаю, задача построения интерпретатора в общем разделяется на две части - операторы и работа с данными. Операторы большой сложности не представляют. Главная проблема в данных.
Во всех скриптовых языках данные тяготеют именно к типу Variant
Насколько я пытался анализировать, в Python, tcl, Lua данные храняться в текстовом виде в таблицах. Это соответсвенно требует памяти, о чем уже говорилось. Васик здесь будет не лучше и не хуже.Почему я не считаю Васик лучшим выбором - вышеприведенные языки во-первых более вольны в синтаксисе, во-вторых растут из более профессионального UNIX-мира, в третьих изначально создавались как embedded, для встраивания сценариев в большой софт. С таким же успехом могут быть встроены и в железо.

И последнее, может быть просто здесь, в ветке, сформировать требования к языку и попробовать найти реализацию соответствующую требованиям? Или урезать что-н известное для соответсвия ним?


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 4 2006, 21:32
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(beer_warrior @ Apr 4 2006, 10:30) *
И последнее, может быть просто здесь, в ветке, сформировать требования к языку и попробовать найти реализацию соответствующую требованиям? Или урезать что-н известное для соответсвия ним?


Всегда тянуло на какой-нибудь аналогичный подвиг. :-) Но так и не довелось. Самое большое ASM и DISASM для 51. smile.gif
Интерпретатор по определению много памяти жрёт. Ну очень много. Хотя есть и варианты. Я некогда встречал типа компилятор-интерпретатор с языка Паскаль. На так называемом Пи-коде. Так реализация очень маленькая. По-моему 4к. И работала прилично. Кстати к интерпретатору ещё и редактор нужен. smile.gif

А в общем - дерзай. Зачем обосновывать необходимость? smile.gif Я тебя марально поддерживаю! smile.gif По крайней мере удовольствие получишь. smile.gif
Go to the top of the page
 
+Quote Post
ZiB
сообщение Apr 5 2006, 04:27
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 122
Регистрация: 26-07-05
Из: Россия, Томск
Пользователь №: 7 109



т.к. как количество перепрограммирований флешь памяти ограничено, было бы не плохо, если бы программа выполнялась из внешней памяти, может кто видел такую штуку ?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 5 2006, 04:51
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
если бы программа выполнялась из внешней памяти

Естессно, например обычно девайс управляеться командами с ком-порта.
с таким же успехом может управляться командами выбираемыми из датафлэш. Технологически разницы почти нет, только команды запуска останова интерпретации.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
SpyBot
сообщение Apr 5 2006, 05:48
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491



Цитата(SasaVitebsk @ Apr 5 2006, 00:32) *
[...]
Кстати к интерпретатору ещё и редактор нужен. smile.gif

А в общем - дерзай. Зачем обосновывать необходимость? smile.gif Я тебя марально поддерживаю! smile.gif По крайней мере удовольствие получишь. smile.gif

Насчет удовольствия полностью поддерживаю!

И имхо надо делать автономное устройство - с ЖКИ, клавиатурой, энергонезависимой памятью. И ОЗУ вешать не на какой-нибудь порт, а на специально отведенную для этого шину smile.gif Со временем добавлять различные "быстрые" функции.
Подобный девайс есть, например, у касио - т.н. графический калькулятор. Очень и очень приятная вещь.
Причем мне кажется, что интерпретатор на AVR-ке обгонит спектрумовский асм.

Сообщение отредактировал SpyBot - Apr 5 2006, 05:49
Go to the top of the page
 
+Quote Post
proba
сообщение Apr 5 2006, 06:01
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526



posmotrite Circuitcellar M16C contest , tam jest project PLC Basic i project Lua. Renesas M16C nemnogo moshneje AVR noo ne osobo.
http://www.circuitcellar.com/renesas2005m16c/
http://www.circuitcellar.com/renesas2005m1...inners/1685.htm
http://www.circuitcellar.com/renesas2005m1...ers/DE/1678.htm
Go to the top of the page
 
+Quote Post
BVU
сообщение Apr 5 2006, 06:59
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(prottoss @ Apr 3 2006, 18:51) *
...
Не всегда нужно ограничиваться скоростью при выборе МК. Тем паче у AVR еще, кроме скорости, масса преимуществ перед другими МК. Иногда системе нужна не скорость, а нечто другое. Я уважаю Ваше мнение, и часто читаю Ваши ответы в топиках, и, честно говоря, не думал что Вы так узко мыслите по поводу AVR...Извините, если я Вас обидел, конечно.
...

Да что Вы, какие тут могут быть обиды. Здесь форум, а не столовая или баня. smile.gif
Если кому-то это действительно нужно, как уже выяснилось, со своей стороны могу пожелать удачи в этом деле. Руссуждения мои по поводу Basic относительно того, кто пишет на 'C/C++', здесь преимущества очевидны... т.е. глубокая проработка проекта относительно использования языка программирования, что не всегда можно сделать на Basic. Аргумент по скоростным качествам AVR, приводился, как один из немногих. Конечно же выбор контроллера проводиться по комплексу характеристик максимального соответствия поставленной задачи.

С уважением,
BVU


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Kopa
сообщение Apr 5 2006, 07:26
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(defunct @ Apr 3 2006, 22:37) *
Цитата(prottoss @ Apr 3 2006, 15:41) *

Возникла идея написания интерпретатора Basic для МК AVR. Не буду говорить о мотивах, подтолкнувших меня на это дело. Возникло несколько вопросов перед решением данной задачи:
1. Нужно ли это кому нибудь.
2. А не изобретаю ли я велосипед.

Насчет бейсика - точно не нужно, а вот интерпретатор урезанного паскаля был бы очень кстати.
Интерпретаторов какого-либо языка на AVR не встречал.

PS: Интерпретатору нужно много RAM'а.. память внешнюю будете ставить?

Ссылка на динамический паскаль
http://www.southern-storm.com.au/portable_net.html

Для Windы собирал через cygwin

Еще можно посоветовать обратить взоры на язык Форт (Forth) не путать с фортраном
(Один из лучших, по моему, языков программирования)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Apr 5 2006, 09:11
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(BVU @ Apr 5 2006, 14:59) *
Цитата(prottoss @ Apr 3 2006, 18:51) *

...
Не всегда нужно ограничиваться скоростью при выборе МК. Тем паче у AVR еще, кроме скорости, масса преимуществ перед другими МК. Иногда системе нужна не скорость, а нечто другое. Я уважаю Ваше мнение, и часто читаю Ваши ответы в топиках, и, честно говоря, не думал что Вы так узко мыслите по поводу AVR...Извините, если я Вас обидел, конечно.
...

Да что Вы, какие тут могут быть обиды. Здесь форум, а не столовая или баня. smile.gif
Если кому-то это действительно нужно, как уже выяснилось, со своей стороны могу пожелать удачи в этом деле. Руссуждения мои по поводу Basic относительно того, кто пишет на 'C/C++', здесь преимущества очевидны... т.е. глубокая проработка проекта относительно использования языка программирования, что не всегда можно сделать на Basic. Аргумент по скоростным качествам AVR, приводился, как один из немногих. Конечно же выбор контроллера проводиться по комплексу характеристик максимального соответствия поставленной задачи.

С уважением,
BVU




Поймите, я не собираюсь писать OS BASIC а ля Спектрум. Я хочу написать что то типа скрипта, с возможностью запуска кода пользователя. У меня нет цели написать объектно-ориентированную среду программирования, этим занимается исполняемый код в контроллере. А интерпретатор (может быть это даже громко сказанно) - это прослойка между хостом и исполняемым кодом, хотя исполняемого кода может и не быть совсем :-). Я тут накидал примерный список команд и разделение типов (больше относится к адресам)

Код


-DATA TYPES-

INTEGER  - 16-bit signed value  ex: 127; $33; 'A' (-32767...32767)
SRAM adress - 16-bit unsigned value ex: 0, $6A, 65500 (0...65535)
FLASH adress - 16 bit unsigned value ex: #0, #$7FF, #65500 (0...65535)
EEPROM adress - 16-bit unsigned value ex: %0, %$7DE, %65500 (0...65535)
PORT adress - 16-bit unsigned value ex: @0, @15, @$1F (0...65535)


-CONTROL-

RUN  - start BASIC code
CODE  - start user code at adress with programm memory
PRINT  - send value for USART thread
DUMP  - send dump for USART thread
FOR-TO-NEXT - looping structure
GOSUB-RETURN - call subroutine
GOTO  - programm jump
REM  - comment


-LOGICAL, ARITHMETIC-

=  - set equal to
==  - used for evaluation for IF-THEN structure
<>  - not equivalent
>  - is greater than
<  - is less then
>=  - is greater or equivalent than
<=  - is less or equivalent then
-  - subtraction
+  - addition
*  - multiplication
/  - division
AND  - logical AND
OR  - logical OR
XOR  - logical XOR
LSL  - logical shift left
LSR  - logical shift right
RAND  - randomize value
ABS  - get absolute value


-IO-

PEEK  - get value at adress/port
POKE  - set value to adress/port
SET  - set bit at value
CLR  - clear bit at value
BIT  - invert bit at value


--------------------
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 5 2006, 10:53
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(SpyBot @ Apr 5 2006, 09:48) *
И имхо надо делать автономное устройство - с ЖКИ, клавиатурой, энергонезависимой памятью. И ОЗУ вешать не на какой-нибудь порт, а на специально отведенную для этого шину smile.gif Со временем добавлять различные "быстрые" функции.
Подобный девайс есть, например, у касио - т.н. графический калькулятор. Очень и очень приятная вещь.
Причем мне кажется, что интерпретатор на AVR-ке обгонит спектрумовский асм.


Не совсем обязательно. Предлагаю другой подход!
Пишется и применяется одно ядро. А после ядра подряд располагаются вектора! Типа:
getc
putc
getc_prg
putc_prg
printc

Ядро обращается только к векторам.
Таким образом при смене стандартной переферии необходимо лишь написать BIOS. smile.gif И подключай чего хошь! Хошь RS232, а хошь встроенный LCD. И для программы можно использовать разные устройства хранения. Хошь внутр. или внешний флэш а хошь SD.

Короче в этом случае нет необходимости жёсткой привязки к оборудованию. И не требуется введение нестандартных команд и опций!
Go to the top of the page
 
+Quote Post
Kopa
сообщение Apr 5 2006, 11:45
Сообщение #27


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(prottoss @ Apr 5 2006, 12:11) *
Я хочу написать что то типа скрипта, с возможностью запуска кода пользователя. У меня нет цели написать объектно-ориентированную среду программирования, этим занимается исполняемый код в контроллере. А интерпретатор (может быть это даже громко сказанно) - это прослойка между хостом и исполняемым кодом, хотя исполняемого кода может и не быть совсем :-). Я тут накидал примерный список команд и разделение типов (больше относится к адресам)
...


Примерно так все и делается для AVR в IDE http://www.tinyboot.com/ ( в разделе Firmware)
IDE написана на Форте. Данную IDE использовал при программировании CPU PDP-11
( адаптация заняла примерно пару недель ).

Сейчас продумываю возможности улучшения. (Часть документации перевел)
для PDP также писал симулятор проца и цеплял к IDE.

Сообщение отредактировал Kopa - Apr 5 2006, 11:50
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 5 2006, 14:42
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



2SasaVitebsk
Цитата
Пишется и применяется одно ядро. А после ядра подряд располагаются вектора! Типа:

Это уже больше похоже на ОС.Речь же идет об интерпретаторе.

2BVU
Цитата
Руссуждения мои по поводу Basic относительно того, кто пишет на 'C/C++', здесь преимущества очевидны...

Вот у меня сейчас работают усторойства - опрос разных датчиков и выдача сигнала о сбоях с системе.
Уже сейчас, в эксплуатации выясняеться, что на разных конечных точках заветная комбинация будет разная, сигналы аварии тоже. В результате поддерживаю 5 версий одной прошивки. Перестановка коробки сопровожддаеться прошивкой софта. Вижу простейшее решение - опрос датчиков, клавиатуры, 485-го на С, интерпретацией полученных результатов - заветные комбинации совпадений и выдача сигнала на буззер, светодиоды и 485-й занимаеться именно скрипт, который при необходимости может нашкрябать и сам потребитель.

2Kopa вижу не первый ваш пост посвященный Форту. О языки слыхал много и возможно это действительно решение. Где можно почитать толковый Getting Started?


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Apr 5 2006, 18:15
Сообщение #29


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



<PEEK - get value at adress/port
POKE - set value to adress/port>
Я бы разделил. Все-таки POKE-PEEK и OUT-IN - разные вещи, если адресное простанство памяти и ввода-вывода физически разделено:-)


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Apr 5 2006, 18:31
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Harbinger @ Apr 6 2006, 02:15) *
<PEEK - get value at adress/port
POKE - set value to adress/port>
Я бы разделил. Все-таки POKE-PEEK и OUT-IN - разные вещи, если адресное простанство памяти и ввода-вывода физически разделено:-)




Читайте внимательней, что я привел. Во входном параметре для функций POKE-PEEK есть префикс - #, %, @ - означающий соответственно ФЛЭШ, ЕЕПРОМ и ИО. Если префикса нет, то SRAM.

Кстати адресное пространство ввода-вывода как раз не разделено, а есть одно и то же простарнство статической памяти (SRAM). Просто через команды IN, OUT идет обращение со смещением и адрес в инструкции имеет длину помоему 6 бит. К портам и к РОН можно обращаться так же как к ячейкам памяти SRAM непосредственно или через указатель


--------------------
Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 23:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01525 секунд с 7
ELECTRONIX ©2004-2016