1
0
Fork 0
forked from nuttx/nuttx-update

Documentation: migrate qemu-armv7a/README.txt to rst

Migrate qemu-armv7a/README.txt to rst.
Also add some notes about PCI support for this board
This commit is contained in:
raiden00pl 2024-11-14 10:44:07 +01:00 committed by Xiang Xiao
parent 656883fec5
commit 85eba56068
2 changed files with 103 additions and 93 deletions

View file

@ -1,91 +0,0 @@
README.txt
==========
This board configuration will use QEMU to emulate generic ARM v7-A series
hardware platform and provides support for these devices:
- GICv2 interrupt controllers
- ARM Generic Timer
- PL011 UART controller
Contents
========
- Getting Started
- Status
- Platform Features
- Debugging with QEMU
- FPU Support and Performance
- SMP Support
- References
Getting Started
===============
1. Configuring and running
1.1 Single Core
Configuring NuttX and compile:
$ ./tools/configure.sh -l qemu-armv7a:nsh
$ make
Running with qemu
$ qemu-system-arm -cpu cortex-a7 -nographic \
-machine virt,virtualization=off,gic-version=2 \
-net none -chardev stdio,id=con,mux=on -serial chardev:con \
-mon chardev=con,mode=readline -kernel ./nuttx
2. knsh
------
This is a configuration of testing the BUILD_KERNEL configuration
$ cd nuttx
$ ./tools/configure.sh qemu-armv7a:knsh
$ make V=1 -j7
$ make export V=1
$ cd ../apps
$ ./tools/mkimport.sh -z -x ../nuttx/nuttx-export-*.tar.gz
$ make import V=1
$ cd ../nuttx
$ qemu-system-arm -semihosting -M virt -m 1024 -nographic -kernel ./nuttx
NuttShell (NSH) NuttX-12.3.0-RC0
nsh> uname -a
NuttX 12.3.0-RC0 28dee592a3-dirty Oct 12 2023 03:03:07 arm qemu-armv7a
nsh> ps
PID GROUP PRI POLICY TYPE NPX STATE EVENT SIGMASK STACK USED FILLED COMMAND
0 0 0 FIFO Kthread N-- Ready 0000000000000000 004088 000896 21.9% Idle_Task
1 1 100 RR Kthread --- Waiting Semaphore 0000000000000000 004040 000304 7.5% lpwork 0x40119398 0x401193ac
2 2 100 RR Task --- Running 0000000000000000 003032 001032 34.0% /system/bin/init
nsh> free
total used free largest nused nfree
Kmem: 133058556 16644 133041912 133041152 41 3
Page: 134217728 1105920 133111808 133111808
nsh> /system/bin/hello
Hello, World!!
nsh>
Debugging with QEMU
===================
The nuttx ELF image can be debugged with QEMU.
1. To debug the nuttx (ELF) with symbols, make sure the following change have
applied to defconfig.
+CONFIG_DEBUG_SYMBOLS=y
2. Run QEMU(at shell terminal 1)
Single Core
$ qemu-system-arm -cpu cortex-a7 -nographic \
-machine virt,virtualization=off,gic-version=2 \
-net none -chardev stdio,id=con,mux=on -serial chardev:con \
-mon chardev=con,mode=readline -kernel ./nuttx -S -s
3. Run gdb with TUI, connect to QEMU, load nuttx and continue (at shell terminal 2)
$ arm-none-eabi-gdb -tui --eval-command='target remote localhost:1234' nuttx
(gdb) c
Continuing.
^C
Program received signal SIGINT, Interrupt.
nx_start () at armv7-a/arm_head.S:209
(gdb)

View file

@ -2,6 +2,107 @@
qemu-armv7a
===========
.. include:: README.txt
:literal:
This board configuration will use QEMU to emulate generic ARM v7-A series
hardware platform and provides support for these devices:
* GICv2 interrupt controllers
* ARM Generic Timer
* PL011 UART controller
* PCI ECAM
* VirtIO Device
Getting Started
===============
NSH (Single Core)
-----------------
Configuring NuttX and compile::
$ ./tools/configure.sh -l qemu-armv7a:nsh
$ make
Running with qemu::
$ qemu-system-arm -cpu cortex-a7 -nographic \
-machine virt,virtualization=off,gic-version=2 \
-net none -chardev stdio,id=con,mux=on -serial chardev:con \
-mon chardev=con,mode=readline -kernel ./nuttx
KNSH (Single Core)
------------------
This is a configuration of testing the BUILD_KERNEL configuration::
$ cd nuttx
$ ./tools/configure.sh qemu-armv7a:knsh
$ make V=1 -j7
$ make export V=1
$ cd ../apps
$ ./tools/mkimport.sh -z -x ../nuttx/nuttx-export-*.tar.gz
$ make import V=1
$ cd ../nuttx
$ qemu-system-arm -semihosting -M virt -m 1024 -nographic -kernel ./nuttx
NuttShell (NSH) NuttX-12.3.0-RC0
nsh> uname -a
NuttX 12.3.0-RC0 28dee592a3-dirty Oct 12 2023 03:03:07 arm qemu-armv7a
nsh> ps
PID GROUP PRI POLICY TYPE NPX STATE EVENT SIGMASK STACK USED FILLED COMMAND
0 0 0 FIFO Kthread N-- Ready 0000000000000000 004088 000896 21.9% Idle_Task
1 1 100 RR Kthread --- Waiting Semaphore 0000000000000000 004040 000304 7.5% lpwork 0x40119398 0x401193ac
2 2 100 RR Task --- Running 0000000000000000 003032 001032 34.0% /system/bin/init
nsh> free
total used free largest nused nfree
Kmem: 133058556 16644 133041912 133041152 41 3
Page: 134217728 1105920 133111808 133111808
nsh> /system/bin/hello
Hello, World!!
nsh>
Debugging with QEMU
===================
The nuttx ELF image can be debugged with QEMU.
1. To debug the nuttx (ELF) with symbols, make sure the following change have
applied to defconfig::
+CONFIG_DEBUG_SYMBOLS=y
2. Run QEMU (Single Core) at shell terminal 1::
$ qemu-system-arm -cpu cortex-a7 -nographic \
-machine virt,virtualization=off,gic-version=2 \
-net none -chardev stdio,id=con,mux=on -serial chardev:con \
-mon chardev=con,mode=readline -kernel ./nuttx -S -s
3. Run gdb with TUI, connect to QEMU, load nuttx and continue (at shell terminal 2)::
$ arm-none-eabi-gdb -tui --eval-command='target remote localhost:1234' nuttx
(gdb) c
Continuing.
^C
Program received signal SIGINT, Interrupt.
nx_start () at armv7-a/arm_head.S:209
(gdb)
PCI support
===========
To enable PCI support, set the following options::
CONFIG_DEVICE_TREE=y
CONFIG_PCI=y
CONFIG_PCI=y
Then run qemu with::
-machine virt,highmem=off,virtualization=off,gic-version=2
The command that starts QEMU and enables the QEMU EDU device looks like this::
qemu-system-arm -cpu cortex-a7 -nographic \
-machine virt,highmem=off,virtualization=off,gic-version=2 \
-chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline \
-kernel nuttx -device edu