Install QNX IFS
To manually install QNX OS, you need to copy the QNX IFS image from the microSD card to the internal storage on the board (e.g.: eMMC).
Typically, the board comes pre-installed with U-Boot. If it doesn't, you'll have to first manually install U-Boot. Steps can be found at the following link: Yocto Recovery SD card (https://variwiki.com/index.php?title=Yocto_Recovery_SD_card&release=mx8mp-yocto-mickledore-6.1.36_2.1.0-v1.3) , which will flash the entire eMMC with U-Boot as a raw partition and ROOTFS in another partition. Copy the required files like DTB, required binaries to the external microSD card.
After the target boots, you can run U-Boot commands to load QNX IFS from microSD card,
load FDT file from on-board eMMC, then use boot
commands to Boot QNX OS.
After QNX OS starts, if you copy QNX IFS from microSD card to on-board eMMC, then after another reset, you can boot the QNX IFS from the on-board eMMC.
- Insert the microSD card to your board and power up the board.
U-Boot should boot as seen from the output on your serial console.
U-Boot SPL 2023.04-lf_v2023.04_var02+gca1dfc1574a (Sep 12 2024 - 13:30:09 +0000) SEC0: RNG instantiated Normal Boot Trying to boot from BOOTROM Boot Stage: Primary boot image offset 0x8000, pagesize 0x200, ivt offset 0x0 U-Boot 2023.04-lf_v2023.04_var02+gca1dfc1574a (Sep 12 2024 - 13:30:09 +0000) CPU: i.MX8MP[8] rev1.1 1800 MHz (running at 1200 MHz) CPU: Commercial temperature grade (0C to 95C) at 39C Reset cause: POR Model: Variscite DART-MX8M-PLUS 1.x on DT8MCustomBoard 2.0 and above DRAM: 4 GiB optee optee: OP-TEE api uid mismatch PTN5150: Vendor ID [0x3], Version ID [0x1], Addr [I2C1 0x3d] Core: 213 devices, 28 uclasses, devicetree: separate MMC: FSL_SDHC: 1, FSL_SDHC: 2 Loading Environment from MMC... *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial SEC0: RNG instantiated switch to partitions #0, OK mmc2(part 0) is current device Part number: VSM-DT8MP-302 Assembly: AS310210259 Production date: 2024 Feb 11 Serial Number: f8:dc:7a:d4:75:3a SOM revision: 1.3 flash target is MMC:2 Net: Get shared mii bus on ethernet@30be0000 ADIN1300 PHY detected at addr 1 eth1: ethernet@30be0000, eth0: ethernet@30bf0000 [PRIME] Fastboot: Normal Normal Boot Hit any key to stop autoboot:
- Press any key on your keyboard to cancel the auto-boot command.
Hit any key to stop autoboot: 0 uboot=>
- Run the U-Boot commands to load QNX IFS and board device tree from the mmcdev 1 i.e. the external microSD card
then use boot command to boot to QNX OS.
Note:For example:Ater setting the corresponding boot media device (i.e., setenv mmcdev 1 or 0), the "boot" command is able to execute the boot.scr script, where all the steps to load IFS and the DTB file are defined.
u-boot=> setenv mmcdev 1 u-boot=> boot Running BSP bootcmd ... switch to partitions #0, OK mmc1 is current device 1693 bytes read in 2 ms (826.2 KiB/s) Running bootscript from mmc ... ## Executing script at 40480000 dwceqos_macaddr=f8 dc 7a d4 75 3a 14273812 bytes read in 593 ms (23 MiB/s) 63736 bytes read in 4 ms (15.2 MiB/s) Working FDT set to c0000000 ## Starting application at 0x40800000 ... Watchdog is enabled board_smp_num_cpu: 4 cores board_smp_num_cpu: 4 cores board_smp_num_cpu: 4 cores Found ENET0 MAC in FDT: f8:dc:7a:d4:75:3a Welcome to QNX 8.0.0 on DART_i.MX8MP_CPU_Board ! Starting Watchdog driver... Starting I2C driver ... Setting OS clock from RTC ... Starting PCI Server ... Starting CAN driver (/dev/can1)... Starting Serial driver (/dev/ser1)... Starting Serial driver (/dev/ser2)... Starting Serial driver (/dev/ser3)... Starting Serial driver (/dev/ser4)... Starting SPI master driver ... Starting eMMC driver (/dev/emmc0)... Starting SD1 memory card driver (/dev/sd0)... Path=0 - imx target=0 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=1 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=2 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=3 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=4 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=5 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=6 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=7 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 Starting OTG1 & OTG2 controller in the host mode ... Starting USB Type-C CC-Logic controller ... Launching devb-umass ... Starting devf-ram filesystem ... Starting networking ... Starting DHCP client ... Starting SSH daemon ... Starting devc-pty manager ... Starting qconn daemon ... Starting GPIO driver (/dev/gpio)... Starting shell ...
- After the board boots succesfully from the external MMC(microSD card), you need to format the emmc file system.
Use mkdosfs command to format the file system and mount both the mmcdev 0 and 1 using DOS filesystem. For example:
Starting shell ... $ mkdosfs /dev/emmc0t131 Format complete: FAT32 (4096-byte clusters), 15229884 kB available. $ mount -t dos /dev/sd0t11 /sd $ mount -t dos /dev/emmc0t131 /emmc
- After that copy the required binaries from microSD card to emmc (internal). Use sync
to update filesystems to match cached data. Restart the board after removing the SD card from the board. Now the board will boot
automatically since mmcdev is first taken as 0 and mmdev=0 is emmc where images are copied. For example:
Once QNX OS is running, you can test it by executing any shell commands, or any commands residing within the OS image, such as uname, pidin, mount, etc.$ cp -R /sd/* /emmc/ $ sync $ shutdown U-Boot SPL 2023.04-lf_v2023.04_var02+gca1dfc1574a (Sep 12 2024 - 13:30:09 +0000) U-Boot SPL 2023.04-lf_v2023.04_var02+gca1dfc1574a (Sep 12 2024 - 13:30:09 +0000) SEC0: RNG instantiated Normal Boot Trying to boot from BOOTROM Boot Stage: Primary boot image offset 0x8000, pagesize 0x200, ivt offset 0x0 U-Boot 2023.04-lf_v2023.04_var02+gca1dfc1574a (Sep 12 2024 - 13:30:09 +0000) CPU: i.MX8MP[8] rev1.1 1800 MHz (running at 1200 MHz) CPU: Commercial temperature grade (0C to 95C) at 43C Reset cause: POR Model: Variscite DART-MX8M-PLUS 1.x on DT8MCustomBoard 2.0 and above DRAM: 4 GiB optee optee: OP-TEE api uid mismatch PTN5150: Vendor ID [0x3], Version ID [0x1], Addr [I2C1 0x3d] Core: 213 devices, 28 uclasses, devicetree: separate MMC: FSL_SDHC: 1, FSL_SDHC: 2 Loading Environment from MMC... *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial SEC0: RNG instantiated switch to partitions #0, OK mmc2(part 0) is current device Part number: VSM-DT8MP-302 Assembly: AS310210259 Production date: 2024 Feb 11 Serial Number: f8:dc:7a:d4:75:3a SOM revision: 1.3 flash target is MMC:2 Net: Get shared mii bus on ethernet@30be0000 ADIN1300 PHY detected at addr 1 eth1: ethernet@30be0000, eth0: ethernet@30bf0000 [PRIME] Fastboot: Normal Normal Boot Hit any key to stop autoboot: 0 Running BSP bootcmd ... switch to partitions #0, OK mmc2(part 0) is current device 1693 bytes read in 2 ms (826.2 KiB/s) Running bootscript from mmc ... ## Executing script at 40480000 dwceqos_macaddr=f8 dc 7a d4 75 3a 14273812 bytes read in 45 ms (302.5 MiB/s) 63736 bytes read in 2 ms (30.4 MiB/s) Working FDT set to c0000000 ## Starting application at 0x40800000 ... Watchdog is enabled board_smp_num_cpu: 4 cores board_smp_num_cpu: 4 cores board_smp_num_cpu: 4 cores Found ENET0 MAC in FDT: f8:dc:7a:d4:75:3a Welcome to QNX 8.0.0 on DART_i.MX8MP_CPU_Board ! Starting Watchdog driver... Starting I2C driver ... Setting OS clock from RTC ... Starting PCI Server ... Starting CAN driver (/dev/can1)... Starting Serial driver (/dev/ser1)... Starting Serial driver (/dev/ser2)... Starting Serial driver (/dev/ser3)... Starting Serial driver (/dev/ser4)... Starting SPI master driver ... Starting eMMC driver (/dev/emmc0)... Starting SD1 memory card driver (/dev/sd0)... Path=0 - imx target=0 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=1 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=2 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=3 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=4 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=5 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=6 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 target=7 lun=0 Direct-Access(0) - SDMMC: AJTD4R Rev: 0.6 Starting OTG1 & OTG2 controller in the host mode ... Starting USB Type-C CC-Logic controller ... Launching devb-umass ... Starting devf-ram filesystem ... Starting networking ... Starting DHCP client ... Starting SSH daemon ... Starting devc-pty manager ... Starting qconn daemon ... Starting GPIO driver (/dev/gpio)... Starting shell ...
# pidin ar pid Arguments 1 procnto-smp-instr -mr 2 pipe 20483 slogger2 20484 dumper 20485 mqueue 20486 random 20487 wdtkick -t 5000 20488 i2c-imx -p 0x30A20000 -i67 -c66000000 20489 i2c-imx -p 0x30A30000 -i68 -c66000000 20490 i2c-imx -p 0x30A40000 -i69 -c66000000 20491 i2c-imx -p 0x30A50000 -i70 -c66000000 24588 pci-server --bus-scan-limit=1 -c 24589 devcan-flexcan -h -M -b250K -u1 can0 24590 devc-sermx1 -e -F -S -u 1 -c 24000000 0x30860000,58 24591 devc-sermx1 -e -F -S -u 2 -c 24000000 0x30890000,59 24592 devc-sermx1 -e -F -S -u 3 -c 24000000 0x30880000,60 24593 devc-sermx1 -e -F -S -u 4 -c 24000000 0x30A60000,61 24594 spi-ecspi 24595 devb-sdmmc-mx8x cam cache,quiet sdmmc partitions=on blk ra=64k:2048k,memory=sysram&below4G:sysram,maxio=256,cache=4m disk name=emmc sdio idx=2,emmc,bw=8,hs=tuning_mode=standard,verbose=1 24596 devb-sdmmc-mx8x cam pnp,cache,quiet blk ra=64k:2048k,memory=sysram&below4G:sysram,maxio=256,cache=4m disk name=sd sdio idx=1,bs=cd=0x30210000^12^588,verbose=1 24597 io-usb-otg -d hcd-imx8-xhci ioport=0x38100000, irq=72,ioport=0x38200000,irq=73 24598 nxp-ptn5150a-imx8mp -a 0x3d -u2 24599 devb-umass cam pnp dos exe=all disk name=umass 24601 devf-ram -i 9,0 -s0,16m 65560 io-sock -m phy -m fdt -m phy -d dwceqos -m pci -d em -d ix -d re -m usb -d axe -d axge -d cdce -d smsc 65564 dhcpcd: [manager] [ip4] [ip6] -bqq 106525 /usr/sbin/sshd 114714 devc-pty 114715 qconn 118814 gpio-imx8mp 118815 ksh 118816 pidin ar # # uname -a QNX localhost 8.0.0 2024/11/22-10:55:54EST DART_i.MX8MP_CPU_Board aarch64le