MX6 QNX Sections
QNX is an RTOS that supports the i.MX6 CPU. We provide a BSP for the TS-4900 and TS-7970 quad core or solo based on QNX Neutrino 6.6.0. The supporting files are available here:
- Disk Image: ts7970-qnx-6.6.0-latest.dd.bz2 (md5)
- Quad core source BSP_freescale-imx6q-ts7970-latest.tar.gz (md5)
- Solo core source BSP_freescale-imx6dl-ts7970-latest.tar.gz (md5)
We provide support for booting QNX on our platforms, but further support is provided by QNX
- UARTs 1-5
- I2C 1, I2C 2
- SD (/dev/hd0)
- eMMC (/dev/emmc0)
- USB Host
- SPI NOR (/dev/fs0)
- HDMI (TS-7970 only)
- LCD Interface (TS-TPC-8390 with TS-4900 only)
Known not working:
- FPGA based UARTs
Not yet tested:
- I210 (Second gig eth)
1 QNX BSP
Before compiling QNX be sure to edit the file: src/hardware/startup/boards/imx6x/ts7970/board.h Set either BOARD_TS7970 or BOARD_TS4900 depending on the target board.
We have also included a port of tshwctl which is used to access the FPGA. This allows you to read/write FPGA registers and to change the crossbar. For example, to set up auto TXEN on the TS-7970 RS-485 port (/dev/ser4):
export MB_TXD=TTYSER4_TXD export TTYMAX1_RXD=GPIO export TTYSER4_RXD=MB_RXD_485 export TXD_232_COM=GPIO export MB_TX_EN_485=TTYSER4_TXEN tshwctl -b 0x7970 -s tshwctl -b 0x7970 -c
This will print out the modified state of the crossbar. The relevant pins are now:
TTYSER4_RXD ( in) ( 0) MB_RXD_485 MB_TXD ( in) ( 0) TTYSER4_TXD MB_TX_EN_485 ( in) ( 0) TTYSER4_TXEN TTYMAX1_RXD ( in) ( 0) GPIO TXD_232_COM ( in) ( 0) GPIO
Use tshwctl to specify the baud rate and mode of the uart so the TX enable pin will be automatically toggled.
tshwctl -b 0x7970 -a 4 -x 115200 -i 8n1
/dev/ser4 is now configured for RS485 traffic.
2 QNX Booting
Write the example image to a disk.
bzip2 -d ts7970-qnx-6.6.0-20150707.dd.bz2 #Replace sdx with your device. Try lsblk to find your SD card. sudo dd if=ts7970-qnx-6.6.0-20150707.dd bs=4M of=/dev/sdx sync
Reinsert or partprobe the disk, and there will be a single partition present. The partition includes the QNX IFS, and a u-boot script. On startup the imx6 is configured to launch the hush script. If present, at /boot/boot.ub on either the SD or eMMC depending on if the SD boot jumper is present. The script loads the FPGA, then copies the QNX ifs into memory and jumps into it to begin execution.