Attention

You are viewing an older version of the documentation. The latest version is v3.3.

Set Blackberry QNX® Neutrino® RTH privileged-mode (pos-qn)

A rts-buster image can extend Real-Time Hypervisor (RTH) commercial-license to boot QNX® Neutrino® RTOS 7.0.3 (IA 32-bits and 64-bits) ramdisk image.

The RTS Hypervisor supports Blackberry QNX® Neutrino® RTOS 6.5 SP1; 6.6, 7.0.3, 7.1,… (32Bit and 64Bit).

Preconditions for RTH QNX® Neutrino®

Blackberry QNX® Neutrino® RTOS 7.0.3 commercially-licensed runtime components:

  • QNX Development Suite for Windows or Linux hosts that corresponds to the operating system version you are using: QNX® Software Development Platform 6.5.0 Service Pack 1, 6.6 or 7

    Note

    If you wish to use a different host environment, please inquire for further instructions at: info@real-time-systems.com

  • RTS Hypervisor Board Support Package that corresponds to the QNX® Neutrino® RTOS version you are using : 6.5 SP1; 6.6, 7.0.3, 7.1,…

  • Hypervisor binary (rthx86)

  • Hypervisor license file (license.txt) for QNX® Neutrino®

  • pos-qn privileged-mode QNX® Neutrino® RTOS 7.1 runtime image(s):

    • QNX® Neutrino® RTOS 7.1 pcrth_096_x86_64.ifs image stitched with RTH BSP binary blobs into the /boot/rth/pos-qn folder

    • grub entries template /etc/grub.d/44-rth-pos-qn-linux file.

    • pos-qn RTH Configuration File (e.g. /boot/rth/pos-qn/WindowsEFI_QNX64.txt or /boot/rth/pos-qn/Linux_QNX64.txt) to set specific Privileged-mode RTH boot options

booting Debian GNU/Linux LXDE Desktop GPOS w/ QNX® Neutrino® POS

Out-of-box installed rts-buster image make generic assumptions about the desired Debian GNU/Linux LXDE desktop default Grub menu.

  1. Select a desired RTH pre-canned GPOS + POS configurations Advanced options for ECI-R ...:

../../_images/Grub_03.jpg
  1. Select subsequent grub multiboot configuration ECI-R (RTS Hypervisor) GPOS GNU/Debian Desktop and POS QNX Neutrino 7.1 [demo-image]

../../_images/sub-grub_03.jpg
  1. Successfully RTH boot log are displayed

../../_images/RTH_init1.png
  1. Successfully GPOS kernel boot log are displayed

../../_images/GPOS_init1.png
  1. Enter Login in LXDE Lightdm UI menu eci-user (passwd=eci-user) or as root

../../_images/Desktop_021.jpg

using Debian pos-qn package update

rts-buster provide the build environment for ECI-R to create and maintain pos-qn Debian packaging and runtime dependencies.

$ dpkg -c rth-pos-qn_5.4.01.27752_amd64.deb
dpkg -c rth-pos-qn_5.4.01.27752_amd64.deb
drwxr-xr-x root/root         0 2021-09-21 08:18 ./
drwxr-xr-x root/root         0 2021-09-17 17:09 ./boot/
drwxr-xr-x root/root         0 2021-09-17 17:09 ./boot/rth/
drwxr-xr-x root/root         0 2021-09-17 17:09 ./boot/rth/pos-qn/
-rw-r--r-- root/root      2800 2021-09-21 08:18 ./boot/rth/pos-qn/Linux_QNX64.txt
-rw-r--r-- root/root      2641 2021-09-21 08:18 ./boot/rth/pos-qn/WindowsEFI_QNX64.txt
-rw-r--r-- root/root  12058344 2021-09-21 08:18 ./boot/rth/pos-qn/pcrth_x86_64.ifs
drwxr-xr-x root/root         0 2021-09-21 08:18 ./etc/
drwxr-xr-x root/root         0 2021-09-21 08:18 ./etc/grub.d/
-rwxr-xr-x root/root      1227 2021-09-21 08:18 ./etc/grub.d/44-rth-pos-qn-linux
drwxr-xr-x root/root         0 2021-09-21 08:18 ./root/
-rwxr-xr-x root/root        29 2021-09-21 08:18 ./root/hello-rth-pos-qn.sh
drwxr-xr-x root/root         0 2021-09-21 08:18 ./usr/
drwxr-xr-x root/root         0 2021-09-21 08:18 ./usr/share/
drwxr-xr-x root/root         0 2021-09-21 08:18 ./usr/share/doc/
drwxr-xr-x root/root         0 2021-09-21 08:18 ./usr/share/doc/rth-pos-qn/
-rw-r--r-- root/root       128 2021-09-21 08:18 ./usr/share/doc/rth-pos-qn/changelog.gz
Copy to clipboard

