qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC PATCH] vl.c: add -semihosting-config "arg" sub-arg


From: Liviu Ionescu
Subject: Re: [Qemu-devel] [RFC PATCH] vl.c: add -semihosting-config "arg" sub-argument
Date: Fri, 3 Apr 2015 18:33:22 +0300

hi,

as promised, I proceeded with the implementation of the GNU ARM Eclipse QEMU plug-in and so I could run more tests with semihosting command line option.

the current first plug-in configuration page looks like this:


for the above configuration, the string array used to start QEMU (one arg per line) is:

/Users/ilg/Work/qemu/build/osx/qemu/gnuarmeclipse-softmmu/qemu-system-gnuarmeclipse 
-verbose 
-machine 
STM32-H103 
-gdb 
tcp::1234 
-semihosting-config 
enable=on,target=native 
-semihosting-cmdline 
cm 1 "2 a" '3 b' 4=c 5,d 6

the QEMU console shows:

GNU ARM Eclipse QEMU v2.2.92 (qemu-system-gnuarmeclipse).
Board: 'STM32-H103' (Olimex Header Board for STM32F103RBT6 (Experimental)).
Device: 'STM32F103RB' (cortex-m3, MPU), Flash: 128 KB, RAM: 20 KB.
Command line: 'cm 1 "2 a" '3 b' 4=c 5,d 6' (26 bytes).
GDB Server listening on: 'tcp::1234'...
... connection accepted from 127.0.0.1.

Execute 'mon system_reset'.

main(argc=7, argv=["cm", "1", "2 a", "3 b", "4=c", "5,d", "6"]);
Hello ARM World!

---

attempts to pack the above command line (I agree that it is a bit extreme), as "-semihosting-config enable=on,target=native,cmdline=???" failed, since I could not find a reliable way to quote the string, so that the qemu parser to accept it.

I don't claim that this cannot be done, probably someone with a better understanding of the qemu parser will find a way, but it might be not very simple, not to say intuitive.


I also thought about passing the above string using the "-semihosting-config arg=???" method, and, with some effort, it might be possible to split the original string into substrings and generate one option, but it requires some effort, definitely more than when using "-semihosting-cmdline", when the string is simply passed as-is. in my java code, as in any programming language, this can be done, but in a simple script this is more difficult.

---

as a conclusion, my final vote goes to a separate "-semihosting-cmdline ???" option. for ARM, the string can be passed directly to SYS_GET_CMDLINE; for UHI hosts, the string can be parsed and substrings provided in an iterative way.

the only 'cons' is that this is a top-level command, and Peter suggested to limit their number, but, in my opinion, a certain degree of flexibility is always required, and in this case the gain of not having a top-level command is not worth the complexity introduced by the alternatives.

my code is available from https://sourceforge.net/p/gnuarmeclipse/qemu/ci/gnuarmeclipse-dev/tree/ (mind the gnuarmeclipse-dev branch).

until we find a better idea, I'll probably stick with this solution.

Peter?


regards,

Liviu







reply via email to

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