real view compiler help for cortex m3

Discussion in 'Embedded Systems and Microcontrollers' started by embed_v, Dec 2, 2010.

  1. embed_v

    Thread Starter New Member

    Aug 30, 2010
    24
    0
    embed_v rao
    we are using ti cortex m3 uc. keil uv 4.03
    i want to implement a bootloader so that the bootloader will call the apllication ie my main function.ie bootloader jump on 801 address.
    but i was wrote the code for resetisr handler (i am usign rvmdk).
    i get error like :
    call.c(150): error: #1113: Inline assembler not permitted when generating Thumb code

    Code ( (Unknown Language)):
    1.  
    2. // #include"uart0.h"
    3. //*****************************************************************************
    4. //
    5. // Forward declaration of the default fault handlers.
    6. //
    7. //*****************************************************************************
    8. void ResetISR(void);
    9. static void NmiSR(void);
    10. static void FaultISR(void);
    11. static void IntDefaultHandler(void);
    12.  
    13. // The entry point for the application.
    14. [B](is it right)[/B]
    15. #if defined ( __CC_ARM   )
    16.   #define __ASM __asm                                         /*!< asm keyword for ARM Compiler          */
    17.   #define __INLINE__inline                                   /*!< inline keyword for ARM Compiler             */
    18.  
    19.  
    20.  
    21.  
    22. //
    23. // External declaration for the interrupt handler used by the application.
    24. //
    25.  
    26. __irq void UART0_ISR(void);
    27.  
    28.  
    29.  
    30. // The entry point for the application.
    31.  
    32. //extern int main(void);
    33.  
    34.  
    35. #ifndef STACK_SIZE
    36. #define STACK_SIZE                              64
    37. #endif
    38. static unsigned long pulStack[STACK_SIZE];
    39.  
    40.  
    41. extern unsigned long _vStackTop;
    42.  
    43.  
    44. extern unsigned long _etext;
    45. extern unsigned long _data;
    46. extern unsigned long _edata;
    47. extern unsigned long _bss;
    48. extern unsigned long _ebss;
    49.  
    50. __attribute__ ((section(".isr_vector")))
    51. void (* const g_pfnVectors[])(void) =
    52. {
    53.     (void (*)(void))((unsigned long)&_vStackTop),
    54.                                             // The initial stack pointer
    55.     ResetISR,                               // The reset handler
    56.     NmiSR,                                  // The NMI handler
    57.     FaultISR,                               // The hard fault handler
    58.     IntDefaultHandler,                      // The MPU fault handler
    59.     IntDefaultHandler,                      // The bus fault handler
    60.     IntDefaultHandler,                      // The usage fault handler
    61.     0,                                      // Reserved
    62.     0,                                      // Reserved
    63.     0,                                      // Reserved
    64.     0,                                      // Reserved
    65.     IntDefaultHandler,                      // SVCall handler
    66.     IntDefaultHandler,                      // Debug monitor handler
    67.     0,                                      // Reserved
    68.     IntDefaultHandler,                      // The PendSV handler
    69.     IntDefaultHandler,                      // The SysTick handler
    70.     IntDefaultHandler,                      // GPIO Port A
    71.     IntDefaultHandler,                      // GPIO Port B
    72.     IntDefaultHandler,                      // GPIO Port C
    73.     IntDefaultHandler,                      // GPIO Port D
    74.     IntDefaultHandler,                      // GPIO Port E
    75.     IntDefaultHandler,                      // UART0 Rx and Tx
    76.     IntDefaultHandler,                      // UART1 Rx and Tx
    77.     IntDefaultHandler,                      // SSI0 Rx and Tx
    78.     IntDefaultHandler,                      // I2C0 Master and Slave
    79.     IntDefaultHandler,                      // PWM Fault
    80.     IntDefaultHandler,                      // PWM Generator 0
    81.     IntDefaultHandler,                      // PWM Generator 1
    82.     IntDefaultHandler,                      // PWM Generator 2
    83.     IntDefaultHandler,                      // Quadrature Encoder 0
    84.     IntDefaultHandler,                      // ADC Sequence 0
    85.     IntDefaultHandler,                      // ADC Sequence 1
    86.     IntDefaultHandler,                      // ADC Sequence 2
    87.     IntDefaultHandler,                      // ADC Sequence 3
    88.     IntDefaultHandler,                      // Watchdog timer
    89.     IntDefaultHandler,                      // Timer 0 subtimer A
    90.     IntDefaultHandler,                      // Timer 0 subtimer B
    91.     IntDefaultHandler,                      // Timer 1 subtimer A
    92.     IntDefaultHandler,                      // Timer 1 subtimer B
    93.     IntDefaultHandler,                      // Timer 2 subtimer A
    94.     IntDefaultHandler,                      // Timer 2 subtimer B
    95.     IntDefaultHandler,                      // Analog Comparator 0
    96.     IntDefaultHandler,                      // Analog Comparator 1
    97.     IntDefaultHandler,                      // Analog Comparator 2
    98.     IntDefaultHandler,                      // System Control (PLL, OSC, BO)
    99.     IntDefaultHandler                       // FLASH Control
    100. };
    101.  
    102. void ResetISR(void)
    103. {
    104.     unsigned long *pulSrc, *pulDest;
    105.  
    106.     //
    107.     // Copy the data segment initializers from flash to SRAM.
    108.     //
    109.     pulSrc = &_etext;
    110.     for(pulDest = &_data; pulDest < &_edata; )
    111.     {
    112.         *pulDest++ = *pulSrc++;
    113.     }
    114.  
    115.     //
    116.     // Zero fill the bss segment.
    117.     //
    118.       __asm("    ldr     r0, =_bss\n"     [B]<===(here i get err)[/B]
    119.           "    ldr     r1, =_ebss\n"
    120.           "    mov     r2, #0\n"
    121.          "    .thumb_func\n"
    122.           "zero_loop:\n"
    123.           "        cmp     r0, r1\n"
    124.           "        it      lt\n"
    125.           "        strlt   r2, [r0], #4\n"
    126.           "        blt     zero_loop");
    127.  
    128.     //
    129.     // Call the application's entry point.
    130.     //
    131.  
    132.  
    133.    main();
    134.  
    135. }
    136.  
    137. static void NmiSR(void)
    138. {
    139.     //
    140.     // Enter an infinite loop.
    141.     //
    142.     while(1)
    143.     {
    144.     }
    145. }
    146.  
    147.  
    148. static void FaultISR(void)
    149. {
    150.     //
    151.     // Enter an infinite loop.
    152.     //
    153.     while(1)
    154.     {
    155.     }
    156. }
    157.  
    158.  
    159. static void IntDefaultHandler(void)
    160. {
    161.     //
    162.     // Go into an infinite loop.
    163.     //
    164.     while(1)
    165.     {
    166.     }
    167. }
    168.  
    169.  
    exactly which segments ie bss, data segments are used in real view compiler.
    what i done is is rt?
     
    Last edited by a moderator: Dec 3, 2010
Loading...