xref: /aosp_15_r20/external/pigweed/pw_emu/docs.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker.. _module-pw_emu:
2*61c4878aSAndroid Build Coastguard Worker
3*61c4878aSAndroid Build Coastguard Worker.. rst-class:: with-subtitle
4*61c4878aSAndroid Build Coastguard Worker
5*61c4878aSAndroid Build Coastguard Worker======
6*61c4878aSAndroid Build Coastguard Workerpw_emu
7*61c4878aSAndroid Build Coastguard Worker======
8*61c4878aSAndroid Build Coastguard Worker.. pigweed-module::
9*61c4878aSAndroid Build Coastguard Worker   :name: pw_emu
10*61c4878aSAndroid Build Coastguard Worker
11*61c4878aSAndroid Build Coastguard Worker* **Declarative**. Define emulation targets in JSON. A target encapsulates the
12*61c4878aSAndroid Build Coastguard Worker  emulated machine, tools, and host channels configuration.
13*61c4878aSAndroid Build Coastguard Worker* **Flexible**. Manage multiple emulator instances over a CLI or Python API.
14*61c4878aSAndroid Build Coastguard Worker* **Unopinionated**. Use QEMU or Renode, or extend ``pw_emu`` to support your
15*61c4878aSAndroid Build Coastguard Worker  favorite emulator.
16*61c4878aSAndroid Build Coastguard Worker* **Configurable**. Expose channels for debugging and monitoring through
17*61c4878aSAndroid Build Coastguard Worker  configurable host resources like sockets.
18*61c4878aSAndroid Build Coastguard Worker
19*61c4878aSAndroid Build Coastguard WorkerDeclaratively configure an emulation target like this:
20*61c4878aSAndroid Build Coastguard Worker
21*61c4878aSAndroid Build Coastguard Worker.. code-block:: json
22*61c4878aSAndroid Build Coastguard Worker
23*61c4878aSAndroid Build Coastguard Worker   {
24*61c4878aSAndroid Build Coastguard Worker     "targets": {
25*61c4878aSAndroid Build Coastguard Worker       "qemu-lm3s6965evb": {
26*61c4878aSAndroid Build Coastguard Worker         "gdb": [
27*61c4878aSAndroid Build Coastguard Worker           "arm-none-eabi-gdb"
28*61c4878aSAndroid Build Coastguard Worker         ],
29*61c4878aSAndroid Build Coastguard Worker         "qemu": {
30*61c4878aSAndroid Build Coastguard Worker           "executable": "qemu-system-arm",
31*61c4878aSAndroid Build Coastguard Worker           "machine": "lm3s6965evb",
32*61c4878aSAndroid Build Coastguard Worker           "channels": {
33*61c4878aSAndroid Build Coastguard Worker             "chardevs": {
34*61c4878aSAndroid Build Coastguard Worker               "serial0": {
35*61c4878aSAndroid Build Coastguard Worker                 "id": "serial0"
36*61c4878aSAndroid Build Coastguard Worker               }
37*61c4878aSAndroid Build Coastguard Worker             }
38*61c4878aSAndroid Build Coastguard Worker           }
39*61c4878aSAndroid Build Coastguard Worker         }
40*61c4878aSAndroid Build Coastguard Worker       }
41*61c4878aSAndroid Build Coastguard Worker     }
42*61c4878aSAndroid Build Coastguard Worker   }
43*61c4878aSAndroid Build Coastguard Worker
44*61c4878aSAndroid Build Coastguard WorkerThen run a binary like this!
45*61c4878aSAndroid Build Coastguard Worker
46*61c4878aSAndroid Build Coastguard Worker.. code-block:: console
47*61c4878aSAndroid Build Coastguard Worker
48*61c4878aSAndroid Build Coastguard Worker   pw emu run --args=-no-reboot qemu-lm3s6965evb \
49*61c4878aSAndroid Build Coastguard Worker       out/lm3s6965evb_qemu_gcc_size_optimized/obj/pw_snapshot/test/cpp_compile_test
50*61c4878aSAndroid Build Coastguard Worker
51*61c4878aSAndroid Build Coastguard Worker.. pw_emu-nav-start
52*61c4878aSAndroid Build Coastguard Worker
53*61c4878aSAndroid Build Coastguard Worker.. grid:: 1
54*61c4878aSAndroid Build Coastguard Worker
55*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card:: :octicon:`rocket` Get started & guides
56*61c4878aSAndroid Build Coastguard Worker      :link: module-pw_emu-guide
57*61c4878aSAndroid Build Coastguard Worker      :link-type: ref
58*61c4878aSAndroid Build Coastguard Worker      :class-item: sales-pitch-cta-primary
59*61c4878aSAndroid Build Coastguard Worker
60*61c4878aSAndroid Build Coastguard Worker      How to set up and use ``pw_emu``
61*61c4878aSAndroid Build Coastguard Worker
62*61c4878aSAndroid Build Coastguard Worker.. grid:: 2
63*61c4878aSAndroid Build Coastguard Worker
64*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card:: :octicon:`terminal` CLI reference
65*61c4878aSAndroid Build Coastguard Worker      :link: module-pw_emu-cli
66*61c4878aSAndroid Build Coastguard Worker      :link-type: ref
67*61c4878aSAndroid Build Coastguard Worker      :class-item: sales-pitch-cta-secondary
68*61c4878aSAndroid Build Coastguard Worker
69*61c4878aSAndroid Build Coastguard Worker      Reference details about the ``pw_emu`` command line interface
70*61c4878aSAndroid Build Coastguard Worker
71*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card:: :octicon:`code-square` API reference
72*61c4878aSAndroid Build Coastguard Worker      :link: module-pw_emu-api
73*61c4878aSAndroid Build Coastguard Worker      :link-type: ref
74*61c4878aSAndroid Build Coastguard Worker      :class-item: sales-pitch-cta-secondary
75*61c4878aSAndroid Build Coastguard Worker
76*61c4878aSAndroid Build Coastguard Worker      Reference details about the ``pw_emu`` Python API
77*61c4878aSAndroid Build Coastguard Worker
78*61c4878aSAndroid Build Coastguard Worker.. grid:: 2
79*61c4878aSAndroid Build Coastguard Worker
80*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card:: :octicon:`gear` Configuration
81*61c4878aSAndroid Build Coastguard Worker      :link: module-pw_emu-config
82*61c4878aSAndroid Build Coastguard Worker      :link-type: ref
83*61c4878aSAndroid Build Coastguard Worker      :class-item: sales-pitch-cta-secondary
84*61c4878aSAndroid Build Coastguard Worker
85*61c4878aSAndroid Build Coastguard Worker      Reference details about ``pw_emu`` declarative configuration
86*61c4878aSAndroid Build Coastguard Worker
87*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card:: :octicon:`stack` Design
88*61c4878aSAndroid Build Coastguard Worker      :link: module-pw_emu-design
89*61c4878aSAndroid Build Coastguard Worker      :link-type: ref
90*61c4878aSAndroid Build Coastguard Worker      :class-item: sales-pitch-cta-secondary
91*61c4878aSAndroid Build Coastguard Worker
92*61c4878aSAndroid Build Coastguard Worker      Design details about ``pw_emu``
93*61c4878aSAndroid Build Coastguard Worker
94*61c4878aSAndroid Build Coastguard Worker.. grid:: 2
95*61c4878aSAndroid Build Coastguard Worker
96*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card:: :octicon:`comment-discussion` SEED-0108: Emulators Frontend
97*61c4878aSAndroid Build Coastguard Worker      :link: seed-0108
98*61c4878aSAndroid Build Coastguard Worker      :link-type: ref
99*61c4878aSAndroid Build Coastguard Worker      :class-item: sales-pitch-cta-secondary
100*61c4878aSAndroid Build Coastguard Worker
101*61c4878aSAndroid Build Coastguard Worker      The RFC explaining the initial design and motivations for ``pw_emu``
102*61c4878aSAndroid Build Coastguard Worker
103*61c4878aSAndroid Build Coastguard Worker   .. grid-item-card:: :octicon:`code-square` Source code
104*61c4878aSAndroid Build Coastguard Worker      :link: seed-0108
105*61c4878aSAndroid Build Coastguard Worker      :link-type: ref
106*61c4878aSAndroid Build Coastguard Worker      :class-item: sales-pitch-cta-secondary
107*61c4878aSAndroid Build Coastguard Worker
108*61c4878aSAndroid Build Coastguard Worker      Source code for ``pw_emu``
109*61c4878aSAndroid Build Coastguard Worker
110*61c4878aSAndroid Build Coastguard Worker.. pw_emu-nav-end
111*61c4878aSAndroid Build Coastguard Worker
112*61c4878aSAndroid Build Coastguard Worker.. toctree::
113*61c4878aSAndroid Build Coastguard Worker   :hidden:
114*61c4878aSAndroid Build Coastguard Worker   :maxdepth: 1
115*61c4878aSAndroid Build Coastguard Worker
116*61c4878aSAndroid Build Coastguard Worker   guide
117*61c4878aSAndroid Build Coastguard Worker   cli
118*61c4878aSAndroid Build Coastguard Worker   api
119*61c4878aSAndroid Build Coastguard Worker   config
120*61c4878aSAndroid Build Coastguard Worker   design
121*61c4878aSAndroid Build Coastguard Worker   SEED-0108 <../seed/0108>
122