[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v3] qapi: command category to stimulate high-level
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [RFC v3] qapi: command category to stimulate high-level machine devices |
Date: |
Mon, 4 Jun 2018 10:20:08 +0100 |
User-agent: |
Mutt/1.9.5 (2018-04-13) |
On Sun, Jun 03, 2018 at 04:34:12PM -0400, Steffen Görtz wrote:
> Changes in v2:
> - Remove stray 1
>
> Changes in v1:
> - Fix coding style issues
>
> Add a new category "stimulate" to host commands that
> act upon high-level devices associated with machines/boards.
>
> This is patch is part of an effort to add support for BBC:microbit
> educational computer to QEMU.
>
> The microbit board, as many other microcontroller boards,
> contains typical trivial (digital) input and output options such as buttons
> and LEDs,
> but also more sophiscated possibilities such as analog inputs and
> complex dedicated sensor ICs that are connected to the microbit machine
> by means of inter-ic bus (i2c).
> These devices interact with peripheral devices of the microcontroller
> in use, for example with the GPIO peripheral of the used NRF51.
>
> One aim of our efforts is to create a user interface that models the
> look and feel of the physical microbit board and lets the user interact
> with its inputs and provide feedback on its outsputs.
>
> For this it is necessary to transmit user inputs such as the pressing of a
> button to the machine.
> In return, when the state of an output is changed on the machine, this
> change needs to be reflected in the user interface.
>
> At the moment, there are only a few QMP commands that provide user input to
> the
> machine, eg. send-keys, input-button. These commands require very
QMP command names (from qapi/ui.json): send-key and input-send-event.
> high-level concepts, which are not really suitable for applications that
> microcontrollers are typically used in in.
I agree that existing commands aren't suitable. They are tied to
QemuConsole, which makes sense for graphics + keyboard/mouse input
devices but doesn't exist for microcontrollers.
I have CCed Gerd Hoffmann, the ui/ maintainer, to see if he agrees.
> This RFC is meant to start a discussion on how to provide stimuli to
> low-complex inputs and outputs typically found in embedded
> microcontroller applications. To the best of my knowledge, there are
> currently no examples of how to provide such stimuli to either SoC
> device peripheral or machine level concepts like pushbuttons and LEDs.
>
> To my understanding, the following concepts/apis are needed:
> - QMP commands to send stimuli to machine level concepts like
> pushbuttons
> - Machine level devices that receive these stimuli and act as an adapter
> to manipulate the associated SoC peripheral devices
The QEMU Object Model offers "interfaces". Many object-oriented
programming languages have similar concepts (interfaces, virtual base
classes, etc).
Interfaces could be used to connect board-specific devices with the
monitor command. But this is an implementation detail, we first need to
agree on the API design.
> - For outputs, machine level devices are needed that observe changes in
> SoC peripherals and emit QMP events that clients can receive
>
> This patch adds a new qmp command "buttons-set-state" to update the
> push-down state of arbitrarily identified buttons (string identifier).
Can you list the types of devices that can consume events?
* Pushbutton
* GPIO input pin
* Analog-to-digital converter
* Temperature sensor
* Accelerometer
* Magnetometer
* LED voltage decay light sensing
* ?
And list the types of devices that can produce events?
* LED states
* GPIO output pin
* Digital-to-analog converter
* ?
Many of these inputs/outputs can be tied to an external UI. A degree of
timing precision is required so that the UI is responsive, although
cycle-accurate timing is not what I'd expect from QMP.
Stefan
signature.asc
Description: PGP signature
Re: [Qemu-devel] [RFC v3] qapi: command category to stimulate high-level machine devices, Gerd Hoffmann, 2018/06/04