roboforum.ru

Технический форум по робототехнике.

Ищу кросс-компилятор для АВР... :)

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 24 май 2010, 18:44

Да, я так и думал, конечно только для нативных.
Вообще любые операции со строками можно сделать нативными (как например в бейсике),
(то есть даже обращение к букве в строке может выглядеть вот так str1 = mid(str2,7))
и нефиг буквы преобразовывать в цифры (опять же кроме нативных itoa(), atoi() или val(), hex() итп)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 24 май 2010, 18:59

Значит решено. В описании девайса будут типы параметров и возвращаемых значений нативных функций.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 24 май 2010, 19:08

Ну... то есть вы "кагбэ" надеетесь, что девайсов будет много разных и с разными нативными функциями? :shock:
Я и сам оптимист, конечно... :)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 24 май 2010, 19:19

Ну а почему бы и нет? Расширяемость и возможность конфигурирования никогда не помешают, тем более что здесь оно почти ничего не стоит

Добавлено спустя 1 минуту 10 секунд:
А вообще-то, да. Много. Как минимум два с абсолютно разным набором функций :)
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 24 май 2010, 19:31

Да я ж только за. Хорошо, если так. :)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 25 май 2010, 12:03

По типам данных получается такой расклад:
  1. Допустимые типы данных - число, массив (чисел), строка и список строк.
  2. Массивы одномерные
  3. Размерность массива и максимальная длина строки всегда объявляется
  4. Допускаются константные строки
  5. Список строк - это константный массив константных строк
  6. Массивы, строки и списки - только глобальные
  7. Обычные функции принимают и возвращают только числа
  8. Нативные функции возвращают числа, принимают любой тип данных (число - по значению, остальные - по адресу)
Для различения константных строк наверно придется использовать старший бит адреса.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 27 май 2010, 16:13

Дело дошло до формата бинарного файла. Думаю вот так сделать:
Код: Выделить всёРазвернуть
byte : 8bit;
word : 16bit;

program : {
   events_size : word = sizeof(events_table);
   pool_size : word = sizeof(const_pool);
   events_table : {
      event_id: word;
      event_address : word; // address of event handler func, relative to code
   }[] ;
   const_pool : {
      const_string : {
         len: byte;
         str : byte[len]; // no zero termination
      }[] ;
      const_list : {
         len : word;
         strings : word[len]; // address of one of const_string, relative to const_pool
      }[] ;
   };

   code : byte[];
};



Добавлено спустя 2 часа 57 минут 1 секунду:
Ну вот, вроде все компилируется

Описание девайса:
Код: Выделить всёРазвернуть
Ram : 512;
Program : 4096;

native {
   led {
      toggle(int);
   }
   timer {
      start(int);
   }

}

events {
   onStartup;
   onTimer;
}



Иходник:
Код: Выделить всёРазвернуть
event onStartup
{
   timer.start(500);
}

event onTimer
{
   led.toggle(1);
   timer.start(500);
}


Листинг компилятора:
Код: Выделить всёРазвернуть
              .BYTES 8, 0
              .BYTES 0, 0
              .BYTES 0, 0, 0, 0, 1, 0, 6, 0
           0:
   onstartup: CONST_I_2 500
              NATIVE_DROP 1
           5: RET
           6:
     ontimer: CONST_1
              NATIVE_DROP 0
              CONST_I_2 500
              NATIVE_DROP 1
          15: RET


Добавлено спустя 25 минут 46 секунд:
Ограничения по размеру: строки - 254 символа, пул констант - 32768 байт, программный код - 65536 байт, ОЗУ - 32768 байт
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 27 май 2010, 16:13

красиво.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 29 май 2010, 17:02

Уже можно поиграться

В архиве исходники. Компилируются GCC. Под Linux использовал 4.3.4, под Windows 4.4.0 из MinGW. На всякий случай в архиве экзешник под Windows и либа которую он тянет (libgcc_s_dw2-1.dll). ВНИМАНИЕ: возможна зараза! За компьютер на котором компилировался Windows-экзешник поручится не могу. Проверяйте антивирусом, либо компилируйте сами

Запуск:

language -t targets/test.tgt -I tests -l test.fs

Надо бы придумать как это чудо(вище) обозвать
Вложения
language.zip
(336.85 КиБ) Скачиваний: 0
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Michael_K » 29 май 2010, 19:06

drweb-online сказал что вирусов нет
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 04 июн 2010, 06:39

Начал писать виртуальную машину и понял, что забыл : в бинарном файле должна содержаться информация о размерах строк и массивов, если хотим сделать контроль границ
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 06 июн 2010, 13:53

Машина заработала, пока еще не все операции протестировал. F23 по классическому рекурсивному алгоритму считает за 10,85 с при тактовой частоте 11,0592 МГц.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Duhas » 06 июн 2010, 13:57

а это не долго ли ?
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Ищу кросс-компилятор для АВР... :)

Сообщение blindman » 06 июн 2010, 14:10

Ну смотря с чем сравнивать. На С аналогичный код отрабатывает за 233 мс, то есть почти в 47 раз быстрее. Оптимизировать есть что, так что быстродействие можно будет заметно поднять.
Для сравнения: JVM на пропеллере считает F23 за 3.273 с, SPIN ("родной" ЯВУ для пропеллера, выполняется на виртуальной машине) - за 2.4 с. Это 32-разрядный процессор при тактовой частоте 80 МГц. http://forums.parallax.com/forums/defau ... 5&m=328004
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Ищу кросс-компилятор для АВР... :)

Сообщение Duhas » 06 июн 2010, 14:15

ясна)

47 раз с Сями.. ну мб до 50 с асмом... удобство в нашем веке уничтожает скорость )
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8