Setup PinMux


The TI AM57x requires the majority of pinmuxes to be set while the IOs are isolated. This is accomplished in the MLO while it's still running from SRAM. The MMC interface signals are exempt from this. For more info read TI's IO Configuration Requirements Application Report Excerpt

Using TI SysConfig Tool

The PinMux Tool helps you choose a mux configuration for your system once you've specified the peripheral signals your system requires. The tool will automatically choose pins based on your requirements - you do not need to manually try multiple configurations or resolve conflicts. Once determined, the tool can either generate source code that configures the device at runtime, or a summary file showing the configuration.

  1. Open TI's Cloud Tools
    You'll need to log in or create a TI account
    Note: There is an offline pinmux tool that works but TI doesn't recommend it.
  2. Open the SysConfig Tool
  3. Click "BROWSE" under the Open an Existing Design
  4. The following link explains how to configure pinmux for the devices you require.
    Note: There are a few interfaces which are reserved for the SOM, these should not be changed. If you need help, feel free to create a post on the forum.
  5. After you are done, in the Generated Files section download the genericFileFormatIOdelay.txt and genericFileFormatPadConf.txt files. This can be accomplished by clicking the save icon next to each file.
  6. The format is generic (similar to a .csv file), and needs to be post-processed by a custom script to create output useful in u-boot.
  7. The following Perl script from TI can convert the files to a format that can be used in the mux_data.h file in boards/cl/mitysom57x/
    From repository:
    ./ [-h] -p padconf_file -d iodelay_file -o output_format
     -h provides this help text
     -p padconf_file is the generic pad config output file provided by PMT(PinMux Tool)
     -d iodelay_file is the generic iodelay output file provided by PMT(PinMux Tool)
     -o output_format , where output_format is one of:
      – iodelay – Generate IO Delay data
      – iopad – Generate IO Pad data
  8. Run the following commands to generate the pad config and iodelay settings:
    ./ -p genericFileFormatPadConf.txt -d genericFileFormatIOdelay.txt -o iopad > padconf.txt
    ./ -p genericFileFormatPadConf.txt -d genericFileFormatIOdelay.txt -o iodelay > iodelay.txt

    Example outputs:
    $ head padconf.txt
    {GPMC_AD0, (M0 | PIN_INPUT)},   /* M6 gpmc_ad0.gpmc_ad0 */
    {GPMC_AD1, (M0 | PIN_INPUT)},   /* M2 gpmc_ad1.gpmc_ad1 */
    {GPMC_AD2, (M0 | PIN_INPUT)},   /* L5 gpmc_ad2.gpmc_ad2 */
    {GPMC_AD3, (M0 | PIN_INPUT)},   /* M1 gpmc_ad3.gpmc_ad3 */
    {GPMC_AD4, (M0 | PIN_INPUT)},   /* L6 gpmc_ad4.gpmc_ad4 */
    {GPMC_AD5, (M0 | PIN_INPUT)},   /* L4 gpmc_ad5.gpmc_ad5 */
    {GPMC_AD6, (M0 | PIN_INPUT)},   /* L3 gpmc_ad6.gpmc_ad6 */
    {GPMC_AD7, (M0 | PIN_INPUT)},   /* L2 gpmc_ad7.gpmc_ad7 */
    {GPMC_AD8, (M0 | PIN_INPUT)},   /* L1 gpmc_ad8.gpmc_ad8 */
    {GPMC_AD9, (M0 | PIN_INPUT)},   /* K2 gpmc_ad9.gpmc_ad9 */
    $ head iodelay.txt
    {0x0150, 2575, 966},    /* CFG_GPMC_A14_IN */
    {0x015C, 2503, 889},    /* CFG_GPMC_A15_IN */
    {0x0168, 2528, 1007},   /* CFG_GPMC_A16_IN */
    {0x0170, 0, 0}, /* CFG_GPMC_A16_OUT */
    {0x0174, 2533, 980},    /* CFG_GPMC_A17_IN */
    {0x0188, 590, 0},       /* CFG_GPMC_A18_OUT */
    {0x0374, 0, 0}, /* CFG_GPMC_CS2_OUT */
    {0x0BA0, 2394, 981},    /* CFG_VOUT1_D0_IN */
    {0x0BAC, 2346, 583},    /* CFG_VOUT1_D10_IN */
    {0x0BB8, 2393, 767},    /* CFG_VOUT1_D11_IN */
  9. Open the boards/cl/mitysom57x/mux_data.h file and replace the contents of core_padconf_array_essential_mitysom_devkit with the padconf.txt contents. And replace iodelay_cfg_array_mitysom_devkit with the iodelay.txt contents.
  10. Compile and Commit your changes
    Note: The majority of existing mux entries have added notes such as what netname they are connected to on the devkit and if there are pullups. You may want to preserve or update these comments for your design.

Pinmux files

AM5728_SR2.0_devkit.pinmux - Pinmux for development kit + SOM
AM5728_SR2.0_min_pinset.pinmux - Minimum pinmux includes SOM pinmux plus some expected/recommended pinmux defaults
AM5728_SR2.0_som_pinset.pinmux - Pinmux that contains only pins which are internal to SOM and should be considered a blank starting place.

AM5728_SR2.0_nonFPGA_devkit.pinmux - Pinmux for development kit + SOM with no fpga
AM5728_SR2.0_nonFPGA_min_pinset.pinmux - Minimum pinmux includes SOM pinmux (nonFPGA) plus some expected/recommended pinmux defaults
AM5728_SR2.0_nonFPGA_som_pinset.pinmux - Pinmux that contains only pins which are internal to SOM (nonFPGA) and should be considered a blank starting place

Pinmux availability

  • QSPI is reserved for on SOM NOR
  • I2C1 is reserved for on SOM
  • GPMC is reserved for on SOM to FPGA (FPGA Modules only)
  • PCIE is reserved for on SOM to FPGA (FPGA Modules only)

Go to top
Add picture from clipboard (Maximum size: 1 GB)