MX6 QNX Sections: Difference between revisions

From embeddedTS Manuals
(Created page with "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 [http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.h...")
 
m (Links auto-updated for 2022 re-branding ( https://files.embeddedarm.com/ts-arm-sbc/ts-7970-qnx/images/ts7970-qnx-6.6.0-latest.dd.bz2.md5 →‎ https://files.embeddedTS.com/ts-arm-sbc/ts-7970-qnx/images/ts7970-qnx-6.6.0-latest.dd.bz2.md5 https://files.embeddedarm.com/ts-arm-sbc/ts-7970-qnx/source/BSP_freescale-imx6dl-ts7970-latest.tar.gz →‎ https://files.embeddedTS.com/ts-arm-sbc/ts-7970-qnx/source/BSP_freescale-imx6dl-ts7970-latest.tar.gz https://files.embeddedarm.com/ts-arm-sbc/ts-7970-qn...)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
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 [http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.html QNX Neutrino] 6.6.0. The supporting files are available here:
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 [http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.html QNX Neutrino] 6.6.0. The supporting files are available here:
* Disk Image: [ftp://ftp.embeddedarm.com/ts-arm-sbc/ts-7970-qnx/images/ts7970-qnx-6.6.0-20150707.dd.bz2 ts7970-qnx-6.6.0-20150707.dd.bz2] [ftp://ftp.embeddedarm.com/ts-arm-sbc/ts-7970-qnx/images/ts7970-qnx-6.6.0-20150707.dd.bz2.md5 (md5)]
* Disk Image: [https://files.embeddedTS.com/ts-arm-sbc/ts-7970-qnx/images/ts7970-qnx-6.6.0-latest.dd.bz2 ts7970-qnx-6.6.0-latest.dd.bz2] [https://files.embeddedTS.com/ts-arm-sbc/ts-7970-qnx/images/ts7970-qnx-6.6.0-latest.dd.bz2.md5 (md5)]
* Sources: [ftp://ftp.embeddedarm.com/ts-arm-sbc/ts-7970-qnx/source/BSP_freescale-imx6dl-ts7970-20160216.tar.gz BSP_freescale-imx6dl-ts7970-20160216.tar.gz] [ftp://ftp.embeddedarm.com/ts-arm-sbc/ts-7970-qnx/source/BSP_freescale-imx6dl-ts7970-20160216.tar.gz BSP_freescale-imx6dl-ts7970-20160216.tar.gz.md5 (md5)]
* Quad core source [https://files.embeddedTS.com/ts-arm-sbc/ts-7970-qnx/source/BSP_freescale-imx6q-ts7970-latest.tar.gz BSP_freescale-imx6q-ts7970-latest.tar.gz] [https://files.embeddedTS.com/ts-arm-sbc/ts-7970-qnx/source/BSP_freescale-imx6q-ts7970-latest.tar.gz.md5 (md5)]
 
* Solo core source [https://files.embeddedTS.com/ts-arm-sbc/ts-7970-qnx/source/BSP_freescale-imx6dl-ts7970-latest.tar.gz BSP_freescale-imx6dl-ts7970-latest.tar.gz] [https://files.embeddedTS.com/ts-arm-sbc/ts-7970-qnx/source/BSP_freescale-imx6dl-ts7970-latest.tar.gz.md5 (md5)]


We provide support for booting QNX on our platforms, but further support is provided by QNX
We provide support for booting QNX on our platforms, but further support is provided by QNX
* [http://www.qnx.com/support/ QNX Support]
* [http://www.qnx.com/support/ QNX Support]
Known Working:
* UARTs 1-5
* Ethernet
* 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)
* RS485
Known not working:
* WIFI
* FPGA based UARTs
Not yet tested:
* I210 (Second gig eth)
== 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):
<source lang=bash>
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
</source>
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.
<source lang=bash>
tshwctl -b 0x7970 -a 4 -x 115200 -i 8n1
</source>
/dev/ser4 is now configured for RS485 traffic.
== QNX Booting ==
Write the example image to a disk.
<source lang=bash>
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
</source>
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.

Latest revision as of 16:37, 17 January 2022

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:

We provide support for booting QNX on our platforms, but further support is provided by QNX

Known Working:

  • UARTs 1-5
  • Ethernet
  • 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)
  • RS485

Known not working:

  • WIFI
  • FPGA based UARTs

Not yet tested:

  • I210 (Second gig eth)

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.

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.