Hello users of the SDCC list:
I am trying to create a pic18f4550 a custom library and I get the error:
"delay.lib" is not a valid coff object or archive returned errorcode
256.
I've attached the files used in this report.
I am using:
Ubuntu 12.04
SDCC - 3.2.0 /usr/local/sdcc /usr/local/bin/sdcc
gplink-0.13.7 beta
gpasm-0.13.7 beta
MCU: pic18f4450
I am trying to create my own test library but I get this error:
*$ sdcc -V --debug -c delay.c*
+ "/usr/local/bin/sdcpp" -nostdinc -Wall -obj-ext=.rel -D__SDCC_MODEL_SMALL
-DSDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -DSDCC_FLOAT_REENT -D__SDCC=3_2_0
-DSDCC=320 -D__SDCC_REVISION=8008 -DSDCC_REVISION=8008 -D__SDCC_mcs51
-DSDCC_mcs51 -D__mcs51 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__
-D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem
"/usr/local/bin/../share/sdcc/include/mcs51" -isystem
"/usr/local/share/sdcc/include/mcs51" -isystem
"/usr/local/bin/../share/sdcc/include" -isystem
"/usr/local/share/sdcc/include" "delay.c"
+ "/usr/local/bin/sdas8051" -plosgffwc "delay.rel" "delay.asm"
I got : delay.rel
And then I do:
$ sdcclib delay.lib delay.rel
I got : delay.lib
$ sdcclib -s delay.lib
delay.rel:
.__.ABS.
C$delay.c$43$1$5
C$delay.c$44$1$5
C$delay.c$36$1$4
C$delay.c$29$1$2
C$delay.c$45$1$5
C$delay.c$37$1$4
C$delay.c$46$1$5
G$delay1s$0$0
G$delaysx$0$0
_delay1s
G$delay500ms$0$0
_delaysx
XG$delay1s$0$0
_delay500ms
XG$delaysx$0$0
A$delay$200
A$delay$120
A$delay$211
A$delay$121
A$delay$140
A$delay$204
A$delay$160
A$delay$133
A$delay$124
XG$delay500ms$0$0
A$delay$134
A$delay$207
A$delay$153
A$delay$135
A$delay$126
A$delay$181
A$delay$136
A$delay$127
A$delay$118
A$delay$191
A$delay$164
A$delay$128
A$delay$192
A$delay$183
A$delay$129
A$delay$184
A$delay$157
A$delay$185
A$delay$158
A$delay$195
A$delay$186
A$delay$159
C$delay.c$23$0$0
A$delay$197
C$delay.c$30$1$2
A$delay$198
A$delay$189
A$delay$199
C$delay.c$32$1$2
C$delay.c$40$1$4
C$delay.c$35$1$2
And then:
*$ sdcc -V --vc --debug -mpic16 -p18f4550 --main-return --use-non-free
-L`pwd` delay.lib main.c *
+ "/usr/local/bin/sdcpp" -nostdinc -Wall -Dpic18f4550 -D__18f4550
-D__SDCC_PIC18F4550 -DSTACK_MODEL_SMALL -D__STACK_MODEL_SMALL -obj-ext=.o
-D__SDCC_USE_NON_FREE -DSDCC_USE_NON_FREE -D__SDCC=3_2_0 -DSDCC=320
-D__SDCC_REVISION=8008 -DSDCC_REVISION=8008 -D__SDCC_pic16 -DSDCC_pic16
-D__pic16 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__
-D__STDC_NO_VLA__ -isystem "/usr/local/bin/../share/sdcc/include/pic16"
-isystem "/usr/local/share/sdcc/include/pic16" -isystem
"/usr/local/bin/../share/sdcc/include" -isystem
"/usr/local/share/sdcc/include" -isystem
"/usr/local/bin/../share/sdcc/non-free/include/pic16" -isystem
"/usr/local/share/sdcc/non-free/include/pic16" -isystem
"/usr/local/bin/../share/sdcc/non-free/include" -isystem
"/usr/local/share/sdcc/non-free/include" "main.c"
+ "gpasm" -DSTACK_MODEL_SMALL -D__STACK_MODEL_SMALL -g -o "main.o" -c
"main.asm"
+ "gplink" -I"/home/caio/FinalProject/mcu/organizar/proj3"
-I"/usr/local/bin/../share/sdcc/lib/pic16"
-I"/usr/local/share/sdcc/lib/pic16"
-I"/usr/local/bin/../share/sdcc/non-free/lib/pic16"
-I"/usr/local/share/sdcc/non-free/lib/pic16" -w -r -o "main" "main.o"
crt0i.o "delay.lib" "libdev18f4550.lib" "libsdcc.lib"
*error: "delay.lib" is not a valid coff object or archive*
message: using default linker script "/usr/share/gputils/lkr/18f4550.lkr"
+ "gplink" -I"/home/caio/FinalProject/mcu/organizar/proj3"
-I"/usr/local/bin/../share/sdcc/lib/pic16"
-I"/usr/local/share/sdcc/lib/pic16"
-I"/usr/local/bin/../share/sdcc/non-free/lib/pic16"
-I"/usr/local/share/sdcc/non-free/lib/pic16" -w -r -o "main" "main.o"
crt0i.o "delay.lib" "libdev18f4550.lib" "libsdcc.lib" *returned errorcode
256*
I know the sdcc has already a delay library but, I would like to learn how
to create libraries.
I don't understand what is a ''valid coff object or archive ' and why the
this error happens. I also would like to know how to create libraries like
the native library of the SDCC like libc18f.
#ifndef _default_h_
#define _default_h_
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
typedef char i8;
typedef int i16;
typedef long i32;
typedef char * string;
//Logical defines
#define TRUE 1
#define FALSE 0
#define true TRUE
#define false FALSE
// Common bit define
#define ON 1 // Ligado
#define OFF 0 // Desligado
#define HIGH 1 //Nível alto
#define LOW 0 //Nível baixo
#define INP 1 // Input pin
#define OUT 0 // Output pin
// Endless loop
#define LOOP while(1)
/* Cast modifier to store data in program memory - Read Only Memory*/
//#define ROM code % Only Old versions of SDCC
#define ROM __code
#define bit0 1<<0
#define bit1 1<<1
#define bit2 1<<2
#define bit3 1<<3
#define bit4 1<<4
#define bit5 1<<5
#define bit6 1<<6
#define bit7 1<<7
#define setb(ADRESS,BIT) (ADRESS |= (1<<BIT))
#define clrb(ADRESS,BIT) (ADRESS &= ~(1<<BIT))
#define testb(ADRESS,BIT) (ADRESS & (1<<BIT))
#define inputpin(pin,port) (pin=pin | (1<<port))
#define outputpin(pin,port) (pin=pin & ~(1<<port))
#define ALLCLEAR 0x00
#define ALLSET ~0X00
// ASM macros
#define nop() _asm NOP _endasm
#define sleep() _asm sleep _endasm
#define reset() _asm reset _endasm
#define clrwdt() _asm clrwdt _endasm
#ifdef pic18f4550
#include <pic18fregs.h>
#include <pic16/pic18f4550.h>
//---------- PORT A ------------//
//TRISA
#define TRISA0 TRISAbits.TRISA0
#define TRISA1 TRISAbits.TRISA1
#define TRISA2 TRISAbits.TRISA2
#define TRISA3 TRISAbits.TRISA3
#define TRISA4 TRISAbits.TRISA4
#define TRISA5 TRISAbits.TRISA5
#define TRISA6 TRISAbits.TRISA6
//LATA
#define LATA0 LATAbits.LATA0
#define LATA1 LATAbits.LATA1
#define LATA2 LATAbits.LATA2
#define LATA3 LATAbits.LATA3
#define LATA4 LATAbits.LATA4
#define LATA5 LATAbits.LATA5
#define LATA6 LATAbits.LATA6
//PORTA
//RA
#define RA0 PORTAbits.RA0
#define RA1 PORTAbits.RA1
#define RA2 PORTAbits.RA2
#define RA3 PORTAbits.RA3
#define RA4 PORTAbits.RA4
#define RA5 PORTAbits.RA5
#define RA6 PORTAbits.RA6
//---------- PORT D-------------//
#define TRISD0 TRISDbits.TRISD0
#define TRISD1 TRISDbits.TRISD1
#define TRISD2 TRISDbits.TRISD2
#define TRISD3 TRISDbits.TRISD3
#define TRISD4 TRISDbits.TRISD4
#define TRISD5 TRISDbits.TRISD5
#define TRISD6 TRISDbits.TRISD6
#define TRISD7 TRISDbits.TRISD7
#define RD0 PORTDbits.RD0
#define RD1 PORTDbits.RD1
#define RD2 PORTDbits.RD2
#define RD3 PORTDbits.RD3
#define RD4 PORTDbits.RD4
#define RD5 PORTDbits.RD5
#define RD6 PORTDbits.RD6
#define RD7 PORTDbits.RD7
#define LATD0 LATDbits.LATD0
#define LATD1 LATDbits.LATD1
#define LATD2 LATDbits.LATD2
#define LATD3 LATDbits.LATD3
#define LATD4 LATDbits.LATD4
#define LATD5 LATDbits.LATD5
#define LATD6 LATDbits.LATD6
#define LATD7 LATDbits.LATD7
#define PCFG0 ADCON1.ADCON1bits.PCFG0
#define PCFG1 ADCON1.ADCON1bits.PCFG1
#define PCFG2 ADCON1.ADCON1bits.PCFG2
#define PCFG3 ADCON1.ADCON1bits.PCFG3
#define VCFG0 ADCON1.ADCON1bits.VCFG0
#define VCFG1 ADCON1.ADCON1bits.VCFG1
#define ADON ADCON0bits.ADON
#define GO ADCON0bits.GO
#define CHS0 ADCON0bits.CSH0
#define CHS1 ADCON0bits.CSH1
#define CHS2 ADCON0bits.CSH2
#define CHS3 ADCON0bits.CSH3
#define ADCS0 ADCON2bits.ADCS0
#define ADCS1 ADCON2bits.ADCS1
#define ADCS2 ADCON2bits.ADCS2
#define ACQT0 ADCON2bits.ACQT0
#define ACQT1 ADCON2bits.ACQT1
#define ACQT2 ADCON2bits.ACQT2
#define ADFM ADCON2bits.ADFM
#define OSC_HS 0X0C
#define OSC_INTERNAL_PORT_RA6 0X08
#define OSC_XT 0X02
#define OSC_XTPLL 0x00
// Oscilator Settings OSCON|=settings
#define INTERNAL_OSCILLATOR 0x02
#define TIMER1_OSCILLATOR 0X01
#define PRIMARY_OSCILLATOR 0X00
#define INTOS_8MHZ 7<<4
#define INTOS_4MHZ 6<<4
#define INTOS_2MHZ 5<<4
#define INTOS_1MHZ 4<<4
#define INTOS_500KHZ 3<<4
#define INTOS_250KHZ 2<<4
#define INTOS_125KHZ 1<<4
#define INTOS_31KHZ 0<<4
// setpin(ADRESS,STATE)
//
// STATE= INP : Pino como entrada
// STATE= OUT : Pino como saida
//
// Configura pino como entrada ou saida
// setpin(D0,IN) é equivalente a TRISD0=1
//
//
#define pinmode(PIN,STATE) (TRIS##PIN=STATE)
#define readpin(PIN) (R##PIN)
#define pinout(PIN,VALUE) (LAT##PIN=VALUE)
#endif
#endif // default.h
/*
* =====================================================================================
*
* Filename: delay.c
*
* Description:
*
* Version: 1.0
* Created: 09/04/2012 03:41:19 PM
* Revision: none
* Compiler: gcc
*
* Author: YOUR NAME (),
* Company:
*
* =====================================================================================
*/
#include "delay.h"
#include "default.h"
void delay1s(){
u8 cont2;
u16 cont1;
// 183 0xFFFF
for(cont2=240;cont2;cont2--)
for(cont1=1530;cont2;cont2--);
}
void delaysx(u8 x){
for(x;x;x--);
}
void delay500ms(){
u8 c1 , c2 ,c3;
for (c1=8;c1--;c1)
for(c2=0xFF;c2;c2--)
for(c3=0XFF;c3;c3--);
}
/*
* =====================================================================================
*
* Filename: HEADER.H
*
* Description: Testes com o microcontrolador PIC18F4550
*
* Version: 1.0
* Created: 08/26/2012 02:55:43 PM
* Revision: none
* Compiler: sdcc
*
* Author: Caio Rodrigues
* Company:
*
* =====================================================================================
*/
#ifndef __delay_h__
#define __delay_h__
#include "default.h"
void delay1s();
void delaysx(u8);
void delay500ms();
#endif
/*
* =====================================================================================
*
* Filename: main.c
*
* Description: Leitor de temperatura
*
* Device: PIC18F4550
*
* Version: 1.0
* Created: 08/26/2012 02:55:43 PM
* Revision: none
* Compiler: sdcc
*
* Author: Caio Rodrigues
* Company:
*
* =====================================================================================
*/
//#define pic18f4550
#include <pic18fregs.h>
#include "pic16/pic18f4550.h"
#include "default.h"
#include "delay.h"
//#define FCLK_HZ 48000000 // System clock HZ
//#define INTS_HZ (FLCK_HZ/4) // Instruction clock HZ
//--------------------------------------
// CONFIGURATION BITS //
//-------------------------------------//
ROM char __at __CONFIG1L conf1 = 0x00; // Primary Oscillator XTAL No USB
ROM char __at __CONFIG1H conf2 = 0x00; // IESO=0 FCMEN=0 XT ( Only Use External Oscillator )
ROM char __at __CONFIG2L conf3 = 0x1E; //
ROM char __at __CONFIG2H conf4 = 0x00; // WDT OFF
ROM char __at __CONFIG3H conf5 = 0x10; // Sem MCLR e sem PBADEN=1
ROM char __at __CONFIG4L conf6 = 0x80; // XINST disabled
// Code protection : No code protection
ROM char __at __CONFIG5L conf7 = 0xFF;
ROM char __at __CONFIG5H conf8 = 0xFF;
ROM char __at __CONFIG6L conf9 = 0xFF;
ROM char __at __CONFIG6H conf10 = 0xFF;
ROM char __at __CONFIG7L conf11 = 0xFF;
ROM char __at __CONFIG7H conf12 = 0xFF;
void delay500ms();
void setup(){
//xxx
// OSCCON|= INTERNAL_OSCILLATOR | INTOS_8MHZ;
OSCCON|= PRIMARY_OSCILLATOR ;
TRISD=0X00;
LATD=0X01;
TRISB=0X00;
LATB=0XF0;
}
/////////////////////////////////////////////
// MAIN //
/////////////////////////////////////////////
void main(){
// -------- VARIABLES -------//
// ---------- Main Code ----------//
setup();
/// ddddd sdas
//----++ dfsdfx
// 133
/* ---------- Main Loop ------------ */
LOOP{
LATD=0xF0;
delay500ms();
LATD=0X0F;
delay500ms();
}
/*---------- End Of Main Loop ------ */
} // End of Main
/////////////////////////////////////////////
// END OF FILE //
/////////////////////////////////////////////
------------------------------------------------------------------------------
Keep yourself connected to Go Parallel:
TUNE You got it built. Now make it sing. Tune shows you how.
http://goparallel.sourceforge.net
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user