doc: Update sample app

- Minor editorial changes
- Improve image quality

Signed-off-by: Reyes, Amy <amy.reyes@intel.com>
This commit is contained in:
Reyes, Amy 2022-09-20 13:13:34 -07:00 committed by Amy Reyes
parent 6a430de814
commit c6cbd6b6df
3 changed files with 67 additions and 67 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -39,9 +39,9 @@ optimization in this sample to get the best RT performance.
Prerequisites Environment and Images Prerequisites Environment and Images
************************************ ************************************
Before beginning, use the ``df`` command on your development system and Before beginning, use the ``df`` command on your development computer and
verify there's at least 30GB free disk space for building the ACRN verify there's at least 30GB free disk space for building the ACRN
Sample application. You may see a different Filesystem name and sizes: sample application. You may see a different Filesystem name and sizes:
.. code-block:: console .. code-block:: console
@ -53,7 +53,7 @@ Sample application. You may see a different Filesystem name and sizes:
.. rst-class:: numbered-step .. rst-class:: numbered-step
Prepare the ACRN Development and Target environment Prepare the ACRN Development and Target Environment
*************************************************** ***************************************************
.. important:: .. important::
@ -66,9 +66,9 @@ development and target systems that we'll also use to build and run this sample
application. application.
After following the Getting Started Guide, you'll have a directory After following the Getting Started Guide, you'll have a directory
``~/acrn-work`` on your development system containing directories with the ``~/acrn-work`` on your development computer containing directories with the
``acrn-hypervisor`` and ``acrn-kernel`` source code and build output. You'll ``acrn-hypervisor`` and ``acrn-kernel`` source code and build output. You'll
also have the board XML file that's needed by the ACRN configurator to also have the board XML file that's needed by the ACRN Configurator to
configure the ACRN hypervisor and set up the VM launch scripts for this sample configure the ACRN hypervisor and set up the VM launch scripts for this sample
application. application.
@ -97,21 +97,21 @@ Multiboot2 choice created when following the Getting Started Guide).
Make the Sample Application Make the Sample Application
*************************** ***************************
On your development system, build the applications used by the sample. The On your development computer, build the applications used by the sample. The
``rtApp`` app in the RT VM reads the output from the cyclictest program and ``rtApp`` app in the RT VM reads the output from the cyclictest program and
sends it via inter-VM shared memory (IVSHMEM) to another regular HMI VM where sends it via inter-VM shared memory (IVSHMEM) to another regular HMI VM where
the ``userApp`` app receives the data and formats it for presentation using the the ``userApp`` app receives the data and formats it for presentation using the
``histapp.py`` Python app. ``histapp.py`` Python app.
As a normal (e.g., **acrn**) user follow these steps: As a normal (e.g., **acrn**) user, follow these steps:
1. Install some additional packages in your development system used for 1. Install some additional packages in your development computer used for
building the sample application:: building the sample application::
sudo apt install -y cloud-guest-utils schroot kpartx qemu-kvm sudo apt install -y cloud-guest-utils schroot kpartx qemu-kvm
#. Checkout the acrn-hypervisor source code branch (already cloned from the #. Check out the ``acrn-hypervisor`` source code branch (already cloned from the
acrn-hypervisor repo when you followed the :ref:`gsg`). We've tagged a ``acrn-hypervisor`` repo when you followed the :ref:`gsg`). We've tagged a
specific version of the hypervisor you should use for the sample app's HMI specific version of the hypervisor you should use for the sample app's HMI
VM:: VM::
@ -129,7 +129,7 @@ As a normal (e.g., **acrn**) user follow these steps:
.. rst-class:: numbered-step .. rst-class:: numbered-step
Make the HMI_VM image Make the HMI_VM Image
********************* *********************
1. Make the HMI VM image. This script runs for about 10 minutes total and will 1. Make the HMI VM image. This script runs for about 10 minutes total and will
@ -139,7 +139,7 @@ Make the HMI_VM image
cd ~/acrn-work/acrn-hypervisor/misc/sample_application/image_builder cd ~/acrn-work/acrn-hypervisor/misc/sample_application/image_builder
./create_image.sh hmi-vm ./create_image.sh hmi-vm
After the script is finished the ``hmi_vm.img`` image file is created in the After the script is finished, the ``hmi_vm.img`` image file is created in the
``build`` directory. You should see a final message from the script that ``build`` directory. You should see a final message from the script that
looks like this: looks like this:
@ -149,7 +149,7 @@ Make the HMI_VM image
If you don't see such a message, look back through the output to see what If you don't see such a message, look back through the output to see what
errors are indicated. For example, there could have been a network error errors are indicated. For example, there could have been a network error
while retrieving packages from the internet. In such a case, simply trying while retrieving packages from the Internet. In such a case, simply trying
the ``create_image.sh`` command again might work. the ``create_image.sh`` command again might work.
The HMI VM image is a configured Ubuntu desktop image The HMI VM image is a configured Ubuntu desktop image
@ -161,10 +161,10 @@ Make the HMI_VM image
Make the RT_VM image Make the RT_VM image
********************* *********************
1. Checkout the acrn-kernel source code branch (already cloned from the 1. Check out the ``acrn-kernel`` source code branch (already cloned from the
acrn-kernel repo when you followed the :ref:`gsg`). We've tagged a ``acrn-kernel`` repo when you followed the :ref:`gsg`). We've tagged a
specific version of the acrn-kernel you should use for the sample app's RT specific version of the ``acrn-kernel`` you should use for the sample app's
VM:: RT VM::
cd ~/acrn-work/acrn-kernel cd ~/acrn-work/acrn-kernel
git fetch --all git fetch --all
@ -200,7 +200,7 @@ Make the RT_VM image
cd ~/acrn-work/acrn-hypervisor/misc/sample_application/image_builder cd ~/acrn-work/acrn-hypervisor/misc/sample_application/image_builder
./create_image.sh rt-vm ./create_image.sh rt-vm
After the script is finished the ``rt_vm.img`` image file is created in the ``build`` After the script is finished, the ``rt_vm.img`` image file is created in the ``build``
directory. The RT VM image is a configured Ubuntu image with a directory. The RT VM image is a configured Ubuntu image with a
preempt-rt patched kernel used for real-time VMs. preempt-rt patched kernel used for real-time VMs.
@ -212,18 +212,18 @@ Create and Configure the ACRN Scenario
Now we turn to building the hypervisor based on the board and scenario Now we turn to building the hypervisor based on the board and scenario
configuration for our sample application. We'll use the board XML file configuration for our sample application. We'll use the board XML file
and ACRN configurator already on your development system when you followed and ACRN Configurator already on your development computer when you followed
:ref:`gsg`. the :ref:`gsg`.
Use the ACRN configurator to define a new scenario for our two VMs Use the ACRN Configurator to define a new scenario for our two VMs
and generate new launch scripts for this Sample Application. and generate new launch scripts for this sample application.
1. On your development computer, Launch the ACRN Configurator:: 1. On your development computer, launch the ACRN Configurator::
cd ~/acrn-work cd ~/acrn-work
acrn-configurator acrn-configurator
#. Under Start a new configuration, confirm that the working folder is #. Under **Start a new configuration**, confirm that the working folder is
``/home/acrn/acrn-work/MyConfiguration``. Click **Use This Folder**. (If ``/home/acrn/acrn-work/MyConfiguration``. Click **Use This Folder**. (If
prompted, confirm it's **OK** to overwrite an existing configuration.) prompted, confirm it's **OK** to overwrite an existing configuration.)
@ -234,7 +234,7 @@ and generate new launch scripts for this Sample Application.
#. Import your board configuration file as follows: #. Import your board configuration file as follows:
a. In the **1. Import a board configuration file** panel and click **Browse a. In the **1. Import a board configuration file** panel, click **Browse
for file**. for file**.
#. Browse to ``/home/acrn/acrn-work/my_board.xml`` and click **Open**. #. Browse to ``/home/acrn/acrn-work/my_board.xml`` and click **Open**.
@ -252,10 +252,10 @@ and generate new launch scripts for this Sample Application.
:class: drop-shadow :class: drop-shadow
:align: center :align: center
The configurator will report some problems with the initial scenario The ACRN Configurator will report some problems with the initial scenario
configuration that we'll resolve as we make updates. (Notice the error configuration that we'll resolve as we make updates. (Notice the error
indicators on the settings tabs and above the parameters tabs.) The indicators on the settings tabs and above the parameters tabs.) The
configurator does a verification of the scenario when you open a saved ACRN Configurator does a verification of the scenario when you open a saved
scenario and when you click on the **Save Scenario And Launch Scripts** scenario and when you click on the **Save Scenario And Launch Scripts**
button. button.
@ -298,8 +298,8 @@ and generate new launch scripts for this Sample Application.
:align: center :align: center
#. Configure the HMI_VM **virtio block device**. Add the absolute path of your #. Configure the HMI_VM **virtio block device**. Add the absolute path of your
``hmi_vim.img`` on the target system. (We'll copy the generated ``hmi_vm.img`` to ``hmi_vm.img`` on the target system (we'll copy the generated ``hmi_vm.img``
this directory in a later step): to this directory in a later step):
.. image:: images/samp-image009.png .. image:: images/samp-image009.png
:class: drop-shadow :class: drop-shadow
@ -307,7 +307,7 @@ and generate new launch scripts for this Sample Application.
That completes the HMI_VM settings. That completes the HMI_VM settings.
#. Next, Select the VM2 tab and change the **VM name** to RT_VM, change the #. Next, select the VM2 tab and change the **VM name** to RT_VM, change the
**VM type** to ``Real-time``, set the **Console virtual UART type** to ``COM port 1``, **VM type** to ``Real-time``, set the **Console virtual UART type** to ``COM port 1``,
set the **memory size** to ``1024``, set **pCPU affinity** to IDs ``2`` and ``3``, and set the **memory size** to ``1024``, set **pCPU affinity** to IDs ``2`` and ``3``, and
check the **Real-time vCPU box** for pCPU ID 2, as shown below: check the **Real-time vCPU box** for pCPU ID 2, as shown below:
@ -316,14 +316,14 @@ and generate new launch scripts for this Sample Application.
:class: drop-shadow :class: drop-shadow
:align: center :align: center
#. Config the **virtio console device** for RT_VM (unlike the HMI_VM, we don't use a **virtio #. Configure the **virtio console device** for the RT_VM (unlike the HMI_VM, we
network device** for this RT_VM): don't use a **virtio network device** for this RT_VM):
.. image:: images/samp-image011.png .. image:: images/samp-image011.png
:align: center :align: center
:class: drop-shadow :class: drop-shadow
#. Add the absolute path of your ``rt_vm.img`` on the target board (we'll copy #. Add the absolute path of your ``rt_vm.img`` on the target system (we'll copy
the ``rt_vm.img`` file we generated earlier to this directory in a later the ``rt_vm.img`` file we generated earlier to this directory in a later
step): step):
@ -332,10 +332,10 @@ and generate new launch scripts for this Sample Application.
:align: center :align: center
#. Select the Hypervisor tab: Verify the **build type** is ``Debug``, define the #. Select the Hypervisor tab: Verify the **build type** is ``Debug``, define the
**InterVM Shared Memory region** settings as shown below, adding the **InterVM shared memory region** settings as shown below, adding the
HMI_VM and RT_VM as the VMs doing the sharing of this region. (The HMI_VM and RT_VM as the VMs doing the sharing of this region. (The
missing **Virtual BDF** values will be supplied by the configurator when you missing **Virtual BDF** values will be supplied by the ACRN Configurator
save the configuration.) when you save the configuration.)
.. image:: images/samp-image013.png .. image:: images/samp-image013.png
:class: drop-shadow :class: drop-shadow
@ -361,10 +361,10 @@ and generate new launch scripts for this Sample Application.
#. We're done configuring the sample application scenario. When you saved the #. We're done configuring the sample application scenario. When you saved the
scenario, the configurator did a re-verification of all the option settings scenario, the ACRN Configurator did a re-verification of all the option
and found no issues, so all the error indicators are now cleared. settings and found no issues, so all the error indicators are now cleared.
Exit the configurator by clicking the **X** in the top right corner). Exit the ACRN Configurator by clicking the **X** in the top right corner.
.. image:: images/samp-image015a.png .. image:: images/samp-image015a.png
:class: drop-shadow :class: drop-shadow
@ -380,12 +380,12 @@ directory:
launch_user_vm_id1.sh launch_user_vm_id2.sh scenario.xml myboard.board.xml launch_user_vm_id1.sh launch_user_vm_id2.sh scenario.xml myboard.board.xml
You'll see the two VM launch scripts (id1 for the HMI_VM, and id2 for You'll see the two VM launch scripts (id1 for the HMI_VM, and id2 for
the RT_VM) and the scenario XML file for you Sample Application (as the RT_VM) and the scenario XML file for your sample application (as
well as your board XML file). well as your board XML file).
.. rst-class:: numbered-step .. rst-class:: numbered-step
Build the ACRN Hypervisor and Service VM images Build the ACRN Hypervisor and Service VM Images
*********************************************** ***********************************************
1. On the development computer, build the ACRN hypervisor using the 1. On the development computer, build the ACRN hypervisor using the
@ -406,7 +406,7 @@ Build the ACRN Hypervisor and Service VM images
#. Build the ACRN kernel for the Service VM (the sample application #. Build the ACRN kernel for the Service VM (the sample application
requires a newer version of the Service VM than generated in the requires a newer version of the Service VM than generated in the
Getting Started Guide, so we'll need to generate it again) using a tagged Getting Started Guide, so we'll need to generate it again) using a tagged
version of the acrn-kernel:: version of the ``acrn-kernel``::
cd ~/acrn-work/acrn-kernel cd ~/acrn-work/acrn-kernel
git fetch --all git fetch --all
@ -434,19 +434,19 @@ Build the ACRN Hypervisor and Service VM images
.. rst-class:: numbered-step .. rst-class:: numbered-step
Copy files from the development system to your target system Copy Files from the Development Computer to Your Target System
************************************************************ **************************************************************
1. Copy all the files generated on the development computer to the 1. Copy all the files generated on the development computer to the
target system. This includes the sample application executable files, target system. This includes the sample application executable files,
HMI_VM and RT_VM images, Debian packages for the Service VM and HMI_VM and RT_VM images, Debian packages for the Service VM and
Hypervisor, launch scripts, and the iasl tool built following the Hypervisor, launch scripts, and the iasl tool built following the
Getting Started guide. You can use ``scp`` to copy across the local network, Getting Started Guide. You can use ``scp`` to copy across the local network,
or use a USB stick: or use a USB stick:
Option 1: use ``scp`` to copy files over the local network Option 1: use ``scp`` to copy files over the local network
Use scp to copy files from your development system to the Use ``scp`` to copy files from your development computer to the
~/acrn-work directory on the target (replace the IP address used in ``~/acrn-work`` directory on the target (replace the IP address used in
this example with the target system's IP address you found earlier):: this example with the target system's IP address you found earlier)::
cd ~/acrn-work cd ~/acrn-work
@ -523,7 +523,7 @@ Install and Run ACRN on the Target System
This will boot the ACRN hypervisor and launch the Service VM. This will boot the ACRN hypervisor and launch the Service VM.
#. Login to the service VM (using the target's keyboard and HDMI monitor) using #. Log in to the Service VM (using the target's keyboard and HDMI monitor) using
the ``acrn`` username. the ``acrn`` username.
#. Find the Service VM's IP address (the first IP address shown by this command): #. Find the Service VM's IP address (the first IP address shown by this command):
@ -533,7 +533,7 @@ Install and Run ACRN on the Target System
$ hostname -I | cut -d ' ' -f 1 $ hostname -I | cut -d ' ' -f 1
10.0.0.200 10.0.0.200
#. From your development computer, ssh to your target board's Service VM #. From your development computer, ssh to your target system's Service VM
using that IP address:: using that IP address::
ssh acrn@10.0.0.200 ssh acrn@10.0.0.200
@ -548,8 +548,8 @@ Install and Run ACRN on the Target System
prompt in your ssh session (and a graphical login on your target's HDMI prompt in your ssh session (and a graphical login on your target's HDMI
monitor). monitor).
Login to the HMI_VM as **root** user (not acrn) using your development Log in to the HMI_VM as **root** user (not **acrn**) using your development
system's ssh session: computer's ssh session:
.. code-block:: console .. code-block:: console
:emphasize-lines: 1 :emphasize-lines: 1
@ -573,20 +573,20 @@ Install and Run ACRN on the Target System
dhclient dhclient
#. Run the HMI VM Sample Application userApp (in the background):: #. Run the HMI VM sample application ``userApp`` (in the background)::
sudo /root/userApp & sudo /root/userApp &
and then the histapp.py application:: and then the ``histapp.py`` application::
sudo python3 /root/histapp.py sudo python3 /root/histapp.py
At this point, the HMI_VM is running and we've started the HMI parts of At this point, the HMI_VM is running and we've started the HMI parts of
the sample application. Next, we will launch the RT_VM and its parts of the sample application. Next, we will launch the RT_VM and its parts of
sample application. the sample application.
#. On your development system, open a new terminal window and start a #. On your development computer, open a new terminal window and start a
new ssh connection to your target board's service VM:: new ssh connection to your target system's Service VM::
ssh acrn@10.0.0.200 ssh acrn@10.0.0.200
@ -624,21 +624,21 @@ Install and Run ACRN on the Target System
Now the two parts of the sample application are running: Now the two parts of the sample application are running:
* The RT_VM is running cyclictest, which generates latency data, and the rtApp * The RT_VM is running cyclictest, which generates latency data, and the rtApp
send this data via IVSHMEM to the HMI_VM. sends this data via IVSHMEM to the HMI_VM.
* In the HMI_VM, the userApp receives the cyclictest data and provides it to the * In the HMI_VM, the userApp receives the cyclictest data and provides it to the
histapp.py Python application that is running a web server. histapp.py Python application that is running a web server.
We can view this data displayed as a histogram: We can view this data displayed as a histogram:
Option 1: Use a browser on your development system Option 1: Use a browser on your development computer
Open a web-browser on your development computer to the Open a web browser on your development computer to the
HMI_VM IP address we found in an earlier step (e.g., http://10.0.0.100). HMI_VM IP address we found in an earlier step (e.g., http://10.0.0.100).
Option 2: Use a browser on the HMI VM using the target system console Option 2: Use a browser on the HMI VM using the target system console
Log in to the HMI_VM on the target system's console. (If you want to Log in to the HMI_VM on the target system's console. (If you want to
log in as root, click on the "Not listed?" link under the username choices you log in as root, click on the "Not listed?" link under the username choices you
do see and enter the root username and password.) Open the web browser to do see and enter the root username and password.) Open the web browser to
http://localhost http://localhost.
Refresh the browser. You'll see a histogram graph showing the Refresh the browser. You'll see a histogram graph showing the
percentage of latency time intervals reported by cyclictest. The histogram will percentage of latency time intervals reported by cyclictest. The histogram will
@ -649,7 +649,7 @@ increases as reported on the vertical axis label.)
:class: drop-shadow :class: drop-shadow
:align: center :align: center
Example histogram output from cyclictest as reported by the sample app Example Histogram Output from Cyclictest as Reported by the Sample App
The horizontal axis represents the latency values in microseconds, and the The horizontal axis represents the latency values in microseconds, and the
vertical axis represents the percentage of occurrences of those values. vertical axis represents the percentage of occurrences of those values.
@ -660,7 +660,7 @@ Congratulations
That completes the building and running of this sample application. You That completes the building and running of this sample application. You
can view the application's code in the can view the application's code in the
``~/acrn-work/acrn-hypervisor/misc/sample_application`` directory on your ``~/acrn-work/acrn-hypervisor/misc/sample_application`` directory on your
development system (cloned from the acrn-hypervisor repo). development computer (cloned from the ``acrn-hypervisor`` repo).
.. note:: As mentioned at the beginning, while this sample application uses the .. note:: As mentioned at the beginning, while this sample application uses the
cyclictest to generate data about performance latency in the RT_VM, we cyclictest to generate data about performance latency in the RT_VM, we