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

Reply via email to