Problem to compile a program with V-USB library [SOLVED]
Problem to compile a program with V-USB library [SOLVED]
Hi,
i tried to compile a simple program that i found at this link: http://codeandlife.com/2012/01/29/avr-a ... al-part-3/ using the v-usb library
This is the code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include "usbdrv.h"
#include <util/delay.h>
USB_PUBLIC uchar usbFunctionSetup(uchar data[8]) {
return 0; // do nothing for now
}
int main() {
uchar i;
wdt_enable(WDTO_1S); // enable 1s watchdog timer
usbInit();
usbDeviceDisconnect(); // enforce re-enumeration
for(i = 0; i<250; i++) { // wait 500 ms
wdt_reset(); // keep the watchdog happy
_delay_ms(2);
}
usbDeviceConnect();
sei(); // Enable interrupts after re-enumeration
while(1) {
wdt_reset(); // keep the watchdog happy
usbPoll();
}
return 0;
}
I use Arduino and i red here http://balau82.wordpress.com/2011/03/29 ... in-pure-c/ how program my Arduino board with avr-gcc.
So i wrote in my terminal:
avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o prova.o prova.c
and it's work, but when i wrote
avr-gcc -mmcu=atmega328p prova.o -o prova
i receive this error messages:
prova.o: In function `main':
prova.c:(.text+0x1a): undefined reference to `usbInit'
prova.c:(.text+0x3a): undefined reference to `usbPoll'
i think this could be a linker problem.
Can someone help me please?
Thank you and i apologize for my bad English.
i tried to compile a simple program that i found at this link: http://codeandlife.com/2012/01/29/avr-a ... al-part-3/ using the v-usb library
This is the code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include "usbdrv.h"
#include <util/delay.h>
USB_PUBLIC uchar usbFunctionSetup(uchar data[8]) {
return 0; // do nothing for now
}
int main() {
uchar i;
wdt_enable(WDTO_1S); // enable 1s watchdog timer
usbInit();
usbDeviceDisconnect(); // enforce re-enumeration
for(i = 0; i<250; i++) { // wait 500 ms
wdt_reset(); // keep the watchdog happy
_delay_ms(2);
}
usbDeviceConnect();
sei(); // Enable interrupts after re-enumeration
while(1) {
wdt_reset(); // keep the watchdog happy
usbPoll();
}
return 0;
}
I use Arduino and i red here http://balau82.wordpress.com/2011/03/29 ... in-pure-c/ how program my Arduino board with avr-gcc.
So i wrote in my terminal:
avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o prova.o prova.c
and it's work, but when i wrote
avr-gcc -mmcu=atmega328p prova.o -o prova
i receive this error messages:
prova.o: In function `main':
prova.c:(.text+0x1a): undefined reference to `usbInit'
prova.c:(.text+0x3a): undefined reference to `usbPoll'
i think this could be a linker problem.
Can someone help me please?
Thank you and i apologize for my bad English.
Last edited by Luca89 on Fri Aug 03, 2012 10:41 am, edited 1 time in total.
Re: Problem to compile a simple program with V-USB library
Hi Luca,
you also need the V-USB part linked to your program. The best way to do this is the use of a makefile - look into a sample V-USB project.
Ciao, Martin
Code: Select all
prova.o: In function `main':
prova.c:(.text+0x1a): undefined reference to `usbInit'
prova.c:(.text+0x3a): undefined reference to `usbPoll'
you also need the V-USB part linked to your program. The best way to do this is the use of a makefile - look into a sample V-USB project.
Ciao, Martin
Re: Problem to compile a simple program with V-USB library
Thank you very much Martin.
I followed your advice and now it's work.
I followed your advice and now it's work.
Re: Problem to compile a program with V-USB library [SOLVED]
So how come V-USB does not come with a makefile?
Running make usbdrv.c
gives
Running make usbdrv.c
gives
Code: Select all
#avr-gcc usbdrv.c
In file included from usbportability.h:121:0,
from usbdrv.c:11:
/usr/lib/gcc/avr/4.5.3/../../../avr/include/avr/io.h:364:6: warning: #warning "device type not defined"
usbdrv.c: In function 'usbPoll':
usbdrv.c:595:1: error: 'PIND' undeclared (first use in this function)
usbdrv.c:595:1: note: each undeclared identifier is reported only once for each function it appears in
usbdrv.c: In function 'usbInit':
usbdrv.c:613:5: error: 'MCUCR' undeclared (first use in this function)
usbdrv.c:613:21: error: 'ISC01' undeclared (first use in this function)
usbdrv.c:618:5: error: 'GICR' undeclared (first use in this function)
usbdrv.c:618:30: error: 'INT0' undeclared (first use in this function)
Re: Problem to compile a program with V-USB library [SOLVED]
tytower wrote:So how come V-USB does not come with a makefile?
You're right it doesn't. It comes with 8 of them:
$ find . -name Makefile
./vusb-20120109/examples/custom-class/commandline/Makefile
./vusb-20120109/examples/custom-class/firmware/Makefile
./vusb-20120109/examples/hid-custom-rq/commandline/Makefile
./vusb-20120109/examples/hid-custom-rq/firmware/Makefile
./vusb-20120109/examples/hid-data/commandline/Makefile
./vusb-20120109/examples/hid-data/firmware/Makefile
./vusb-20120109/examples/hid-mouse/firmware/Makefile
./vusb-20120109/examples/usbtool/Makefile
./vusb-20120109/tests/Makefile
The original poster is coming from Arduino land and probably didn't understand the concept of Makefiles.
Re: Problem to compile a program with V-USB library [SOLVED]
This is exactly why I tell everyone not to start off on the silly Arduino boards. Learn the right way first
Ok make file 101.
go to project->config settings
in the general section check use external makefile, brows to it.
Make sure your makefile is configured, there are hundreds of info's out there. There is also a mfile program that will configure it for you.
Ok make file 101.
go to project->config settings
in the general section check use external makefile, brows to it.
Make sure your makefile is configured, there are hundreds of info's out there. There is also a mfile program that will configure it for you.
Re: Problem to compile a program with V-USB library [SOLVED]
Coda wrote:tytower wrote:So how come V-USB does not come with a makefile?
You're right it doesn't. It comes with 8 of them:
$ find . -name Makefile
./vusb-20120109/examples/custom-class/commandline/Makefile
./vusb-20120109/examples/custom-class/firmware/Makefile
./vusb-20120109/examples/hid-custom-rq/commandline/Makefile
./vusb-20120109/examples/hid-custom-rq/firmware/Makefile
./vusb-20120109/examples/hid-data/commandline/Makefile
./vusb-20120109/examples/hid-data/firmware/Makefile
./vusb-20120109/examples/hid-mouse/firmware/Makefile
./vusb-20120109/examples/usbtool/Makefile
./vusb-20120109/tests/Makefile
The original poster is coming from Arduino land and probably didn't understand the concept of Makefiles.
Well thats a pretty cheeky ,rude,assunptive and completely wrong post.
These are all makefiles for the tools and specific devices it comes with or so the blurb says?.
There is no makefile for the basic driver as far as I can see so why not just supply one?
Why the crap?
The previous poster and the answers given indicate that he needed a Makefile so obviously there is not a Makefile supplied for the basic driver if he had to make up one himself
Your assertion that I know not Makefiles is just stupid . In fact I use Linux and am compiling and using software weekly and have been doing so for 30 years Sonny. What you may not understand is that most software comes with a ./configure file and a makefile . Thats the STANDARD !
V-USB does not
Last edited by tytower on Thu Sep 20, 2012 9:35 am, edited 1 time in total.
Re: Problem to compile a program with V-USB library [SOLVED]
ulao wrote:This is exactly why I tell everyone not to start off on the silly Arduino boards. Learn the right way first
Ok make file 101.
go to project->config settings I dont have a project or run an editor which uses a project file s there is no configure file except for that created in usbdrv directory
in the general section check use external makefile, brows to it.
Make sure your makefile is configured, there are hundreds of info's out thereExactly what and where do you refer to?. There is also a mfile program that will configure it for you,Can you point to a site for this and save all the bullshit?.
Silly might be your interpretation and welcome to it you are !
Personally I see that Arduino is bringing in a multitude of users who otherwise would not have even tried because wherever you go you find confusion and complication when dealing with microprocessor programming.
Personally I go back to starting to study and program 8080 chips in the 70's and frankly it has not gotten much better in my opinion.
Arduino has and will continue to attract big numbers because it is well presented , documented and mostly complete.
I do not understand a viewpoint that sees it as a competitor or lesser skilled approach to chip programming
I think you should hang your head in shame
I think you are jealous
Last edited by tytower on Thu Sep 20, 2012 9:38 am, edited 1 time in total.
Re: Problem to compile a program with V-USB library [SOLVED]
tytower wrote:...
Well thats a pretty cheeky ,rude,assunptive and completely wrong post.
...
Why the crap?
The pot calling the kettle black
tytower wrote:The previous poster and the answers given indicate that he needed a Makefile so obviously there is not a Makefile supplied for the basic driver if he had to make up one himself
Please try to understand how v-usb works and don't take the term "driver" as you know it from e.g. windows.
You don't need a makefile to make the basic driver separately. It is supplied as source code and must be compiled/assembled together with your program (you need some defines/constants from _your_ config).
The right way is to take an example, replace the "main" file with your file(s), adapt the makefile and start. The benefit is that you can try to compile and load the example first to see if the usb part of your hardware works (if your pc detects it).
Ciao, Martin
Re: Problem to compile a program with V-USB library [SOLVED]
horo wrote:tytower wrote:...
Well thats a pretty cheeky ,rude,assunptive and completely wrong post.
...
Why the crap?
The pot calling the kettle black Seems you have learnt an english phrase today and can't wait to use it .tytower wrote:The previous poster and the answers given indicate that he needed a Makefile so obviously there is not a Makefile supplied for the basic driver if he had to make up one himself
Please try to understand how v-usb works and don't take the term "driver" as you know it from e.g. windows.
You don't need a makefile to make the basic driver separately. It is supplied as source code and must be compiled/assembled together with your program (you need some defines/constants from _your_ config).Yes I have made a copy of usbconfig_prototype.h and called it usbconfig.h and made changes to suit my needs
The right way is to take an example, replace the "main" file with your file(s), adapt the makefile and start. The benefit is that you can try to compile and load the example first to see if the usb part of your hardware works (if your pc detects it).Thank You I will attempt it this way however I find it a cockeyed way of doing it
Ciao, Martin
Last edited by tytower on Thu Sep 20, 2012 10:20 am, edited 1 time in total.
Re: Problem to compile a program with V-USB library [SOLVED]
Tytower, you are rude and ignorant. You come here, hijack a thread formerly marked as solved and claim that the project has to fit your needs.
<*)))><
from my side EOD
<*)))><
from my side EOD
Re: Problem to compile a program with V-USB library [SOLVED]
My thoughts exactly. You continue to misunderstand peoples candor for arguments. You continue to to argue and insult while ignoring the responses you are given. You have shown all of us you dont care to read ( if the rules are not clear enough ) and you make no attempts get along. Thus far the only contribution you are making is a mess of every thread you touch.Tytower, you are rude and ignorant.
Quit the attitude it does no one any good. Not to mention anyone willing to help will see this childishness and pay no attention to what you are asking. If you want to be part of this board, and it does not look like it, then park the attitude or you will be asked to leave.
Let us review...
"So how come V-USB does not come with a makefile?" You did see the answer to that yes? This is your question yes? We can only assume you are referring to the example projects and not v-usb its self? Its clear now that you need to set up a make file to compile a project example, has this been done? Let stay on topic here, just let us know what you are having problems with.
"There is no makefile for the basic driver as far as I can see so why not just supply one?" Perhaps this golden nugget I was able to extract from the mess above may explain the issue. v-usb is more like an api if you will it does not need a make file. You make a project, you make a make file and you just include the v-usb. All examples should run if you point to the make file like I showed you. This project does require some reading and understating and I agree its not as easy as the Arduino board. V-usb follows a more traditional compile. It is assumed you have the knowledge to make a simple project in avr studio or like and produce a hello world or such. Then you just include the v-usb stuff and use it. All examples show you how.
Disclaimer, I dont mean to sound like I'm talking down to you. I'm just answering your quest as its asked. The question itself suggests this information was needed. There is no need to blast off some rude reply claiming you know all of this, its just for understating and getting on the same page here. Now please retort or ask your next question.
Re: Problem to compile a program with V-USB library [SOLVED]
[ offensive post try again ]
Re: Problem to compile a program with V-USB library [SOLVED]
Ulao, you get provoked and yet you still try to help. You are a better man than me. Good job I am not a mod here. Out of respect for the kind people at ObDev who spent countless hours writing this library (not DRIVER!) for us to play with for FREE, I'm going to keep my mouth shut.
Re: Problem to compile a program with V-USB library [SOLVED]
eh, I figure I'd try. Oh well. He is gone for now.