gnupic: Re: [Sdcc-user] USB compilation for PIC16 - strange errors
Subject:
Re: [Sdcc-user] USB compilation for PIC16 - strange errors
From:
Vaclav ####@####.####
Date:
3 Dec 2007 13:00:00 +0000
Message-Id: <2125.3698-29939-848075463-1196686796@seznam.cz>
Hi Raphael,
thank you very much for your quick response! I corrected the lines as you suggested and it looks much better.
I have following output (maybe some problems with gputils) - there is EEPROM memory. I noticed it in some other projects as well so it is not a bug of USB code or SDCC itself.
d:\v\USB-test\PICHID>make
sdcc -I. -Id:\v\sw\sdcc\include --vc --denable-peeps --optimize-goto --optimize-cmp --optimize-df --obanksel=9 --opt-code-size --fommit-frame-pointer -mpic16 -pp18f2550 -c main.c
sdcc -I. -Id:\v\sw\sdcc\include --vc --denable-peeps --optimize-goto --optimize-cmp --optimize-df --obanksel=9 --opt-code-size --fommit-frame-pointer -mpic16 -pp18f2550 -c usb.c
usb.asm:399:Warning [220] Address exceeds maximum range for this processor.
usb.asm:399:Warning [220] Address exceeds maximum range for this processor.
usb.asm:399:Warning [220] Address exceeds maximum range for this processor.
usb.asm:399:Warning [220] Address exceeds maximum range for this processor.
usb.asm:399:Warning [220] Address exceeds maximum range for this processor.
usb.asm:399:Warning [220] Address exceeds maximum range for this processor.
usb.asm:400:Warning [220] Address exceeds maximum range for this processor.
usb.asm:400:Warning [220] Address exceeds maximum range for this processor.
usb.asm:400:Warning [220] Address exceeds maximum range for this processor.
usb.asm:400:Warning [220] Address exceeds maximum range for this processor.
usb.asm:400:Warning [220] Address exceeds maximum range for this processor.
usb.asm:400:Warning [220] Address exceeds maximum range for this processor.
usb.asm:401:Warning [220] Address exceeds maximum range for this processor.
usb.asm:401:Warning [220] Address exceeds maximum range for this processor.
usb.asm:401:Warning [220] Address exceeds maximum range for this processor.
usb.asm:401:Warning [220] Address exceeds maximum range for this processor.
usb.asm:401:Warning [220] Address exceeds maximum range for this processor.
usb.asm:401:Warning [220] Address exceeds maximum range for this processor.
usb.asm:402:Warning [220] Address exceeds maximum range for this processor.
usb.asm:402:Warning [220] Address exceeds maximum range for this processor.
usb.asm:402:Warning [220] Address exceeds maximum range for this processor.
usb.asm:402:Warning [220] Address exceeds maximum range for this processor.
usb.asm:402:Warning [220] Address exceeds maximum range for this processor.
usb.asm:402:Warning [220] Address exceeds maximum range for this processor.
usb.c(704) : warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
gplink.exe -I. -Id:\v\sw\sdcc\lib -Id:\v\sw\sdcc\lib\pic16 -m pic18f2550.lib libio18f2550.lib libc18f.lib libsdcc.lib crt0.o main.o usb.o -s 18f2550.lkr -o USBHID.hex
warning: processor mismatch in "main.o"
warning: processor mismatch in "usb.o"
d:\v\USB-test\PICHID>gpasm --version
gpasm --version
gpasm-0.13.5 beta
Strange is the EVELYN stuff - I can't find "SET_DESCRIPTOR" (line 704) in the ASM ... Is it correct ?
Regarding mismatches - I don't know. Maybe libraries were generated for different PIC processor - hopefully register addresses are OK. Should I re-generate them ?
Raphael, (or anybody else), if you need some help with the debugging I am prepared to do everything I am able to do.
Best Regards,
Vaclav
> Hi Vaclav,
>
> > at 1: warning 117: unknown compiler option '--fstack' ignored
>
> Just remove --fstack from the compiler flags OPTS in Makefile. You will
> also want to remove -t 128 from the gplink command line, as SDCC
> provides the symbol _stack in the libraries; gplink's stack would
> collide with it...
>
> > usb.c(352) : error 47: indirections to different types assignment
> > from type 'unsigned-char const-[32] code-code* '
> > to type 'unsigned-char generic* '
>
> and following (467!, 477!, 486! (these are not warned about!), 500, 502,
> 504): You need to explicitly cast the right hand side to (code byte *)
> for now. The problem here is that casts from pointer to array type to
> pointer to simple type are not implicitly allowed.
>
> > usb.c(693) : error 47: indirections to different types assignment
> > from type 'volatile-unsigned-char [32] near* '
> > to type 'unsigned-char generic* '
>
> Watch out: This one wants to be cast to (data byte *) instead!
>
> > Can somebody help me what do these messages mean ? How to correct them ?
>
> The above measures will allow you to build the project, but manual
> inspection of the code generated for usb.c, l.309 revealed that there is
> severe bug in the code generator: instead of just reading
> SetupPacket.wValue1 (offset 3), the generated code overwrites
> SetupPacket.bmRequestType (offset 0). There seems to be lack of scratch
> register allocation. I'll have to investigate this further... Just
> thought you might want to now.
>
> Regards,
> Raphael