Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с WinAVR+AVRStudio4.12+avrlib
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
MRW
Решил я перейти с Асма на С. Поставил WinAVR, avr-lib. Пишу в AVRStudio 4.12.
Все бы хорошо, но решил использовать библиотеки из avr-lib (http://hubbard.engr.scu.edu/embedded/avr/avrlib/).
При использовании библиотек (например uart/h) компиллер выдает ошибки.
Помогите неучу, только сильно не пинайте, как подключать библиотеки ьакого плана, где есть .h файл и описание функций в .c файле.

Интересно поподробнее узнать как это все работает. Пробовал CodeVision, но там он сам все как-то делает, что мне не нравится. Хочется процес контролировать.
defunct
Цитата(MRW @ Mar 6 2006, 20:23) *
как подключать библиотеки ьакого плана, где есть .h файл и описание функций в .c файле.

.c подключить к проекту, а заголовки .h присоединять с помощью include "путь\имя.h"
MRW
Все используеиые компоненты .c подключать в AVRStudio (Add to file)?
Я думал он сам понимает, что подключать.
beer_warrior
#include <x> включает текст файла x на место директивы.
.с .lib .obj файлы должны явно указываться чтобы попасть в компиляцию
Советую поиграться с родными для дистрибутива Prog Notepad и MFile
тогда процесс сборки станет понятным.
MRW
Спасибо большое, а то я кучу времени пытался это победить. Теперь пошло.
bullit
Люди добрые помогите. Я только учусь.
Установил AvrLib, WinAvr. WinAvr работает без проблем. Пишу в NP.
Решил подключить avrlib.
Но он у меня сразу ошибки нашел, это мол не так, то нетак.
Может нужно использовать только его библиотеки, или они лиш дополнения к основным.
WinAvr и drvlib самые последние.
mdmitry
Цитата(bullit @ Jun 22 2007, 23:28) *
Люди добрые помогите. Я только учусь.
Установил AvrLib, WinAvr. WinAvr работает без проблем. Пишу в NP.
Решил подключить avrlib.
Но он у меня сразу ошибки нашел, это мол не так, то нетак.
Может нужно использовать только его библиотеки, или они лиш дополнения к основным.
WinAvr и drvlib самые последние.

Какие ошибки? Может быть библиотеки в makefile не указаны для линкера?
bullit
Папка с моими программами находится не в папке с WinAvr и Avrlib. Структура папок в приложенном файле.

Подключил его так:
#include <AVRLib/uart.h> и в "" заключал и прямой путь указывал, все бестолку
И в мейк файле, через Mfile.exe, дабавлял uart.c файл? как сишный сорс.
Ошибка такая: uartproba.c:11:25: warning: AVRLib/uart.h: No such file or directory
Что нетак делаю.
Притом программы экземплы внутри avrlib выполняются. Что теперь пути менять, но как? И почему это происходит? Объясните пожалуйста.
Переменная среды как AVRLIB есть.

Или такую ошибку: make: *** No rule to make target `uartproba.elf', needed by `elf'. Stop.
the_victor
Цитата(bullit @ Jun 23 2007, 14:23) *
#include <AVRLib/uart.h> и в "" заключал и прямой путь указывал, все бестолку
И в мейк файле, через Mfile.exe, дабавлял uart.c файл? как сишный сорс.
Ошибка такая: uartproba.c:11:25: warning: AVRLib/uart.h: No such file or directory

путь указан не верно
прописать полный путь
#include <d:\dev\avr\AVRLib\uart.h>
или
#include <..\AVRLib\uart.h>

Цитата
Или такую ошибку: make: *** No rule to make target `uartproba.elf', needed by `elf'. Stop.

хз, может косяк с makefile.
попробовать создать при помощи входящей в комплект winavr утилиты MFile [WinAVR]
bullit
я тут еще не пробывал. Но говорят файлик global.h надо кидать в папку с проектом.
Так? И какие воопче надо делать процедуры, чтоб проект запахал.

makefile делаю именно утилитой MFile.
bullit
А как-то использовать avrlib-овский мейкфайл нужно. Или с помощью утилиты MFile.exe как нибудь настраивать?
mdmitry
В makefile можно, а в Вашем нужно указать директорию для дополнительных includ'ов. Есть строка в файле, добавить также, что надо линковать из дополнительных библиотек.
bullit
Выглядит эта строка в мейкфайле так?
Код
########### you should not need to change the following line #############
include bla-bla-bla


И почему ругается на это: $(AVRLIB)/ в майкфайле? Хотя переменная среды существует.

Avrlib конечно заработал, но после того как я все его файлы кторые упоминались в инклудах себе в папку запихал. А нельзя без такого гемороя?
mdmitry
Цитата(bullit @ Jun 25 2007, 01:13) *
Выглядит эта строка в мейкфайле так?
Код
########### you should not need to change the following line #############
include bla-bla-bla

Конечно не так! Для утилиты make существуют свои правила написания makefile. -I и другие команды.
В файле существуют комментированные строки с описанием того, что за команда. Их можно раскомментировать и дополнить. Почитайте, пожалуйста, документацию к этой утилите. С помощью нее можно много чего делать.
bullit
Гы. С ангельским не очень дружу.
Пойду смотреть дальше. Просто думал кто подскажет. Придется самому, нет времени. програмирую в свободное время, которого нет.
mdmitry
Из makefile:
SRC = сюда файлы для компиляции через пробел, указать полный пуль к необходимым исходникам от avrlib ( типа $AVRLIB\xxx.c)
EXTRAINCDIRS = указать директорию, где лежат *.h от avrlib
LDFLAGS к этому ключу при необходимости добавить указания на библиотеки.

удачи.
bullit
Спасибо. Только перед этим хотел проверить эту директиву.
А вот по поводу строки $AVRLIB\xxx.c , её так нужно писать или так: $(AVRLIB)\xxx.c ? Я конечно проверю, но в makefile написанно с скобках.
И по поводу LDFLAGS, какие библиотеки сюда подключаются. Если можно в примере.
bullit
Что-то не помогло. Может кто скинет пример. так чеб все видно было. + структуру катологов. Где проекты и где avrlib с WinAVR.
Ошибка не исчезла: undefined reference to `uartInit'
Все как выше написанно сделал. Не помогает.
Работа стоит.
Заранее большое спасибо.
mdmitry
В makefile для include
EXTRAINCDIRS = $(AVRLIB)/conf $(AVRLIB)

Исходники от AVRLIB я не смог скомпилировать указав что-то похожее
SRC = test1.c test2.c $(AVRLIB)/uart2.c
Make ругается на цели, похоже не любит исходники в разных директориях. Даже указание полного пути к test2.c приводит к ошибке.
Возможный путь решения:
IMHO: avrlib дается в исходниках, то соответствующие xxx.c в рабочий каталог, а в makefile их добавить и указать EXTRAINCDIRS = $(AVRLIB)/conf $(AVRLIB)
В этом случае все собирается. Библиотека универсальная. Например, работа с COM портом сильно навороченная (буферы). Можно взять идеи и сделать покороче и быстрее, о чем в форуме уже говорилось.

успехов.
bullit
Именно тот способ что вы предлагаете у меня и за работал изначально. Просто я считал, что можно и без переносов файлов. Просто указал пути и всё. А может быть тому причина наклон слеша. В хелпе написанно обратный слеш. Не пробывали.
Кстати тоже примеры из АВРЛИБа не компилировались - странно.
Думаю перенести папку с АВРЛИБом в WINAVR - может поможет. Одним словом танцы с бубном и тыканье пальца...
mdmitry
Цитата(bullit @ Jun 27 2007, 16:09) *
А может быть тому причина наклон слеша. В хелпе написанно обратный слеш. Не пробывали.
Кстати тоже примеры из АВРЛИБа не компилировались - странно.
Думаю перенести папку с АВРЛИБом в WINAVR - может поможет. Одним словом танцы с бубном и тыканье пальца...

Слэшы пробовал оба, не прошло.
Перенос папки скорее всего не поможет.
Сам AVRLIB довольно старый по времени создания, в нем используются старые макро. Современный WINAVR более "строгий". Я включаю почти все предупреждения и на AVRLIB их идет масса, причем не всегда безобидных. Для своих проектов не использую AVRLIB.
bullit
Не используете их в чистом виде? Или используете в переработанном виде?
А как avrlib подключать в AVRStudio? Где именно? И главное как?
Чтоб такой проблемы не было.
mdmitry
Цитата(bullit @ Jun 27 2007, 23:10) *
Не используете их в чистом виде? Или используете в переработанном виде?
А как avrlib подключать в AVRStudio? Где именно? И главное как?

Не использую, библиотека универсальная в ущерб скорости (IMXO), идеи работы хорошие, их и использую. Например, UART на мой взгляд наворочен сильно, своя версия с кольцевыми буферами быстрее работает.
mdmitry
В добавлении к предыдущему:
Для компиляции из нескольких мест можно использовать VPATH, надо только аккуратно обойтись с путями для объектных файлов (команда notdir).
В приложении описания GNU make на русском с примерами, надеюсь поможет подправить Вам свой makefile.
bullit
Большое спасибо.
Как не крути, а на первых парах лучше разобраться как роботает чужой код, чем его править.
Пока все не заработает как нужно, переделкой либа я не буду заниматься. А там глядиш и не надо будет.
Maddy
Если еще актуально

Код
AVRLIB=C:\Programming\AvrLib

AVRLIBMODULES = buffer.c uart.c rprintf.c timer.c vt100.c debug.c cmdline.c extint.c
VPATH = .:$(AVRLIB)


SRC = main.c  intelIf2.c $(AVRLIBMODULES)


Кусок рабочего makefile wink.gif

Цитата(bullit @ Jun 26 2007, 12:28) *
Гы. С ангельским не очень дружу.
Пойду смотреть дальше. Просто думал кто подскажет. Придется самому, нет времени. програмирую в свободное время, которого нет.

opennet
и Программа управления компиляцией GNU make 3.73- Старовато , но для начала сойдет wink.gif
bullit
Спасибо большое.
Всё это актуально. + тому кто сюда придет с таким же вопросом

А как avrlib использовать в проектах AVRStudio.
Если там она запахает, буду студию использовать.
Бегаю между PN из WinAVR и Студией.
mdmitry
Цитата(bullit @ Jun 29 2007, 21:09) *
А как avrlib использовать в проектах AVRStudio.
Если там она запахает, буду студию использовать.
Бегаю между PN из WinAVR и Студией.

Я использую в качестве IDE Eclipse. Мне нравится больше, чем PN и редактор от AVRStudio. Где-то на форуме вопрос о IDE уже поднимался.
bullit
Поисчу обезательно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.