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

 
 
> Как проект в WinAVR переделать под CodeVision?
virtuality
сообщение Jul 4 2006, 15:34
Сообщение #1


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

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



В аттаче проект для WinAVR. Я же пишу в CodeVision.
Как переделать - даже не знаю с чего начать.

Если не трудно, гляньте одним глазком и подскажите хоть что нибудь.
Прикрепленные файлы
Прикрепленный файл  glcd.rar ( 45.07 килобайт ) Кол-во скачиваний: 99
 
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 14)
beer_warrior
сообщение Jul 4 2006, 18:56
Сообщение #2


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

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



Хм,
там же все на асме....


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


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

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



Ну основной то файл на C.
Там интересно сделано - куча асмовых файлов+Сишный - компилируется в библиотеку libglcd.a

А далее тестовый файл написанный на чистом С, который может быть и запустился бы в CV - просто использует эту библиотеку, которая исключительно для WinAVR.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 4 2006, 19:42
Сообщение #4


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

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



Просмотрел еще раз.
Куча асмовских файлов и один сишный хидер с внешними декларациями.Ничего специфичного для конкретного компилятора я не вмжу. Делайте проект в CV, собирайте в нем библиотеку потом включайте хидер в тестовую программу, а линкеру скомандуйте подключить библиотеку.
Как колхозный способ, если проблема со сборкой библиотеки, просто включите ассемблерные файлы в проект.


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


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

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



А вот комплятор видит.
Для начала я попытался включить некоторые хидеры:

Код
#include <io.h>
#include <pgmspace.h>



Выдается куча ошибок. Например для строки
extern int strncasecmp_P(const char *, PGM_P, size_t) __ATTR_PURE__;

комплятор пишет - declaration syntax error

для строки
extern int strncmp_P(const char *, PGM_P, size_t) __ATTR_PURE__;

комплятор пишет function must be return a value

подскажите тогда, что ли как библиотеку собрать в codevision...
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 5 2006, 07:34
Сообщение #6


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

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



Вот это уже дело.
функции из avr_libc:
strncasecmp_P - сравнить строку с флешом с учетом регистра
strncmp_P - без учета регистра
меняйте на родные для CV не забывая об extern.

PS Что-то я в архиве этого не нашел - в каком они файле?


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
virtuality
сообщение Jul 6 2006, 09:03
Сообщение #7


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

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



Цитата
PS Что-то я в архиве этого не нашел - в каком они файле?

В файле glcd.h есть ссылка на io.h и pgmspace.h - стандарты WinAvr естественно их нет в архиве.

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


Если вам не трудно, попробуйте сами скомпилировать эту библиотеку. Нет, я не прошу Вас сделать работу для меня. Тем более, вы говорите что все так просто.

Иначе это будет долгий разговор "корифея" с "чайником", причем первый будет настоятельно рекомендовать читать мануал и все прочее.

Почему я это говорю? Да потому что я сделал, как вы сказали и вот что вышло:

Код
#define __AVR_ATmega16__;
#define SIG_SPI;
#include <mega16.h>
#include <delay.h>
#include <glcd_line.asm>



void main()
  {
   int i=0x01;
   int t=1;
   DDRD=0xFF;

   while (1)
   {
     glcdLine(0, 0, 10, 10);
   }
  
  }

Я подключил АСМ файл - не знаю правильно или нет, но через оболочку CodeVision подключаются исключительно ".c" файлы.

После этого компилятор выдает мне, что для вызова функции glcdLine недостаточно параметров. ЧТо за бред, эта прога прекрасно компилируется в WinAVR.

И САМОЕ ИНТЕРЕСНОЕ - компилятор пишет что у меня нет функции main ()
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 6 2006, 11:16
Сообщение #8


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

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



[quote] А насчет родных функций для CV - будьте любезны, подскажите, вам из вашей памяти извлечь наверное проще. [/quote]
Никогда серьезно не работал с CV, так посмотрел что к чему. В основном живу с gcc и IAR. Так, что придеться таки читать документацию.
io.h - описание битов портов
pgmspace.h - описание функций работы с флэшом [
quote] И САМОЕ ИНТЕРЕСНОЕ - компилятор пишет что у меня нет функции main () [/quote]
Значит проект сконфигурирован неправильно.
Тут ничем не могу помочь, это фичи самого CV.


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


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Инклудить asm бессмысленно, т.к. этим Вы заставляете компилятор Си транслировать совершенно не сишный код.
Почти уверен, что main не находится как раз по этой причине.
Проект нуждается в оформлении по правилам CV (см. встроенный хелп и примеры в examples\).


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
virtuality
сообщение Jul 6 2006, 12:26
Сообщение #10


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

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



хм... вот я о том и говорил. В противовес утверждениям, что нет ничего специфичного для CV в этой библиотеке. Будем разбираться.
Просто хотелось помощи людей, у которых это быстрее получилось бы.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 6 2006, 12:58
Сообщение #11


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

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



Цитата
В противовес утверждениям, что нет ничего специфичного для CV в этой библиотеке.

Недосмотрел, включать надо заголовочник glcd.h - это объявление асмовских функций в С коде. Кстати совершенно стандартный прием.

Оставьте пустой main, вставьте в проект асм файлы и собирайте.
Ошбки можете запостить.
Цитата
В противовес утверждениям, что нет ничего специфичного для CV в этой библиотеке.


Кстати есть еще один прием достаточно быстрой переделки
Код

void foo(void)
{
asm {
        ...
       }
}


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
virtuality
сообщение Jul 6 2006, 13:44
Сообщение #12


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

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



glcd.h у меня включен.
Через него включаются пресловутые IO.h и pgmspace.h, вследстве чего выдаются те же ошибки, что указаны выше.

В общем сложности в структуре кода. Постепенно вчитыаясь в него я уже начинаю представлять всю его архитектуру. По-моему все-таки нужно отследить все что это код берет из стандартных библиотек и попытаться заменить на CV-функции.

Кстати, в glcd.h напротив каждой функции стоит extern. Это признак того, что заголовок написан для создания библиотеки, не так ли? Может быть в этом причина?

к вопросу о специфичности кода:

typedef uint16_t glcdColor_t; - это codeVision не понимает.
Go to the top of the page
 
+Quote Post
vet
сообщение Jul 6 2006, 13:57
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Только потому, что uint16_t сам получен в результате typedef'а. Которого в тексте и include'нных файлах нет.
Смысл простой - 16-разрядное беззнаковое число.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
virtuality
сообщение Jul 6 2006, 14:11
Сообщение #14


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

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



эээ... напрягаем ламерские мозги.... unsigned long?
Непонятно, зачем тогда этот typedef нужен?

Блин, надоело мне... Буду выдирать код по кускам и поэтапно проверять. Вопрос только в том стоит ли? А посему скажите мне, верны ли утверждения, что CodeVision генерит более громоздкий и глючный код по сравнению с WinAvr? И так ли это ужасно? Может лучше перейти на WinAVR?
Go to the top of the page
 
+Quote Post
Petka
сообщение Jul 6 2006, 17:37
Сообщение #15


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



ОФФТОП: как-то переделывал програмку из CV в WinAVR. для автоматизации написал скрипт на PERL, который делает некоторую рутиную работу. Если кому надо могу поделиться. Может кто-нибудь и до ума доведёт....
Go to the top of the page
 
+Quote Post

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

 


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


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