4.3. QNX Neutrino
4.3.1. Thread priority
QNX supports a total of 256 scheduling priority levels. A non-root thread can set its priority to a level from 1 to 63 (the highest priority).
Using priorities higher than 63 is only possible if the allowed priority range is changed for non-root processes:
procnto -P priority
For more information’s about changing the priority range refer to the QNX documentation.
Attention
Don’t changing the priority range leads to bad timing performance!
4.3.2. Unbind Link Layer instance
The network interface must be unloaded if it is used by an operating system driver. Depending on the QNX version, a corresponding command must be executed in the QNX Shell or the QNX Build Script.
- QNX6.3
umount /dev/io-net/en1
- QNX >= 6.5
ifconfig en1 destroy
- QNX >= 7.1
umount /dev/io-sock/devs-em.so/em1
4.3.3. IOMMU/SMMU support
- For systems that have to use an IOMMU/SMMU for security reasons, it is possible to create predefined typed memory region that is used by the Link Layer. The definition has to be done in the QNX BSP build file and the name must match following pattern:
smm_ LinkLayerName - InstanceNumber(32Bit Hex)
- Example: Link Layer emllI8254x with instance number 1
smm_emllI8254x-0x00000001
A separate typed memory region must be defined for each Link Layer instance. The typed memory is automatically used by the Link Layer if it matches the pattern, otherwise the default memory is used.
4.3.4. Setting up and running EcSimulatorHilDemo
- QNX Neutrino OS configuration
In order to get real-time priority (e.g. 250), see Thread priority and also set JOBS_PRIORITY. The applications needs root privileges to increase the priority above 63.
- Unbind Link Layer instance, e.g.
ifconfig en1 destroy
Copy files from EC-Simulator package
/bin
andexi.xml
to directory, e.g./tmp
.- Adjust LD_LIBRARY_PATH search locations for Optimized Link Layers if necessary, e.g.
export LD_LIBRARY_PATH=/tmp:$LD_LIBRARY_PATH
- Run EcSimulatorHilDemo
cd /tmp ./EcSimulatorHilDemo -f exi.xml -i8254x 1 0 -perf
See also
4.3.5. OS Compiler settings
The following settings are necessary to build the example application for QNX Neutrino.
- Extra include paths
<InstallPath>/SDK/INC/QNX <InstallPath>/Examples/Common/QNX
- Extra source paths
<InstallPath>/Examples/Common/QNX <InstallPath>/Sources/OsLayer/QNX
- Extra library paths to the main EtherCAT components
<InstallPath>/SDK/LIB/QNX
- Extra libraries (in this order)
AtesRasSrv EcSimulator socket