BOOT Loader error (Routine Exceeds pages boundaries 4096)

General discussion on mikroC.
Post Reply
Author
Message
sakender
Posts: 15
Joined: 29 Aug 2009 08:31

BOOT Loader error (Routine Exceeds pages boundaries 4096)

#1 Post by sakender » 25 Sep 2010 13:15

Hi
i have succesfully upload hex file in pic18f4455 from Hid bootloader.exe but now i have incresed my code and found some error
when i complie(Routine exceeds pages boundried 4096 ) and also in valid org 4104 here is code plz help me to complie it fro hid bootloader

Code: Select all

////////////////////PORT(RELAY) DEFINATION//////////////////
#define EXT_USB PORTB.F0                    // External usb
#define FANSW PORTB.F1                    // Printer
#define HUBSW PORTB.F2                    // Hub swith
#define DC_C PORTB.F4                    // FAN\DC-DC swith
#define MDM PORTB.F3                    // Modem switch swith
#define BARSW  PORTD.F5               // SIG PAD
#define SIGSW PORTD.F6                // Thumb SACNNER

////////////////////ERR_INDICATION DEFINATION//////////////////
#define  LED_1 PORTD.F0              // LED1
#define  LED_2 PORTD.F1             // LED2
#define  LED_3 PORTD.F2            // LED3
#define  LED_4 PORTD.F3           // LED
#define  BUZZ  PORTD.F4          // BUZZER
//////////////////////////////////////////////////////////////////
/////////////////////////////////functoion initialize/////////////////////
void send_port(unsigned char *cmd);
void EXTRACT_CLI(unsigned char inv_comma);
void CMD_OR_REPORT_RING(void);
void REC_AND_SKIPDA(void);
void All_dvc_on();
void EXTRACT_CMD();
void All_dvc_off();
void Reset_all() ;

void init_set();

void Reset_Serial_Variables(void) ;
void Battery_status();

Command(unsigned char cmd);

///////////////////////////SIG PAD function///////////////////
void SIG_ON();
void SIG_OFF();
void SIG_RST();
//////////////////////////BAR CODE function/////////////////
void BAR_ON();
void BAR_OFF();
void BAR_RST();

////////////////////////globel varible//////////////////////////////////
unsigned char k,chk_s=0,process_msg;
unsigned char timeout_count;
unsigned char serial_data[245];
unsigned char serial_data_1[20];
unsigned int serial_data_counter,serial_data_counter_1;
unsigned char timer2_counter;
unsigned int  serial_timeout,skip_length;
unsigned char new_msg_type;
unsigned char WR_buffer[64], RD_buffer[64];
unsigned char CMD[64];
//unsigned char  ATGF[]="AT+CMGF=1";
unsigned char cli_no[12];
unsigned char volt_value[15];
//unsigned char AT[]="AT";
unsigned char general;
float adc_value,volt,R_volt;

unsigned char temp,smscheck=0;
unsigned char SMS_DAT[64];
unsigned char SMS_DAT_1[64];

unsigned char CODE_VER[]="QAT_MB_01";

//**************************************************************************************************
// Main Interrupt Routine
//**************************************************************************************************
void interrupt()
{
  HID_InterruptProc();
  if(PIR1.RCIF)
      {
       PIR1.RCIF=0;
       if(serial_data_counter<=255)
       {
       if (Usart_Data_Ready())// If data is received
       serial_data[serial_data_counter++] = Usart_Read();
       }
      if(serial_data_counter>255)
       {
       if (Usart_Data_Ready())// If data is received
       serial_data_1[1] = Usart_Read();
       }
    //	serial_data[serial_data_counter++]=RCREG;  //recieved data
    	 T2CON.TMR2ON=0;//STOP TIMER 2
       TMR2=0x00;
       PR2=255;
       timer2_counter=0;
    	 serial_timeout=0;
       T2CON.TMR2ON=1;
      }        ///////////
  if (PIR1.TMR2IF)
      {
        PIR1.TMR2IF=0;
        T2CON.TMR2ON=0;
        timer2_counter++;
      	if(timer2_counter>=timeout_count)
      	{
        serial_timeout=1;
        }
        T2CON.TMR2ON=1;
      }

}//~


//**************************************************************************************************




