Pin Mux Utility for ARM MPU Processors
This User's Guide supports Pin Mux Utility v18.104.22.168 (APR 2012) or later which is available in the Sitara Linux SDK version 05.06
For any previous version of Pin Mux Utility see Pin Mux Utility v1.x User's Guide (archived)
- 1 Introduction
- 2 Software Installation
- 3 Software User's Guide
- 3.1 Program Startup
- 3.2 Main Window
- 3.3 Menu Items
- 3.4 Saving Your Work to a Design State File
- 3.5 Opening an Existing Design State File
- 3.6 Legend
- 3.7 Main Data Grid
- 3.8 Interface Views
- 3.9 IO Sets Functionality (AM335x device only)
- 3.10 IO Cell Power Domain Checking (AM335x device only)
- 3.11 Changing Pad Configuration Parameters
- 3.12 Saving Results to Source Files
- 3.13 Using the Generated Header Files (AM35x / AM37x / OMAP35x)
- 4 Archived
The Pin Mux Utility for TI ARM Cortex-A8 based microprocessors is a Windows-based software tool for configuring pin
multiplexing settings and I/O cell characteristics for the AM335x, AM35x, AM37x / DM37x, AM387x / DM814x,
AM389x / C6A816x / DM816x and OMAP35x devices. The program has been tested on Windows XP and
Sitara processors provide pad configuration programmability to control the routing of internal
signals to the external balls of the device. Pad configuration also allows I/O cell characteristics to
be controlled. These include enabling of internal pull-up / pull-down resistors and specifying I/O cell
behavior independently in active and standby modes of operation.
The Pin Mux Utility provides a graphical user interface for selecting the peripheral interfaces that will
be used in the system design and for resolving pin multiplexing conflicts. The currect state of all settings
can be saved as a design state file which can be reloaded to restore the state of all tool settings.
The results can also be output as C header files. The first header file is device-specific and
it specifies all the pad configuration registers that can be programmed on the device. The second
header file is board-specific and it specifies all the pin multiplex and pad configuration settings that
were generated for your specific system design. The output sample header files are in the format used
for the AM35x / AM37x / OMAP35x U-Boot source code. For other supported devices, the source code
provides a complete description of all settings but is not directly usable as U-Boot source code.
NOTE: Although these utilities are tested and known to be accurate, they are provided ‘as is’ and are not guaranteed to provide accurate results. In the event of a conflict between the device model data contained in this software tool and the device datasheet, the datasheet shall take precedence. Please check any results against the datasheet for your device to be assured your pinmux configuration is possible and accurate. In particular, the utility may not comprehend device specific requirements for all of the bits in the PIN CONTROL registers. It is up to the user to verify all of the bits in the registers based on the information in the device datasheet. Additionally, these are for use at your own risk; there is no guarantee they are safe for your computer system or that they will work on your system (they are built for Windows XP and are not known to cause problems however).
Pin Mux Utility v2_04_01_00 is available for download from the ti.com website here. It is also installed
automatically as part of the Linux EZ Software Development Kit for Sitara ARM Microprocessors but the
version from the ti.com website is recommended to get the most recent updates.
If you are running Linux as a virtual machine on a Windows O/S, the Windows Installer and Pin Mux Utility
program can be run on the Linux host PC under the Windows O/S. The generated source files can then be
transferred to the Linux virtual machine via shared folders or another available method.
If your Linux O/S is not a virtual machine, the Windows installer and Pin Mux Utility program must be
run on a separate PC running the Windows O/S. To run the Windows Installer, run Setup.exe. The installer
should start running as shown below.
If a previous version of Pin Mux Utility was installed, the following message MAY appear.
Select "Remove Pin Mux Utility" and click Finish to uninstall the previous version. Then,
run Setup.exe again to install the new version.
In some cases, if Pin Mux Utility was already installed the following message will appear
instead. In this case, use Add/Remove programs from the Windows Control Panel to
uninstall the original version, then run the installer again.
Software User's Guide
To see the current release notes, click on this in the Windows Start menu:
All Programs > Pin Mux Utility > Release_Notes.txt
To start the program, double-click the Pin Mux Utility icon on the desktop, or click
All Programs > Pin Mux Utility > Pin Mux Utility
in the Windows Start menu.
Pin Mux Utility
A dialog box will appear indicating which devices are supported by this installation of the
Pin Mux Utility as shown below. Select your device and click OK.
- The main window opens with device data populated for the selected device type. All pin mux selections and pad configurations are in the
- The main window (and the Peripheral Interface View windows) may be maximized or resized so that the complete signal names can be seen.
- Double-click at the divider between columns in the table row header area to set width of a column to match the widest column text.
- The title bar indicates the path where output source files will be stored.
- The Peripheral Interfaces data grid shows the current peripheral interface status for the member signals of each peripheral interface.
- The Device Package selector controls which package type is used to populates the "Bot/Top Ball" ball location column.
When a signal has been selected and the IO Pad is not connected to any device ball this ball has a RED background in the "Bot/Top Ball"
column and the "Pkg Conflict!" indicater is shown below the Device Package drop-down box. IO Pads that are not connected to any device ball
should have all signals Not Selected and be defaulted to the "Selected (Ball Available)" state (unless the ball has a fixed mux mode).
- The Legend describes the color scheme that is used to give a visual indication of the state of each peripheral interface and the state of each
signal in the Pin Mux Grid.
- The main Pin Mux Grid represents one device ball in each row and contains columns to display the current pad configuration and ball location(s).
Columns labeled Mode 0 to Mode N represent the pin mux state at each ball. The state may be changed by double clicking on a cell.
Multiple cells may be selected in either the Pad Configs column or in the Mux Mode columns. R-Click and use context menu to edit these
- The status bar indicates the total number of device balls, number of balls remaining and the number of balls with conflicting mux settings.
- The Reset button is used to set all mux selections and pad configurations to the power-on-reset state.
- The close button exits the program
NOTE: For devices other than AM335x the IO Set Violation, IO Set Subset and IO Set Match statuses are not shown. The Peripheral Interface uses a GREEN=Selected status in place of those,
meaning that at least one interface member signal is selected and there are no conflicts.
For devices other AM335x, the IO Power column is not used.
- File > Save > Design
Saves current pin mux selections and pad configurations to a data file that can be reloaded at any time or
on a subsequent run of the program. This file, by default, will be stored at:
<My Documents Folder>\Pin Mux Utility\Design1\<device_name>\PinMuxDesignState_<device_name>.dat
- File > Open > Design
Opens data file stored previously with the File > Save > Design menu item. Must open a file for the same
device type that was selected at program startup. This will populate all mux selections and pad configuration
parameters from the data file.
- File > Save > Source > Linux
Saves the current pin mux selections and pad configurations to C header files.
- File > Exit
Exits the program. You will be prompted to "Save changes to mux selections and/or pad configurations?". If
Yes is clicked, this will open a file save dialog to save the design data file as when the File > Save > Design
menu command is used.
- Help > ReadMe
Displays a window describing features of the program and a link to this User Guide Wiki article.
- Help > About
Displays the program version.
Saving Your Work to a Design State File
Use File > Save > Design, to save your work to a design state file. This file can later be reloaded
to continue working on your design.
Opening an Existing Design State File
Use File > Open > Design , to open saved design state file. For some devices,
an example design file is provided with settings that match the TI EVM board.
The legend below shows the visual indicators that are used to display the status of the pin mux settings at the
peripheral interface and individual ball levels. The tables below describe how these states are to be interpreted.
Legend: As displayed for all device types except AM335x
Legend: As displayed for AM335x device
|Peripheral Interface Status||Description|
|RED = Conflicting||At least one interface member signal is involved in a conflict with another signal on the same ball. These conflicts must be resolved before obtaining a final pin mux configuration for the device.|
|VIOLET = Multi-Muxed Violation||This involves cases where the same internal signal is muxed to multiple ball locations and the signal has been selected at more than one of those ball locations. The interface view will contain a status message (at upper left) that indicates the first two multi-muxed signals that are found to be selected. These conflicts must be resolved before obtaining a final pin mux configuration for the device.|
|GREEN = Selected||At least one interface member signal is selected and there are no conflicts or violations.|
|AQUA = All Available||All member signals of the interface are available for selection.|
|BLUE=Partially Available||At least one but not all member signals of the interface are available for selection. One or more member signal(s) are not available because another interface is already using the ball(s).|
|WHITE=Nothing Available||None of the member signals of the interface are available for selection. All member signals are unavailable because other interface(s) are already using the ball(s).|
|Peripheral Interface Status||Description|
|BROWN = IO Power Violation||The peripheral interface has member signals selected and the IO Cells are not all connected to the same voltage.|
|ORANGE = IO Set Violation||The selected members of the interface do not satisfy the requirements of any of the pre-defined IO Sets for the interface. The selected signals are a superset of all the pre-defined IO Sets. These violations must be resolved before obtaining a final pin mux configuration for the device.|
|YELLOW = IO Set Subset||The selected members of the interface are a subset of the specified signals for one or more IO Sets. This is an informational status and is acceptable for a final pin mux configuration for a device.|
|GREEN = IO Set Match||The selected members of the interface match one of the pre-defined IO Sets exactly. Or, if no IO Sets are defined for the interface, it means at least one interface member signal is selected without conflicts or violations.|
Below is the description for the status that occurs on the cells of an individual device ball.
A device ball corresponds to one row in the Pin Mux Grid in the main window or in an
|Pin Mux Grid Status||Description|
|RED = Conflicting||The Conflicting status means the user has tried to select two or more signals at the same ball. Conflicting signals are all shown in RED. Conflicting signals must be deselected until not more than one signal is selected at each ball to generate a valid pin mux configuration for the device.|
|GREEN = Selected||The Selected status means this signal is selected for this ball without any conflict. (There still may be violations reported at the peripheral interface level.)|
|AQUA = Selected (Ball Available)|| The Selected (Ball Available) status means the mux mode is selected by default because no other signal in the row is selected. |
In addition, the Selected (Ball Available) status means the ball is available for use - you may select any other signal in the row
without causing a conflict.
|WHITE = Not Selected||The Not Selected status means this signal is not selected for this ball.|
|GREY = Reserved||The Reserved status means this mux mode is not a valid selection. These cells cannot be changed.|
Main Data Grid
The main data grid provides a view of all multiplexed signals that can be brought out to the pads of the die.
The "Bot / Top Ball" column indicates the ball location(s) that are connected to the die pads. If this column
indicates "- / -", the die pad does not connect to a ball of the device (for the selected device package).
Each row represents one pad on the die. Each column labeled Mode 0 to Mode 7 represents one mux mode.
Each row is independent. To scroll to the first signal of a peripheral interface, double click the
corresponding cell in the peripheral interfaces grid.
Changing State of an Individual Cell
To change the state of an individual cell, double-click the cell. This applies to the Mode0 - Mode7 columns in the
Pin Mux Grid. Changes occur according to the following table.
Selected (Ball Available)
Selected (Ball Available) - Nothing happens when clicking cell with status Selected (Ball Available). Select any other signal in the row to remove the Selected (Ball Available) status.
Selected if no other cells in row are already selected or
Conflicting if any other signal in row is already selected or
|Reserved||Reserved - Cannot be changed|
Changing State of a Group of Cells
You may select a group of cells in the Mode 0 - Mode N columns. To select a group of
cells, click on a cell in this area and drag the mouse down. R-Click on any selected cell
and select Change Selected Mux Mode Cells to change the state of a group of cells at once.
You can also click and drag to select a group of cells in the Pad Config column. R-Click
any selected cell in the Pad Configs column and select Edit Selected Pad Configs from
the context menu to edit the pad configuration for a group of cells.
The interface view displays only the balls that make up a peripheral interface. To open an Interface View, R-Click
on a cell in the Peripheral Interfaces data grid in the main window and select View Pins from the context menu.
Any number of Interface View windows may be opened at the same time. The signals that are members of the
peripheral interface are shown in bold text.
Interface View with Pin Mux Conflicts (all device types)
Here is an example of a Pin Mux conflict (AM35xx device in this example). The Peripheral Interfaces grid indicates a conflict between the I2C3
and UART4 interfaces (RED status). This conflict occurs if more than one signal has been selected on the same device ball. There is a conflict
at Ball ID AA21. R-Click and select View Pins in the Peripheral Interfaces grid on the I2C3 and UART4 interfaces to open the Interface Views
for these two interfaces. These views show all the I2C3 and UART4 signals. Note that i2c3_sda and i2c3_scl are multiplexed to two
different locations (the same names occur twice). In some devices, such as AM335x multi-muxed signals have an added suffix, so that these
would appear as i2c3_scl_mux0 & i2c3_sda_mux0 and i2c3_scl_mux1 and i2c3_sda_mux1 to more clearly show that the same internal signals are
multiplexed to two locations.
An example solution to resolving this conflict is shown below. In the I2C3 interface view double click i2c3_sda and i2c3_scl in the Mode 3 column to desect those
signals. Double-click i2c3_scl and i2c3_sda in the Mode 0 column to resolve the conflict. I2C3 is now selected on balls W16 and W17 and there is no more conflict
with the UART4 interface. For devices without IO Set support the tool does not restrict which signals are chosen. For those devices, it is generally best to select
signals that are grouped together in the same mux mode as shown below.
Interface View with Multi-Muxed Violation (all device types)
Below is an example (AM35xx device) of a interface with a Multi-Muxed Violation. The same name (i2c3_sda appears twice in
the interface view in bold text meaning that the same internal signal is muxed to two different locations.) The Peripheral
Interfaces grid flags a Multi-Muxed Violation (VIOLET status) if the same internal signal is selected in more than one ball location.
i2c3_sda is selected at ball W22 and at ball W17. The interface view shows the status text "Multi-Muxed Violation: i2c3_sda, i2c3_sda
to indicate the first pair of conflicting multi-muxed signals that were found. To remove this violation, double-click i2c3_sda in the Mode 3 column to
deselect it. For devices like AM335x, the multi-muxed signals would have a suffix and would be shown as i2c3_sda_mux0
and i2c3_sda_mux1 and selecting both of those would cause a multi-muxed violation.
Repeated Rows in Interface Views
The interface view highlights all the member signals of a peripheral interface (in bold text) -- one signal per row. In cases
where there is more than one interface member signal at the same ball, that ball will be repeated in the interface view.
In the example below, SPI1_CS1_MUX1 and SPI1_SCLK_MUX0 are both muxed to ball C18, and ball C18 is repeated in
the interface view. The repeated rows behave as a single row - if a cell is changed in either row, the change occurs in both
IO Sets Functionality (AM335x device only)
Currently, only the AM335x device provides IO Set functionality. Instead of allowing selection of any set of interface
member signals, limited pre-defined sets of interface member signals are allowed. Information describing the available
IO Sets is read in after the AM335x device type is selected at program startup. The IO Sets are used to guide the user
into using a tested configuration that meets timing requirements. Either all or a subset of the interface member signals
specified by an IO Set may be selected. See the legend description and examples below for a description of the peripheral
interface statuses IO Set Match, IO Set Subset and IO Set Violation.
Interface View With IO Set Support (AM335x device only)
Below is an example of an interface view that provides IO Sets (the I2C2 Interface View for the AM335x device). The IO Set information for each peripheral
interface is read in by the program after the device type is selected. The IO Sets information is used to limit the selections to a supported group of pin-muxing
In this example, the following IO Sets are pre-defined:
IO Set #1: I2C2_SCL_MUX0 & I2C2_SDA_MUX0
IO Set #2: I2C2_SCL_MUX1 & I2C2_SDA_MUX1
IO Set #3: I2C2_SCL_MUX2 & I2C2_SDA_MUX2
For interfaces that provide IO Sets, there are additional GUI controls as shown below:
Select IO Set to Apply (drop-down box)
You can see how many IO Sets are defined and choose a particular IO Set. Click Apply IO Set button and
the currently selected interface member signals will be cleared and the selected IO Set will get selected.
Prev IO Set and Next IO Set Buttons
Use these buttons to quickly jump from one defined IO Set to the next or previous IO Set.
Deselect Interface Button
This button deselects all interface member signals and sets each ball to the Selected (Ball Available) state.
(Some signals do not have a programmable mux mode - for example they always have Mode 0 selected. These
are not changed by the Deselect Interface button.)
IO Set Match Status
In this example the SPI1 interface has the IO Set Match (GREEN) status. This means that the signals selected
for SPI1 match one of the provided IO Sets exactly.
In the SPI1 interface view, the user has set the drop-down box to "IO Set 1" and has clicked the Apply IO Set button. The IO Set status text reads
"Current selections match IO Set #1 exactly."
IO Set Subset Status
In this example the SPI1 interface has the IO Set Subset (YELLOW) status. This means that the signals selected
for SPI1 comprise a subset of one or more pre-defined IO Sets but does not match any IO Set exactly. This is an
acceptable status. In this case there are signals in the IO Set that have been deselected because they are not needed
in the design. Since there is not an IO Set Violation status, there is no violation of the defined IO Sets.
In the SPI1 interface view, the user has selected IO Set 1, then double-clicked the second chip select (SPI1_CS1_MUX1) to deselect it because this signal is
IO Set Violation Status
In this example the SPI1 interface has the IO Set Violation (ORANGE) status. This means that the signals selected
for SPI1 are not all contained in any of the pre-defined IO Sets. The pre-defined IO Sets are designed to screen out
combinations of signal selections that are not allowed to be used together. This status needs to be eliminated before arriving
at a final Pin Mux solution.
In the SPI1 interface view, the user has selected IO Set 1, then the user deselected SPI1_D0_MUX1 and instead
selected SPI1_D0_MUX0. There is no IO Set that uses both SPI1_D0_MUX0 and SPI1_D1_MUX1 at the same time.
The IO Set status text reads "IO Set Violation!" This status must be eliminated. This can be done by selecting one
of the pre-defined IO Sets.
Interface Views without IO Set Support
With the AM335x device some interface views do not use IO Sets. This example is called the MISC interface. These signals have been separated out here because they are not subject to the rules about being connected to the same IO power voltages (as are all other signals in an MMCx interface).
IO Cell Power Domain Checking (AM335x device only)
For AM335x, the GUI includes a column that displays the IO power supply domain name and voltage for each ball of the device.
At program startup, the user is prompted to select the package type and then the voltage that will be applied to the IO power
supply domains that support more than one voltage as shown below.
IO Power Violation Status (AM335x device only)
In this example, the AM335x device is used and the 15 x 15 ZCZ package type is selected.
At program startup, you will be prompted for the package type and to specify the IO power
supply voltages. The voltages can be changed later by clicking the Change Voltages button
in the Main Window or it will automatically open when the package type drop-down is changed.
In this example, the IO power supplies are selected to use 1.8V for most of the IO power domains,
and to use 3.3V for the MMC IO power groups as shown below.
The Peripheral Interfaces grid indicates an IO Power Violation (BROWN) status
for the MMC0 interface.
In the MMC0 Interface View you can see in the IO Power column that only MMC0_DAT(3-0), MMC0_CLK and MMC0_CMD have their IO cells
supplied by VDDSHV4 (which user set to 3.3V). The remaining MMC0 signals are connected to 1.8V IO cell power. Selection of the MMC0_DAT(7-0)
signals has caused an IO Power Violation, because not all of the selected interface member signals are connected to the same IO power supply voltage.
(Using multiple IO Power domains is OK, as long as they are the same voltage.) In this example, MMC0 would be limited to operation with a 4-bit
Changing Pad Configuration Parameters
Pad configuration parameters are used to set the values of other bit fields in each Pad Configuration Register.
The Pad Configuration parameter values are shown in the first column, labeled Pad Config, in the Pin Mux Grid.
The first parameter is always the signal direction (I, O or IO). This value is set depending on the signal direction
associated with the selected signal in the row. This parameter cannot be otherwize edited. The second parameter
(RX_ACTIVE) determines if the logic input is driven by the signal at the I/O pad. This parameter defaults to Input Enabled
(IEN) if the selected signal has a diredction of I or IO, and defaults to Input Disabled (IDIS) if the selected signal has a
direction of Output-Only (O). Theoretically, all pads could be set to IEN, but if the signal is output-only it can be set
to IDIS, and this provides some power savings. RX_ACTIVE and the remaining parameters can be programmed by the
Pad Configuration Editor. The Internal Pull parameter (PD, PU, OFF) defaults to the value in the "PUPD State During
HHV Reset" column in the device data spreadsheet for each pad. To open the Pad Configuration Editor, select one or
more cells in the Pad Config column (by holding down the left mouse button and dragging downwards). For example,
you can select an entire 32-bit data bus and set them all to the same pad configuration at once. In the example below,
a pair of pads with I2C signals selected have been highlighted for pad config editting. R-Click in the highlighted area and select
Edit Selected Pad Configs to open the Pad Config Editor.
Here the user has changed the Internal Pull from OFF to PU (pull-up). Click OK.
Notice that these two pads have had the third parameter changed to PU
Saving Results to Source Files
Click the "File > Save > Source > Linux" menu item to save results as C header files. File
save dialogs will open to speciy the file names for a device-dependent header file (default name: mux.h)
and a board-dependent header file (default name: pinmux.h).
Examples of the device-dependent and board-dependent header files are shown below.
Using the Generated Header Files (AM35x / AM37x / OMAP35x)
The generated header files are in the format used for the AM35x / AM37x / OMAP35x U-Boot source code.
For other supported devices, the source code provides a complete description of all settings but is not directly usable
as U-Boot source code.
For AM35x / AM37x / OMAP35x the generated pinmux settings may be used to customize the U-Boot source code.
Before rebuilding U-BOOT for your system, the following steps are neccessary:
1) Replace the mux.h header file with the mux.h output file from Pin Mux Utility
2) Copy the pinmux.h output file from Pin Mux Utility into the directory containing the evm.h file.
3) Modify the original evm.h file, commenting out or deleting the original section of code that
makes the pin mux programming macro calls.
4) Replace this code with #include "pinmux.h"
The following shows modificatios to the original evm.h file to include pinmux settings from a separate header file.
|Device Type||Device-Dependent Header File||Board-Dependent Header File|
The original mux.h file includes register name defines for OMAP35xx, AM35xx and AM37xx. By setting the configuration
for the make utility, U-BOOT can be built for any of these platforms. However, the Pin Mux Utility generated mux.h file
will only contain register name defines for the device that was selected when Pin Mux Utility was run. So, U-BOOT can be
rebuilt for that selected device only.
See also: Pinmux Utilities for Davinci Processors