Linux BSP customization for DEV-Qseven-i.MX
This document describes various specifics of the DEV-Qseven-i.MX development board (100-1510-X) as far as the Bluetechnix i.MX53 Linux Board Support Package is concerned.
Quick start
Here is how to start with your Qseven-i.MX537 module and your development board DEV-Qseven-i.MX.
- Insert the Qseven module into the development board.
- Set the S3 DIP switches on the development board to {{#if: 0 | | }}{{#if: 0 | | }}{{#if: 0 | | }}{{#if: 1 | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: 0 | {{#ifeq: 0 | 1 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 1 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 1 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: 1 | {{#ifeq: 1 | 1 | | {{#ifeq: 1 | X | | }} }} | }}{{#if: | {{#ifeq: {{{5}}} | 1 | | {{#ifeq: {{{5}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{6}}} | 1 | | {{#ifeq: {{{6}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{7}}} | 1 | | {{#ifeq: {{{7}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{8}}} | 1 | | {{#ifeq: {{{8}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{9}}} | 1 | | {{#ifeq: {{{9}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{10}}} | 1 | | {{#ifeq: {{{10}}} | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 0 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 0 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 0 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: 1 | {{#ifeq: 1 | 0 | | {{#ifeq: 1 | X | | }} }} | }}{{#if: | {{#ifeq: {{{5}}} | 0 | | {{#ifeq: {{{5}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{6}}} | 0 | | {{#ifeq: {{{6}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{7}}} | 0 | | {{#ifeq: {{{7}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{8}}} | 0 | | {{#ifeq: {{{8}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{9}}} | 0 | | {{#ifeq: {{{9}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{10}}} | 0 | | {{#ifeq: {{{10}}} | X | | }} }} | }}{{#if: 0 | | }}{{#if: 0 | | }}{{#if: 0 | | }}{{#if: 1 | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}
1 2 3 4 5 6 7 8 9 0 - Connect 12V DC to power connector X16.
- Hold down S2 (PON) for 1 second.
- Press button S4 shortly.
- Connect a monitor via HDMI (X3) and/or a USB cable to the Debug UART port (X10) to see the board's boot messages.
Boot modes
The DEV-Qseven-i.MX carrier board allows to configure the module's boot mode via a DIP switch (S3).
- S3-1: Qseven BIOS_DISABLE#/BOOT_ALT# pin
- S3-2: Qseven MFG_NC3 pin: JTAG_TMS (S3-4 OFF) or additional boot mode pin (S3-4 ON)
- S3-3: JTAG reference voltage selection; fixed to OFF for Qseven-i.MX537
- S3-4: Qseven MFG_NC4=JTAG_TRST pin: Multiplex JTAG signals (OFF) or Debug UART signals (ON) onto MFG_NC[0..4] pins
SPI NOR flash
Qseven-i.MX537 | ≥V1.1 |
{{{3}}} | {{{4}}} |
{{{5}}} | {{{6}}} |
{{{7}}} | {{{8}}} |
{{{9}}} | {{{10}}} |
{{{11}}} | {{{12}}} |
{{{13}}} | {{{14}}} |
{{{15}}} | {{{16}}} |
{{{17}}} | {{{18}}} |
{{{19}}} | {{{20}}} |
S3 | |||||||||||||||||||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
If S3-4 is switched ON, press button S4 shortly after power-on to continue boot.
SD (Secure Digital) card
The boot device is the SD card on the DEV-Qseven-i.MX, not the one on the Qseven-i.MX537.
Qseven-i.MX537 | ≥V1.2 |
{{{3}}} | {{{4}}} |
{{{5}}} | {{{6}}} |
{{{7}}} | {{{8}}} |
{{{9}}} | {{{10}}} |
{{{11}}} | {{{12}}} |
{{{13}}} | {{{14}}} |
{{{15}}} | {{{16}}} |
{{{17}}} | {{{18}}} |
{{{19}}} | {{{20}}} |
S3 | |||||||||||||||||||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
If S3-4 is switched ON, press button S4 shortly after power-on to continue boot.
USB
Qseven-i.MX537 | ≥V1.1 |
{{{3}}} | {{{4}}} |
{{{5}}} | {{{6}}} |
{{{7}}} | {{{8}}} |
{{{9}}} | {{{10}}} |
{{{11}}} | {{{12}}} |
{{{13}}} | {{{14}}} |
{{{15}}} | {{{16}}} |
{{{17}}} | {{{18}}} |
{{{19}}} | {{{20}}} |
Boot from USB-OTG (X11).
NOTE: The mfgtool requires this boot mode to be set.
| }}{{#if: 1 | | }}{{#if: 0 | | }}{{#if: 1 | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: X | {{#ifeq: X | 1 | | {{#ifeq: X | X | | }} }} | }}{{#if: 1 | {{#ifeq: 1 | 1 | | {{#ifeq: 1 | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 1 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: 1 | {{#ifeq: 1 | 1 | | {{#ifeq: 1 | X | | }} }} | }}{{#if: | {{#ifeq: {{{5}}} | 1 | | {{#ifeq: {{{5}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{6}}} | 1 | | {{#ifeq: {{{6}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{7}}} | 1 | | {{#ifeq: {{{7}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{8}}} | 1 | | {{#ifeq: {{{8}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{9}}} | 1 | | {{#ifeq: {{{9}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{10}}} | 1 | | {{#ifeq: {{{10}}} | X | | }} }} | }}{{#if: X | {{#ifeq: X | 0 | | {{#ifeq: X | X | | }} }} | }}{{#if: 1 | {{#ifeq: 1 | 0 | | {{#ifeq: 1 | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 0 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: 1 | {{#ifeq: 1 | 0 | | {{#ifeq: 1 | X | | }} }} | }}{{#if: | {{#ifeq: {{{5}}} | 0 | | {{#ifeq: {{{5}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{6}}} | 0 | | {{#ifeq: {{{6}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{7}}} | 0 | | {{#ifeq: {{{7}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{8}}} | 0 | | {{#ifeq: {{{8}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{9}}} | 0 | | {{#ifeq: {{{9}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{10}}} | 0 | | {{#ifeq: {{{10}}} | X | | }} }} | }}{{#if: X | | }}{{#if: 1 | | }}{{#if: 0 | | }}{{#if: 1 | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}S3 | |||||||||||||||||||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
Press button S4 shortly after power-on to continue boot.
Power-On/Reset
- Press button S2 for 500ms to power up the module. (If S3-4 is ON, press button S4 shortly after power-on to continue boot.)
- Press button S2 for min. 1s to induce a Linux shutdown on the module.
- Press button S1 to reset the module.
Debug UART
The debug UART (UART1 of i.MX53) is multiplexed with the JTAG signal lines onto the MFG_NC[0..4] pins of the Qseven module. Switch S3 allows for selection of those signals.
| }}{{#if: X | | }}{{#if: X | | }}{{#if: 0 | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: X | {{#ifeq: X | 1 | | {{#ifeq: X | X | | }} }} | }}{{#if: X | {{#ifeq: X | 1 | | {{#ifeq: X | X | | }} }} | }}{{#if: X | {{#ifeq: X | 1 | | {{#ifeq: X | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 1 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: | {{#ifeq: {{{5}}} | 1 | | {{#ifeq: {{{5}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{6}}} | 1 | | {{#ifeq: {{{6}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{7}}} | 1 | | {{#ifeq: {{{7}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{8}}} | 1 | | {{#ifeq: {{{8}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{9}}} | 1 | | {{#ifeq: {{{9}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{10}}} | 1 | | {{#ifeq: {{{10}}} | X | | }} }} | }}{{#if: X | {{#ifeq: X | 0 | | {{#ifeq: X | X | | }} }} | }}{{#if: X | {{#ifeq: X | 0 | | {{#ifeq: X | X | | }} }} | }}{{#if: X | {{#ifeq: X | 0 | | {{#ifeq: X | X | | }} }} | }}{{#if: 0 | {{#ifeq: 0 | 0 | | {{#ifeq: 0 | X | | }} }} | }}{{#if: | {{#ifeq: {{{5}}} | 0 | | {{#ifeq: {{{5}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{6}}} | 0 | | {{#ifeq: {{{6}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{7}}} | 0 | | {{#ifeq: {{{7}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{8}}} | 0 | | {{#ifeq: {{{8}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{9}}} | 0 | | {{#ifeq: {{{9}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{10}}} | 0 | | {{#ifeq: {{{10}}} | X | | }} }} | }}{{#if: X | | }}{{#if: X | | }}{{#if: X | | }}{{#if: 0 | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}JTAG signals connected | S3 | ||||||||||||||||||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
Debug UART connected S3 | }}{{#if: X | | }}{{#if: X | | }}{{#if: 1 | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: | | }}{{#if: X | {{#ifeq: X | 1 | | {{#ifeq: X | X | | }} }} | }}{{#if: X | {{#ifeq: X | 1 | | {{#ifeq: X | X | | }} }} | }}{{#if: X | {{#ifeq: X | 1 | | {{#ifeq: X | X | | }} }} | }}{{#if: 1 | {{#ifeq: 1 | 1 | | {{#ifeq: 1 | X | | }} }} | }}{{#if: | {{#ifeq: {{{5}}} | 1 | | {{#ifeq: {{{5}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{6}}} | 1 | | {{#ifeq: {{{6}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{7}}} | 1 | | {{#ifeq: {{{7}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{8}}} | 1 | | {{#ifeq: {{{8}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{9}}} | 1 | | {{#ifeq: {{{9}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{10}}} | 1 | | {{#ifeq: {{{10}}} | X | | }} }} | }}{{#if: X | {{#ifeq: X | 0 | | {{#ifeq: X | X | | }} }} | }}{{#if: X | {{#ifeq: X | 0 | | {{#ifeq: X | X | | }} }} | }}{{#if: X | {{#ifeq: X | 0 | | {{#ifeq: X | X | | }} }} | }}{{#if: 1 | {{#ifeq: 1 | 0 | | {{#ifeq: 1 | X | | }} }} | }}{{#if: | {{#ifeq: {{{5}}} | 0 | | {{#ifeq: {{{5}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{6}}} | 0 | | {{#ifeq: {{{6}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{7}}} | 0 | | {{#ifeq: {{{7}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{8}}} | 0 | | {{#ifeq: {{{8}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{9}}} | 0 | | {{#ifeq: {{{9}}} | X | | }} }} | }}{{#if: | {{#ifeq: {{{10}}} | 0 | | {{#ifeq: {{{10}}} | X | | }} }} | }}{{#if: X | 1 | }}{{#if: X | 2 | }}{{#if: X | 3 | }}{{#if: 1 | 4 | }}{{#if: | 5 | }}{{#if: | 6 | }}{{#if: | 7 | }}{{#if: | 8 | }}{{#if: | 9 | }}{{#if: | 0 | }}
- IMPORTANT!
- If you select Debug UART mode, you have to press button S4 each time you power on or reboot the Qseven module.
- (This is because the multiplex line is the JTAG_TRST line which halts the processor initially if it is low.)
JTAG connector
- IMPORTANT!
- If your JTAG device/connector shortens pins #1 and #2 of the 20-pin JTAG-ARM connector (X15), you must not connect this device to DEV-Qseven-i.MX.
CAN bus termination
Termination can be enabled by setting jumper JP1 to position 2-3.
Mini-PCI-Express connector
Available interfaces on this connector, which are usable with the i.MX53, are
- USB
- I2C
There are a lot of modules on the market that share the same connector, but do not share the same pin assignment. Nevertheless, many of those modules can be inserted into the DEV-Qseven-i.MX, but be sure to check and compare the pin assignment before.
I/O Expander
The DEV-Qseven-i.MX features 2 16-bit I/O expander chips. These are registered in Linux as GPIOs number #224 to #255.
To handle these GPIOs in Linux userspace, we use the popular sysfs-gpio driver. See the following examples or rpm/BUILD/linux/Documentation/gpio.txt for more information.
- Set GPIO no. 228 as output with value low
echo 228 > /sys/class/gpio/export echo low > /sys/class/gpio/gpio228/direction
- Set GPIO no. 228 as output with value high
echo 228 > /sys/class/gpio/export echo high > /sys/class/gpio/gpio228/direction
- Set GPIO no. 228 as input and read its value
echo 228 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio228/direction cat /sys/class/gpio/gpio228/value
Here is the table of important GPIOs and their function.
GPIO no. | Direction | Function |
---|---|---|
224 | in | RTC interrupt |
234 | in | Mini PCI-E WAKE# pin |
236 | out | Mini PCI-E PERST# pin |
237 | out | Mini PCI-E W_DISABLE# pin |
Linux kernel configuration
There is a Linux kernel parameter for the DEV-Qseven-i.MX base board which enables some specific features at boot time. Add this to your bootargs_base variable in U-Boot.
- Boot U-Boot
- Press any key to stop Linux kernel boot, you will get to U-Boot's prompt.
- Add the Linux kernel parameter:
Qseven-i.MX537 U-Boot> setenv bootargs_base $(bootargs_base) devq7imx
If you want to make this change permanent (usually you will) also do:
Qseven-i.MX537 U-Boot> saveenv
This will write the environment to permanent storage.