411 lines
29 KiB
HTML
411 lines
29 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" data-content_root="../../">
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Orange Pi PC (orangepi-pc) — QEMU Debian 1:8.2.2+ds-0ubuntu1.11 documentation</title>
|
||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=86f27845" />
|
||
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=08e6c168" />
|
||
|
||
|
||
<link rel="shortcut icon" href="../../_static/qemu_32x32.png"/>
|
||
|
||
<script src="../../_static/jquery.js?v=8dae8fb0"></script>
|
||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||
<script src="../../_static/documentation_options.js?v=802af9f6"></script>
|
||
<script src="../../_static/doctools.js?v=888ff710"></script>
|
||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||
<script src="../../_static/custom.js?v=2ab9f71d"></script>
|
||
<script src="../../_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="../../genindex.html" />
|
||
<link rel="search" title="Search" href="../../search.html" />
|
||
<link rel="next" title="Palm Tungsten|E PDA (cheetah)" href="palm.html" />
|
||
<link rel="prev" title="NXP i.MX25 PDK board (imx25-pdk)" href="imx25-pdk.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" style="background: #802400" >
|
||
|
||
|
||
|
||
<a href="../../index.html" class="icon icon-home">
|
||
QEMU
|
||
<img src="../../_static/qemu_128x128.png" class="logo" alt="Logo"/>
|
||
</a>
|
||
<div class="version">
|
||
8.2.2
|
||
</div>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="../../about/index.html">About QEMU</a></li>
|
||
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">System Emulation</a><ul class="current">
|
||
<li class="toctree-l2"><a class="reference internal" href="../introduction.html">Introduction</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../invocation.html">Invocation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../device-emulation.html">Device Emulation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../keys.html">Keys in the graphical frontends</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../mux-chardev.html">Keys in the character backend multiplexer</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../monitor.html">QEMU Monitor</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../images.html">Disk Images</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../virtio-net-failover.html">QEMU virtio-net standby (net_failover)</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../linuxboot.html">Direct Linux Boot</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../generic-loader.html">Generic Loader</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../guest-loader.html">Guest Loader</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../barrier.html">QEMU Barrier Client</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../vnc-security.html">VNC security</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tls.html">TLS setup for network services</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../secrets.html">Providing secret data to QEMU</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../authz.html">Client authorization</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../gdb.html">GDB usage</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../replay.html">Record/replay</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../managed-startup.html">Managed start up options</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../bootindex.html">Managing device boot order with bootindex properties</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cpu-hotplug.html">Virtual CPU hotplug</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../pr-manager.html">Persistent reservation managers</a></li>
|
||
<li class="toctree-l2 current"><a class="reference internal" href="../targets.html">QEMU System Emulator Targets</a><ul class="current">
|
||
<li class="toctree-l3 current"><a class="reference internal" href="../target-arm.html">Arm System emulator</a><ul class="current">
|
||
<li class="toctree-l4"><a class="reference internal" href="../target-arm.html#choosing-a-board-model">Choosing a board model</a></li>
|
||
<li class="toctree-l4 current"><a class="reference internal" href="../target-arm.html#board-specific-documentation">Board-specific documentation</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../target-arm.html#emulated-cpu-architecture-support">Emulated CPU architecture support</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../target-arm.html#arm-cpu-features">Arm CPU features</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-avr.html">AVR System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-m68k.html">ColdFire System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-mips.html">MIPS System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-ppc.html">PowerPC System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-openrisc.html">OpenRISC System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-riscv.html">RISC-V System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-rx.html">RX System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-s390x.html">s390x System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-sparc.html">Sparc32 System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-sparc64.html">Sparc64 System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-i386.html">x86 System emulator</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../target-xtensa.html">Xtensa System emulator</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../security.html">Security</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../multi-process.html">Multi-process QEMU</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../confidential-guest-support.html">Confidential Guest Support</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../vm-templating.html">QEMU VM templating</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../user/index.html">User Mode Emulation</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Tools</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../interop/index.html">System Emulation Management and Interoperability</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../specs/index.html">System Emulation Guest Hardware Specifications</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../devel/index.html">Developer Information</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #802400" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../../index.html">QEMU</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
<li class="breadcrumb-item"><a href="../index.html">System Emulation</a></li>
|
||
<li class="breadcrumb-item"><a href="../targets.html">QEMU System Emulator Targets</a></li>
|
||
<li class="breadcrumb-item"><a href="../target-arm.html">Arm System emulator</a></li>
|
||
<li class="breadcrumb-item active">Orange Pi PC (<code class="docutils literal notranslate"><span class="pre">orangepi-pc</span></code>)</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="https://gitlab.com/qemu-project/qemu/blob/master/docs/system/arm/orangepi.rst" class="fa fa-gitlab"> Edit on GitLab</a>
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="orange-pi-pc-orangepi-pc">
|
||
<h1>Orange Pi PC (<code class="docutils literal notranslate"><span class="pre">orangepi-pc</span></code>)<a class="headerlink" href="#orange-pi-pc-orangepi-pc" title="Link to this heading"></a></h1>
|
||
<p>The Xunlong Orange Pi PC is an Allwinner H3 System on Chip
|
||
based embedded computer with mainline support in both U-Boot
|
||
and Linux. The board comes with a Quad Core Cortex-A7 @ 1.3GHz,
|
||
1GiB RAM, 100Mbit ethernet, USB, SD/MMC, USB, HDMI and
|
||
various other I/O.</p>
|
||
<section id="supported-devices">
|
||
<h2>Supported devices<a class="headerlink" href="#supported-devices" title="Link to this heading"></a></h2>
|
||
<p>The Orange Pi PC machine supports the following devices:</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>SMP (Quad Core Cortex-A7)</p></li>
|
||
<li><p>Generic Interrupt Controller configuration</p></li>
|
||
<li><p>SRAM mappings</p></li>
|
||
<li><p>SDRAM controller</p></li>
|
||
<li><p>Real Time Clock</p></li>
|
||
<li><p>Timer device (re-used from Allwinner A10)</p></li>
|
||
<li><p>UART</p></li>
|
||
<li><p>SD/MMC storage controller</p></li>
|
||
<li><p>EMAC ethernet</p></li>
|
||
<li><p>USB 2.0 interfaces</p></li>
|
||
<li><p>Clock Control Unit</p></li>
|
||
<li><p>System Control module</p></li>
|
||
<li><p>Security Identifier device</p></li>
|
||
<li><p>TWI (I2C)</p></li>
|
||
<li><p>Watchdog timer</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</section>
|
||
<section id="limitations">
|
||
<h2>Limitations<a class="headerlink" href="#limitations" title="Link to this heading"></a></h2>
|
||
<p>Currently, Orange Pi PC does <em>not</em> support the following features:</p>
|
||
<ul class="simple">
|
||
<li><p>Graphical output via HDMI, GPU and/or the Display Engine</p></li>
|
||
<li><p>Audio output</p></li>
|
||
<li><p>Hardware Watchdog</p></li>
|
||
</ul>
|
||
<p>Also see the ‘unimplemented’ array in the Allwinner H3 SoC module
|
||
for a complete list of unimplemented I/O devices: <code class="docutils literal notranslate"><span class="pre">./hw/arm/allwinner-h3.c</span></code></p>
|
||
</section>
|
||
<section id="boot-options">
|
||
<h2>Boot options<a class="headerlink" href="#boot-options" title="Link to this heading"></a></h2>
|
||
<p>The Orange Pi PC machine can start using the standard -kernel functionality
|
||
for loading a Linux kernel or ELF executable. Additionally, the Orange Pi PC
|
||
machine can also emulate the BootROM which is present on an actual Allwinner H3
|
||
based SoC, which loads the bootloader from a SD card, specified via the -sd argument
|
||
to qemu-system-arm.</p>
|
||
</section>
|
||
<section id="machine-specific-options">
|
||
<h2>Machine-specific options<a class="headerlink" href="#machine-specific-options" title="Link to this heading"></a></h2>
|
||
<p>The following machine-specific options are supported:</p>
|
||
<ul>
|
||
<li><p>allwinner-rtc.base-year=YYYY</p>
|
||
<p>The Allwinner RTC device is automatically created by the Orange Pi PC machine
|
||
and uses a default base year value which can be overridden using the ‘base-year’ property.
|
||
The base year is the actual represented year when the RTC year value is zero.
|
||
This option can be used in case the target operating system driver uses a different
|
||
base year value. The minimum value for the base year is 1900.</p>
|
||
</li>
|
||
<li><p>allwinner-sid.identifier=abcd1122-a000-b000-c000-12345678ffff</p>
|
||
<p>The Security Identifier value can be read by the guest.
|
||
For example, U-Boot uses it to determine a unique MAC address.</p>
|
||
</li>
|
||
</ul>
|
||
<p>The above machine-specific options can be specified in qemu-system-arm
|
||
via the ‘-global’ argument, for example:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>qemu-system-arm<span class="w"> </span>-M<span class="w"> </span>orangepi-pc<span class="w"> </span>-sd<span class="w"> </span>mycard.img<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-global<span class="w"> </span>allwinner-rtc.base-year<span class="o">=</span><span class="m">2000</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="running-mainline-linux">
|
||
<h2>Running mainline Linux<a class="headerlink" href="#running-mainline-linux" title="Link to this heading"></a></h2>
|
||
<p>Mainline Linux kernels from 4.19 up to latest master are known to work.
|
||
To build a Linux mainline kernel that can be booted by the Orange Pi PC machine,
|
||
simply configure the kernel using the sunxi_defconfig configuration:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span><span class="nv">ARCH</span><span class="o">=</span>arm<span class="w"> </span><span class="nv">CROSS_COMPILE</span><span class="o">=</span>arm-linux-gnueabi-<span class="w"> </span>make<span class="w"> </span>mrproper
|
||
$<span class="w"> </span><span class="nv">ARCH</span><span class="o">=</span>arm<span class="w"> </span><span class="nv">CROSS_COMPILE</span><span class="o">=</span>arm-linux-gnueabi-<span class="w"> </span>make<span class="w"> </span>sunxi_defconfig
|
||
</pre></div>
|
||
</div>
|
||
<p>To be able to use USB storage, you need to manually enable the corresponding
|
||
configuration item. Start the kconfig configuration tool:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span><span class="nv">ARCH</span><span class="o">=</span>arm<span class="w"> </span><span class="nv">CROSS_COMPILE</span><span class="o">=</span>arm-linux-gnueabi-<span class="w"> </span>make<span class="w"> </span>menuconfig
|
||
</pre></div>
|
||
</div>
|
||
<p>Navigate to the following item, enable it and save your configuration:</p>
|
||
<blockquote>
|
||
<div><p>Device Drivers > USB support > USB Mass Storage support</p>
|
||
</div></blockquote>
|
||
<p>Build the Linux kernel with:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span><span class="nv">ARCH</span><span class="o">=</span>arm<span class="w"> </span><span class="nv">CROSS_COMPILE</span><span class="o">=</span>arm-linux-gnueabi-<span class="w"> </span>make
|
||
</pre></div>
|
||
</div>
|
||
<p>To boot the newly build linux kernel in QEMU with the Orange Pi PC machine, use:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>qemu-system-arm<span class="w"> </span>-M<span class="w"> </span>orangepi-pc<span class="w"> </span>-nic<span class="w"> </span>user<span class="w"> </span>-nographic<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-kernel<span class="w"> </span>/path/to/linux/arch/arm/boot/zImage<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-append<span class="w"> </span><span class="s1">'console=ttyS0,115200'</span><span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-dtb<span class="w"> </span>/path/to/linux/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="orange-pi-pc-images">
|
||
<h2>Orange Pi PC images<a class="headerlink" href="#orange-pi-pc-images" title="Link to this heading"></a></h2>
|
||
<p>Note that the mainline kernel does not have a root filesystem. You may provide it
|
||
with an official Orange Pi PC image from the official website:</p>
|
||
<blockquote>
|
||
<div><p><a class="reference external" href="http://www.orangepi.org/downloadresources/">http://www.orangepi.org/downloadresources/</a></p>
|
||
</div></blockquote>
|
||
<p>Another possibility is to run an Armbian image for Orange Pi PC which
|
||
can be downloaded from:</p>
|
||
<blockquote>
|
||
<div><p><a class="reference external" href="https://www.armbian.com/orange-pi-pc/">https://www.armbian.com/orange-pi-pc/</a></p>
|
||
</div></blockquote>
|
||
<p>Alternatively, you can also choose to build you own image with buildroot
|
||
using the orangepi_pc_defconfig. Also see <a class="reference external" href="https://buildroot.org">https://buildroot.org</a> for more information.</p>
|
||
<p>When using an image as an SD card, it must be resized to a power of two. This can be
|
||
done with the <code class="docutils literal notranslate"><span class="pre">qemu-img</span></code> command. It is recommended to only increase the image size
|
||
instead of shrinking it to a power of two, to avoid loss of data. For example,
|
||
to prepare a downloaded Armbian image, first extract it and then increase
|
||
its size to one gigabyte as follows:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>qemu-img<span class="w"> </span>resize<span class="w"> </span>Armbian_19.11.3_Orangepipc_bionic_current_5.3.9.img<span class="w"> </span>1G
|
||
</pre></div>
|
||
</div>
|
||
<p>You can choose to attach the selected image either as an SD card or as USB mass storage.
|
||
For example, to boot using the Orange Pi PC Debian image on SD card, simply add the -sd
|
||
argument and provide the proper root= kernel parameter:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>qemu-system-arm<span class="w"> </span>-M<span class="w"> </span>orangepi-pc<span class="w"> </span>-nic<span class="w"> </span>user<span class="w"> </span>-nographic<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-kernel<span class="w"> </span>/path/to/linux/arch/arm/boot/zImage<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-append<span class="w"> </span><span class="s1">'console=ttyS0,115200 root=/dev/mmcblk0p2'</span><span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-dtb<span class="w"> </span>/path/to/linux/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-sd<span class="w"> </span>OrangePi_pc_debian_stretch_server_linux5.3.5_v1.0.img
|
||
</pre></div>
|
||
</div>
|
||
<p>To attach the image as an USB mass storage device to the machine,
|
||
simply append to the command:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>-drive<span class="w"> </span><span class="k">if</span><span class="o">=</span>none,id<span class="o">=</span>stick,file<span class="o">=</span>myimage.img<span class="w"> </span><span class="se">\</span>
|
||
-device<span class="w"> </span>usb-storage,bus<span class="o">=</span>usb-bus.0,drive<span class="o">=</span>stick
|
||
</pre></div>
|
||
</div>
|
||
<p>Instead of providing a custom Linux kernel via the -kernel command you may also
|
||
choose to let the Orange Pi PC machine load the bootloader from SD card, just like
|
||
a real board would do using the BootROM. Simply pass the selected image via the -sd
|
||
argument and remove the -kernel, -append, -dbt and -initrd arguments:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>qemu-system-arm<span class="w"> </span>-M<span class="w"> </span>orangepi-pc<span class="w"> </span>-nic<span class="w"> </span>user<span class="w"> </span>-nographic<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-sd<span class="w"> </span>Armbian_19.11.3_Orangepipc_buster_current_5.3.9.img
|
||
</pre></div>
|
||
</div>
|
||
<p>Note that both the official Orange Pi PC images and Armbian images start
|
||
a lot of userland programs via systemd. Depending on the host hardware and OS,
|
||
they may be slow to emulate, especially due to emulating the 4 cores.
|
||
To help reduce the performance slow down due to emulating the 4 cores, you can
|
||
give the following kernel parameters via U-Boot (or via -append):</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="o">=</span>><span class="w"> </span>setenv<span class="w"> </span>extraargs<span class="w"> </span><span class="s1">'systemd.default_timeout_start_sec=9000 loglevel=7 nosmp console=ttyS0,115200'</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="running-u-boot">
|
||
<h2>Running U-Boot<a class="headerlink" href="#running-u-boot" title="Link to this heading"></a></h2>
|
||
<p>U-Boot mainline can be build and configured using the orangepi_pc_defconfig
|
||
using similar commands as describe above for Linux. Note that it is recommended
|
||
for development/testing to select the following configuration setting in U-Boot:</p>
|
||
<blockquote>
|
||
<div><p>Device Tree Control > Provider for DTB for DT Control > Embedded DTB</p>
|
||
</div></blockquote>
|
||
<p>To start U-Boot using the Orange Pi PC machine, provide the
|
||
u-boot binary to the -kernel argument:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>qemu-system-arm<span class="w"> </span>-M<span class="w"> </span>orangepi-pc<span class="w"> </span>-nic<span class="w"> </span>user<span class="w"> </span>-nographic<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-kernel<span class="w"> </span>/path/to/uboot/u-boot<span class="w"> </span>-sd<span class="w"> </span>disk.img
|
||
</pre></div>
|
||
</div>
|
||
<p>Use the following U-boot commands to load and boot a Linux kernel from SD card:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="o">=</span>><span class="w"> </span>setenv<span class="w"> </span>bootargs<span class="w"> </span><span class="nv">console</span><span class="o">=</span>ttyS0,115200
|
||
<span class="o">=</span>><span class="w"> </span>ext2load<span class="w"> </span>mmc<span class="w"> </span><span class="m">0</span><span class="w"> </span>0x42000000<span class="w"> </span><span class="nv">zImage</span>
|
||
<span class="o">=</span>><span class="w"> </span>ext2load<span class="w"> </span>mmc<span class="w"> </span><span class="m">0</span><span class="w"> </span>0x43000000<span class="w"> </span>sun8i-h3-orangepi-pc.dtb
|
||
<span class="o">=</span>><span class="w"> </span>bootz<span class="w"> </span>0x42000000<span class="w"> </span>-<span class="w"> </span>0x43000000
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="running-netbsd">
|
||
<h2>Running NetBSD<a class="headerlink" href="#running-netbsd" title="Link to this heading"></a></h2>
|
||
<p>The NetBSD operating system also includes support for Allwinner H3 based boards,
|
||
including the Orange Pi PC. NetBSD 9.0 is known to work best for the Orange Pi PC
|
||
board and provides a fully working system with serial console, networking and storage.
|
||
For the Orange Pi PC machine, get the ‘evbarm-earmv7hf’ based image from:</p>
|
||
<blockquote>
|
||
<div><p><a class="reference external" href="https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.0/evbarm-earmv7hf/binary/gzimg/armv7.img.gz">https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.0/evbarm-earmv7hf/binary/gzimg/armv7.img.gz</a></p>
|
||
</div></blockquote>
|
||
<p>The image requires manually installing U-Boot in the image. Build U-Boot with
|
||
the orangepi_pc_defconfig configuration as described in the previous section.
|
||
Next, unzip the NetBSD image and write the U-Boot binary including SPL using:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>gunzip<span class="w"> </span>armv7.img.gz
|
||
$<span class="w"> </span>dd<span class="w"> </span><span class="k">if</span><span class="o">=</span>/path/to/u-boot-sunxi-with-spl.bin<span class="w"> </span><span class="nv">of</span><span class="o">=</span>armv7.img<span class="w"> </span><span class="nv">bs</span><span class="o">=</span><span class="m">1024</span><span class="w"> </span><span class="nv">seek</span><span class="o">=</span><span class="m">8</span><span class="w"> </span><span class="nv">conv</span><span class="o">=</span>notrunc
|
||
</pre></div>
|
||
</div>
|
||
<p>Finally, before starting the machine the SD image must be extended such
|
||
that the size of the SD image is a power of two and that the NetBSD kernel
|
||
will not conclude the NetBSD partition is larger than the emulated SD card:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>qemu-img<span class="w"> </span>resize<span class="w"> </span>armv7.img<span class="w"> </span>2G
|
||
</pre></div>
|
||
</div>
|
||
<p>Start the machine using the following command:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>qemu-system-arm<span class="w"> </span>-M<span class="w"> </span>orangepi-pc<span class="w"> </span>-nic<span class="w"> </span>user<span class="w"> </span>-nographic<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-sd<span class="w"> </span>armv7.img<span class="w"> </span>-global<span class="w"> </span>allwinner-rtc.base-year<span class="o">=</span><span class="m">2000</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>At the U-Boot stage, interrupt the automatic boot process by pressing a key
|
||
and set the following environment variables before booting:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="o">=</span>><span class="w"> </span>setenv<span class="w"> </span>bootargs<span class="w"> </span><span class="nv">root</span><span class="o">=</span><span class="nv">ld0a</span>
|
||
<span class="o">=</span>><span class="w"> </span>setenv<span class="w"> </span>kernel<span class="w"> </span>netbsd-GENERIC.ub
|
||
<span class="o">=</span>><span class="w"> </span>setenv<span class="w"> </span>fdtfile<span class="w"> </span>dtb/sun8i-h3-orangepi-pc.dtb
|
||
<span class="o">=</span>><span class="w"> </span>setenv<span class="w"> </span>bootcmd<span class="w"> </span><span class="s1">'fatload mmc 0:1 ${kernel_addr_r} ${kernel}; fatload mmc 0:1 ${fdt_addr_r} ${fdtfile}; fdt addr ${fdt_addr_r}; bootm ${kernel_addr_r} - ${fdt_addr_r}'</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Optionally you may save the environment variables to SD card with ‘saveenv’.
|
||
To continue booting simply give the ‘boot’ command and NetBSD boots.</p>
|
||
</section>
|
||
<section id="orange-pi-pc-integration-tests">
|
||
<h2>Orange Pi PC integration tests<a class="headerlink" href="#orange-pi-pc-integration-tests" title="Link to this heading"></a></h2>
|
||
<p>The Orange Pi PC machine has several integration tests included.
|
||
To run the whole set of tests, build QEMU from source and simply
|
||
provide the following command:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span><span class="nv">AVOCADO_ALLOW_LARGE_STORAGE</span><span class="o">=</span>yes<span class="w"> </span>avocado<span class="w"> </span>--show<span class="o">=</span>app,console<span class="w"> </span>run<span class="w"> </span><span class="se">\</span>
|
||
<span class="w"> </span>-t<span class="w"> </span>machine:orangepi-pc<span class="w"> </span>tests/avocado/boot_linux_console.py
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="imx25-pdk.html" class="btn btn-neutral float-left" title="NXP i.MX25 PDK board (imx25-pdk)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="palm.html" class="btn btn-neutral float-right" title="Palm Tungsten|E PDA (cheetah)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2025, The QEMU Project Developers.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
<!-- Empty para to force a blank line after "Built with Sphinx ..." -->
|
||
<p></p>
|
||
|
||
<p>This documentation is for QEMU version 8.2.2.</p>
|
||
|
||
|
||
<p><a href="../../about/license.html">QEMU and this manual are released under the
|
||
GNU General Public License, version 2.</a></p>
|
||
|
||
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |