qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: which test.hex is right for qemu-microbit?


From: Alex Bennée
Subject: Re: which test.hex is right for qemu-microbit?
Date: Thu, 02 Jan 2025 23:17:21 +0000
User-agent: mu4e 1.12.8; emacs 29.4

Liu Jaloo <liu.jaloo@gmail.com> writes:

> in qemu branch statble-9.2 
>
>  $ ./build/qemu-system-arm -M microbit -device 
> loader,file=/path/to/heart-hearts-makecode.hex  
>
>  Segmentation fault

Is it really a hex file?

The code in question is generic_loader_realize() and it falls back
through a series of steps:

    if (s->file) {
        AddressSpace *as = s->cpu ? s->cpu->as :  NULL;

        if (!s->force_raw) {
            size = load_elf_as(s->file, NULL, NULL, NULL, &entry, NULL, NULL,
                               NULL, big_endian, 0, 0, 0, as);

            if (size < 0) {
                size = load_uimage_as(s->file, &entry, NULL, NULL, NULL, NULL,
                                      as);
            }

            if (size < 0) {
                size = load_targphys_hex_as(s->file, &entry, as);
            }
        }
>
>  
> about the error, gdb backtrace like this:
>
>  bash-5.1$ gdb ./build/qemu-system-arm
>  GNU gdb (GDB) 11.2
>  Copyright (C) 2022 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 "x86_64-slackware-linux".
>  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 ./build/qemu-system-arm...
>  warning: File "/home/jaloo/slackware/qemu/qemu/.gdbinit" auto-loading has 
> been declined by your `auto-load safe-path'
>  set to "$debugdir:$datadir/auto-load".
>  To enable execution of this file add
>          add-auto-load-safe-path /home/jaloo/slackware/qemu/qemu/.gdbinit
>  line to your configuration file "/home/jaloo/.config/gdb/gdbinit".
>  To completely disable this security protection add
>          set auto-load safe-path /
>  line to your configuration file "/home/jaloo/.config/gdb/gdbinit".
>  For more information about this security protection see the
>  --Type <RET> for more, q to quit, c to continue without paging--
>  "Auto-loading safe path" section in the GDB manual.  E.g., run from the 
> shell:
>          info "(gdb)Auto-loading safe path"
>  (gdb) r -M microbit -device loader,file=../microbit/heart-hearts-makecode.hex
>  Starting program: /home/jaloo/slackware/qemu/qemu/build/qemu-system-arm -M 
> microbit -device
>  loader,file=../microbit/heart-hearts-makecode.hex
>  [Thread debugging using libthread_db enabled]
>  Using host libthread_db library "/lib64/libthread_db.so.1".
>  [New Thread 0x7ffff228d640 (LWP 2380)]
>  [New Thread 0x7ffff190a640 (LWP 2382)]
>
>  Thread 1 "qemu-system-arm" received signal SIGSEGV, Segmentation fault.
>  0x00007ffff60e53d1 in __memmove_avx_unaligned_erms () from /lib64/libc.so.6
>  (gdb) bt
>  #0  0x00007ffff60e53d1 in __memmove_avx_unaligned_erms () at /lib64/libc.so.6
>  #1  0x0000555556037ed9 in address_space_write_rom_internal
>      (as=0x555557afe160, addr=0, attrs=..., ptr=0x555557de8290, len=1313804, 
> type=WRITE_DATA) at .
>  ./system/physmem.c:3040
>  #2  0x0000555556037fa7 in address_space_write_rom
>      (as=0x555557afe160, addr=0, attrs=..., buf=0x555557de8290, len=1313804)
>      at ../system/physmem.c:3060
>  #3  0x0000555555977704 in rom_reset (unused=0x0) at ../hw/core/loader.c:1252
>  #4  0x0000555555986644 in legacy_reset_hold
>      (obj=0x5555576c12c0, type=RESET_TYPE_COLD) at ../hw/core/reset.c:76
>  #5  0x00005555560a3938 in resettable_phase_hold
>      (obj=0x5555576c12c0, opaque=0x0, type=RESET_TYPE_COLD)
>      at ../hw/core/resettable.c:162
>  #6  0x00005555560a2049 in resettable_container_child_foreach
>      (obj=0x555557a2a9f0, cb=0x5555560a3820 <resettable_phase_hold>, 
> opaque=0x0, type=RESET_TYPE_COLD) at .
>  ./hw/core/resetcontainer.c:54
>  #7  0x00005555560a3687 in resettable_child_foreach
>      (rc=0x5555578ced10, obj=0x555557a2a9f0, cb=0x5555560a3820 
> <resettable_phase_hold>, opaque=0x0,
>  type=RESET_TYPE_COLD) at ../hw/core/resettable.c:92
>  #8  0x00005555560a38dd in resettable_phase_hold
>      (obj=0x555557a2a9f0, opaque=0x0, type=RESET_TYPE_COLD)
>      at ../hw/core/resettable.c:155
>  #9  0x00005555560a353c in resettable_assert_reset
>  --Type <RET> for more, q to quit, c to continue without paging--
>      (obj=0x555557a2a9f0, type=RESET_TYPE_COLD) at ../hw/core/resettable.c:58
>  #10 0x00005555560a3494 in resettable_reset
>      (obj=0x555557a2a9f0, type=RESET_TYPE_COLD) at ../hw/core/resettable.c:45
>  #11 0x000055555598696e in qemu_devices_reset (type=RESET_TYPE_COLD)
>      at ../hw/core/reset.c:176
>  #12 0x0000555555cf5826 in qemu_system_reset (reason=SHUTDOWN_CAUSE_NONE)
>      at ../system/runstate.c:527
>  #13 0x000055555597fb9d in qdev_machine_creation_done ()
>      at ../hw/core/machine.c:1689
>  #14 0x0000555555cfd197 in qemu_machine_creation_done
>      (errp=0x5555575be0e0 <error_fatal>) at ../system/vl.c:2690
>  #15 0x0000555555cfd30f in qmp_x_exit_preconfig
>      (errp=0x5555575be0e0 <error_fatal>) at ../system/vl.c:2720
>  #16 0x0000555555cffce8 in qemu_init (argc=5, argv=0x7fffffffdd08)
>      at ../system/vl.c:3753
>  #17 0x00005555562479f0 in main (argc=5, argv=0x7fffffffdd08)
>      at ../system/main.c:47
>
> according to docs/system/arm/nrf.rst
>
>  $ qemu-system-arm -M microbit -device loader,file=test.hex
>
> from the page https://microbit.org/projects/make-it-code-it/heart/ download 
> the hex file :
>
>  wget https://microbit.org/downloads/heart-hearts-makecode.hex


Hmm it looks like its crashing after it loaded. But did it get to 
load_targphys_hex_as?

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro



reply via email to

[Prev in Thread] Current Thread [Next in Thread]