When Default Debian GNU/Linux LXDE Desktop GPOS is used upgrading your Blackberry QNX® Neutrino® RTOS RTH privileged-mode pos-qn images can be done as followed :

$ dpkg -i rth-pos-qn_5.4.01.27752_amd64.deb
(Reading database ... 51507 files and directories currently installed.)
Preparing to unpack rth-pos-qn_5.4.01.27752_amd64.deb ...
Unpacking rth-pos-qn (5.4.01.27752) over (5.4.01.27752) ...
Setting up rth-pos-qn (5.4.01.27752) ...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.115-intel-pk-standard+
Found initrd image: /boot/initrd.img-5.4.115-intel-pk-standard+
done
Copy to clipboard

Edit pos-qn RTH settings manually

  1. Edit your ECI-R template grub entries :

    $ vi /etc/grub.d/44-rth-pos-qn-linux
    ...
    menuentry "ECI-R (RTS Hypervisor) GPOS GNU/Debian Desktop and POS QNX Neutrino 7.1 [demo-image]" {
        search --no-floppy --fs-uuid --set=root ae1a66a5-ee9c-4573-9249-dd207ffa6248
        multiboot2 /boot/rth/rthx86
        module2 /boot/rth/license.txt
        module2 /boot/rth/pos-qn/Linux_QNX64.txt
        echo "Loading POS multi-boot QNX Neutrino bootable [RAMFS] images..."
        module2 /boot/rth/pos-qn/pcrth_x86_64.ifs pcrth_096_x86_64.ifs
        echo "Loading [ROOTFS] GPOS GNU/Debian Desktop bootable images ..."
        module2 /vmlinuz vmlinuz.lnk
        module2 /initrd.img initramfs.lnk
    }
    ...
    
    Copy to clipboard
  2. Edit ECI-R template RTH configuration file /boot/rth/pos-qn/Linux_QNX64.txt or /boot/rth/pos-qn/WindowsEFI_QNX64.txt

    # RTH CONFIG
    ################################################################################
    # System
    #
    [/SYSTEM]
        "IOMMU"          = uint32: 0    # set to 1 to restrict device memory access
        "security_level" = uint32: 0    # set to 1 to restrict API permissions
        "GPU_resource_partitioning" = uint32: 1     # set to 1 to optimize
                                                    # CPU resource usage
    ################################################################################
    # OS
    #
    [/OS/0]
    
        "name"          = "GPOS"
        "boot_priority" = uint32: 2     # start after QNX
        "virtualized"   = uint32: 1
        "cores_percent" = uint32: 50    # assign half of the CPUs
    
        "trace_partition_number" = uint32: 0    # write log to /SHM/0
    
        [/OS/0/RUNTIME/0]
    
            "bootline" = "ro root=LABEL=/ debug=all verbose=all console=tty0 console=ttyS0,115200n8 ip=192.168.2.1:::::vnet0"
            "image_0"  = "vmlinuz.lnk"
            "image_1"  = "initramfs.lnk"
    
    [/OS/1]
    
        "name"           = "QNX Neutrino"
        "boot_priority"  = uint32: 3             # start third
        "memory_size"    = uint64: 0x04000000    # 64 MB
        "virtual_MMU"    = uint32: 1             # set to 0 to disable restricted memory access
        "restricted_IO"  = uint32: 0            # set to 1 to restrict I/O access
        "L3_cache_1_segments" = bytelist: 4,5,6
    
        "trace_partition_number" = uint32: 1    # write log to /SHM/1
        "CPU"           = bytelist: 4         # e.g. single CPU: bytelist: 4
    
        [/OS/2/RUNTIME/0]
    
            "image_0" = "pcrth_096_x86_64.ifs"
    
    [/IRQ]
    
        "default" = uint32: 0   # default is GPOS
    
    ################################################################################
    # PCI
    #
    [/PCI]
        "default" = uint32: 0   # default is GPOS
    
        "auto_interrupt_mode" = uint32: 1   # automatically use MSI to avoid conflicts
    
    # i225 Device assignment with vendor ID / device ID and MSI Mode
    [/PCI/0]
        "OS"         = uint32: 1
        "vendor_ID"  = uint32: 0x8086
        "device_ID"  = uint32: 0x15f2
        "interrupt_mode" = uint32: 2
    
    # i210 Device assignment with vendor ID / device ID and MSI Mode to Yocto linux-rt
    [/PCI/1]
        "OS"         = uint32: 1
        "vendor_ID"  = uint32: 0x8086
        "device_ID"  = uint32: 0x1533
        "interrupt_mode" = uint32: 2
    
    # mGBE Device assignment with vendor ID / device ID and MSI Mode (not supoported yet by QNX
    #
    
    [/SHM/0]
    
        "name" = "trace_0"
        "size" = uint64: 0x4000
    
    [/SHM/1]
    
        "name" = "trace_1"
        "size" = uint64: 0x4000
    
    Copy to clipboard
  3. Reboot with rth -sysreboot && reboot commands