??? 03/17/09 16:43 Read: times |
#163537 - Bootloader code in C - ISR locations |
I had written the following code in assembly 8051 for bootloader for Silabs IC : C8051F044R. The bootloader code is written to occupy flash locations 0x0000 to 0x05ff. The application code starts at 0x0600. The bootloader ISR vectors points to application code ISRs. I need to do the same thing in 'C' using Keil compiler. Can someone guide me as to how it is done in 'C'? I have written my assembly 8051 code below. Thanks. ;----------------------------------------------------------------------------- ; reset and interrupt vector table definitions in BOOTLOADER CODE ;----------------------------------------------------------------------------- ; jump to specified locations for each and every interrupt vector. Cseg at 0 Jmp main org 03h ; External Interrupt 0 ljmp 603h org 0bh ;Timer 0 Overflow ljmp 60bh org 13h ;External Interrupt 1 ljmp 613h org 01bh ;Timer 1 Overflow ljmp 61bh org 023h ; UART0 ljmp 623h org 02bh ; Timer 2 Overflow ljmp 62bh org 033h ; SPI0 ljmp 633h org 03bh ; SMB0 ljmp 63bh org 043h ; RESERVED ljmp 643h org 04bh ; ADC0 Window Compare ljmp 64bh org 053h ; ADC0 Conversion Complete ljmp 653h org 05bh ; Programmable Counter Array ljmp 65bh org 063h ; Comparator0 ljmp 663h org 06bh ; Comparator1 ljmp 66bh org 073h ; Timer 3 Overflow ljmp 673h ;----------------------------------------------------------------------------- ; reset and interrupt vector table in APPLICATION CODE STARTING AT 0x600 ;----------------------------------------------------------------------------- cseg at 600h ljmp main org 603h; External Interrupt 0 reti org 60bh ljmp timerr0_isr; timer0 overflow interrupt org 613h reti; External Interrupt 1 org 61bh ;Timer 1 Overflow reti;Timer 1 Overflow org 623h ljmp uart0_isr; uart0 interrupt org 62bh ljmp timer2_isr; timer2 overflow interrupt org 633h ; SPI0 reti org 63Bh ljmp SMBus_ISR; SMBus Interrupt Vector org 643h ; RESERVED reti org 64bh ; ADC0 Window Compare reti org 653h ; ADC0 Conversion Complete reti org 65bh ; Programmable Counter Array reti org 663h ; Comparator0 reti org 66bh ; Comparator1 reti org 673h ljmp timer3_isr; timer3 overflow interrupt |
Topic | Author | Date |
Bootloader code in C - ISR locations | 01/01/70 00:00 | |
I have done something similar ..... | 01/01/70 00:00 | |
my application code is in C but bootloader in assembly 8051 | 01/01/70 00:00 | |
modules | 01/01/70 00:00 | |
Thanks![]() | 01/01/70 00:00 |