[rtems-libbsd commit] README.md: Update to RTEMS 6

Sebastian Huber sebh at rtems.org
Wed May 25 06:05:24 UTC 2022


Module:    rtems-libbsd
Branch:    6-freebsd-12
Commit:    cf3323556d3e0f30eb57052a341356c9504b7017
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=cf3323556d3e0f30eb57052a341356c9504b7017

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu May 12 14:52:36 2022 +0200

README.md: Update to RTEMS 6

---

 README.md | 145 +++++++++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 91 insertions(+), 54 deletions(-)

diff --git a/README.md b/README.md
index 542f1fbb..6f9bebef 100644
--- a/README.md
+++ b/README.md
@@ -8,23 +8,22 @@ package is designed to be updated from the FreeBSD kernel sources and contains
 more than just the networking code.
 
 To build this package you need a current RTEMS tool set for your architecture,
-and a recent RTEMS kernel for your BSP configured with networking disabled
-built and installed. If you already have this you can skip to step 3 of the
-build procedure.
+and a recent RTEMS kernel for your BSP installed. If you already have this, you
+can skip to step 5 of the build procedure.
 
 Building and Installing LibBSD
 ------------------------------
 
-The following instructions show you how to build and install RTEMS Tools and
-RTEMS kernel for your BSP in separate paths. Using separate paths for the tools
-and BSPs lets you manage what you have installed. If you are happy with a
-single path you can use the same path in each stage.
+The following instructions show you how to build and install the RTEMS Tool
+Suite for the `arm` target, the RTEMS kernel using the
+`arm/xilinx_zynq_a9_qemu` Board Support Package (BSP), and the LibBSD for this
+BSP.
 
 The Waf build support for RTEMS requires you provide your BSP name as an
 architecture and BSP pair. You must provide both or Waf will generate an error
 message during the configure phase.
 
-We will build an Xilinx Zynq QEMU BSP using the name
+We will build an Xilinx Zynq Qemu BSP using the name
 *arm/xilinx_zynq_a9_qemu*.  You can copy and paste the shell commands below to
 do this.  The individual steps are explained afterwards.
 
@@ -37,30 +36,23 @@ git clone git://git.rtems.org/rtems.git
 git clone git://git.rtems.org/rtems-libbsd.git
 cd "$sandbox"
 cd rtems-source-builder/rtems
-../source-builder/sb-set-builder --prefix="$sandbox/rtems/5" 5/rtems-arm
+../source-builder/sb-set-builder --prefix="$sandbox/rtems/6" 6/rtems-arm
 cd "$sandbox"
 cd rtems
-PATH="$sandbox/rtems/5/bin:$PATH" ./bootstrap
-cd "$sandbox"
-mkdir b-xilinx_zynq_a9_qemu
-cd b-xilinx_zynq_a9_qemu
-PATH="$sandbox/rtems/5/bin:$PATH" "$sandbox/rtems/configure" \
-  --target=arm-rtems5 --prefix="$sandbox/rtems/5" \
-  --disable-networking --enable-rtemsbsp=xilinx_zynq_a9_qemu
-PATH="$sandbox/rtems/5/bin:$PATH" make
-PATH="$sandbox/rtems/5/bin:$PATH" make install
+echo -e "[arm/xilinx_zynq_a9_qemu]\nRTEMS_POSIX_API = True" > config.ini
+./waf configure --prefix "$sandbox/rtems/6"
+./waf
+./waf install
 cd "$sandbox"
 cd rtems-libbsd
 git submodule init
 git submodule update rtems_waf
-./waf configure --prefix="$sandbox/rtems/5" \
+./waf configure --prefix="$sandbox/rtems/6" \
   --rtems-bsps=arm/xilinx_zynq_a9_qemu \
   --buildset=buildset/default.ini
 ./waf
 ./waf install
-qemu-system-arm -no-reboot -serial null -serial mon:stdio -net none \
-  -nographic -M xilinx-zynq-a9 -m 256M \
-  -kernel build/arm-rtems5-xilinx_zynq_a9_qemu/selectpollkqueue01.exe
+../rtems/6/bin/rtems-test --rtems-bsp=xilinx_zynq_a9_qemu build
 ```
 
 1. Create a sandbox directory:
@@ -84,31 +76,21 @@ $ git clone git://git.rtems.org/rtems-libbsd.git
 ```
 $ cd "$sandbox"
 $ cd rtems-source-builder/rtems
-$ ../source-builder/sb-set-builder --prefix="$sandbox/rtems/5" 5/rtems-arm
+$ ../source-builder/sb-set-builder --prefix="$sandbox/rtems/6" 6/rtems-arm
 ```
 
-4. Bootstrap the RTEMS sources:
+4. Build and install the RTEMS Board Support Packages (BSP) you want to use:
 
 ```
 $ cd "$sandbox"
 $ cd rtems
