Build the IFS image used by U-boot (commandline)

You can use the commandline on Linux to build IFS images which can be used by U-boot.

Makefile targets in the BSP

The Makefile is located under the $BSP_ROOT_DIR/images directory. It defines additional targets which are not built by default:

ifs-rpi4.raw
Builds the QNX IFS image which is used by the U-boot "go" command to boot.
ifs-rpi4.ui
Builds the QNX IFS image which is used by the U-boot "bootm" command to boot.

Boot using U-boot "go" command

Below is the example how to used U-boot go command to boot QNX IFS image:

U-Boot> fatload mmc 0:1 0x80000 ifs-rpi4.raw
33190196 bytes read in 1485 ms (21.3 MiB/s)
U-Boot> env print fdtcontroladdr
fdtcontroladdr=3df3fa00
U-Boot> fdt addr -c
Control fdt: 3df3fa00
U-Boot> go 0x80000 0x3df3fa00
## Starting application at 0x00080000 ...
Hypervisor support disabled
MMU: 16-bit ASID 44-bit PA TCR_EL1=00000014b5183519
GICv2: 256 interrupts
GICv2: routing SPIs to gic cpu 0
cpu0: MPIDR=0000000080000000
cpu0: MIDR=410fd083 Cortex-A72 r0p3
cpu0: CWG=4 ERG=4 Dminline=4 Iminline=4 PIPT
cpu0: CLIDR=a200023 LoUU=1 LoC=2 LoUIS=1
cpu0: L1 Icache 48K linesz=64 set/way=256/3
cpu0: L1 Dcache 32K linesz=64 set/way=256/2
cpu0: L2 Unified 1024K linesz=64 set/way=1024/16
cpu0: GICv2 cpu interface 0
Loading IFS...done
..

Welcome to QNX 8.0.0 on RaspberryPi4B !

Starting wdtkick ...
Starting I2C driver ...
Starting PCI Server ...
Starting serial driver (/dev/ser1)
Starting SPI master driver ...
Starting SDMMC driver (/dev/sd0)
Path=0 - bcm2711
 target=0 lun=0     Direct-Access(0) - SDMMC: SD32G Rev: 8.5
Inform vc to load vl805 firmware
Starting USB xHCI controller in the host mode (/dev/usb/*)...
Starting devf-ram filesystem ...
Starting networking ...
Starting DHCP client ...
Starting SSH daemon ...
Starting devc-pty manager ...
Starting qconn daemon ...
Starting shell ...

# ifconfig genet0 | grep -e ether -e inet -e status
ether dc:a6:32:e7:95:d9
inet6 fe80::986a:3b5e:ee00:ba37%genet0 prefixlen 64 scopeid 0x5
inet 10.122.24.139 netmask 0xfffffe00 broadcast 10.122.25.255
status: active
                     

Boot using U-boot "bootm" command

Below is the example how to used U-boot bootm command to boot QNX IFS image:

U-Boot> fatload mmc 0:1 0x80000 ifs-rpi4.ui
33190260 bytes read in 1478 ms (21.4 MiB/s)
U-Boot> fdt addr -c
Control fdt: 3df3fa00
U-Boot> bootm 0x80000 - 0x3df3fa00
## Booting kernel from Legacy Image at 00080000 ...
   Image Name:   
   Image Type:   AArch64 Linux Kernel Image (uncompressed)
   Data Size:    33190196 Bytes = 31.7 MiB
   Load Address: 00080000
   Entry Point:  00080000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 3df3fa00
   Booting using the fdt blob at 0x3df3fa00
   Loading Kernel Image
   Using Device Tree in place at 000000003df3fa00, end 000000003df4fd49
size=58, ptr=9a8, limit=2000: 7ffe770
Starting kernel ...
Hypervisor support disabled
MMU: 16-bit ASID 44-bit PA TCR_EL1=00000014b5183519
GICv2: 256 interrupts
GICv2: routing SPIs to gic cpu 0
..
Welcome to QNX 8.0.0 on RaspberryPi4B !

Starting wdtkick ...
..
# ifconfig genet0 | grep -e ether -e inet -e status
ether dc:a6:32:e7:95:d9
inet6 fe80::9442:aa31:6bb5:bebb%genet0 prefixlen 64 scopeid 0x5
inet 10.122.24.158 netmask 0xfffffe00 broadcast 10.122.25.255
status: active
                     
Page updated: