mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 03:45:50 +08:00
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:
@@ -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)
|
|
||||||
|
|
||||||
@@ -2,6 +2,107 @@
|
|||||||
qemu-armv7a
|
qemu-armv7a
|
||||||
===========
|
===========
|
||||||
|
|
||||||
.. include:: README.txt
|
This board configuration will use QEMU to emulate generic ARM v7-A series
|
||||||
:literal:
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user