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