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.

CCS/AM5749: am574x idk gpio

Part Number: AM5749

Tool/software: Code Composer Studio

hello,

I have a am574x idk board, I made a program with CCS 10 to control the led according to the demo, baremetal_template_app_am572x_c66 and GPIO_LedBlink_idkAM572x_c66xTestProject, I have two questioins:

1 when I made a new progarm, the Board_init function always has to locate the evmAM572x, if I want to locate the idkAM574x, what's the changes I have to do ?

2 I use GPIO_PinConfig  funciton to configure the output, but it is not work, I have to add the register to configure, for example,  *(unsigned int*)0x4A00369C = (unsigned int)(0x1000E); If I want the function to configure the output or If I want to initialze the output, which function I have to use or which file I have to modify?

thanks very much

  • 1. When you create the CCS project, the target board selection should be idkAM574x, instead of evmAM572x.

    You can always build the code with makefile. When using the makefile to build, please set BORD=idkAM574x. This will make sure Board_init() is compiled from idkAM574x source file.

    2. Pinmux is set in Board_init() -> PinmuxGpioLedConfig() under ~/pdk/packages/ti/board/src/idkAM574x/idkAM574x_pinmux.c. GPIO_PinConfig is used to configure GPIO register, not pinmux register.

  • hello,

    1 When I create the new CCS project, I chooseIDK_AM574X, the messeage is the same as before, can't find evmAM572.c

    Can't find a source file at "/oe/bld/build-CORTEX_1/arago-tmp-external-arm-toolchain/work/am57xx_evm-linux-gnueabi/board-rtos/01.00.10.06G-r0/build/ti/board/src/evmAM572x/evmAM572x.c"
    Locate the file or edit the source lookup path to include its location.

    2 I check the PinmuxGpioLedConfig(),

    void PinmuxGpioLedConfig ()
    {
    Uint32 regVal = 0U;

    CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_SPI1_D1_SPI1_D1_MUXMODE, 0xEU);
    ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_SPI1_D1 = regVal;

    CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_SPI1_D0_SPI1_D0_MUXMODE, 0xEU);
    ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_SPI1_D0 = regVal;

    CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_SPI2_SCLK_SPI2_SCLK_MUXMODE, 0xEU);
    ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_SPI2_SCLK = regVal;

    CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_SPI2_D1_SPI2_D1_MUXMODE, 0xEU);
    ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_SPI2_D1 = regVal;

    }

    this is for industrial input using spi, not the nornmal Gpio input or output.

  • 1. You should not use AM572x project for AM574x board. Please follow the below instructions. 

    Use "pdkProjectCreate.bat AM574x idkAM574x little gpio all dsp" to create DSP gpio CCS project. This is described in the sdk document as the following.

    http://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/rtos/index_overview.html#pdk-example-and-test-project-creation

    2. It doesn't look like the right file. Below is the function you should see in the ~/pdk/packages/ti/board/src/idkAM574x/idkAM574x_pinmux.c.

    void PinmuxGpioLedConfig (int alpha)
    {
        Uint32 regVal = 0U;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_XREF_CLK2_XREF_CLK2_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_XREF_CLK2 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_VIN1A_D5_VIN1A_D5_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_VIN1A_D5 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_MCASP2_AXR4_MCASP2_AXR4_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_MCASP2_AXR4 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_MCASP2_AXR5_MCASP2_AXR5_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_MCASP2_AXR5 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_MCASP2_AXR6_MCASP2_AXR6_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_MCASP2_AXR6 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_MCASP2_AXR7_MCASP2_AXR7_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_MCASP2_AXR7 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_SPI1_D0_SPI1_D0_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_SPI1_D0 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_SPI1_D1_SPI1_D1_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_SPI1_D1 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_SPI1_CS0_SPI1_CS0_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_SPI1_CS0 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_SPI1_CS1_SPI1_CS1_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_SPI1_CS1 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_VIN1A_D13_VIN1A_D13_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_VIN1A_D13 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_VIN1A_D14_VIN1A_D14_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_VIN1A_D14 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_VIN2A_VSYNC0_VIN2A_VSYNC0_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_VIN2A_VSYNC0 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_VIN2A_D3_VIN2A_D3_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_VIN2A_D3 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_VIN2A_D4_VIN2A_D4_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_VIN2A_D4 = regVal;
    
        CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_VIN2A_D5_VIN2A_D5_MUXMODE, 0xEU);
        ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_VIN2A_D5 = regVal;
        if (alpha)
        {
              CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_UART2_RTSN_UART2_RTSN_MUXMODE, 0xEU);
              ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_UART2_RTSN = regVal;
    
              CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_UART2_CTSN_UART2_CTSN_MUXMODE, 0xEU);
              ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_UART2_CTSN = regVal;
        }
        else
        {
              CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_UART1_TXD_UART1_TXD_MUXMODE, 0xEU);
              ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_UART1_TXD = regVal;
    
              CSL_FINS(regVal, CONTROL_CORE_PAD_IO_PAD_UART1_RXD_UART1_RXD_MUXMODE, 0xEU);
              ((CSL_padRegsOvly) CSL_MPU_CORE_PAD_IO_REGISTERS_REGS)->PAD_UART1_RXD = regVal;
        }
    }
    

  • thank you for reply

    1 I followed the instruction, but the tips are the system can't find the path.

    2 the PinmuxGpioLedConfig I found is evmAM572x, the idkAM574x is same as yours. but how to replace the file evmam572x_pinmux.c with idkAM574x_pinmux.c. I think the problem is same with the first problem.

    I create a new project using CCS, and Board_init() will go to evmAM572x not idkAM574x. Is there any setting in CCS enviroment? the following is that I used

    -mv6600 --include_path="C:/Users/richard/workspace_v10/test_idkam5749" --include_path="C:/ti/ccs1000/ccs/tools/compiler/ti-cgt-c6000_8.3.6/include" --include_path="C:/ti/pdk_am57xx_1_0_16/packages/" --define=idkAM574x --define=C66X --define=SOC_AM574x --define=am574x --define=ti_targets_arm_elf_M4 -g --diag_warning=225 --diag_wrap=off --display_error_number

  • Could you share the output from running the below commend?

    > pdkProjectCreate.bat AM574x idkAM574x little gpio all dsp

    Regards,
    Stanley