Buildroot Image mit QEMU booten

14. Juni 2019

Will man Linux auf Mikroprozessoren zum Laufen bringen, dann kommt man mit den 0815 Linux-Distributionen nicht weit. Wenn es nicht schon an der Architektur scheitert, scheitert es i.d.R. an den zu generischen und damit zu großen Paketen (Programme, Bibliotheken). Eingebettete Systeme bringen nun mal nicht sonderlich viele Resourcen mit. Folglich muss man sich sein Linux-Betriebssystem selber bauen. Dazu bieten sich mehrere Möglichkeiten kann:

Grundvoraussetzungen

Damit überhaupt Programme kompiliert werden können, braucht es ein Bündel an Programmen und Bibliotheken. Unter auf Debian basierenden Distributionen installiert man diese für gewöhnlich folgendermaßen.

$ sudo apt install build-essential

Weiterhin wird später noch QEMU verwendet werden, das gleich mitinstalliert werden kann.

$ sudo apt install qemu-system-arm

buildroot vorbereiten

In Anleitungen (Offizielle Dokumentation) findet sich häufig folgender Aufruf,

$ git clone git://git.buildroot.net/buildroot

aber das Repository scheint verschoben worden zu sein.

$ git clone git://git.busybox.net/buildroot

Standardmäßig wird der master Branch ausgecheckt, der nicht als stabil angesehen werden kann. Deshalb checkt man ein Release aus. Eine Liste der vorhandenen Releases bekommt man mit

$ git tag -l
..
2018.11.1
2018.11.2
2018.11.3
2018.11.4
2019.02
2019.02-rc1
2019.02-rc2
2019.02-rc3
2019.02.1
2019.02.2
2019.05
2019.05-rc1
2019.05-rc2
2019.05-rc3

und ausgecheckt werden sie so:

$ git checkout -b NeuerArbeitsBranch 2019.05
Switched to a new branch 'NeuerArbeitsBranch'

Wenn man sich nicht sicher ist, ob nicht schon Einstellungen vorgenommen wurden, kann man diese mit

$ make clean
$ make distclean

zurücksetzen. Dabei entfernt clean alle von buildroot angelegten Dateien und distclean alle Konfigurationsdateien.

buildroot anschmeißen

Zur Konfiguration werde ich mich an anderer Stelle detaillierter äußern, um erst einmal loslegen zu können, genügt ein Rückgriff auf eine vorhandene Standardkonfiguration. Im Falle von ARM ist es die qemu_arm_versatile_defconfig für einen arm926t und qemu_arm_vexpress_defconfig für einen Cortex-A9. Um mehrere Konfigurationen gleichzeitig nebeneinander verwalten zu können, bedarf es verschiedener Build-Ordner. Dafür muss man einzig den Parameter O= setzen.

Aus ```Bash $ make qemu_arm_versatile_defconfig ``` wird so ```Bash $ make O=../QemuArmVersatile qemu_arm_versatile_defconfig ``` Der Befehl kopiert nur die Konfigurationsdatei `.config` in den angegebenen Ordner. Mit ```Bash $ make O=../QemuArmVersatile ``` wird der Buildprozess gestartet.
Aus ```Bash $ make qemu_arm_vexpress_defconfig ``` wird so ```Bash $ make O=../QemuArmVexpress qemu_arm_vexpress_defconfig ``` Der Befehl kopiert nur die Konfigurationsdatei `.config` in den angegebenen Ordner. Mit ```Bash $ make O=../QemuArmVexpress ``` wird der Buildprozess gestartet.

Das kann etwas dauern, da in dieser Konfiguration z.B. der Compiler (gcc) explizit übersetzt wird und nicht auf einen eventuell vorhandenen Cross-Compiler des Host-Systems zurückgegriffen wird.

Nach dem erfolgreichen Durchlauf sieht der Ordner QemuArmVersatile (bzw. der Ordner QemuArmVexpress) folgendermaßen aus.

