avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] switch from application to bootloader section


From: Yannick PODGORSKI
Subject: Re: [avr-gcc-list] switch from application to bootloader section
Date: Wed, 23 Feb 2005 12:15:35 +0100

When you say send command that is with your PC to ATMEGA
with USART.
Normally, there is no pb. Only when you write the interrupts are stopped
by cli() so you can lose datas.

Yannick Podgorski
Tél : 04 92 94 21 13
Fax : 04 92 94 21 16
________________________________________
Kuantic - 2229 Rte de Crêtes - 06560 Valbonne
www.kuantic.com

----- Original Message -----
From: andi
Sent: Wednesday, February 23, 2005 12:03 PM
Subject: Re: [avr-gcc-list] switch from application to bootloader section

Hi,
 
when i send command switch to boot section, I have to send twice, Strange.
Is it problem if we use receive data via uart using interrupt (sei) ?
I use 2 interrupt. UART and timer 0.
 
Andi
 
----- Original Message -----
Sent: Wednesday, February 23, 2005 4:21 PM
Subject: Re: [avr-gcc-list] switch from application to bootloader section

How do you flash your ATMEGA ?
Are you sure that is really flash in both sections ?
 
If you set BOOTRST, the CPU resets to app section.
You said :"my bootloader program size is 512 byte, so I located in smallest bootloader section (Address 1E00h)".
It's ok.
You switch to boot section with a jump :
asm volatile("jmp 0x1E00");
 
At start of boot code, program :
MCUCR = (1<<IVCE);
MCUCR = (1<<IVSEL); to put interrupt vector in LBS

At end of boot code, before jump to app section :
MCUCR = (1<<IVCE);
MCUCR = (0<<IVSEL); to put interrupt vector in appli section
Try to use only a app program first to be sure that works without a boot program and with BOOTRST=1.
After make another little program and test it on app section to be sure that is worked.
Flash your ATMEGA with 2 program don't forget to move interrupt vector with MCUCR and make jump.
Your app code must work and look what happens.
 
Hope that helps.

Yannick Podgorski
www.kuantic.com

----- Original Message -----
From: andi
Sent: Wednesday, February 23, 2005 10:01 AM
Subject: Re: [avr-gcc-list] switch from application to bootloader section

when switch to boot section , the program doesn't execute the program in app section anymore. But looks like the program doesn't execute the boot section either.
I set BOOTRST (programmed) and I didn't use watchdog.
 
 
Andi
----- Original Message -----
Sent: Wednesday, February 23, 2005 3:38 PM
Subject: Re: [avr-gcc-list] switch from application to bootloader section

yes, we could.
My last mail is not enough :
----------------------
Don't you make the opposite ?
to switch app section to boot section is:
 
//....
cli();
GICR = (1<<IVCE);
GICR = (1<<IVSEL);
void (*function)(void) = 0x1E000
function();
 
Anyone know how to switch interupt vector from bootloader section to application section ?
I Try :
 
//...
cli();
GICR = (1<<IVCE);
GICR = (0<<IVCE);                                // try this
void (*function)(void) = 0x0000
function();
//...
 
Can you give more details :
- what happen ?
- the CPU resets ? Do you disable watch dog ?

 

Yannick Podgorski
www.kuantic.com

----- Original Message -----
From: andi
Sent: Tuesday, February 22, 2005 2:30 AM
Subject: Re: [avr-gcc-list] switch from application to bootloader section

I make two different program, application and bootloader for ATMEGA8
I compile both separately. My bootloader program size is 512 byte, so I located in smallest bootloader section (Address 1E00h).
I want my program some time switch from bootloader section to application section and vice versa.
The bootloader program have a function to reprogram the flash (app section only, coz I I block spm command for boot section).
 
 
Could You help me ?
 
Andi
 
 
 
----- Original Message -----
Sent: Monday, February 21, 2005 6:10 PM
Subject: Re: [avr-gcc-list] switch from application to bootloader section

Don't you make the opposite ?
 
to switch app section to boot section is:
 
//....
cli();
GICR = (1<<IVCE);
GICR = (1<<IVSEL);
void (*function)(void) = 0x1E000
function();
 
Anyone know how to switch interupt vector from bootloader section to application section ?
I Try :
 
//...
cli();
GICR = (1<<IVCE);
GICR = (0<<IVCE);                                // try this
void (*function)(void) = 0x0000
function();
//...
 
Can you give more details :
- what happen ?
 
Do you disable watch dog ?

Yannick Podgorski
www.kuantic.com

----- Original Message -----
From: andi
Sent: Monday, February 21, 2005 10:23 AM
Subject: [avr-gcc-list] switch from application to bootloader section

I know to switch app section to boot section is:
 
//....
cli();
GICR = (1<<IVCE);
GICR = (1<<IVSEL);
void (*function)(void) = 0x0000
function();
 
Anyone know how to switch interupt vector from bootloader section to application section ?
I Try :
 
//...
cli();
GICR = (1<<IVCE);
GICR = 0;
void (*function)(void) = 0x1E000
function();
//...
 
 
but didn't work.
 
 
Andi


_______________________________________________
AVR-GCC-list mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list


_______________________________________________
AVR-GCC-list mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]