QNX (Queen Nex, or Queenix) is a commercial real-time OS mainly sold for embedded systems. It is a POSIX-compliant UNIX type OS, which is a built-in OS but is a process type operating system similar to general UNIX. The kernel is a microkernel, various functions are modularized as a server, and only the necessary server is operated according to the purpose, so it is possible to configure a compact system. Since it can operate on various CPUs such as x86 family, MIPS, PowerPC, SH-4, ARM, StrongARM, XScale, and furthermore it has obtained certification in accordance with functional safety standard IEC 61508, safety related It can also be used for systems.
QNX also has a free licensing program for educational institutions, which can be used relatively easily at universities and others.
pkgsrc is one of package management systems for UNIX, derived from FreeBSD's port collection and is now used as a package management system of NetBSD. pkgsrc itself does not depend on a specific OS, it can be used as a file system for NetBSD, Solaris, Linux, Mac OS X, FreeBSD, OpenBSD, IRIX, BSD / OS, AIX, Interix, DragonFlyBSD, OSF / 1, HP-UX, QNX, It can be used on various Unix OS such as Haiku, MINIX 3, Illumos.
There is no package management system in QNX, and pkgsrc for QNX is maintained in the QNX user forum.
After installing the OS, check out pkgsrc from the repository, and put it on the system. (To access the repository, QNX forum account is required.) Since checking out from the svn repository is very time-consuming, you can also download and use pkgsrc_HEAD 650_r396.tgz, but beforehand the latest in pkgsrc We recommend checking the version.
# cd /usr/ # svn checkout --username <username> http://community.qnx.com/svn/repos/pkgsrc/HEAD_650/pkgsrc # (cd pkgsrc/bootstrap && ./bootstrap) # (cd pkgsrc/misc/figlet && bmake install) # pkg_info # cd /usr # tar xvzf <somewhere>/pkgsrc_HEAD650_r396.tgz # (cd pkgsrc/bootstrap && ./bootstrap) # (cd pkgsrc/misc/figlet && bmake install) # pkg_info
pkgsrc has a binary package installation and a method of building from the source and installing it. Not all packages are provided in binary, so you will need to build from sources as needed.
OpenRTM-aist provides a binary package at the following URL of openrtm.org.
OmniORB necessary for OpenRTM-aist is also provided by openrtm.org because there is no binary package in the above distribution site.
The installation method is as follows.
# export PKG_PATH=http://www.openrtm.org/pub/pkgsrc/packages/QNX/i386/6.5.0/All # pkg_add -v OpenRTM-aist-1.1.0-RELESE Replace 1.1.0-RELESE with the version to be installed as appropriate. Running install with PRE-INSTALL for omniORB-4.1.6. bin/omkdepend bin/omnicpp : Installation of omniORB begins man/man1/omniidl.1 Running install with PRE-INSTALL for omniORB-4.1.6. Package omniORB-4.1.6 registered in /var/db/pkg/omniORB-4.1.6 : Installation of OpenRTM-aist begins lib/libcoil.so lib/libcoil.la lib/libcoil-1.1.0.so : share/openrtm-1.1/doc/IDLReference-en/html/unionSDOPackage_1_1Numeric.html etc/rtc.conf.sample Package OpenRTM-aist-1.1.0-RELEASE registered in /var/db/pkg/OpenRTM-aist-1.1.0-RELEASE # # pkg_info|grep OpenRTM OpenRTM-aist-1.1.0-RELEASE RT-Middleware and OMG RTC framework
Installation is now complete.
A sample program is installed under /usr/pkg/share/openrtm-1.1/examples. We will use OpenRTM - aist to verify the operation of OpenRTM-aist.
First, start the name server.
# rtm-naming or # cp /usr/pkg/share/examples/rc.d/omninames /etc/rc.d/ # chmod 755 /etc/rc.d/omninames # /etc/rc.d/omninames
In the latter, we copy the omninames startup script to the rc directory (/etc/rc.d) and then start it. This script can also stop the name server.
# /etc/rc.d/omninames stop
First, let's start the ConsoleOut component. In the example below, we create a tmp directory in the home directory, copy it to it, and then execute it.
# cd ; mkdir tmp ; cd tmp # cp -r /usr/pkg/share/openrtm-1.1/example . # cd example # ./ConsoleOutComp succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleOut0 Implementation: ConsoleOut Description: Console output component : ================================================= Port0 (name): ConsoleOut0.in ------------------------------------------------- - properties - port.port_type: DataInPort dataport.data_type: IDL:RTC/TimedLong:1.0 dataport.subscription_type: Any dataport.dataflow_type: push,pull dataport.interface_type: corba_cdr -------------------------------------------------
# cd ; cd tmp/example # ./ConsoleInComp Creating a component: "ConsoleIn"....succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleIn0 Implementation: ConsoleIn Description: Console input component : ================================================= Port0 (name): ConsoleIn0.out ------------------------------------------------- - properties - port.port_type: DataOutPort dataport.data_type: IDL:RTC/TimedLong:1.0 dataport.subscription_type: flush,new,periodic dataport.dataflow_type: push,pull dataport.interface_type: corba_cdr ------------------------------------------------- : Please input number:
Now, start RTSystemEditor on another PC, connect and activate the port. If you type a number at the ConsoleIn prompt, it will be output from ConsoleOut.