This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Not able to use inline assembly in Keil

I am not able to use inline assembly in my C source file. I tried to Enable Generate Assembler SRC file and Enable Assemble SRC file. Then i used #pragma ASM in the beginning of the assembly code and #pragma ENDASM at the end of the assembly code, but it is not able to recognize even the LDR command. The commands are not recognisable even when i am using __asm() block to write the code. Please advise.

  • No need to muck about with command line directives.

    This sort of thing works for me:

    static unsigned long SwapU32(unsigned long to_swap)
    {
      const unsigned long mask = 0x00FF00FF;
      unsigned long temp;
    
      __asm {
        AND temp,    mask,    to_swap
        AND to_swap, mask,    to_swap, ROR #24
        ORR to_swap, to_swap, temp,    ROR #8
      }
    
      return (to_swap);
    }
    

    Function extracted from original Keil supplied source.

  • I am using RealView compiler tools in my project. The following code seems to be working properly now.

    __asm void
    CallApplication(uint_fast32_t ui32StartAddr)
    { // // Set the vector table address to the beginning of the application. // ldr r1, =0xe000ed08 str r0, [r1]

    // // Load the stack pointer from the application's vector table. // ldr r1, [r0] mov sp, r1

    // // Load the initial PC from the application's vector table and branch to // the application's entry point. // ldr r0, [r0, #4] bx r0
    }

    No other format is working.
    Above code is a part of boot loader code. Through this code i am trying to jump to an application which is present at another address ui32StartAddr. That application is programmed separately by using the boot loader code. But when i try to make a jump to the application, it again executes the main() of boot loader code. I am in doubt if this has to do something with the linker script or the startup file as i have used the default ones in the boot loader code as well as application code. Please advise.

  • Please advise.

    An opportunity for you to acquire a deeper understanding. Time for some debugging.