-$ PATH="$sandbox/rtems/5/bin:$PATH" ./bootstrap
-```
-
-5. Build and install the RTEMS Board Support Packages (BSP) you want to use:
-
-```
-$ cd "$sandbox"
-$ mkdir b-xilinx_zynq_a9_qemu
-$ cd b-xilinx_zynq_a9_qemu
-$ PATH="$sandbox/rtems/5/bin:$PATH" "$sandbox/rtems/configure" \
-    --target=arm-rtems5 --prefix="$sandbox/rtems/5" \
-    --disable-networking --enable-rtemsbsp=xilinx_zynq_a9_qemu
-$ PATH="$sandbox/rtems/5/bin:$PATH" make
-$ PATH="$sandbox/rtems/5/bin:$PATH" make install
+$ echo -e "[arm/xilinx_zynq_a9_qemu]\nRTEMS_POSIX_API = True" > config.ini
+$ ./waf configure --prefix "$sandbox/rtems/6"
+$ ./waf
+$ ./waf install
 ```
 
-6. Populate the rtems_waf git submodule.  Note, make sure you specify
+5. Populate the rtems_waf git submodule.  Note, make sure you specify
    'rtems_waf' or the FreeBSD kernel source will be cloned:
 
 ```
@@ -118,7 +100,7 @@ $ git submodule init
 $ git submodule update rtems_waf
 ```
 
-7. Run Waf's configure with your specific settings. In this case the path to
+6. Run Waf's configure with your specific settings. In this case the path to
    the tools and RTEMS are provided on the command line and so do not need to
    be in your path or environment [1].  You can use
    '--rtems-archs=arm,sparc,i386' or
@@ -133,12 +115,12 @@ $ git submodule update rtems_waf
 ```
 $ cd "$sandbox"
 $ cd rtems-libbsd
-$ ./waf configure --prefix="$sandbox/rtems/5" \
+$ ./waf configure --prefix="$sandbox/rtems/6" \
     --rtems-bsps=arm/xilinx_zynq_a9_qemu \
     --buildset=buildset/default.ini
 ```
 
-8. Build and install.  The LibBSD package will be installed into the prefix
+7. Build and install.  The LibBSD package will be installed into the prefix
    provided to configure:
 
 ```
@@ -148,22 +130,22 @@ $ ./waf
 $ ./waf install
 ```
 
-9. Run the tests on QEMU, for example:
+9. Run the tests:
 
 ```
-$ qemu-system-arm -no-reboot -serial null -serial mon:stdio -net none \
-$   -nographic -M xilinx-zynq-a9 -m 256M \
-$   -kernel build/arm-rtems5-xilinx_zynq_a9_qemu/selectpollkqueue01.exe
+$ cd "$sandbox"
+$ cd rtems-libbsd
+$ ../rtems/6/bin/rtems-test --rtems-bsp=xilinx_zynq_a9_qemu build
 ```
 
-[1] It is good practice to keep your environment as empty as possible. Setting
-    paths to tools or specific values to configure or control a build is
-    dangerous because settings can leak between different builds and change
-    what you expect a build to do. The Waf tool used here lets you specify on
-    the command line the tools and RTEMS paths and this is embedded in Waf's
-    configuration information. If you have a few source trees working at any
-    one time with different tool sets or configurations you can easly move
-    between them safe in the knowledge that one build will not infect another.
+It is good practice to keep your environment as empty as possible. Setting
+paths to tools or specific values to configure or control a build is dangerous
+because settings can leak between different builds and change what you expect a
+build to do. The Waf tool used here lets you specify on the command line the
+tools and RTEMS paths and this is embedded in Waf's configuration information.
+If you have a few source trees working at any one time with different tool sets
+or configurations you can easly move between them safe in the knowledge that
+one build will not infect another.
 
 Branches
 --------
@@ -260,6 +242,61 @@ The list is:
  rtems_bsd_syscall_trace: RTEMS BSD system call trace
  rtems_bsd_vfs_trace      RTEMS VFS to libio trace
 
+Qemu and Networking
+-------------------
+
+You can use the Qemu simulator to run a LibBSD based application and connect it
+to a virtual network on your host.  You have to create a TAP virtual Ethernet
+interface for this:
+
+```
+sudo tunctl -p -t qtap -u $(whoami)
+sudo ip link set dev qtap up
+sudo ip addr add 169.254.1.1/16 dev qtap
+```
+
+You can show the interface state with the following command:
+
+```
+$ ip addr show qtap
+27: qtap: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
+    link/ether 8e:50:a2:fb:e1:3b brd ff:ff:ff:ff:ff:ff
+    inet 169.254.1.1/16 scope global qtap
+       valid_lft forever preferred_lft forever
+```
+
+You may have to assign the interface to a firewall zone.
+
+The Qemu command line varies by board support package, here is an example for
+the arm/xilinx_zynq_a9_qemu BSP:
+
+```
+qemu-system-arm -serial null -serial mon:stdio -nographic \
+  -M xilinx-zynq-a9 -m 256M \
+  -net tap,ifname=qtap,script=no,downscript=no \
+  -net nic,model=cadence_gem,macaddr=0e:b0:ba:5e:ba:12 \
+  -kernel build/arm-rtems6-xilinx_zynq_a9_qemu-default/media01.exe
+```
+
+After some seconds it will acquire a IPv4 link-local address, e.g.
+
+```
+info: cgem0: probing for an IPv4LL address
+debug: cgem0: checking for 169.254.159.156
+```
+
+You can connect to the target via telnet for example:
+
+```
+$ telnet 169.254.159.156
+Trying 169.254.159.156...
+Connected to 169.254.159.156.
+Escape character is '^]'.
+
+RTEMS Shell on /dev/pty4. Use 'help' to list commands.
+TLNT [/] #
+```
+
 SMP Requirements
 ----------------
 



More information about the vc mailing list