$ tree -L 2
.
├── build
│   ├── buildroot-config
│   ├── buildroot-fs
│   ├── build-time.log
│   ├── busybox-1.30.1
│   ├── host-acl-2.2.53
│   ├── host-attr-2.4.48
│   ├── host-autoconf-2.69
│   ├── host-automake-1.15.1
│   ├── host-binutils-2.31.1
│   ├── host-bison-3.0.4
│   ├── host-e2fsprogs-1.44.5
│   ├── host-fakeroot-1.20.2
│   ├── host-flex-2.6.4
│   ├── host-gcc-final-7.4.0
│   ├── host-gcc-initial-7.4.0
│   ├── host-gettext
│   ├── host-gettext-tiny-c6dcdcdef801127549d3906d153c061880d25a73
│   ├── host-gmp-6.1.2
│   ├── host-kmod-25
│   ├── host-libtool-2.4.6
│   ├── host-libzlib-1.2.11
│   ├── host-m4-1.4.18
│   ├── host-makedevs
│   ├── host-mpc-1.1.0
│   ├── host-mpfr-4.0.2
│   ├── host-patchelf-0.9
│   ├── host-pkgconf-1.6.1
│   ├── host-skeleton
│   ├── host-tar-1.29
│   ├── host-util-linux-2.33
│   ├── host-zlib
│   ├── ifupdown-scripts
│   ├── initscripts
│   ├── linux-4.19.16
│   ├── linux-headers-4.19.16
│   ├── locales.nopurge
│   ├── packages-file-list-host.txt
│   ├── packages-file-list-staging.txt
│   ├── packages-file-list.txt
│   ├── qemu_arm_versatile
│   ├── skeleton
│   ├── skeleton-init-common
│   ├── skeleton-init-sysv
│   ├── toolchain
│   ├── toolchain-buildroot
│   └── uclibc-1.0.31
├── host
│   ├── arm-buildroot-linux-uclibcgnueabi
│   ├── bin
│   ├── etc
│   ├── include
│   ├── lib
│   ├── lib64 -> lib
│   ├── libexec
│   ├── sbin
│   ├── share
│   └── usr -> .
├── images
│   ├── rootfs.ext2
│   ├── versatile-pb.dtb
│   └── zImage
├── Makefile
├── staging -> host/arm-buildroot-linux-uclibcgnueabi/sysroot
└── target
    ├── bin
    ├── dev
    ├── etc
    ├── lib
    ├── lib32 -> lib
    ├── linuxrc -> bin/busybox
    ├── media
    ├── mnt
    ├── opt
    ├── proc
    ├── root
    ├── run
    ├── sbin
    ├── sys
    ├── THIS_IS_NOT_YOUR_ROOT_FILESYSTEM
    ├── tmp
    ├── usr
    └── var

72 directories, 11 files

Von Interesse sind in erster Linie die Dateien Ordner images. Dort liegt das Dateisystem rootfs.ext, der device tree versatile-pb.dtb (bzw. vexpress-v2p-ca9.dtb) in seiner kompilierten Form und der Kernel zImage.

QEMU starten

Das eben erstellte Image kann nun mit QEMU ausgeführt werden. Da QEMU einige Parameter übergeben werden müssen, packt man den Aufruf der Einfachheit halber in ein Skript.

