5. PSDK QNX Components¶
5.1. QNX BSP release¶
The QNX BSP package must be downloaded from QNX Software Center.
Note
Refer Release Notes software dependencies section for more information.
For the purposes of creating a consolidated build process and in turn allowing for support of scripts to create SD content, the BSP needs to be extracted to the folder within the PSDK QNX build environment as show below.
For QNX SDP 7.1:
# Unzip the BSP
mkdir -p ${PSDK_RTOS_PATH}/psdkqa/qnx/bsp
cd ${PSDK_RTOS_PATH}/psdkqa/qnx/bsp
unzip ${QNX_BASE}/bsp/BSP_ti-j7200--evm_br-mainline_be-710_<version>.zip
5.1.1. TI Modifications to the BSP¶
Memory Carveout
Memory sections with pre-defined physical addresses must be set aside in the QNX BSP IFS build file so that the memory is not given to other programs and can be used solely by the remote cores
Specify a section to be set aside by modifying the startup line to use the “-r” option. For example, to reserve 0xA0000000 bytes, at physical address 0x5C000000, on J7200 QNX BSP, the build file the arguments would be (highlighted below):
+keeplinked] startup-j721e-evm -v -r0xA0000000,0x5C000000,1
Reference TI build file
The reference TI build file is provide in the qnx/scripts/bsp/<BSP_REVISION> directory.
# Copy in TI specific build scripts and settings to allow building of a QNX-IFS which supports
# vision_apps demos
cp ${PSDK_RTOS_PATH}/psdkqa/qnx/scripts/bsp/<BSP_REVISION>/j7200-evm-ti.build ${PSDK_RTOS_PATH}/psdkqa/qnx/bsp/images/
Note
Other build file deltas between QNX and TI PSDK QNX environment may be present. TI modifies build scripts for ease of use on TI EVM and running of demonstration software
5.2. QNX 7.1 Dependency Packages¶
The QNX 7.1 dependency packages must be downloaded from QNX Software Center.
Note
Refer Release Notes software dependencies section for more information.
5.3. SCI Client Resource Manager¶
The SCI Client Resource Manager (tisci-mgr) provides support for multiple users to make use of the sciclient library from PSDK RTOS without interfering with each other requests. It provides a mechanism to serialize the transactions to the DMSC.
Note
The tisci-mgr logs the SYSFW information to the slogger.
Note
Refer PSDK RTOS Components for more information about each individual component.
5.4. IPC Resource Manager¶
5.4.1. Overview¶
The IPC resource manager (tiipc-mgr) provides a processor-agnostic API which can be used for communication between processors in a multi-processor environment.
The IPC resource manager provides a user library (tiipc-usr) that exposes the IPC LLD API to QNX applications for communication through the IPC resource manager. The IPC LLD API is described in detail in the PDK documentation.
5.4.2. Example Application¶
An IPC example application (ipc_test) is provided with the release as well. To use this application, the appropriate remote core binaries need to be built and placed on the target filesystem. The following remote core applications are needed:
Firmware Name |
Core(s) |
---|---|
ex02_bios_multicore_echo_testb |
use for mcu1_0 |
ex02_bios_multicore_echo_test |
use for all other cores |
For remote core firmware build instructions, please refer to the IPC LLD PDK documentation.
Once the remote core firmware is built, copy the images to the target filesystem in the rootfs partition. Existing firmware binaries should be backed up as required. The ex02* firmware binaries should be renamed to the firmware name expected by the bootloader. For example:
cp ex02_bios_multicore_echo_test_mcu2_1_release.xer5f ${ROOTFS}/lib/firmware/j7-main-r5f0_1-fw
cp ex02_bios_multicore_echo_test_mcu2_0_release.xer5f ${ROOTFS}/lib/firmware/j7-main-r5f0_0-fw
After copying the firmware and booting the target, the ipc_test can be run from the command line (example output given below):
J7EVM@QNX:/# /sd/tibin/ipc_test
Running Ipc_echo_test
IPC_echo_test (core : mpu1_0) ....
IPC init done
This example application will not exit
SendTask3: mpu1_0 <--> mcu2_0, Ping- 10, pong - 10 completed
SendTask4: mpu1_0 <--> mcu2_1, Ping- 10, pong - 10 completed
...
Make sure that the tiipc-mgr is running before executing the ipc_test. Note that the test app will not exit.
Note
Refer PSDK RTOS Components for more information about each individual component.
5.5. UDMA Resource Manager¶
The UDMA resource manager (tiudma-mgr) provides support for multiple users to make use of the UDMA functionlity without interfering with each other requests.
Note
Refer PSDK RTOS Components for more information about each individual component.
5.7. CPSW2G DEVNP driver¶
5.7.1. Overview¶
The CPSW2G DEVNP network driver can be viewed as the “glue” between the underlying cpsw2g lowlevel driver, and the software infrastructure of io-pkt, the protocol stack above it. The “bottom half” of the driver is coded specifically to interact with the PDK’s cpsw & udma low-level drivers, and the “top half” of the driver is coded specifically for io-pkt.
Note
Refer PSDK RTOS Components for more information about each individual component.
5.7.2. Running¶
Boot the board with the SDcard. At the QNX prompt, run below, to mount the SD card and then launch the executable:
tisci-mgr
tiudma-mgr
io-pkt-v6-hc -d cpsw2g verbose=0xff
dhclient -nw am0
The cpsw2g driver configures all the driver created threads to have the runmask as 0x1. This is to make sure all the threads run on Core 0 of A72. Hence it is optional to specify the command prefix “on -C 0” when starting the io-pkt-v6-hc with the cpsw2g driver.
For debug traces, run the below command before starting the DEVNP driver and start the driver with increased verbose parameter (ex: verbose=0x3ff) this will show all the drivers slog messages
slog2info –c
slog2info -w &
5.7.3. Additonal steps¶
Run “if_up -p am0” to check if the interface is ready
Run “ifconfig am0 up” to bring UP the link.
Run “dhclient -nw am0” for DHCP server provide the IP address
Run “ifconfig -v” to check the assigned IP address and status
Run “tcpdump -e” to look at the tcp traffic
5.7.4. Starting driver with other options¶
We can run the below command to get the usage of the DEVNP driver
use devnp-cpsw2g.so
To run the cpsw2g devnp driver with PHY:
io-pkt-v6-hc –d cpsw2g verbose=0x0
To run the cpsw2g devnp driver in mac-to-mac mode with 1Gbps:
io-pkt-v6-hc –d cpsw2g verbose=0x0,mac-to-mac=1,speed=1000
To run the cpsw2g devnp driver in mac-to-mac mode with 1Gbps with gPTP:
io-pkt-v6-hc –d cpsw2g verbose=0x0,ptp=1,mac-to-mac=1,speed=1000
To get a dynamic IP address for the cpsw2g port:
dhclient -nw am0
To get a static IP address for the cpsw2g port:
ifconfig am0 up
ifconfig am0 <static_ip_address>
To enabled HW CSUM offloading support:
io-pkt-v6-hc -d cpsw2g hw_csum=1
ifconfig am0 tcp4csum udp4csum tcp6csum udp6csum
dhclient -nw am0
5.8. CPSW5G DEVNP driver¶
5.8.1. Overview¶
The CPSW5G DEVNP network driver implemented as “virtual” driver that communicates with the Ethernet Firware Switch firmware running on the R5 core. The control message transfer is done via IPC. The RX and TX data packets are passed to the CPSW5G port using the UDMA.
CPSW5G Firmware on MCU2_0 implemented TimeSync Module utilizing CPTS timer for PTP support to sync with Master clock on the network. TimeSync module configured PTP stack with the following default properties.
Ordinary Clock
IEEE 802.3 Transport
Peer Delay Mechanism (P2P)
For TimeSync Module design, please refer to EthFW documentation for details. CPSW5G DEVNP driver has included an option to return CPTS timer timestamp via devctl() with PTP_GET_TIME command. Please refer to the example, ptp_test, to see how to use PTP_GET_TIME command to get CPTS timer timestamp from cpsw5g devnp driver.
Note
Refer PSDK RTOS Components for more information about EthFW component.
5.8.2. Running¶
Boot the board with the SDcard. At the QNX prompt, run below, to mount the SD card and then launch the executable:
tisci-mgr
tiipc-mgr
tiudma-mgr
io-pkt-v6-hc -d cpsw5g verbose=0xff
dhclient -nw an0
The cpsw5g driver configures all the driver created threads to have the runmask as 0x1. This is to make sure all the threads run on Core 0 of A72. Hence it is optional to specify the command prefix “on -C 0” when starting the io-pkt-v6-hc with the cpsw5g driver.
For debug traces, run the below command before starting the DEVNP driver and start the driver with increased verbose parameter (ex: verbose=0x3ff) this will show all the drivers slog messages
slog2info –c
slog2info -w &
5.8.3. Additonal steps¶
Run “if_up -p an0” to check if the interface is ready
Run “ifconfig an0 up” to bring UP the link.
Run “dhclient -nw an0” for DHCP server provide the IP address
Run “ifconfig -v” to check the assigned IP address and status
Run “tcpdump -e” to look at the tcp traffic
5.8.4. Starting driver with other options¶
We can run the below command to get the usage of the DEVNP driver
use devnp-cpsw5g.so
To run the cpsw5g devnp driver with gPTP:
io-pkt-v6-hc –d cpsw5g ptp=1
5.9. K3conf QNX utility¶
K3CONF is a QNX port of a standalone application designed to provide a quick’n easy way to dynamically diagnose Texas Instruments’ K3 architecture based processors. K3CONF is intended to provide similar experience to that of OMAPCONF that runs on legacy TI platforms.
Note
WARNING: This is work in progress! Please don’t expect things to be complete in any dimension. Use at your own risk. And keep the reset button in reach.
To get more details on how to use k3conf utility, run below:
k3conf --help