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.

Keil uVision v4.72 and EK-TM4C123GXL

Other Parts Discussed in Thread: EK-TM4C123GXL, TM4C123GH6PM, SW-TM4C

I have been using CCS for EK-TM4C123GXL Tiva LaunchPad for more than a month.  I decided to try Keil uVision and I had a few surprises.

1. The EK-TM4C123GXL-KEIL from http://www.ti.com/tool/sw-ek-tm4c123gxl did not support TM4C123GH6PM, which is the device used on the Tiva LaunchPad.

2. I had to update Keil uVision to V4.72, the first version that supports TM4C123GH6PM.

3. The startup.s was replaced by startup_TM4C123.s and these lines

        MOVW    R0, #0xED88

        MOVT    R0, #0xE000

        LDR     R1, [R0]

        ORR     R1, #0x00F00000

        STR     R1, [R0]

 

were replaced by

                LDR     R0, =SystemInit

                BLX     R0

I added this function in my C file to handle it:

void SystemInit(void)

{

    // Grant coprocessor access

    // This is required since TM4C123G has a floating point coprocessor

    SCB->CPACR |= 0x00F00000;

}

4. If you noticed my last statement of SystemInit( ), the header file C:\Keil\ARM\INC\TI\TM4C123\TM4C123GH6PM.h was completely rewritten.  It uses C struct for register definitions instead of #define.  The programming interface is different.  For example, the data register for port F was changed from GPIO_PORTF_DATA_R to GPIOF->DATA.  I downloaded the latest TivaWare 1.1 SW-TM4C from http://www.ti.com/tool/sw-tm4c and the C:\ti\TivaWare_C_Series-1.1\inc\tm4c123gh6pm.h is still using the old style #define.  Now I have two different versions of header files.

This will pose a major problem for portability.  Does anybody know what is the official position of TI on this?