Dieses Skript legt man außerhalb von `QemuArmVersatile` ab, schließlich kann und wird sich am Image noch etwas ändern. ```Bash #!/bin/sh qemu-system-arm \ -M versatilepb \ -kernel QemuArmVersatile/images/zImage \ -dtb QemuArmVersatile/images/versatile-pb.dtb \ -drive file=QemuArmVersatile/images/rootfs.ext2,if=scsi,format=raw \ -append "root=/dev/sda console=ttyAMA0,115200" \ -serial stdio \ -net nic,model=rtl8139 -net user \ -name Versatile_ARM_EXT2 ``` Führt man das Skript aus, so sollte der Bootvorgang starten und folgende Ausgaben erscheinen.
vpb_sic_write: Bad register offset 0x2c
Booting Linux on physical CPU 0x0
Linux version 4.19.16 (thorsten@ultra) (gcc version 7.4.0 (Buildroot 2019.05)) #1 Wed Jun 12 11:01:42 CEST 2019
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00093177
CPU: VIVT data cache, VIVT instruction cache
OF: fdt: Machine model: ARM Versatile PB
Memory policy: Data cache writeback
random: get_random_bytes called from start_kernel+0x7c/0x384 with crng_init=0
Built 1 zonelists, mobility grouping on.  Total pages: 32512
Kernel command line: root=/dev/sda console=ttyAMA0,115200
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 124600K/131072K available (3796K kernel code, 161K rwdata, 796K rodata, 140K init, 200K bss, 6472K reserved, 0K cma-reserved)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xc8800000 - 0xff800000   ( 880 MB)
    lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .text : 0x(ptrval) - 0x(ptrval)   (3798 kB)
      .init : 0x(ptrval) - 0x(ptrval)   ( 140 kB)
      .data : 0x(ptrval) - 0x(ptrval)   ( 162 kB)
       .bss : 0x(ptrval) - 0x(ptrval)   ( 201 kB)
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
VIC @(ptrval): id 0x00041190, vendor 0x41
FPGA IRQ chip 0 "intc" @ (ptrval), 20 irqs, parent IRQ: 47
clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 2147483647500ns
Failed to initialize '/amba/timer@101e3000': -22
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
Console: colour dummy device 80x30
Calibrating delay loop... 513.63 BogoMIPS (lpj=2568192)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0x8400 - 0x8458
devtmpfs: initialized
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 256 (order: -1, 3072 bytes)
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
OF: amba_device_add() failed (-19) for /amba/smc@10100000
OF: amba_device_add() failed (-19) for /amba/mpmc@10110000
OF: amba_device_add() failed (-19) for /amba/sctl@101e0000
OF: amba_device_add() failed (-19) for /amba/watchdog@101e1000
OF: amba_device_add() failed (-19) for /amba/sci@101f0000
OF: amba_device_add() failed (-19) for /amba/ssp@101f4000
OF: amba_device_add() failed (-19) for /amba/fpga/sci@a000
Serial: AMBA PL011 UART driver
101f1000.uart: ttyAMA0 at MMIO 0x101f1000 (irq = 28, base_baud = 0) is a PL011 rev1
console [ttyAMA0] enabled
101f2000.uart: ttyAMA1 at MMIO 0x101f2000 (irq = 29, base_baud = 0) is a PL011 rev1
101f3000.uart: ttyAMA2 at MMIO 0x101f3000 (irq = 30, base_baud = 0) is a PL011 rev1
uart-pl011 10009000.uart: aliased and non-aliased serial devices found in device tree. Serial port enumeration may be unpredictable.
10009000.uart: ttyAMA3 at MMIO 0x10009000 (irq = 54, base_baud = 0) is a PL011 rev1
vgaarb: loaded
SCSI subsystem initialized
clocksource: Switched to clocksource arm,sp804
NET: Registered protocol family 2
tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 0, 4096 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
workingset: timestamp_bits=30 max_order=15 bucket_order=0
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
versatile-pci 10001000.pci: host bridge /amba/pci@10001000 ranges:
versatile-pci 10001000.pci:    IO 0x43000000..0x4300ffff -> 0x00000000
versatile-pci 10001000.pci:   MEM 0x50000000..0x5fffffff -> 0x50000000
versatile-pci 10001000.pci:   MEM 0x60000000..0x6fffffff -> 0x60000000
versatile-pci 10001000.pci: PCI core found (slot 11)
versatile-pci 10001000.pci: PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [bus 00-ff]
pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff]
pci_bus 0000:00: root bus resource [mem 0x60000000-0x6fffffff pref]
PCI: bus0: Fast back to back transfers disabled
pci 0000:00:0c.0: BAR 6: assigned [mem 0x60000000-0x6003ffff pref]
pci 0000:00:0d.0: BAR 2: assigned [mem 0x50000000-0x50001fff]
pci 0000:00:0d.0: BAR 1: assigned [mem 0x50002000-0x500023ff]
pci 0000:00:0c.0: BAR 0: assigned [io  0x1000-0x10ff]
pci 0000:00:0c.0: BAR 1: assigned [mem 0x50002400-0x500024ff]
pci 0000:00:0d.0: BAR 0: assigned [io  0x1400-0x14ff]
clcd-pl11x dev:20: PL110 designer 41 rev0 at 0x10120000
clcd-pl11x dev:20: Versatile hardware, VGA display
Console: switching to colour frame buffer device 80x30
sym53c8xx 0000:00:0d.0: enabling device (0100 -> 0103)
sym0: <895a> rev 0x0 at pci 0000:00:0d.0 irq 67
sym0: No NVRAM, ID 7, Fast-40, LVD, parity checking
sym0: SCSI BUS has been reset.
scsi host0: sym-2.2.3
random: fast init done
scsi 0:0:0:0: Direct-Access     QEMU     QEMU HARDDISK    2.5+ PQ: 0 ANSI: 5
scsi target0:0:0: tagged command queuing enabled, command queue depth 16.
scsi target0:0:0: Beginning Domain Validation
scsi target0:0:0: Domain Validation skipping write tests
scsi target0:0:0: Ending Domain Validation
scsi 0:0:2:0: CD-ROM            QEMU     QEMU CD-ROM      2.5+ PQ: 0 ANSI: 5
scsi target0:0:2: tagged command queuing enabled, command queue depth 16.
scsi target0:0:2: Beginning Domain Validation
scsi target0:0:2: Domain Validation skipping write tests
scsi target0:0:2: Ending Domain Validation
libphy: Fixed MDIO Bus: probed
8139cp: 8139cp: 10/100 PCI Ethernet driver v1.3 (Mar 22, 2004)
8139cp 0000:00:0c.0: enabling device (0100 -> 0103)
8139cp 0000:00:0c.0 eth0: RTL-8139C+ at 0x(ptrval), 52:54:00:12:34:56, IRQ 66
versatile reboot driver registered
NET: Registered protocol family 10
sd 0:0:0:0: Power-on or device reset occurred
sd 0:0:0:0: [sda] 122880 512-byte logical blocks: (62.9 MB/60.0 MiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Segment Routing with IPv6
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered protocol family 17
sd 0:0:0:0: [sda] Attached SCSI disk
input: AT Raw Set 2 keyboard as /devices/platform/amba/amba:fpga/10006000.kmi/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/amba/amba:fpga/10007000.kmi/serio1/input/input2
EXT4-fs (sda): mounting ext2 file system using the ext4 subsystem
EXT4-fs (sda): mounted filesystem without journal. Opts: (null)
VFS: Mounted root (ext2 filesystem) readonly on device 8:0.
devtmpfs: mounted
Freeing unused kernel memory: 140K
This architecture does not have kernel memory protection.
Run /sbin/init as init process
EXT4-fs (sda): re-mounted. Opts: block_validity,barrier,user_xattr
Starting syslogd: OK
Starting klogd: OK
Initializing random number generator... random: dd: uninitialized urandom read (512 bytes read)
done.
Starting network: 8139cp 0000:00:0c.0 eth0: link up, 100Mbps, full-duplex, lpa 0x05E1
udhcpc: started, v1.30.1
random: mktemp: uninitialized urandom read (6 bytes read)
udhcpc: sending discover
udhcpc: sending select for 10.0.2.15
udhcpc: lease of 10.0.2.15 obtained, lease time 86400
deleting routers
random: mktemp: uninitialized urandom read (6 bytes read)
adding dns 10.0.2.3
OK

Welcome to Buildroot
buildroot login:
Dieses Skript legt man außerhalb von `QemuArmVexpress` ab, schließlich kann und wird sich am Image noch etwas ändern. ```Bash #!/bin/sh qemu-system-arm \ -M vexpress-a9 \ -kernel QemuArmVexpress/images/zImage \ -dtb QemuArmVexpress/images/vexpress-v2p-ca9.dtb \ -drive file=QemuArmVexpress/images/rootfs.ext2,if=sd,format=raw \ -append "rw console=ttyAMA0 console=tty root=/dev/mmcblk0" \ -cpu cortex-a9 \ -m 32 \ -serial stdio \ -net nic,model=lan9118 \ -net user \ -name Vexpress_ARM ``` Führt man das Skript aus, so sollte der Bootvorgang starten und folgende Ausgaben erscheinen.
Booting Linux on physical CPU 0x0
Linux version 4.19.16 (thorsten@ultra) (gcc version 7.4.0 (Buildroot 2019.05)) #1 SMP Sat Jun 15 17:01:14 CEST 2019
CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
OF: fdt: Machine model: V2P-CA9
Memory policy: Data cache writeback
CPU: All CPU(s) started in SVC mode.
random: get_random_bytes called from start_kernel+0x9c/0x45c with crng_init=0
percpu: Embedded 17 pages/cpu @(ptrval) s36876 r8192 d24564 u69632
Built 1 zonelists, mobility grouping on.  Total pages: 8128
Kernel command line: rw console=ttyAMA0 console=tty root=/dev/mmcblk0
log_buf_len individual max cpu contribution: 4096 bytes
log_buf_len total cpu_extra contributions: 12288 bytes
log_buf_len min size: 16384 bytes
log_buf_len: 32768 bytes
early log buf free: 15012(91%)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 22288K/32768K available (6144K kernel code, 396K rwdata, 1400K rodata, 1024K init, 157K bss, 10480K reserved, 0K cma-reserved)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0x82800000 - 0xff800000   (2000 MB)
    lowmem  : 0x80000000 - 0x82000000   (  32 MB)
    modules : 0x7f000000 - 0x80000000   (  16 MB)
      .text : 0x(ptrval) - 0x(ptrval)   (7136 kB)
      .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
      .data : 0x(ptrval) - 0x(ptrval)   ( 397 kB)
       .bss : 0x(ptrval) - 0x(ptrval)   ( 158 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
rcu: Hierarchical RCU implementation.
rcu:    RCU event tracing is enabled.
rcu:    RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
GIC CPU mask not found - kernel will fail to boot.
GIC CPU mask not found - kernel will fail to boot.
L2C: platform modifies aux control register: 0x02020000 -> 0x02420000
L2C: DT/platform modifies aux control register: 0x02020000 -> 0x02420000
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 dynamic clock gating disabled, standby mode disabled
L2C-310 cache controller enabled, 8 ways, 128 kB
L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x46420001
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
Failed to initialize '/smb@4000000/motherboard/iofpga@7,00000000/timer@12000': -22
smp_twd: clock not found -2
Console: colour dummy device 80x30
console [tty0] enabled
Calibrating local timer... 87.02MHz.
Calibrating delay loop... 432.53 BogoMIPS (lpj=2162688)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
CPU0: Spectre v2: using BPIALL workaround
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x60100000 - 0x60100060
rcu: Hierarchical SRCU implementation.
smp: Bringing up secondary CPUs ...
smp: Brought up 1 node, 1 CPU
SMP: Total of 1 processors activated (432.53 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 0
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 1024 (order: 4, 65536 bytes)
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
hw-breakpoint: debug architecture 0x4 unsupported.
Serial: AMBA PL011 UART driver
10009000.uart: ttyAMA0 at MMIO 0x10009000 (irq = 29, base_baud = 0) is a PL011 rev1
console [ttyAMA0] enabled
1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 30, base_baud = 0) is a PL011 rev1
1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 31, base_baud = 0) is a PL011 rev1
1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 32, base_baud = 0) is a PL011 rev1
OF: amba_device_add() failed (-19) for /smb@4000000/motherboard/iofpga@7,00000000/wdt@f000
OF: amba_device_add() failed (-19) for /memory-controller@100e0000
OF: amba_device_add() failed (-19) for /memory-controller@100e1000
OF: amba_device_add() failed (-19) for /watchdog@100e5000
irq: type mismatch, failed to map hwirq-75 for interrupt-controller@1e001000!
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource arm,sp804
NET: Registered protocol family 2
tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
TCP established hash table entries: 1024 (order: 0, 4096 bytes)
TCP bind hash table entries: 1024 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
hw perfevents: enabled with armv7_cortex_a9 PMU driver, 1 counters available
workingset: timestamp_bits=30 max_order=13 bucket_order=0
squashfs: version 4.0 (2009/01/31) Phillip Lougher
jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
9p: Installing v9fs 9p2000 file system support
io scheduler noop registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
clcd-pl11x 1001f000.clcd: PL111 designer 41 rev2 at 0x1001f000
clcd-pl11x 1001f000.clcd: clcd@1f000 hardware, 640x480@59 display
Console: switching to colour frame buffer device 80x30
clcd-pl11x 10020000.clcd: PL111 designer 41 rev2 at 0x10020000
clcd-pl11x 10020000.clcd: clcd@10020000 hardware, 1024x768@59 display
40000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000
Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
40000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000
Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
Concatenating MTD devices:
(0): "40000000.flash"
(1): "40000000.flash"
into device "40000000.flash"
libphy: Fixed MDIO Bus: probed
smsc911x 4e000000.ethernet: Linked as a consumer to regulator.1
libphy: smsc911x-mdio: probed
smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56
isp1760 4f000000.usb: bus width: 32, oc: digital
isp1760 4f000000.usb: NXP ISP1760 USB Host Controller
isp1760 4f000000.usb: new USB bus registered, assigned bus number 1
isp1760 4f000000.usb: Scratch test failed.
isp1760 4f000000.usb: can't setup: -19
isp1760 4f000000.usb: USB bus 1 deregistered
usbcore: registered new interface driver usb-storage
rtc-pl031 10017000.rtc: rtc core: registered pl031 as rtc0
mmci-pl18x 10005000.mmci: Got CD GPIO
mmci-pl18x 10005000.mmci: Got WP GPIO
mmci-pl18x 10005000.mmci: Linked as a consumer to regulator.1
mmci-pl18x 10005000.mmci: mmc0: PL181 manf 41 rev0 at 0x10005000 irq 25,26 (pio)
ledtrig-cpu: registered to indicate activity on CPUs
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
input: AT Raw Set 2 keyboard as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10006000.kmi/serio0/input/input0
mmc0: new SD card at address 4567
mmcblk0: mmc0:4567 QEMU! 60.0 MiB 
aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 24
aaci-pl041 10004000.aaci: FIFO 512 entries
oprofile: using arm/armv7-ca9
NET: Registered protocol family 17
9pnet: Installing 9P2000 support
Registering SWP/SWPB emulation handler
rtc-pl031 10017000.rtc: setting system clock to 2019-06-15 15:17:06 UTC (1560611826)
ALSA device list:
  #0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 24
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/smb@4000000/smb@4000000:motherboard/smb@4000000:motherboard:iofpga@7,00000000/10007000.kmi/serio1/input/input2
random: fast init done
EXT4-fs (mmcblk0): mounted filesystem without journal. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:0.
devtmpfs: mounted
Freeing unused kernel memory: 1024K
Run /sbin/init as init process
random: crng init done
EXT4-fs (mmcblk0): re-mounted. Opts: block_validity,delalloc,barrier,user_xattr
Generic PHY 4e000000.ethernet-ffffffff:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=4e000000.ethernet-ffffffff:01, irq=POLL)
smsc911x 4e000000.ethernet eth0: SMSC911x/921x identified at 0x83290000, IRQ: 22

Welcome to Buildroot
buildroot login: 

Das System funktioniert, fehlt noch das Einspielen und Debuggen der eigenen Applikation, was in einem separaten Beitrag behandelt wird.

csv nach png

15. Oktober 2019

Debian in Qemu unter Windows

30. August 2019

Anwendungsentwicklung mit QEMU #2

29. August 2019