zoukankan      html  css  js  c++  java
  • rtems qemu

     系统信息

    [root@centos7 ~]# qemu-system-aarch64 -version
    QEMU emulator version 4.2.0
    Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers
    [root@centos7 ~]# uname -a
    Linux centos7 4.14.0-115.el7a.0.1.aarch64 #1 SMP Sun Nov 25 20:54:21 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    [root@centos7 ~]# lscpu
    Architecture:          aarch64
    Byte Order:            Little Endian
    CPU(s):                128
    On-line CPU(s) list:   0-127
    Thread(s) per core:    1
    Core(s) per socket:    64
    Socket(s):             2
    NUMA node(s):          4
    Model:                 0
    CPU max MHz:           2600.0000
    CPU min MHz:           200.0000
    BogoMIPS:              200.00
    L1d cache:             64K
    L1i cache:             64K
    L2 cache:              512K
    L3 cache:              65536K
    NUMA node0 CPU(s):     0-31
    NUMA node1 CPU(s):     32-63
    NUMA node2 CPU(s):     64-95
    NUMA node3 CPU(s):     96-127
    Flags:                 fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop
    [root@centos7 ~]# 

     rtems 版本

    [root@centos7 hello_world_c]# qemu-system-aarch64 -no-reboot -serial null -serial mon:stdio -net none  -nographic -M xilinx-zynq-a9 -m 256M -kernel o-optimize/hello.exe
    qemu-system-aarch64: GLib: g_mapped_file_unref: assertion 'file != NULL' failed

     改成低版本rtems

    [root@centos7 rtems]# git checkout -b  remotes/origin/5
    Switched to a new branch 'remotes/origin/5'
    [root@centos7 rtems]# git branch
      master
    * remotes/origin/5
    [root@centos7 rtems]# 
    [root@centos7 rtems]# git  checkout 5
    Branch 5 set up to track remote branch 5 from origin.
    Switched to a new branch '5'
    [root@centos7 rtems]# ./waf  bsp_list
    -bash: ./waf: No such file or directory
    [root@centos7 rtems]# ls
    acinclude.m4  bootstrap  c             config.ini      config.sub    depcomp      INSTALL     LICENSE.BSD-2-Clause  LICENSE.JFFS2   MAINTAINERS  Makefile.maint  README           rtemslogo.png
    aclocal       bsps       compile       config.ini.bak  configure.ac  Doxyfile     install-sh  LICENSE.CC-BY-SA-4.0  LICENSE.NET     make         mdate-sh        rtems-bootstrap  testsuites
    automake      build      config.guess  config-ml.in    cpukit        gccdeps.pyc  LICENSE     LICENSE.GPL-2.0       LICENSE.RPCXDR  Makefile.am  missing         rtems-bsps
    [root@centos7 rtems]# 
    [root@centos7 development]# ls
    rtems  rtems_rv
    [root@centos7 development]# du -sh rtems
    8.2G    rtems  --可以用的
    [root@centos7 development]# du -sh rtems_rv
    2.0G    rtems_rv
    [root@centos7 development]# cd rtems
    [root@centos7 rtems]# ls
    compiler  kernel  profile  rtems-examples  rtems-source-builder
    [root@centos7 rtems]# du -sh compiler
    1.1G    compiler
    [root@centos7 rtems]# du -sh *
    1.1G    compiler
    615M    kernel
    4.0K    profile
    18M     rtems-examples
    7.0G    rtems-source-builder
    [root@centos7 rtems]# 
    [root@centos7 rtems]# ./bootstrap -c
    removing automake generated Makefile.in files
    removing configure files
    removing aclocal.m4 files
    [root@centos7 rtems]# ./rtems-bootstrap
    RTEMS Bootstrap, 1.0
      1/121: autoreconf: configure.ac
      2/121: autoreconf: c/configure.ac
      3/121: autoreconf: c/src/configure.ac
      4/121: autoreconf: c/src/lib/libbsp/arm/configure.ac
      5/121: autoreconf: c/src/lib/libbsp/arm/altera-cyclone-v/configure.ac
      6/121: autoreconf: c/src/lib/libbsp/arm/atsam/configure.ac
      7/121: autoreconf: c/src/lib/libbsp/arm/beagle/configure.ac
      8/121: autoreconf: c/src/lib/libbsp/arm/csb336/configure.ac
      9/121: autoreconf: c/src/lib/libbsp/arm/csb337/configure.ac
     10/121: autoreconf: c/src/lib/libbsp/arm/edb7312/configure.ac
     11/121: autoreconf: c/src/lib/libbsp/arm/gumstix/configure.ac
     12/121: autoreconf: c/src/lib/libbsp/arm/imx/configure.ac
     13/121: autoreconf: c/src/lib/libbsp/arm/lm3s69xx/configure.ac
     14/121: autoreconf: c/src/lib/libbsp/arm/lpc176x/configure.ac
     15/121: autoreconf: c/src/lib/libbsp/arm/lpc24xx/configure.ac
     16/121: autoreconf: c/src/lib/libbsp/arm/lpc32xx/configure.ac

    [root@centos7 xilinx_zynq_a9_qemu]# $HOME/development/rtems/kernel/rtems/configure --prefix=$HOME/development/rtems/compiler/6 --enable-maintainer-mode --target=rtems-aarch64 --enable-rtemsbsp=xilinx_zynq_a9_qemu --enable-tests --enable-posix --disable-networking --enable-cxx
    checking for gmake... gmake
    checking for RTEMS Version... 5.0.0
    checking build system type... aarch64-unknown-linux-gnu
    checking host system type... aarch64-unknown-linux-gnu
    checking target system type... Invalid configuration `rtems-aarch64': machine `rtems' not recognized
    configure: error: /bin/sh /root/development/rtems/kernel/rtems/./config.sub rtems-aarch64 failed
    [root@centos7 xilinx_zynq_a9_qemu]#

    改成

     新版本采用waf,老版本采用configure

    [root@centos7 xilinx_zynq_a9_qemu]# $HOME/development/rtems/kernel/rtems/configure --prefix=$HOME/development/rtems/compiler/6 --enable-maintainer-mode --target=aarch64-rtems --enable-rtemsbsp=xilinx_zynq_a9_qemu --enable-tests --enable-posix --disable-networking --enable-cxx
    checking for gmake... gmake
    checking for RTEMS Version... 5.0.0
    checking build system type... aarch64-unknown-linux-gnu
    checking host system type... aarch64-unknown-linux-gnu
    checking target system type... aarch64-unknown-rtems
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether gmake sets $(MAKE)... yes
    checking whether gmake supports nested variables... yes
    checking whether to enable maintainer-specific portions of Makefiles... yes
    configure: error: BSP 'xilinx_zynq_a9_qemu' architecture does not match the --target architecture, run 'rtems-bsps' (in the top of the source tree) for a valid BSP list
    [root@centos7 xilinx_zynq_a9_qemu]# 
    [root@centos7 xilinx_zynq_a9_qemu]# ls
    arm-rtems5  config.log  config.status  Makefile
    [root@centos7 xilinx_zynq_a9_qemu]# 
    [root@centos7 rtems]# ./rtems-bsps -P
    arm/altcycv_devkit
    arm/atsamv
    arm/bbxm
    arm/beagleboardorig
    arm/beagleboardxm
    arm/beagleboneblack
    arm/beaglebonewhite
    arm/csb336
    arm/csb337
    arm/csb637
    arm/kit637_v6
    arm/edb7312
    arm/gumstix
    arm/imx7
    arm/lm3s3749
    arm/lm3s6965
    arm/lm3s6965_qemu
    arm/lm4f120
    arm/lpc1768_mbed
    arm/lpc1768_mbed_ahb_ram
    arm/lpc1768_mbed_ahb_ram_eth
    arm/lpc17xx_ea_ram
    arm/lpc17xx_ea_rom_int
    arm/lpc17xx_plx800_ram
    arm/lpc17xx_plx800_rom_int
    arm/lpc2362
    arm/lpc23xx_tli800
    arm/lpc24xx_ea
    arm/lpc24xx_ncs_ram
    arm/lpc24xx_ncs_rom_ext
    arm/lpc24xx_ncs_rom_int
    arm/lpc24xx_plx800_ram
    arm/lpc24xx_plx800_rom_int
    arm/lpc40xx_ea_ram
    arm/lpc40xx_ea_rom_int
    arm/lpc32xx_mzx
    arm/lpc32xx_mzx_stage_1
    arm/lpc32xx_mzx_stage_2
    arm/lpc32xx_phycore
    arm/raspberrypi
    arm/raspberrypi2
    arm/realview_pbx_a9_qemu
    arm/rtl22xx
    arm/rtl22xx_t
    arm/smdk2410
    arm/stm32f105rc
    arm/stm32f4
    arm/tms570ls3137_hdk
    arm/tms570ls3137_hdk_intram
    arm/tms570ls3137_hdk_sdram
    arm/tms570ls3137_hdk_with_loader
    arm/xen_virtual
    arm/xilinx_zynq_a9_qemu
    arm/xilinx_zynq_zc702
    arm/xilinx_zynq_zc706
    arm/xilinx_zynq_zedboard
    arm/xilinx_zynqmp_ultra96
    bfin/TLL6527M
    bfin/bf537Stamp
    bfin/eZKit533

     第一步

    mkdir /root/development/rtems/compiler/6/

    [root@centos7 rtems]# ../source-builder/sb-set-builder          --log=build-log.txt          --prefix=$HOME/development/rtems/compiler/6  6/rtems-aarch64
    RTEMS Source Builder - Set Builder, 6 (889cf95db012)
    Build Set: 6/rtems-aarch64
    config: devel/expat-2.1.0-1.cfg
    package: expat-2.1.0-aarch64-linux-gnu-1
    warning: checksum error: expat-2.1.0.tar.gz
    building: expat-2.1.0-aarch64-linux-gnu-1

    改成master支持aarch64

    参考https://docs.rtems.org/branches/master/user/bsps/bsps-aarch64.html

    [root@centos7 rtems]# git branch --all
    * 5
      master
      remotes/origin/4.10
      remotes/origin/4.11
      remotes/origin/4.8
      remotes/origin/4.9
      remotes/origin/5
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
    [root@centos7 rtems]# git checkout master
    Switched to branch 'master'
    [root@centos7 rtems]# ./waf  bsp_list
    Regenerate build specification cache (needs a couple of seconds)...
    aarch64/a53_ilp32_qemu
    aarch64/a53_lp64_qemu
    aarch64/a72_ilp32_qemu
    aarch64/a72_lp64_qemu
    aarch64/xilinx_versal_ilp32_qemu
    aarch64/xilinx_versal_ilp32_vck190
    aarch64/xilinx_versal_lp64_qemu
    aarch64/xilinx_versal_lp64_vck190
    aarch64/xilinx_zynqmp_ilp32_qemu
    aarch64/xilinx_zynqmp_ilp32_zu3eg
    aarch64/xilinx_zynqmp_lp64_qemu
    aarch64/xilinx_zynqmp_lp64_zu3eg

    第二步

    ./waf distclean
    [root@centos7 rtems]# ./waf bsp_defaults --rtems-bsps=aarch64/a53_lp64_qemu   > config.ini
    [root@centos7 rtems]# ./waf configure --prefix=$HOME/development/rtems/compiler/6
    Setting top to                           : /root/development/rtems/kernel/rtems 
    Setting out to                           : /root/development/rtems/kernel/rtems/build 
    Configure board support package (BSP)    : aarch64/a53_lp64_qemu 
    Checking for program 'aarch64-rtems6-gcc' : /root/development/rtems/compiler/6/bin/aarch64-rtems6-gcc 
    Checking for program 'aarch64-rtems6-g++' : /root/development/rtems/compiler/6/bin/aarch64-rtems6-g++ 
    Checking for program 'aarch64-rtems6-ar'  : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for program 'aarch64-rtems6-ld'  : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ld 
    Checking for program 'ar'                 : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for program 'g++, c++'           : /root/development/rtems/compiler/6/bin/aarch64-rtems6-g++ 
    Checking for program 'ar'                 : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for program 'gas, gcc'           : /root/development/rtems/compiler/6/bin/aarch64-rtems6-gcc 
    Checking for program 'ar'                 : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for program 'gcc, cc'            : /root/development/rtems/compiler/6/bin/aarch64-rtems6-gcc 
    Checking for program 'ar'                 : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for asm flags '-MMD'             : yes 
    Checking for c flags '-MMD'               : yes 
    Checking for cxx flags '-MMD'             : yes 
    'configure' finished successfully (0.652s)
    [root@centos7 rtems]# ./waf
    [1378/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/base_sp.exe
    [1379/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/capture.exe
    [1380/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/cdtest.exe
    [1381/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/fileio.exe
    [1382/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/hello.exe
    [1383/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/iostream.exe
    [1384/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/nsecs.exe
    [1385/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/ticker.exe
    [1386/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/unlimited.exe
    [1387/1391] Linking build/aarch64/a53_lp64_qemu/libz.a
    [1388/1391] Linking build/aarch64/a53_lp64_qemu/libdebugger.a
    [1389/1391] Linking build/aarch64/a53_lp64_qemu/librtemscxx.a
    [1390/1391] Linking build/aarch64/a53_lp64_qemu/testsuites/samples/paranoia.exe
    [1391/1391] Linking build/aarch64/a53_lp64_qemu/libmghttpd.a
    Waf: Leaving directory `/root/development/rtems/kernel/rtems/build/aarch64/a53_lp64_qemu'
    'build_aarch64/a53_lp64_qemu' finished successfully (6.474s)
    [root@centos7 rtems]# ls /root/development/rtems/kernel/rtems/build/aarch64/a53_lp64_qemu
    a53_lp64_qemu.cfg                bsp.cfg  cpukit         libftpd.a   libjffs2.a    librtemsbsp.a  librtemscxx.a            librtemstest.a  libtftpfs.a  linkcmds      start.d  target.cfg
    aarch64-rtems6-a53_lp64_qemu.pc  bsps     libdebugger.a  libftpfs.a  libmghttpd.a  librtemscpu.a  librtemsdefaultconfig.a  libtelnetd.a    libz.a       Makefile.inc  start.o  testsuites
    [root@centos7 rtems]# ls /root/development/rtems/compiler/6/
    aarch64-rtems6/ bin/            include/        lib/            libexec/        make/           share/          
    [root@centos7 rtems]# 

    第三步

    [root@centos7 rtems]# ./waf install
    Waf: Entering directory `/root/development/rtems/kernel/rtems/build'
    Waf: Leaving directory `/root/development/rtems/kernel/rtems/build'
    'install' finished successfully (0.501s)
    Waf: Entering directory `/root/development/rtems/kernel/rtems/build/aarch64/a53_lp64_qemu'
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/linkcmds.base (from bsps/aarch64/shared/start/linkcmds.base)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/bsp/linker-symbols.h (from bsps/aarch64/include/bsp/linker-symbols.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/start.o (from build/aarch64/a53_lp64_qemu/start.o)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/dev/clock/arm-generic-timer.h (from bsps/include/dev/clock/arm-generic-timer.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/dev/irq/arm-gic-arch.h (from bsps/aarch64/include/dev/irq/arm-gic-arch.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/bsp.h (from bsps/aarch64/a53/include/bsp.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/bsp/irq.h (from bsps/aarch64/a53/include/bsp/irq.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/bsp/start.h (from bsps/aarch64/include/bsp/start.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/libchip/am29lv160.h (from bsps/include/libchip/am29lv160.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/bsp/bootcard.h (from bsps/include/bsp/bootcard.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/tm27.h (from bsps/aarch64/a53/include/tm27.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/ofw/ofw.h (from bsps/include/ofw/ofw.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/dev/irq/arm-gic-irq.h (from bsps/include/dev/irq/arm-gic-irq.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/dev/serial/arm-pl011-regs.h (from bsps/include/dev/serial/arm-pl011-regs.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/libchip/ata.h (from bsps/include/libchip/ata.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/libchip/mc146818a.h (from bsps/include/libchip/mc146818a.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/rtems/zilog/z8036.h (from bsps/include/rtems/zilog/z8036.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/bsp/console-polled.h (from bsps/include/bsp/console-polled.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/ofw/ofw_compat.h (from bsps/include/ofw/ofw_compat.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/dev/irq/arm-gic-regs.h (from bsps/include/dev/irq/arm-gic-regs.h)
    + install /root/development/rtems/compiler/6/lib/pkgconfig/aarch64-rtems6-a53_lp64_qemu.pc (from build/aarch64/a53_lp64_qemu/aarch64-rtems6-a53_lp64_qemu.pc)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/dev/serial/arm-pl011.h (from bsps/include/dev/serial/arm-pl011.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/make/bsp.cfg (from build/aarch64/a53_lp64_qemu/bsp.cfg)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/arm/ti/ti_pinmux.h (from bsps/include/arm/ti/ti_pinmux.h)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/libchip/mc68681.h (from bsps/include/libchip/mc68681.h)
    + install /root/development/rtems/compiler/6/make/custom/a53_lp64_qemu.cfg (from build/aarch64/a53_lp64_qemu/a53_lp64_qemu.cfg)
    + install /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include/rtems/zilog/z8530.h (from bsps/include/rtems/zilog/z8530.h)
    [root@centos7 rtems]# ls /root/development/rtems/compiler/6/aarch64-rtems6/
    a53_lp64_qemu  bin  include  lib  xilinx_zynqmp_lp64_qemu
    [root@centos7 rtems]# ls /root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/
    lib  make  Makefile.inc
    [root@centos7 rtems]# 

    rtems-libbsd-可选

    [root@centos7 rtems-libbsd]# ./waf configure --prefix=$HOME/development/rtems/compiler/6   --rtems-bsps=aarch64/a53_lp64_qemu
    Setting top to                           : /root/development/rtems/rtems-libbsd 
    Setting out to                           : /root/development/rtems/rtems-libbsd/build 
    RTEMS Version                            : 6 
    Architectures                            : aarch64-rtems6 
    Board Support Package (BSP)              : aarch64-rtems6-a53_lp64_qemu 
    Show commands                            : no 
    Long commands                            : no 
    Checking for program 'aarch64-rtems6-gcc' : /root/development/rtems/compiler/6/bin/aarch64-rtems6-gcc 
    Checking for program 'aarch64-rtems6-g++' : /root/development/rtems/compiler/6/bin/aarch64-rtems6-g++ 
    Checking for program 'aarch64-rtems6-gcc' : /root/development/rtems/compiler/6/bin/aarch64-rtems6-gcc 
    Checking for program 'aarch64-rtems6-ld'  : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ld 
    Checking for program 'aarch64-rtems6-ar'  : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for program 'aarch64-rtems6-nm'  : /root/development/rtems/compiler/6/bin/aarch64-rtems6-nm 
    Checking for program 'aarch64-rtems6-objdump' : /root/development/rtems/compiler/6/bin/aarch64-rtems6-objdump 
    Checking for program 'aarch64-rtems6-objcopy' : /root/development/rtems/compiler/6/bin/aarch64-rtems6-objcopy 
    Checking for program 'aarch64-rtems6-readelf' : /root/development/rtems/compiler/6/bin/aarch64-rtems6-readelf 
    Checking for program 'aarch64-rtems6-strip'   : /root/development/rtems/compiler/6/bin/aarch64-rtems6-strip 
    Checking for program 'aarch64-rtems6-ranlib'  : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ranlib 
    Checking for program 'rtems-ld'               : /root/development/rtems/compiler/6/bin/rtems-ld 
    Checking for program 'rtems-tld'              : /root/development/rtems/compiler/6/bin/rtems-tld 
    Checking for program 'rtems-syms'             : /root/development/rtems/compiler/6/bin/rtems-syms 
    Checking for program 'rtems-bin2c'            : /root/development/rtems/compiler/6/bin/rtems-bin2c 
    Checking for program 'tar'                    : /usr/bin/tar 
    Checking for program 'gcc, cc'                : /root/development/rtems/compiler/6/bin/aarch64-rtems6-gcc 
    Checking for program 'ar'                     : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for program 'g++, c++'               : /root/development/rtems/compiler/6/bin/aarch64-rtems6-g++ 
    Checking for program 'ar'                     : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for program 'gas, gcc'               : /root/development/rtems/compiler/6/bin/aarch64-rtems6-gcc 
    Checking for program 'ar'                     : /root/development/rtems/compiler/6/bin/aarch64-rtems6-ar 
    Checking for c flags '-MMD'                   : yes 
    Checking for cxx flags '-MMD'                 : yes 
    Compiler version (aarch64-rtems6-gcc)         : 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1) 
    Checking for a valid RTEMS BSP installation   : yes 
    Checking for RTEMS_DEBUG                      : no 
    Checking for RTEMS_MULTIPROCESSING            : no 
    Checking for RTEMS_NEWLIB                     : yes 
    Checking for RTEMS_POSIX_API                  : no 
    Checking for RTEMS_SMP                        : no 
    Checking for RTEMS_NETWORKING                 : no 
    Checking for header dlfcn.h                   : yes 
    Checking for header rtems/pci.h               : yes 
    RTEMS kernel POSIX support is disabled; configure RTEMS with --enable-posix
    (complete log in /root/development/rtems/rtems-libbsd/build/config.log)
    [root@centos7 rtems-libbsd]# 

    编译hello

    [root@centos7 hello_world_c]#  export RTEMS_MAKEFILE_PATH=/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu
    [root@centos7 hello_world_c]# make
    make: Nothing to be done for `default_target'.
    [root@centos7 hello_world_c]# make clean 
    rm -f a.out core mon.out gmon.out
    rm -f -r 
    rm -f -r  a.out *.o *.BAK Depends-o-optimize.tmp
    rm -f -r o-optimize o-debug
    [root@centos7 hello_world_c]# make
    test -d o-optimize || mkdir o-optimize
    aarch64-rtems6-gcc --pipe  -Wall  -O2 -g -fdata-sections -ffunction-sections   -I/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include -mcpu=cortex-a53       -c   -o o-optimize/test.o test.c
    aarch64-rtems6-gcc --pipe  -Wall  -O2 -g -fdata-sections -ffunction-sections   -I/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include -mcpu=cortex-a53      -B/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib -qrtems -Wl,--gc-sections   -mcpu=cortex-a53   -o o-optimize/hello.exe  o-optimize/test.o       
    aarch64-rtems6-nm -g -n o-optimize/hello.exe > o-optimize/hello.num
    aarch64-rtems6-size o-optimize/hello.exe
       text    data     bss     dec     hex filename
      76144    1856 134105400       134183400       7ff79e8 o-optimize/hello.exe
    cp o-optimize/hello.exe o-optimize/hello.ralf
    [root@centos7 hello_world_c]# 
    [root@centos7 hello_world_c]# qemu-system-aarch64 -no-reboot -serial null -serial mon:stdio -net none  -nographic -M xilinx-zynq-a9 -m 256M -kernel o-optimize/hello.exe
    qemu-system-aarch64: GLib: g_mapped_file_unref: assertion 'file != NULL' failed
    [root@centos7 hello_world_c]# qemu-system-aarch64 -no-reboot -nographic -serial mon:stdio  -machine virt,gic-version=3 -cpu cortex-a53 -m 4096 -kernel o-optimize/hello.exe 
    
    *** FATAL ***
    fatal source: 6 (RTEMS_FATAL_SOURCE_BSP)
    fatal code: 11 (0x0000000b)
    RTEMS version: 6.0.0.671f126a3a8e6ce5da87aa75c7205fb764e95c78
    RTEMS tools: 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1)
    executing thread ID: 0x089010001
    executing thread name: IDLE

    gdb

    [root@centos7 hello_world_c]# qemu-system-aarch64 -no-reboot -nographic -serial mon:stdio  -machine virt,gic-version=3 -cpu cortex-a53 -m 4096 -kernel o-optimize/hello.exe
    
    *** FATAL ***
    fatal source: 6 (RTEMS_FATAL_SOURCE_BSP)
    fatal code: 11 (0x0000000b)
    RTEMS version: 6.0.0.822ebb4cae2bb8bc9fe55915bd4acc4942fcd8ce
    RTEMS tools: 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1)
    executing thread ID: 0x089010001
    executing thread name: IDLE
    [root@centos7 hello_world_c]# qemu-system-aarch64 -no-reboot -nographic -serial mon:stdio  -machine virt,gic-version=3 -cpu cortex-a53 -m 4096 -kernel o-optimize/hello.exe  -S -gdb tcp::8889

    [root@centos7 rtems]# cat profile 
    export PATH=$HOME/development/rtems/compiler/6/bin:$PATH
    [root@centos7 rtems]# ls $HOME/development/rtems/compiler/6/bin
    aarch64-rtems6-addr2line  aarch64-rtems6-cpp         aarch64-rtems6-gcc-ar      aarch64-rtems6-gcov-tool      aarch64-rtems6-ld.bfd   aarch64-rtems6-readelf  mkimage.py         rtems-exeinfo       rtems-run          rtems-tld
    aarch64-rtems6-ar         aarch64-rtems6-elfedit     aarch64-rtems6-gcc-nm      aarch64-rtems6-gdb            aarch64-rtems6-nm       aarch64-rtems6-run      rtems-addr2line    rtems-ld            rtems-syms         trace-converter
    aarch64-rtems6-as         aarch64-rtems6-g++         aarch64-rtems6-gcc-ranlib  aarch64-rtems6-gdb-add-index  aarch64-rtems6-objcopy  aarch64-rtems6-size     rtems-bin2c        rtems-ra            rtems-test         xmlwf
    aarch64-rtems6-c++        aarch64-rtems6-gcc         aarch64-rtems6-gcov        aarch64-rtems6-gprof          aarch64-rtems6-objdump  aarch64-rtems6-strings  rtems-boot-image   rtems-rap           rtems-tftp-proxy
    aarch64-rtems6-c++filt    aarch64-rtems6-gcc-10.3.1  aarch64-rtems6-gcov-dump   aarch64-rtems6-ld             aarch64-rtems6-ranlib   aarch64-rtems6-strip    rtems-bsp-builder  rtems-record-lttng  rtems-tftp-server
    [root@centos7 rtems]# ls
    compiler  kernel  profile  rtems-examples  rtems-source-builder
    [root@centos7 rtems]# cd rtems-examples/hello/
    both_hello/        hello_world_c/     Makefile           posix_hello_world/ wscript            
    [root@centos7 rtems]# cd rtems-examples/hello/hello_world_c/
    [root@centos7 hello_world_c]# ls
    Makefile  o-optimize  test.c  wscript
    [root@centos7 hello_world_c]# cd o-optimize/
    [root@centos7 o-optimize]# ls
    hello.exe  hello.num  hello.ralf  test.o
    [root@centos7 o-optimize]# aarch64-rtems6-gdb   hello.exe 
    GNU gdb (GDB) 10.1.90.20210409-git
    Copyright (C) 2021 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "--host=aarch64-linux-gnu --target=aarch64-rtems6".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <https://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from hello.exe...
    (gdb) target remote :8889
    Remote debugging using :8889
    bsp_vector_table_begin () at ../../../bsps/aarch64/shared/start/start.S:55
    55        mov x5, x1    /* machine type number or ~0 for DT boot */
    (gdb) break start_kernel
    Function "start_kernel" not defined.
    Make breakpoint pending on future shared library load? (y or [n]) n
    (gdb) 
    (gdb) load
    Loading section .start, size 0x1fc lma 0x40008000
    Loading section .text, size 0x10220 lma 0x40008800
    Loading section .init, size 0x34 lma 0x40018a20
    Loading section .fini, size 0x34 lma 0x40018a54
    Loading section .rodata, size 0x2450 lma 0x40018a88
    Loading section .eh_frame, size 0x4 lma 0x4001aed8
    Loading section .init_array, size 0x8 lma 0x4001aee0
    Loading section .fini_array, size 0x8 lma 0x4001aee8
    Loading section .rtemsroset, size 0x98 lma 0x4001aef0
    Loading section .data, size 0x730 lma 0x40100000
    Start address 0x0000000040008000, load size 78000
    Transfer rate: 8463 KB/sec, 1695 bytes/write.
    (gdb) 
    [root@centos7 o-optimize]# aarch64-rtems6-gdb   hello.exe 
    GNU gdb (GDB) 10.1.90.20210409-git
    Copyright (C) 2021 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "--host=aarch64-linux-gnu --target=aarch64-rtems6".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <https://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from hello.exe...
    (gdb) load
    You can't do that when your target is `exec'
    (gdb) r
    Don't know how to run.  Try "help target".
    (gdb) target remote :8889
    Remote debugging using :8889
    bsp_vector_table_begin () at ../../../bsps/aarch64/shared/start/start.S:55
    55        mov x5, x1    /* machine type number or ~0 for DT boot */
    (gdb) load
    Loading section .start, size 0x1fc lma 0x40008000
    Loading section .text, size 0x10220 lma 0x40008800
    Loading section .init, size 0x34 lma 0x40018a20
    Loading section .fini, size 0x34 lma 0x40018a54
    Loading section .rodata, size 0x2450 lma 0x40018a88
    Loading section .eh_frame, size 0x4 lma 0x4001aed8
    Loading section .init_array, size 0x8 lma 0x4001aee0
    Loading section .fini_array, size 0x8 lma 0x4001aee8
    Loading section .rtemsroset, size 0x98 lma 0x4001aef0
    Loading section .data, size 0x730 lma 0x40100000
    Start address 0x0000000040008000, load size 78000
    Transfer rate: 8463 KB/sec, 1695 bytes/write.
    (gdb) r
    The "remote" target does not support "run".  Try "help target" or "continue".
    (gdb) continue
    Continuing.
    [Inferior 1 (process 1) exited normally]
    (gdb) bt
    No stack.
    (gdb) 

     continue 命令

    [root@centos7 o-optimize]# aarch64-rtems6-gdb   hello.exe 
    GNU gdb (GDB) 10.1.90.20210409-git
    Copyright (C) 2021 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "--host=aarch64-linux-gnu --target=aarch64-rtems6".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <https://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from hello.exe...
    (gdb) target remote :8889
    Remote debugging using :8889
    bsp_vector_table_begin () at ../../../bsps/aarch64/shared/start/start.S:55
    55        mov x5, x1    /* machine type number or ~0 for DT boot */
    (gdb) load
    Loading section .start, size 0x1fc lma 0x40008000
    Loading section .text, size 0x10220 lma 0x40008800
    Loading section .init, size 0x34 lma 0x40018a20
    Loading section .fini, size 0x34 lma 0x40018a54
    Loading section .rodata, size 0x2450 lma 0x40018a88
    Loading section .eh_frame, size 0x4 lma 0x4001aed8
    Loading section .init_array, size 0x8 lma 0x4001aee0
    Loading section .fini_array, size 0x8 lma 0x4001aee8
    Loading section .rtemsroset, size 0x98 lma 0x4001aef0
    Loading section .data, size 0x730 lma 0x40100000
    Start address 0x0000000040008000, load size 78000
    Transfer rate: 8463 KB/sec, 1695 bytes/write.
    (gdb) continue
    Continuing.
    [Inferior 1 (process 1) exited normally]
    (gdb) bt
    No stack.
    (gdb) 

     参考/root/development/rtems/kernel/rtems/testsuites/samples/hello

    [root@centos7 hello]# cat init.c 
    /*
     *  COPYRIGHT (c) 1989-2012.
     *  On-Line Applications Research Corporation (OAR).
     *
     *  The license and distribution terms for this file may be
     *  found in the file LICENSE in this distribution or at
     *  http://www.rtems.org/license/LICENSE.
     */
    
    #ifdef HAVE_CONFIG_H
    #include "config.h"
    #endif
    
    #include <rtems.h>
    #include <tmacros.h>
    
    const char rtems_test_name[] = "HELLO WORLD";
    
    static rtems_task Init(
      rtems_task_argument ignored
    )
    {
      rtems_print_printer_fprintf_putc(&rtems_test_printer);
      TEST_BEGIN();
      printf( "Hello World\n" );
      TEST_END();
      rtems_test_exit( 0 );
    }
    
    
    /* NOTICE: the clock driver is explicitly disabled */
    #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
    #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
    
    #define CONFIGURE_MAXIMUM_TASKS            1
    
    #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
    
    #define CONFIGURE_INIT_TASK_ATTRIBUTES RTEMS_FLOATING_POINT
    
    #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
    
    #define CONFIGURE_INIT
    #include <rtems/confdefs.h>

    不进行#define CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM

    [root@centos7 hello_world_c]# vi test.c 
    /*
     *  Classic API Hello World
     */
    
    #include <rtems.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    rtems_task Init(
      rtems_task_argument ignored
    )
    {
      printf( "\n\n*** HELLO WORLD TEST ***\n" );
      printf( "Hello World\n" );
      printf( "*** END OF HELLO WORLD TEST ***\n" );
      exit( 0 );
    }
    
    /* configuration information */
    
    #include <bsp.h>
    
    /* NOTICE: the clock driver is explicitly disabled */
    #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
    #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
    //#define CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
    
    #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
    #define CONFIGURE_MAXIMUM_TASKS 1
    
    #define CONFIGURE_INIT
    #include <rtems/confdefs.h>
    /* end of file */

    成功运行

    [root@centos7 hello_world_c]# make
    aarch64-rtems6-gcc --pipe  -Wall  -O2 -g -fdata-sections -ffunction-sections   -I/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include -mcpu=cortex-a53       -c   -o o-optimize/test.o test.c
    aarch64-rtems6-gcc --pipe  -Wall  -O2 -g -fdata-sections -ffunction-sections   -I/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include -mcpu=cortex-a53      -B/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib -qrtems -Wl,--gc-sections   -mcpu=cortex-a53   -o o-optimize/hello.exe  o-optimize/test.o       
    aarch64-rtems6-nm -g -n o-optimize/hello.exe > o-optimize/hello.num
    aarch64-rtems6-size o-optimize/hello.exe
       text    data     bss     dec     hex filename
      84336    1856 134097208       134183400       7ff79e8 o-optimize/hello.exe
    cp o-optimize/hello.exe o-optimize/hello.ralf
    [root@centos7 hello_world_c]# qemu-system-aarch64 -no-reboot -nographic -serial mon:stdio  -machine virt,gic-version=3 -cpu cortex-a53 -m 4096 -kernel o-optimize/hello.exe 
    
    
    *** HELLO WORLD TEST ***
    Hello World
    *** END OF HELLO WORLD TEST ***
    
    [ RTEMS shutdown ]
    RTEMS version: 6.0.0.822ebb4cae2bb8bc9fe55915bd4acc4942fcd8ce
    RTEMS tools: 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1)
    executing thread ID: 0x08a010001
    executing thread name: UI1 
    [root@centos7 hello_world_c]# 

    再次运行gdb

    [root@centos7 hello_world_c]# qemu-system-aarch64 -no-reboot -nographic -serial mon:stdio  -machine virt,gic-version=3 -cpu cortex-a53 -m 4096 -kernel o-optimize/hello.exe  -S -gdb tcp::8889
    
    
    *** HELLO WORLD TEST ***
    Hello World
    *** END OF HELLO WORLD TEST ***
    
    [ RTEMS shutdown ]
    RTEMS version: 6.0.0.822ebb4cae2bb8bc9fe55915bd4acc4942fcd8ce
    RTEMS tools: 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1)
    executing thread ID: 0x08a010001
    executing thread name: UI1 
    You have new mail in /var/spool/mail/root
    [root@centos7 hello_world_c]# 
    [root@centos7 o-optimize]# aarch64-rtems6-gdb   hello.exe 
    GNU gdb (GDB) 10.1.90.20210409-git
    Copyright (C) 2021 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "--host=aarch64-linux-gnu --target=aarch64-rtems6".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <https://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from hello.exe...
    (gdb) target remote :8889
    Remote debugging using :8889
    bsp_vector_table_begin () at ../../../bsps/aarch64/shared/start/start.S:55
    55        mov x5, x1    /* machine type number or ~0 for DT boot */
    (gdb)  b bsp_start
    Breakpoint 1 at 0x40008c90: file ../../../bsps/aarch64/a53/start/bspstart.c, line 44.
    (gdb) c
    Continuing.
    
    Breakpoint 1, bsp_start () at ../../../bsps/aarch64/a53/start/bspstart.c:44
    44        bsp_interrupt_initialize();
    (gdb) bt
    #0  bsp_start () at ../../../bsps/aarch64/a53/start/bspstart.c:44
    #1  0x000000004000f060 in rtems_initialize_executive () at ../../../cpukit/sapi/src/exinit.c:116
    #2  0x0000000040008c7c in boot_card (cmdline=<optimized out>) at ../../../bsps/shared/start/bootcard.c:55
    #3  0x00000000400080cc in _el1_start () at ../../../bsps/aarch64/shared/start/start.S:308
    Backtrace stopped: previous frame identical to this frame (corrupt stack?)
    (gdb) c
    Continuing.
    [Inferior 1 (process 1) exited normally]
    (gdb) 

     成功運行rtems-examples/ticker/low_ticker

    [root@centos7 low_ticker]# make
    test -d o-optimize || mkdir o-optimize
    aarch64-rtems6-gcc --pipe  -Wall  -O2 -g -fdata-sections -ffunction-sections   -I/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include -mcpu=cortex-a53       -c   -o o-optimize/init.o init.c
    init.c: In function 'Test_task':
    init.c:28:17: warning: format '%d' expects argument of type 'int', but argument 2 has type 'rtems_task_argument' {aka 'long unsigned int'} [-Wformat=]
       28 |     printk( "TA%d %s%02d:%02d:%02d   %02d/%02d/%04d\n",
          |                ~^
          |                 |
          |                 int
          |                %ld
       29 |       task_index, " - rtems_clock_get_tod - ",
          |       ~~~~~~~~~~ 
          |       |
          |       rtems_task_argument {aka long unsigned int}
    init.c:20:21: warning: variable 'status' set but not used [-Wunused-but-set-variable]
       20 |   rtems_status_code status;
          |                     ^~~~~~
    init.c: In function 'Init':
    init.c:42:21: warning: variable 'status' set but not used [-Wunused-but-set-variable]
       42 |   rtems_status_code status;
          |                     ^~~~~~
    init.c:69:1: warning: no return statement in function returning non-void [-Wreturn-type]
       69 | }
          | ^
    aarch64-rtems6-gcc --pipe  -Wall  -O2 -g -fdata-sections -ffunction-sections   -I/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib/include -mcpu=cortex-a53      -B/root/development/rtems/compiler/6/aarch64-rtems6/a53_lp64_qemu/lib -qrtems -Wl,--gc-sections   -mcpu=cortex-a53   -o o-optimize/low_ticker.exe  o-optimize/init.o       
    aarch64-rtems6-nm -g -n o-optimize/low_ticker.exe > o-optimize/low_ticker.num
    aarch64-rtems6-size o-optimize/low_ticker.exe
       text    data     bss     dec     hex filename
      45376     904 134137088       134183368       7ff79c8 o-optimize/low_ticker.exe
    cp o-optimize/low_ticker.exe o-optimize/low_ticker.ralf
    [root@centos7 low_ticker]# qemu-system-aarch64 -no-reboot -nographic -serial mon:stdio  -machine virt,gic-version=3 -cpu cortex-a53 -m 4096 -kernel o-optimize/low_ticker.exe 
    
    
    *** LOW MEMORY CLOCK TICK TEST ***
    TA1  - rtems_clock_get_tod - 09:00:00   12/31/1988
    TA2  - rtems_clock_get_tod - 09:00:00   12/31/1988
    TA2  - rtems_clock_get_tod - 09:00:09   12/31/1988
    TA2  - rtems_clock_get_tod - 09:00:19   12/31/1988
    TA2  - rtems_clock_get_tod - 09:00:29   12/31/1988
    *** END OF LOW MEMORY CLOCK TICK TEST ***
    
    [ RTEMS shutdown ]
    RTEMS version: 6.0.0.822ebb4cae2bb8bc9fe55915bd4acc4942fcd8ce
    RTEMS tools: 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1)
    executing thread ID: 0x08a010002
    executing thread name: TA1 
    [root@centos7 low_ticker]# pwd
    /root/development/rtems/rtems-examples/ticker/low_ticker
    [root@centos7 low_ticker]# 

    testsuites

    支持test的bsp

     Available BSP testers

    You can list the available BSP testers with (not all shown):

    [root@centos7 rtems]# ls  /root/development/rtems/compiler/6/bin
    aarch64-rtems6-addr2line  aarch64-rtems6-cpp         aarch64-rtems6-gcc-ar      aarch64-rtems6-gcov-tool      aarch64-rtems6-ld.bfd   aarch64-rtems6-readelf  mkimage.py         rtems-exeinfo       rtems-run          rtems-tld
    aarch64-rtems6-ar         aarch64-rtems6-elfedit     aarch64-rtems6-gcc-nm      aarch64-rtems6-gdb            aarch64-rtems6-nm       aarch64-rtems6-run      rtems-addr2line    rtems-ld            rtems-syms         trace-converter
    aarch64-rtems6-as         aarch64-rtems6-g++         aarch64-rtems6-gcc-ranlib  aarch64-rtems6-gdb-add-index  aarch64-rtems6-objcopy  aarch64-rtems6-size     rtems-bin2c        rtems-ra            rtems-test         xmlwf
    aarch64-rtems6-c++        aarch64-rtems6-gcc         aarch64-rtems6-gcov        aarch64-rtems6-gprof          aarch64-rtems6-objdump  aarch64-rtems6-strings  rtems-boot-image   rtems-rap           rtems-tftp-proxy
    aarch64-rtems6-c++filt    aarch64-rtems6-gcc-10.3.1  aarch64-rtems6-gcov-dump   aarch64-rtems6-ld             aarch64-rtems6-ranlib   aarch64-rtems6-strip    rtems-bsp-builder  rtems-record-lttng  rtems-tftp-server
    [root@centos7 rtems]# rtems-test --list-bsps
    RTEMS Testing - Tester, 6.0.not_released
     BSP List:
      a53_ilp32_qemu
      a53_lp64_qemu-cov
      a53_lp64_qemu
      a72_lp64_qemu
      beagleboardxm
      beagleboneblack
      bf537Stamp-run
      bf537Stamp
      erc32-sis
      fvp_cortex_r52x1
      fvp_cortex_r52x2
      fvp_cortex_r52x4
      generic_or1k
      gr740-sis
      griscv-sis-cov
      griscv-sis
      griscv
      h8sxsim-run
      h8sxsim
      imx7
      jmr3904-run
      jmr3904
      leon2-run
      leon2-sis
      leon3-qemu-cov
      leon3-qemu
      leon3-run
      leon3-sis-cov
      leon3-sis
      leon3_tsim-run
      leon3_tsim
      lm32_evr_gdbsim-run
      lm32_evr_gdbsim
      mcf5235
      pc-qemu-cov
      pc-qemu
      pc
      psim-run
      psim
      qoriq_e500
      qoriq_e6500_32
      qoriq_e6500_64
      raspberrypi2
      realview_pbx_a9_qemu
      rv32i_spike
      rv32iac_spike
      rv32im_spike
      rv32imac_spike
      rv32imafc_spike
      rv32imafd_spike
      rv32imafdc_spike
      rv64imac_medany_spike
      rv64imac_spike
      rv64imafd_medany
      rv64imafd_medany_spike
      rv64imafd_spike
      rv64imafdc_medany
      rv64imafdc_medany_spike
      rv64imafdc_spike
      simsh1-run
      simsh1
      simsh2-run
      simsh2
      simsh2e-run
      simsh2e
      simsh4-run
      simsh4
      sis-run
      sis
      v850e1sim-run
      v850e1sim
      v850e2sim-run
      v850e2sim
      v850e2v3sim-run
      v850e2v3sim
      v850esim-run
      v850esim
      v850essim-run
      v850essim
      v850sim-run
      v850sim
      xilinx_versal_lp64_qemu
      xilinx_versal_vck190
      xilinx_zynq_a9_qemu-cov
      xilinx_zynq_a9_qemu
      xilinx_zynq_a9_qemu_smp
      xilinx_zynq_zc706
      xilinx_zynq_zc706_qemu
      xilinx_zynq_zedboard
      xilinx_zynqmp_ilp32_qemu
      xilinx_zynqmp_ilp32_zu3eg
      xilinx_zynqmp_lp64_qemu-cov
      xilinx_zynqmp_lp64_qemu
      xilinx_zynqmp_lp64_zu3eg

    ./waf命令

    [1384/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/base_sp.exe
    [1385/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/capture.exe
    [1386/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/cdtest.exe
    [1387/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/fileio.exe
    [1388/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/hello.exe
    [1389/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/iostream.exe
    [1390/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/nsecs.exe
    [1391/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/ticker.exe
    [1392/1397] Linking build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/unlimited.exe
    [root@centos7 rtems]# find ./ -name hello.exe
    ./build/aarch64/xilinx_zynqmp_lp64_qemu/testsuites/samples/hello.exe
    ./build/aarch64/a53_lp64_qemu/testsuites/samples/hello.exe
    [root@centos7 rtems]# rtems-test --list-bsps | grep xilinx_zynqmp_lp64_qemu
      xilinx_zynqmp_lp64_qemu-cov
      xilinx_zynqmp_lp64_qemu
    [root@centos7 rtems]# 
    [root@centos7 rtems]# pwd
    /root/development/rtems/kernel/rtems
    [root@centos7 rtems]# 
    [root@centos7 rtems]# qemu-system-aarch64 -no-reboot -nographic -serial mon:stdio  -machine virt,gic-version=3 -cpu cortex-a53 -m 4096 -kernel  build/aarch64/a53_lp64_qemu/testsuites/samples/hello.exe
    
    
    *** BEGIN OF TEST HELLO WORLD ***
    *** TEST VERSION: 6.0.0.822ebb4cae2bb8bc9fe55915bd4acc4942fcd8ce
    *** TEST STATE: EXPECTED_PASS
    *** TEST BUILD:
    *** TEST TOOLS: 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1)
    Hello World
    
    *** END OF TEST HELLO WORLD ***
    
    
    [ RTEMS shutdown ]
    RTEMS version: 6.0.0.822ebb4cae2bb8bc9fe55915bd4acc4942fcd8ce
    RTEMS tools: 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1)
    executing thread ID: 0x08a010001
    executing thread name: UI1 
    [root@centos7 rtems]# 

    capture.exe

    [root@centos7 samples]# qemu-system-aarch64 -no-reboot -nographic -serial mon:stdio  -machine virt,gic-version=3 -cpu cortex-a53 -m 4096 -kernel  capture.exe 
    
    
    *** BEGIN OF TEST CAPTURE ENGINE ***
    *** TEST VERSION: 6.0.0.822ebb4cae2bb8bc9fe55915bd4acc4942fcd8ce
    *** TEST STATE: USER_INPUT
    *** TEST BUILD:
    *** TEST TOOLS: 10.3.1 20210409 (RTEMS 6, RSB 889cf95db0122bd1a6b21598569620c40ff2069d, Newlib eb03ac1)
    Press any key to start capture engine (20s remaining)
    Press any key to start capture engine (19s remaining)
    Press any key to start capture engine (18s remaining)
    Press any key to start capture engine (17s remaining)
    
    Monitor ready, press enter to login.
    
    1-rtems $ ls
    Unrecognised command; try 'help'
    1-rtems $  copen 50000
    capture engine opened.
    1-rtems $ cwceil 100
    watch ceiling is 100.
    1-rtems $ cwfloor 102
    watch floor is 102.
    1-rtems $  cwglob on
    global watch enabled.
    1-rtems $ ctset RMON
    trigger set.
    1-rtems $ cenable
    capture engine enabled.
    1-rtems $ cdisable
    capture engine disabled.
    1-rtems $ ctrace
    1-rtems $ ctrace
    1-rtems $ q
      ID       NAME   ATTRIBUTES   PEND   MAXPEND  MAXSIZE
    ------------------------------------------------------------------------------
    1-rtems $ qui
    Unrecognised command; try 'help'
    1-rtems $ quit
    Unrecognised command; try 'help'
    1-rtems $ exit
    Unrecognised command; try 'help'
    1-rtems $ 
    1-rtems $ 
    [root@centos7 hello_world_c]#  mkdir -p  cdrom/opt
    [root@centos7 hello_world_c]#  mkdir -p cdrom/boot/grub
    
    [root@centos7 hello_world_c]#   cp o-optimize/hello.exe cdrom/opt
    [root@centos7 hello_world_c]# cat  cdrom/boot/grub/grub.cfg
    # RTEMS Grubs Configuration for the Sample Tests
    
    set default=12
    
    menuentry "RTEMS - Hello" {
    
    multiboot /opt/hello.exe
    
    }
    [root@centos7 hello_world_c]#
    [root@centos7 rtems]#    yum -y install grub2
    [root@centos7 hello_world_c]# ls  /usr/bin/grub2-
    grub2-editenv          grub2-fstest           grub2-kbdcomp          grub2-mkfont           grub2-mklayout         grub2-mkpasswd-pbkdf2  grub2-mkrescue         grub2-script-check     
    grub2-file             grub2-glue-efi         grub2-menulst2cfg      grub2-mkimage          grub2-mknetdir         grub2-mkrelpath        grub2-mkstandalone     grub2-syslinux2cfg     
    [root@centos7 hello_world_c]# ls  /usr/bin/grub2-
    [root@centos7 hello_world_c]#  cp grup.cfg cdrom/boot/grub
    [root@centos7 hello_world_c]# 

    鏡像製作

    [root@centos7 hello_world_c]# dd if=/dev/zero of=rtems-boot.img bs=512 count=32130
    32130+0 records in
    32130+0 records out
    16450560 bytes (16 MB) copied, 0.1166 s, 141 MB/s
    [root@centos7 hello_world_c]# losetup /dev/loop0 rtems-boot.img
    [root@centos7 hello_world_c]# fdisk /dev/loop0
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x9036e64b.
    
    Command (m for help): 
    Command (m for help): 
    Command (m for help): m^H
    Command action
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition
       g   create a new empty GPT partition table
       G   create an IRIX (SGI) partition table
       l   list known partition types
       m   print this menu
       n   add a new partition
       o   create a new empty DOS partition table
       p   print the partition table
       q   quit without saving changes
       s   create a new empty Sun disklabel
       t   change a partition's system id
       u   change display/entry units
       v   verify the partition table
       w   write table to disk and exit
       x   extra functionality (experts only)
    
    Command (m for help): o
    Building a new DOS disklabel with disk identifier 0x86e019af.
    
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-32129, default 2048): a
    First sector (2048-32129, default 2048): a
    First sector (2048-32129, default 2048): 2048
    Last sector, +sectors or +size{K,M,G} (2048-32129, default 32129): a
    Last sector, +sectors or +size{K,M,G} (2048-32129, default 32129): 32129
    Partition 1 of type Linux and of size 14.7 MiB is set
    
    Command (m for help): a
    Selected partition 1
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 22: Invalid argument.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.
    [root@centos7 hello_world_c]# 
    [root@centos7 hello_world_c]# ls /mnt
    huge
    [root@centos7 hello_world_c]# mkdir /data3
    [root@centos7 hello_world_c]# kpartx -av /dev/loop0
    add map loop0p1 (253:0): 0 30082 linear /dev/loop0 2048
    [root@centos7 hello_world_c]# losetup -f
    /dev/loop1
    [root@centos7 hello_world_c]# losetup /dev/loop1 /dev/mapper/loop0p1
    [root@centos7 hello_world_c]# mkfs.ext2 /dev/loop1 && mount /dev/loop1 /data3
    mke2fs 1.42.9 (28-Dec-2013)
    Discarding device blocks: done                            
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    3760 inodes, 15040 blocks
    752 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=15466496
    2 block groups
    8192 blocks per group, 8192 fragments per group
    1880 inodes per group
    Superblock backups stored on blocks: 
            8193
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Writing superblocks and filesystem accounting information: done
    [root@centos7 hello_world_c]# mkdir -p /data3/boot/grub/
    [root@centos7 hello_world_c]# echo 'source (hd1,msdos1)/grub.cfg' > /data3/boot/grub/grub.cfg
    [root@centos7 hello_world_c]# cat /data3/boot/grub/grub.cfg
    source (hd1,msdos1)/grub.cfg
    [root@centos7 hello_world_c]# grub2-install --allow-floppy --boot-directory=/mnt/boot --disk-module=biosdisk --modules="ext2 part_msdos" --force /dev/loop0
    grub2-install: error: /usr/lib/grub/arm64-efi/modinfo.sh doesn't exist. Please specify --target or --directory.
    [root@centos7 hello_world_c]# 
    yum -y install  grub2-efi-aa64-modules.noarch

    yum  install yum install grub2-efi-aa64-modules.noarch   (

    yum install  grub2-efi-aa64.aarch64

    https://gitlab.com/c-mauderer/rtems-libbsd

    Set up RTEMS ARM BSP on Host OS

    QEMU搭建arm64 Linux调试环境

    RTEMS yield_flash on   QEMU

  • 相关阅读:
    1143 Lowest Common Ancestor (30)
    PAT 1135 Is It A Red-Black Tree
    PAT 1119 Pre- and Post-order Traversals
    1102 Invert a Binary Tree(25 分)
    PAT总结
    c++ getline的用法
    PAT 1049 Counting Ones (30)
    PAT 1022 Digital Library (30)
    java jar包
    NIO的理解
  • 原文地址:https://www.cnblogs.com/dream397/p/15398010.html
Copyright © 2011-2022 走看看