//**************************************************************************************************
// Initialization Routine
//**************************************************************************************************
void Init_Main()
{
	//--------------------------------------
	// Disable all interrupts
	//--------------------------------------
  INTCON = 0;                             // Disable GIE, PEIE, TMR0IE,INT0IE,RBIE
	INTCON2 = 0xF5;
	INTCON3 = 0xC0;
	T2CON=0x7B;
	RCON.IPEN = 0;                          // Disable Priority Levels on interrupts
	PIE1 = 0;
	PIE2 = 0;
	PIR1 = 0;
	PIR2 = 0;
      //	ADCON1 |= 0x0F;
                        // Configure all ports with analog function as digital
	//--------------------------------------
	// Ports Configuration
	//--------------------------------------
	TRISA = 0xFF;
	TRISB = 0x00;
	TRISC = 0xFF;
	TRISD = 0x00;
	TRISE = 0x07;

	LATA = 0;
	LATB = 0;
	LATC = 0;
	LATD = 0;
	LATE = 0;
	//--------------------------------------
	// Clear user RAM
	// Banks [00 .. 07] ( 8 x 256 = 2048 Bytes )
	//--------------------------------------


}
//**************************************************************************************************
   ///////////////////////////////////////////////////////////////

  //////////////////////////////////////////////////////////////////////////////

//**************************************************************************************************
// Main Program Routine
//**************************************************************************************************

void main() org 0x1000
 {
  unsigned char i, ch,ch1,a=0,chk_s=0,b=0;
  serial_data[0]='\0';

  Init_Main();
  init_set();
  DC_C =1;
  Delay_ms(100);
  HID_Enable(&RD_buffer, &WR_buffer);
  Delay_ms(100);
  All_dvc_on() ;
  i=0;
  Delay_ms(500);
  a=0;
  ch1=0;
 send_port("WELLCOME");
 ADCON1 = 0x0a;  // Configure analog inputs and Vref
 TRISA  = 0xFF;
 serial_data_counter=0;
  while (1)
  {
  timeout_count=100;
    Delay_ms(50);
    k = HID_Read();
    if(k!=0)
     {
      ch1=1;
      }
      else
      ch1=0;
      i = 0;
    if(ch1)   ///if any char recived
      {
     //   if(RD_buffer[0]==128 && RD_buffer[1]==129)
       if(strncmp(RD_buffer,"MB",2) == 0)            //or chnge code MB to 127,128
         {
          PIE1.RCIE=0;
          ch1=0;
          ch = RD_buffer[2];
          Command(ch); ///execute command
          PIE1.RCIE=1;
          smscheck=0;
          }
        else if (strncmp(RD_buffer,"REQ-CODE",8) == 0)
        {
        send_port("CODE VER=");
        send_port(CODE_VER);
        }
        else
          send_port("WRONG PASSWORD");
      }
  }
  }
  ////////////////////////////////////reset_all/////////////////////////////////
void Reset_all()
  {
  Delay_ms(200);
  SIGSW =1;
  Delay_ms(100);
  BARSW =1;
  //Delay_ms(100);
  //DC_C =0;
  Delay_ms(3000);
  Delay_ms(3000);
  Delay_ms(3000);
  SIGSW =0;
  Delay_ms(3000);
  //Delay_ms(3000);
  BARSW =0;
  Delay_ms(200);
  send_port("ALL RESET DONE");

  }
//**************************************************************************************************

 //***************************************************************************************
 /////////////////////////////////////all device on////////////////////////////////////////
 void All_dvc_on()
    {
      DC_C =1;
      Delay_ms(100);
      HUBSW =0;
      Delay_ms(100);
      SIGSW =0;
      Delay_ms(1000);
      BARSW =0;
      Delay_ms(100);
      send_port("All devices ON");

    }
/////////////////////////////////////all device off////////////////////////////
void All_dvc_off()
    {
    SIGSW =1;
    Delay_ms(500);
    BARSW =1;
    Delay_ms(500);
    //DC_C =0;
    //Delay_ms(100);
     send_port("All devices OFF");
    }

 /////////////////////////////////////////////////////////////////////////////
 void send_port(unsigned char *cmd)
     {
      unsigned char cmd_len,loop;
      cmd_len=strlen(cmd);
      for(loop=0;loop<cmd_len;)
		  WR_buffer[loop]=*(cmd+loop++);
      WR_buffer[loop]='\0';
      while (!HID_Write(&WR_buffer, 64));
      WR_buffer[0]='\0';
      }
//////////////////////////////////////////////
 ///////////////////////////////////commad///////////////////////////////////
