xilinx_zynq_a9_qemu RTEMS6 no console input/output

Christian MAUDERER christian.mauderer at embedded-brains.de
Fri Feb 19 07:39:19 UTC 2021


Hello Heinz,

Am 19.02.21 um 07:53 schrieb junkes:
> Hello Christian,
> 
> I checked with gdb.
> 
> start with
> sudo ~/QEMU/rtems/6/bin/qemu-system-arm -M xilinx-zynq-a9 -S -s -m 256M 
> -no-reboot -serial null -serial mon:stdio  -nographic -kernel 
> ./arm-rtems6/c/xilinx_zynq_a9_qemu/testsuites/samples/fileio.exe
> 
> other terminal:
> 
> $ ~/QEMU/rtems/6/bin/arm-rtems6-gdb 
> ./arm-rtems6/c/xilinx_zynq_a9_qemu/testsuites/samples/fileio.exe
> GNU gdb (GDB) 10.1.90.20210205-git
> ...
> 
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from 
> ./arm-rtems6/c/xilinx_zynq_a9_qemu/testsuites/samples/fileio.exe...
> (gdb) target rem localhost:1234
> Remote debugging using localhost:1234
> bsp_start_vector_table_end ()
>      at 
> ../../../../../../../../../kernel/c/src/lib/libbsp/arm/xilinx-zynq/../../../../../../bsps/arm/shared/start/start.S:192 
> 
> 192        mov    r0, #0
> (gdb) c
> Continuing.
>                           <---- no output
> ^C
> Program received signal SIGINT, Interrupt.
> bsp_vector_table_begin ()
>      at 
> ../../../../../../../../../kernel/c/src/lib/libbsp/arm/xilinx-zynq/../../../../../../bsps/arm/shared/start/start.S:73 
> 
> 73        ldr    pc, .Lhandler_addr_undef
> (gdb) bt
> #0  bsp_vector_table_begin ()
>      at 
> ../../../../../../../../../kernel/c/src/lib/libbsp/arm/xilinx-zynq/../../../../../../bsps/arm/shared/start/start.S:73 
> 
> #1  0x0010481c in zynq_mmu_config_table ()
> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
> (gdb)

That looks a bit like there has ben either an exception or the code 
hasn't been load. Can you try the following gdb commands:

# Reset the system and load binary
monitor system_reset
load

# Set some useful breakpoints (maybe you have to skip some libbsd ones)
b _ARM_Exception_default
b _ARMV4_Exception_data_abort_default
b bsp_interrupt_handler_default
b bsp_reset
b _Internal_error_Occurred
b _Terminate

# run program
continue

If you reach one of the breakpoints do a `bt` like you did above.

> 
> Same behavior on MVME2500 with RTEMS6:
> 
> VME2500=> run rtems_myTests
> reading mvme2500.dtb
> 12363 bytes read in 13 ms (928.7 KiB/s)
> Speed: 1000, full duplex
> Using eTSEC1 device
> TFTP from server 141.14.128.9; our IP address is 141.14.128.89
> Filename 'ticker.img'.
> Load address: 0x10000000
> Loading: #####
>           6.4 MiB/s
> done
> Bytes transferred = 60182 (eb16 hex)
> WARNING: adjusting available memory to 30000000
> ## Booting kernel from Legacy Image at 10000000 ...
>     Image Name:   RTEMS
>     Created:      2021-02-18  20:18:21 UTC
>     Image Type:   PowerPC Linux Kernel Image (gzip compressed)
>     Data Size:    60118 Bytes = 58.7 KiB
>     Load Address: 00004000
>     Entry Point:  00004000
>     Verifying Checksum ... OK
> ## Flattened Device Tree blob at 20000000
>     Booting using the fdt blob at 0x20000000
>     Uncompressing Kernel Image ... OK
>     Loading Device Tree to 03ff9000, end 03fff04a ... OK
> 
> no further output ...

That's odd. Especially because it is an entirely different target.

Best regards

Christian

