This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Interrupts are not responding on ARM core

Other Parts Discussed in Thread: OMAPL138, OMAP-L138

Hi,
     I am using OMAPL-138 custom board in our project. We are facing critical issue with ARM core interrupt. ARM core is not allow any peripheral interrupt to host. TI provided sample codes for each peripheral. When I load any sample project on DSP core it's working fine. Interrupts are working with DSP code but same project I load on ARM core I am getting any interrupt from any peripheral.

 

Regards this issue,

I noticed  that processor do not allow to configure PINMUX registers because of processor is operate in user mode after startup. I am trying to change user mode to supervisor mode but in built CSS ARM library does not  allow any change. Please suggest and do needful to change processor mode from user mode to supervisor mode.

 

This is the following code which is reside in boot.asm library file.

 

;*------------------------------------------------------

        ;* SET TO USER MODE

        ;*------------------------------------------------------

        MRS     r0, cpsr

        BIC     r0, r0, #0x1F  ; CLEAR MODES

        ORR     r0, r0, #0x10  ; SET USER MODE  <--------------------------------------- I want to change this value to #0x13  

        MSR     cpsr_cf, r0

;*------------------------------------------------------

        ;* INITIALIZE THE USER MODE STACK

        ;*------------------------------------------------------

        .if __TI_AVOID_EMBEDDED_CONSTANTS

        MOVW    sp, __stack

        MOVT    sp, __stack

        MOVW    r0, __STACK_SIZE

        MOVT    r0, __STACK_SIZE

        .else

        LDR     sp, c_stack

        LDR     r0, c_STACK_SIZE

        .endif

        ADD     sp, sp, r0

 

        ;*-----------------------------------------------------

        ;* ALIGN THE STACK TO 64-BITS IF EABI.

        ;*-----------------------------------------------------

Also,

I noticed that IRQ bit in CPRS register is set(means IRQ is disable). Usually what should be the status for this bit while execution of application program.


Please do needful for this issue.

 

Regards,

Mitul Shinde

  • Hi Mitul Shinde,
    What package and example are you testing on your custom board ?

    The UART example based on interrupts.
    C:\ti\OMAPL138_StarterWare_1_10_04_01\examples\lcdkOMAPL138\uart

    Use the following link to import the ARM based UART project in CCS.
    C:\ti\OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omapl138\lcdkOMAPL138\uart
  • Hi Shankari,

    Thanks for reply. We have OMAP-L138 package and trying to run same example code for UART what you mentioned on your reply.

    Regards,
    Mitul Shinde
  • Hi Mitul Shinde,

    Please make sure that you have included the following library into your project.

    C:\ti\OMAPL138_StarterWare_1_10_04_01\binary\armv5\cgt_ccs\omapl138\system_config\Debug\system_config.lib

    Also you should use the following linker command file which says that "system_config.lib" has the entry point.

    -stack  0x8000                             /* SOFTWARE STACK SIZE           */

    -heap   0x2000                             /* HEAP AREA SIZE                */

    -e Entry

    /* SPECIFY THE SYSTEM MEMORY MAP */

    MEMORY

    {

    DDR_MEM     : org = 0xC1080000   len = 0x2F7FFFF     /* RAM */

    }

    /* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY */

    SECTIONS

    {

       .init : {

        system_config.lib<init.obj> (.text)

          } load > 0xC1080000

       .text    : load > DDR_MEM              /* CODE                              */

    .data    : load > DDR_MEM

       .bss     : load > DDR_MEM              /* GLOBAL & STATIC VARS              */

        RUN_START(bss_start),

    RUN_END(bss_end)

       .const   : load > DDR_MEM              /* SOFTWARE SYSTEM STACK             */

       .cinit   : load > DDR_MEM              /* SOFTWARE SYSTEM STACK             */

       .stack   : load > 0xC3FF7FFC           /* SOFTWARE SYSTEM STACK             */

  • HI Shankari,

    Thanks a lot for kind support. I followed above steps you have mentioned now it's working.

    Regards,
    Mitul Shinde
  • Hi Mitul Shinde,
    You are welcome.
    Thanks for the update.