Command(unsigned char cmd)
 {     char i=0,cch=0;
            switch (cmd)
                {
                case 10:       // on all
                              {
                              All_dvc_on();  //all device on
                              break;
                              }
                case 11:
                              {
                              SIG_ON();     //SIG PAD switch on
                              break;
                              }
                case 12:
                              {
                              BAR_ON();    //BAR CODE on
                              break;
                              }

                case 20:
                              {
                              All_dvc_off();
                              break;
                            }
                case 21:
                              {
                             SIG_OFF();
                              break;
                              }
                case 22:
                              {
                              BAR_OFF();
                              break;
                              }

                case 30:
                              {
                              Reset_all();   // reset all
                              break;
                              }
                case 31:
                              {
                               SIG_RST();  //SIG PAD reset
                              break;
                              }
                 case 32:
                             {
                              BAR_RST();
                              break;
                             }

                  case 44:    // shutdown
                            {
                           // send_port("Request for Battery status");
                            Battery_status();
                            break;
                            }
                   case 77:    // shutdown
                          {
                          send_port("CODE VER=");
                          send_port(CODE_VER);
                          break;
                          }


                   default:
                   {
                   send_port("COMMAND NOT FOUND");
                   break;
                    }
                        }        /////switch statemnet clocsed
 }
 //////////////////////////////send vaule///////////////////////////////////
 //************************************************************************


///////////////////////////////////////////////////////////////////////////////
void init_set()
  {
  T2CON=0x7B;
  PIE1.RCIE=0;  /////////disabble serial interuptt
  INTCON.PEIE=1;           ///periphrial interuupt
  PIE1.TMR2IE=1;           ///enable timer 2 interupt
  INTCON.GIE=1;             ///globel interuptt enable
  T2CON.TMR2ON=0;
  PIR1.RCIF=0;
//	PIE1.TXIE=0;
  }
///////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
void EXTRACT_DATA()
{
unsigned int tempp;
unsigned int countt,i=0,a=0,b=0;
tempp=0;
general=0;
for(tempp=0; tempp<=skip_length ; tempp++) //Dont read +92 in sms and 0 in RING
    {
    WR_buffer[general++]=serial_data[tempp];
   if(general==64)
   {
   	Delay_ms(50);
   while (!HID_Write(&WR_buffer, 64));
   general=0;
   }
  }
  WR_buffer[general]='\0';
  Delay_ms(50);
  while (!HID_Write(&WR_buffer, 64));
  WR_buffer[0]='\0';
}


////////////////////////////////////////////////////////////
 void Battery_status()
 {
 char temp1,temp2;
 char i;
  Delay_ms(500);
  adc_value = Adc_Read(2); // Get results of AD conversion
  volt = adc_value*0.005;
  R_volt=100*(volt/5);

  temp1=R_volt/10 ;
  volt_value[0] =temp1+48;
  temp2=(R_volt-(temp1*10))*10;
  volt_value[1]=(temp2/10)+48;
  volt_value[2]=0x25;
  volt_value[3]='\0';
  if(R_volt>=100)
  {
  volt_value[1]=1;
  volt_value[2]=0;
  volt_value[3]=0;
  volt_value[4]='\0';
   }
//  sprintf(volt_value,"%2.3f", R_volt);
 send_port("Battery Voltage=");
  send_port(volt_value);
 }
 

/////////////////////SIG PAD ON/OFF/// ///////////////////

 void SIG_ON()
  {
   SIGSW=0;
   send_port("SIG PAD ON");    //SIG PAD on
  }
  
void SIG_OFF()
  {
   SIGSW =1;
   send_port("SIG PAD OFF");    //SIG PAD OFF
  }
  void SIG_RST()
  {
   SIGSW =1;
   Delay_ms(4000);
   Delay_ms(4000);
   Delay_ms(3000);
   SIGSW=0;
   Delay_ms(3000);
   send_port("SIG PAD RESET DONE");
  }
///******************************************************


/////////////////////BAR CODE ON/OFF/// ///////////////////
 void BAR_ON()
  {
   BARSW =0;
   send_port("BAR CODE ON");    //BAR CODE on
  }
void BAR_OFF()
  {
    BARSW=1;
   send_port("BAR CODE OFF");    //BAR CODE OFF
  }
  
  
void BAR_RST()
  {
  Delay_ms(500);
  BARSW =1;
  Delay_ms(1000);
  Delay_ms(2000);
  Delay_ms(3000);
  BARSW=0;
  Delay_ms(500);
  send_port("BAR CODE RESET DONE");
  }
  /////////////////////////////////////////////////////
PLZ help me

Edited by Administrator: Added Code Tag!

Post Reply

Return to “mikroC General”