Перейти к содержанию
    

Как проект в WinAVR переделать под CodeVision?

В аттаче проект для WinAVR. Я же пишу в CodeVision.

Как переделать - даже не знаю с чего начать.

 

Если не трудно, гляньте одним глазком и подскажите хоть что нибудь.

glcd.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну основной то файл на C.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просмотрел еще раз.

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

Как колхозный способ, если проблема со сборкой библиотеки, просто включите ассемблерные файлы в проект.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот комплятор видит.

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

 

#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...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот это уже дело.

функции из avr_libc:

strncasecmp_P - сравнить строку с флешом с учетом регистра

strncmp_P - без учета регистра

меняйте на родные для CV не забывая об extern.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 ()

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Никогда серьезно не работал с CV, так посмотрел что к чему. В основном живу с gcc и IAR. Так, что придеться таки читать документацию.

io.h - описание битов портов

pgmspace.h - описание функций работы с флэшом [

quote] И САМОЕ ИНТЕРЕСНОЕ - компилятор пишет что у меня нет функции main ()

Значит проект сконфигурирован неправильно.

Тут ничем не могу помочь, это фичи самого CV.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Инклудить asm бессмысленно, т.к. этим Вы заставляете компилятор Си транслировать совершенно не сишный код.

Почти уверен, что main не находится как раз по этой причине.

Проект нуждается в оформлении по правилам CV (см. встроенный хелп и примеры в examples\).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Просто хотелось помощи людей, у которых это быстрее получилось бы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

Оставьте пустой main, вставьте в проект асм файлы и собирайте.

Ошбки можете запостить.

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

glcd.h у меня включен.

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

 

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

 

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

 

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

 

typedef uint16_t glcdColor_t; - это codeVision не понимает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Смысл простой - 16-разрядное беззнаковое число.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

эээ... напрягаем ламерские мозги.... unsigned long?

Непонятно, зачем тогда этот typedef нужен?

 

Блин, надоело мне... Буду выдирать код по кускам и поэтапно проверять. Вопрос только в том стоит ли? А посему скажите мне, верны ли утверждения, что CodeVision генерит более громоздкий и глючный код по сравнению с WinAvr? И так ли это ужасно? Может лучше перейти на WinAVR?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...