> 
> Will now try your install target ...
> 
> Heinz
> 
> 
> On 2021-02-18 22:28, Christian Mauderer wrote:
>> Hello Heinz,
>>
>> On 18/02/2021 21:38, junkes wrote:
>>> Hallo Christian,
>>> thank you for testing. This is "my procedure":
>>
>> hm. There doesn't seem to be a big difference to mine. If you are
>> interested, take a look at the install target in the Makefile in:
>>
>> https://gitlab.com/c-mauderer/rtems-simulation-environment
>>
>> It's basically just building the same stuff. Differences:
>>
>> I use the waf based build system for the BSP. But that shouldn't
>> really matter at the moment. But note that you might have to switch
>> somewhen in the near future because it is planned to remove the old
>> autoconf / automake based build system.
>>
>> Beneath that I use a qemu build from the upstream sorces because the
>> version from RSB doesn't build cleanly on Arch Linux (something about
>> docs). But I tried it with the binary build by RSB and that works too.
>>
>> I'll think a bit about it and let you know when I find something other
>> that might be a problem. But at the moment, I'm running out of ideas.
>>
>> Maybe you can try to attach a gdb to your qemu and see whether the
>> application runs and only doesn't produce output?
>>
>> Best regards
>>
>> Christian
>>
>>>
>>> ### Installation RTEMS6 / EPICS7 (xilinx_zynq_a9_qemu)
>>>
>>> Installation RTEMS6 and EPICS 7 incl. rtems tools, kernel, bsp and 
>>> libbsd
>>>
>>> ubuntu 20.04.1
>>>
>>> ---
>>>
>>> **Installing rtems source builder and build rtems-powerpc tools**
>>>
>>>      mkdir QEMU
>>>      cd QEMU
>>>      git clone https://github.com/RTEMS/rtems-source-builder.git rsb
>>>      cd rsb
>>>      git checkout master
>>>      git pull
>>>      cd rtems
>>>      ../source-builder/sb-set-builder --prefix=$HOME/QEMU/rtems/6 
>>> 6/rtems-arm
>>>
>>> RTEMS Source Builder - Set Builder, 6 (61dcadee0825)
>>>   Command Line: ../source-builder/sb-set-builder 
>>> --prefix=/home/junkes/QEMU/rtems/6 6/rtems-arm
>>>   Python: 2.7.18 (default, Aug  4 2020, 11:16:42) [GCC 9.3.0]
>>> Build Set: 6/rtems-arm
>>> Build Set: 6/rtems-autotools.bset
>>> Build Set: 6/rtems-autotools-internal.bset
>>> config: tools/rtems-autoconf-2.69-1.cfg
>>> package: autoconf-2.69-x86_64-linux-gnu-1
>>> script:  1: #!/bin/sh
>>> script:  2: # ___build_pre as set up in defaults.py
>>> script:  3: # Save the original path away.
>>> script:  4: export SB_ORIG_PATH=${PATH}
>>> script:  5: # Directories
>>> script:  6: SB_PREFIX="/home/junkes/QEMU/rtems/6"
>>> script:  7: SB_PREFIX_CLEAN=$(echo "/home/junkes/QEMU/rtems/6" | 
>>> /bin/sed -e 's/^\///')
>>> script:  8: SB_SOURCE_DIR="/home/junkes/QEMU/rsb/rtems/sources"
>>> script:  9: 
>>> SB_BUILD_DIR="/home/junkes/QEMU/rsb/rtems/build/autoconf-2.69-x86_64-linux-gnu-1" 
>>> script: 10: # host == build, use build; host != build, host uses host 
>>> and build uses build
>>> ...
>>> ...
>>> installing: expat-2.1.0-x86_64-linux-gnu-1 -> /home/junkes/QEMU/rtems/6
>>> installing: gmp-6.1.0-x86_64-linux-gnu-1 -> /home/junkes/QEMU/rtems/6
>>> installing: arm-rtems6-gdb-e1a808d-x86_64-linux-gnu-1 -> 
>>> /home/junkes/QEMU/rtems/6
>>> installing: arm-rtems6-binutils-c0034ac-x86_64-linux-gnu-1 -> 
>>> /home/junkes/QEMU/rtems/6
>>> installing: arm-rtems6-gcc-eb15f76-newlib-d4a756f-x86_64-linux-gnu-1 
>>> -> /home/junkes/QEMU/rtems/6
>>> installing: rtems-tools-90342feb4dd63d188ce945adfb0a7694a42a65cd-1 -> 
>>> /home/junkes/QEMU/rtems/6
>>> cleaning: expat-2.1.0-x86_64-linux-gnu-1
>>> cleaning: gmp-6.1.0-x86_64-linux-gnu-1
>>> cleaning: arm-rtems6-gdb-e1a808d-x86_64-linux-gnu-1
>>> cleaning: arm-rtems6-binutils-c0034ac-x86_64-linux-gnu-1
>>> cleaning: arm-rtems6-gcc-eb15f76-newlib-d4a756f-x86_64-linux-gnu-1
>>> cleaning: rtems-tools-90342feb4dd63d188ce945adfb0a7694a42a65cd-1
>>> Build Sizes: usage: 9.360GB total: 2.750GB (sources: 796.541MB, 
>>> patches: 66.634KB, installed 1.972GB)
>>> installing: 6/rtems-arm -> /home/junkes/QEMU/rtems/6
>>> clean staging: 6/rtems-arm
>>> Staging Size: 5.291MB
>>> Build Set: Time 0:34:44.211033
>>>
>>> Build qemu-server:
>>>      ../source-builder/sb-set-builder 
>>> --prefix=/home/junkes/QEMU/rtems/6 devel/qemu.bset
>>>
>>> Add to $HOME/.bashrc:
>>>
>>>      #RTEMS development
>>>      export RTEMS_VERSION=6
>>>      export RTEMS_ARCH=arm-rtems${RTEMS_VERSION}
>>>      export RTEMS_BSP=xilinx_zynq_a9_qemu
>>>      export RTEMS_ROOT=${HOME}/QEMU/rtems/${RTEMS_VERSION}
>>>      export PATH=${RTEMS_ROOT}/bin:${PATH}
>>>      export RTEMS_MAKEFILE_PATH=${RTEMS_ROOT}/${RTEMS_ARCH}/${RTEMS_BSP}
>>>      export RTEMS_SHARE_PATH=${RTEMS_ROOT}/share/rtems${RTEMS_VERSION}
>>>
>>>
>>> **Installing rtems kernel and bootstrap**
>>>
>>>      cd; cd QEMU
>>>      git clone https://github.com/RTEMS/rtems.git kernel
>>>      cd kernel;
>>>      git checkout master
>>>      git pull
>>>      ./bootstrap -c && ./rtems-bootstrap
>>>
>>> output:
>>>
>>>   removing automake generated Makefile.in files
>>> removing configure files
>>> removing aclocal.m4 files
>>> RTEMS Bootstrap, 1.0
>>>        1/119: autoreconf: configure.ac
>>>        2/119: autoreconf: testsuites/configure.ac
>>>        3/119: autoreconf: testsuites/smptests/configure.ac
>>>        4/119: autoreconf: testsuites/fstests/configure.ac
>>>        5/119: autoreconf: testsuites/ada/configure.ac
>>>        6/119: autoreconf: testsuites/benchmarks/configure.ac
>>>        7/119: autoreconf: testsuites/libtests/configure.ac
>>>        8/119: autoreconf: testsuites/rhealstone/configure.ac
>>>        9/119: autoreconf: testsuites/psxtests/configure.ac
>>>       10/119: autoreconf: testsuites/psxtmtests/configure.ac
>>>       11/119: autoreconf: testsuites/sptests/configure.ac
>>>       12/119: autoreconf: testsuites/mptests/configure.ac
>>>       13/119: autoreconf: testsuites/samples/configure.ac
>>>       14/119: autoreconf: testsuites/tmtests/configure.ac
>>>       15/119: autoreconf: c/configure.ac
>>>
>>>      ...
>>>      110/119: autoreconf: c/src/lib/libbsp/powerpc/mvme3100/configure.ac
>>>      111/119: autoreconf: 
>>> c/src/lib/libbsp/powerpc/haleakala/configure.ac
>>>      112/119: autoreconf: 
>>> c/src/lib/libbsp/powerpc/mpc8260ads/configure.ac
>>>      113/119: autoreconf: 
>>> c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac
>>>      114/119: autoreconf: c/src/lib/libbsp/powerpc/qoriq/configure.ac
>>>      115/119: autoreconf: c/src/lib/libbsp/powerpc/gen5200/configure.ac
>>>      116/119: autoreconf: c/src/lib/libbsp/powerpc/qemuppc/configure.ac
>>>      117/119: autoreconf: c/src/lib/libbsp/powerpc/virtex/configure.ac
>>>      118/119: autoreconf: c/src/lib/libbsp/powerpc/virtex4/configure.ac
>>>      119/119: autoreconf: cpukit/configure.ac
>>>      Bootstrap time: 0:00:27.754820
>>>
>>>      cd; cd QEMU
>>>      mkdir -p build/b-xilinx_zynq_a9_qemu/
>>>      cd build/b-xilinx_zynq_a9_qemu/
>>>      ../../kernel/configure --prefix=$HOME/QEMU/rtems/6 
>>> --target=arm-rtems6 --enable-rtemsbsp=xilinx_zynq_a9_qemu 
>>> --enable-posix --enable-c++ --disable-networking --enable-tests
>>>
>>> config.log:
>>>
>>>      This file contains any messages produced by compilers while
>>>      running configure, to aid debugging if configure makes a mistake.
>>>
>>>      It was created by rtems configure 6.0.0, which was
>>>      generated by GNU Autoconf 2.69.  Invocation command line was
>>>
>>>        $ ../../kernel/configure --prefix=/home/junkes/QEMU/rtems/6 
>>> --target=arm-rtems6 --enable-rtemsbsp=xilinx_zynq_a9_qemu 
>>> --enable-posix --enable
>>>      -c++ --disable-networking --enable-tests
>>>
>>>      ## --------- ##
>>>      ## Platform. ##
>>>      ## --------- ##
>>>
>>>      hostname = Krikkit
>>>      uname -m = x86_64
>>>      uname -r = 5.8.0-43-generic
>>>      uname -s = Linux
>>>      uname -v = #49~20.04.1-Ubuntu SMP Fri Feb 5 09:57:56 UTC 2021
>>>
>>>      /usr/bin/uname -p = x86_64
>>>      /bin/uname -X     = unknown
>>>      ...
>>>
>>>      make -j17 all
>>>      make install
>>>
>>> rtems-libbsd
>>>      cd;cd QEMU
>>>      cd rtems-libbsd
>>>      git remote -v
>>>      origin    https://github.com/RTEMS/rtems-libbsd.git (fetch)
>>>      origin    https://github.com/RTEMS/rtems-libbsd.git (push)
>>>      git checkout master
>>>      git pull
>>>      git checkout 6-freebsd-12
>>>      git submodule init
>>>      git submodule update rtems_waf
>>>      ./waf configure --prefix=$HOME/QEMU/rtems/6 
>>> --rtems-bsps=arm/xilinx_zynq_a9_qemu --buildset=buildset/default.ini
>>>      ./waf
>>>      ./waf install
>>>
>>>
>>> qemu-testing:
>>>
>>> no ouptut and must be killed by other terminal:
>>>
>>> $ qemu-system-arm -no-reboot -serial null -serial mon:stdio -net none 
>>> -nographic -M xilinx-zynq-a9 -m 256M -kernel 
>>> arm-rtems6/c/xilinx_zynq_a9_qemu/testsuites/samples/hello.exe
>>> qemu-system-arm: warning: nic cadence_gem.0 has no peer
>>> qemu-system-arm: warning: nic cadence_gem.1 has no peer
>>>
>>>
>>> On 2021-02-18 21:10, Christian Mauderer wrote:
>>>> Hello Heinz,
>>>>
>>>> Odd. I just tested it with the current master of rtems, libbsd, rtems
>>>> source builder and qemu and it worked fine. The only thing that I had
>>>> to change compared to your command was adding the "-serial null"
>>>> before the second "-serial mon:stdio". Note that it's "null" and not
>>>> "none" like for network. I made that mistake when trying to adapt your
>>>> command line the first time and received no output.
>>>>
>>>> Beneath that I have an
>>>>
>>>>     export QEMU_AUDIO_DRV=none
>>>>
>>>> in my script that starts qemu. I'm not sure why and it seems that it
>>>> is no longer necessary. But maybe you want to try it.
>>>>
>>>> If both don't help:
>>>>
>>>> Which version of rtems are you using and how do you configure your
>>>> BSP? Which version of qemu are you using?
>>>>
>>>> On 18/02/2021 18:21, Heinz Junkes wrote:
>>>>> Thanks, unfortunately I also have the same behavior with -serial 
>>>>> null -serial on:stdio.
>>>>> So I use it with RTEMS5 which worked so far.
>>>>>
>>>>> I had found this in the mail list and tried it ;-)
>>>>
>>>> The patch below seems to be for the xilinx_zynqmp* BSP and not for the
>>>> xilinx_zynq_a9_qemu.
>>>>
>>>> Best regards
>>>>
>>>> Christian
>>>>
>>>>>
>>>>> Heinz
>>>>>
>>>>> Qemu's machine definition uses the second UART in the memory map as 
>>>>> the
>>>>> primary UART. This follows from the hardware itself where the second
>>>>> UART in the memory map is UART 0. This switches the tester to using 
>>>>> the
>>>>> correct UART.
>>>>> ---
>>>>> tester/rtems/testing/bsps/xilinx_zynqmp_ilp32.ini | 2 +-
>>>>> tester/rtems/testing/bsps/xilinx_zynqmp_lp64.ini  | 2 +-
>>>>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/tester/rtems/testing/bsps/xilinx_zynqmp_ilp32.ini 
>>>>> b/tester/rtems/testing/bsps/xilinx_zynqmp_ilp32.ini
>>>>> index 5ff0e86..35869ed 100644
>>>>> --- a/tester/rtems/testing/bsps/xilinx_zynqmp_ilp32.ini
>>>>> +++ b/tester/rtems/testing/bsps/xilinx_zynqmp_ilp32.ini
>>>>> @@ -35,4 +35,4 @@
>>>>> bsp           = xilinx_zynqmp_ilp32
>>>>> arch          = aarch64
>>>>> tester        = %{_rtscripts}/qemu.cfg
>>>>> -bsp_qemu_opts = %{qemu_opts_base} -serial null -serial mon:stdio 
>>>>> -machine xlnx-zcu102 -m 4096
>>>>> +bsp_qemu_opts = %{qemu_opts_base} -serial mon:stdio -machine 
>>>>> xlnx-zcu102 -m 4096
>>>>> diff --git a/tester/rtems/testing/bsps/xilinx_zynqmp_lp64.ini 
>>>>> b/tester/rtems/testing/bsps/xilinx_zynqmp_lp64.ini
>>>>> index 8db82b6..cd2d268 100644
>>>>> --- a/tester/rtems/testing/bsps/xilinx_zynqmp_lp64.ini
>>>>> +++ b/tester/rtems/testing/bsps/xilinx_zynqmp_lp64.ini
>>>>> @@ -35,4 +35,4 @@
>>>>> bsp           = xilinx_zynqmp_lp64
>>>>> arch          = aarch64
>>>>> tester        = %{_rtscripts}/qemu.cfg
>>>>> -bsp_qemu_opts = %{qemu_opts_base} -serial null -serial mon:stdio 
>>>>> -machine xlnx-zcu102 -m 4096
>>>>> +bsp_qemu_opts = %{qemu_opts_base} -serial mon:stdio -machine 
>>>>> xlnx-zcu102 -m 4096
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> users mailing list
>>>>> users at rtems.org
>>>>> http://lists.rtems.org/mailman/listinfo/users
>>>>>
>>> _______________________________________________
>>> users mailing list
>>> users at rtems.org
>>> http://lists.rtems.org/mailman/listinfo/users
>>>
> 

-- 
--------------------------------------------
embedded brains GmbH
Herr Christian MAUDERER
Dornierstr. 4
82178 Puchheim
Germany
email: christian.mauderer at embedded-brains.de
phone: +49-89-18 94 741 - 18
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/


More information about the users mailing list