reorder things a bit

Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
Sean Cross 2022-04-08 20:29:17 +08:00
parent 0ca6eb6963
commit b926658459
4 changed files with 103 additions and 109 deletions

View File

@ -79,7 +79,7 @@ section.has-light-background h6 {
padding-bottom: 1em; padding-bottom: 1em;
padding-right: 1em; padding-right: 1em;
text-align: right; text-align: right;
font-size: 0.5em; font-size: 1.0em;
width: 100%; width: 100%;
height: 68px; height: 68px;
background-color: rgb(78, 78, 78); background-color: rgb(78, 78, 78);

View File

@ -86,12 +86,22 @@
<div class="slides"> <div class="slides">
<section> <section>
<section> <section>
<h2>Renode: Easy CI for your Weird Hardware</h2> <h2>Renode: Easy Emulation for your Weird Hardware</h2>
<h3>Sean Cross</h3> <h3>Sean Cross</h3>
<p>Follow along at <a href="https://p.xobs.io/fa22">https://p.xobs.io/fa22</a></p>
</section> </section>
<section> <section>
<h2>Renode</h2> <h2>Renode</h2>
<p>I find it a useful tool. Maybe you will, too! <p>I find it a useful tool. Maybe you will, too!</p>
<img height="100" src="media/antmicro-logo-white.svg">
</section>
<section>
<h2>About Me: I Do Weird Hardware</h2>
<ul>
<li>Betrusted/Precursor: FPGA Secure Communications</li>
<li>Fomu: World's Smallest FPGA Dev Board</li>
<li>Orchard: Lights, Sounds, Captouch</li>
</ul>
</section> </section>
<section> <section>
<h2>What is "Weird Hardware"?</h2> <h2>What is "Weird Hardware"?</h2>
@ -101,15 +111,6 @@
<li>Hardware that uses ARM, i386, PowerPC, Risc-V, Sparc, or Xtensa</li> <li>Hardware that uses ARM, i386, PowerPC, Risc-V, Sparc, or Xtensa</li>
</ul> </ul>
</section> </section>
<section>
<h2>About Me: I Do Weird Hardware</h2>
<ul>
<li>Betrusted/Precursor: FPGA Secure Communications</li>
<li>Fomu: World's Smallest FPGA Dev Board</li>
<li>Novena: Open Source Laptop</li>
<li>Senoko: Open Source Power Board for Novena</li>
</ul>
</section>
<section> <section>
<h2>Hardware with Embedded Software</h2> <h2>Hardware with Embedded Software</h2>
<ul> <ul>
@ -121,22 +122,13 @@
<section> <section>
<h2>About Renode</h2> <h2>About Renode</h2>
<ul> <ul>
<li>Whole-System Emulator</li> <li>Multi-Node Emulator</li>
<li>Supports concurrent emulation</li>
<li>Extensible with C# and Python</li> <li>Extensible with C# and Python</li>
<li>Windows, Mac, Linux</li> <li>Windows, Mac, Linux</li>
<li>MIT Licensed</li> <li>MIT Licensed</li>
</ul> </ul>
</section> </section>
<!-- <section> <!-- <section>
<h2>About This Talk</h2>
<ul>
<li>Overview of Emulators</li>
<li>Oevrview of Weird Hardware</li>
<li>Cool things you can do</li>
</ul>
</section> -->
<section>
<h2>Who Might Find This Talk Interesting?</h2> <h2>Who Might Find This Talk Interesting?</h2>
<ul> <ul>
<li>Creators</li> <li>Creators</li>
@ -171,7 +163,7 @@
<li>What is it doing and how does it get there?</li> <li>What is it doing and how does it get there?</li>
</ul> </ul>
<img src="media/bluenrg-ghidra-trace.png" class="fragment"> <img src="media/bluenrg-ghidra-trace.png" class="fragment">
</section> </section> -->
</section> </section>
<section> <section>
<section> <section>
@ -199,14 +191,14 @@
</ul> </ul>
--> -->
</section> </section>
<section> <!-- <section>
<h2>Transparent Emulator</h2> <h2>Transparent Emulator</h2>
<ul> <ul>
<li>WSL2/Docker</li> <li>WSL2/Docker</li>
<li>qemu on Linux</li> <li>qemu on Linux</li>
<li>Rosetta on Mac</li> <li>Rosetta on Mac</li>
</ul> </ul>
</section> </section> -->
<section data-transition="slide-in fade-out"> <section data-transition="slide-in fade-out">
<h2>What is an Emulator?</h2> <h2>What is an Emulator?</h2>
<img class="fragment" src="media/bbs-example.png"> <img class="fragment" src="media/bbs-example.png">
@ -278,20 +270,20 @@
</section> </section>
<section> <section>
<h2>Defining a Computer in Renode</h2> <h2>Defining a Computer in Renode</h2>
<pre><code data-trim data-line-numbers="|1-5|7-8|10-13"> <pre><code data-trim data-line-numbers="|1-5|7-10|12-13">
flash: Memory.MappedMemory @ sysbus 0x00000000 flash: Memory.MappedMemory @ sysbus 0x00000000
size: 0x00008000 size: 0x00008000
sram: Memory.MappedMemory @ sysbus 0x20000000 sram: Memory.MappedMemory @ sysbus 0x20000000
size: 0x00001000 size: 0x00001000
nvic: IRQControllers.NVIC @ sysbus 0xE000E000
IRQ -> cpu@0
cpu: CPU.CortexM @ sysbus cpu: CPU.CortexM @ sysbus
cpuType: "cortex-m0+" cpuType: "cortex-m0+"
PerformanceInMips: 24 PerformanceInMips: 24
nvic: nvic nvic: nvic
nvic: IRQControllers.NVIC @ sysbus 0xE000E000
IRQ -> cpu@0
</code></pre> </code></pre>
bluenrg-1.repl bluenrg-1.repl
</section> </section>
@ -432,7 +424,7 @@
Blocks are frequently reused across designs, and can save you from having to reimplement Blocks are frequently reused across designs, and can save you from having to reimplement
everything from scratch! everything from scratch!
</section> </section>
<section> <!-- <section>
<h2>What if we need to write it ourselves?</h2> <h2>What if we need to write it ourselves?</h2>
</section> </section>
<section> <section>
@ -569,7 +561,7 @@
</ul> </ul>
<li class="fragment">Most writes can be ignored</li> <li class="fragment">Most writes can be ignored</li>
</ul> </ul>
</section> </section> -->
<section> <section>
<h2>Peripheral Rapid Development</h2> <h2>Peripheral Rapid Development</h2>
<img src="media/hardware-20191117-cropped.jpg"> <img src="media/hardware-20191117-cropped.jpg">
@ -605,74 +597,6 @@
<h2>Emulation brings more eyes to the project</h2> <h2>Emulation brings more eyes to the project</h2>
</section> </section>
</section> </section>
<!--
<section>
<section>
<h2>Example of Weird Hardware</h2>
<ul>
<li>NRF52840</li>
<li>LM74 Temperature Sensor</li>
</ul>
</section>
<section>
<h2>Example of Weird Hardware</h2>
<ul>
<li>NRF52833</li>
<li>LM74 Temperature Sensor</li>
</ul>
</section>
<section>
<h2>Example of Weird Hardware</h2>
<ul>
<li>BlueNRG1</li>
<li>LM74 Temperature Sensor</li>
</ul>
</section>
<section>
<h2>Example of Weird Hardware</h2>
<ul>
<li>RISC-V</li>
<li>FPGA-based framebuffer</li>
<li>Initial graphical demo in 1 hour</li>
</ul>
</section>
</section>
<section>
<section>
<h2>What makes hardware "Weird"?</h2>
<ul>
<li>Unusual CPU architecture</li>
<li>Different model of chip than commonly found</li>
<li>Additional hardware</li>
<li>More CPUs per board</li>
</ul>
</section>
<section>
<h2>Unusual CPU architecture</h2>
Sorry, can't help
</section>
<section>
<h2>Different model CPU</h2>
<ul>
<li>Maybe it's just a variant</li>
<li>Perhaps memory regions were shuffled</li>
<li>Does it use the same hardware block as someone else?</li>
</ul>
</section>
<section>
<h2>New hardware version</h2>
<ul>
<li>Do you use the new, specialized features?</li>
<li>Lots of UARTs support Infrared. Do you need that?</li>
</ul>
</section>
<section>
<h2>Completely new hardware</h2>
<ul>
<li>Time to break out C#</li>
</ul>
</section>
</section> -->
<section> <section>
<section> <section>
<h2>Robot Framework: Running Tests in CI</h2> <h2>Robot Framework: Running Tests in CI</h2>
@ -689,11 +613,11 @@
${URI} @https://dl.antmicro.com/projects/renode ${URI} @https://dl.antmicro.com/projects/renode
${LIS2DS12}= SEPARATOR= ${LIS2DS12}= SEPARATOR=
... """ ${\n} ... """ ${\n}
... using "platforms/cpus/nrf52840.repl" ${\n} ... using "platforms/cpus/nrf52840.repl" ${\n}
... ${\n} ... ${\n}
... lis2ds12: Sensors.LIS2DS12 @ twi1 0x1c ${\n} ... lis2ds12: Sensors.LIS2DS12 @ twi1 0x1c ${\n}
... ${SPACE*4}IRQ -> gpio0@28 ${\n} ... ${SPACE*4}IRQ -> gpio0@28 ${\n}
... """ ... """
*** Keywords *** *** Keywords ***
@ -702,7 +626,7 @@
Execute Command machine Execute Command machine
... LoadPlatformDescriptionFromString ${LIS2DS12} ... LoadPlatformDescriptionFromString ${LIS2DS12}
Execute Command sysbus LoadELF Execute Command sysbus LoadELF
... ${URI}/nrf52840--zephyr_lis2dh.elf-s_747800-163b7e7cc986d4b1115f06b5f3df44ed0defc1fa ... ${URI}/nrf52840--zephyr_lis2dh.elf
*** Test Cases *** *** Test Cases ***
Should Read Acceleration Should Read Acceleration
@ -720,6 +644,10 @@
</code></pre> </code></pre>
<p>LIS2DS12.robot</p> <p>LIS2DS12.robot</p>
</section> </section>
<section>
<h2>Github Actions</h2>
<img src="media/renode-ci-test.png">
</section>
</section> </section>
<section> <section>
<section> <section>
@ -727,7 +655,7 @@
</section> </section>
<section> <section>
<h2>SVD: Standard Chip Documentation</h2> <h2>SVD: Standard Chip Documentation</h2>
<pre class="code-animation"><code class="xml" data-trim data-line-numbers="|3-9|25-87|27-31|31|39-57|41|43|46-47|48-56"><script type="text/template"> <pre class="code-animation"><code class="xml" data-trim data-line-numbers="|3-9|25-87|27-31|31|39-57|41|43|48-56|46"><script type="text/template">
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.1" xsi:noNamespaceSchemaLocation="CMSIS-SVD_Schema_1_1_draft.xsd"> <device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.1" xsi:noNamespaceSchemaLocation="CMSIS-SVD_Schema_1_1_draft.xsd">
<vendor>STMicroelectronics</vendor> <vendor>STMicroelectronics</vendor>
@ -863,7 +791,18 @@
</section> </section>
<section> <section>
<h2>Loading Peripherals at Runtime</h2> <h2>Loading Peripherals at Runtime</h2>
<pre><code class="cs" data-trim data-line-numbers="|3-8|9-16"> <pre><code class="cs" data-trim data-line-numbers="|1-10|12-28|14-19|20-27">
private enum Registers
{
STATUS = 0x0,
DATA = 0x4,
URANDOM = 0x8,
URANDOM_VALID = 0xc,
EV_STATUS = 0x10,
EV_PENDING = 0x14,
EV_ENABLE = 0x18,
}
private void DefineRegisters() private void DefineRegisters()
{ {
Registers.STATUS.Define(this) // RDY is set on reset Registers.STATUS.Define(this) // RDY is set on reset
@ -910,7 +849,8 @@
Give it a try! Give it a try!
</section> </section>
<section> <section>
<h2>Thank you for your time</h2> <h2>Thank you for joining</h2>
<h3>Questions?</h3>
</section> </section>
</div> </div>
</div> </div>

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="enable-background:new 0 0 138 44;" viewBox="0 0 138 44" y="0px" x="0px" id="logo" version="1.1">
<metadata id="metadata37">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs35"/>
<style id="style3" type="text/css">
.st0 {
fill: #332D37;
}
.st1 {
fill: url(#SVGID_1_);
}
.st2 {
fill: url(#SVGID_2_);
}
.st3 {
fill: url(#SVGID_3_);
}
.st4 {
fill: url(#SVGID_4_);
}
.st5 {
fill: #E63E3C;
}
</style>
<g style="fill:#ffffff" id="g5">
<g style="fill:#ffffff" id="g7">
<path style="fill:#ffffff" id="path9" d="M31.7,28.8c-0.1,0.4-0.4,0.8-0.7,1c0,0-10.2,5.9-10.2,5.9c-0.3,0.2-0.6,0.4-0.9,0.5c-0.2,0.1-0.4,0.1-0.6,0.1 c-0.1,0-0.2,0-0.3,0c-0.2,0-0.4-0.1-0.5-0.2L7.5,29.9c0,0-0.1-0.1-0.2-0.1C7.2,29.7,7,29.5,7,29.5c-0.2-0.2-0.3-0.5-0.4-0.8 c0-0.1,0-0.3,0-0.3v-0.1V22v0v-6.3c0,0,0-0.1,0-0.1c0-0.2,0-0.3,0.1-0.5c0.1-0.4,0.4-0.7,0.8-0.9l10.9-6.3c0,0,0.1-0.1,0.3-0.2 c0,0,0.2,0,0.2,0c0.1,0,0.2,0,0.3,0c0.3,0,0.6,0.1,0.8,0.3l10.9,6.3c0,0,0,0,0,0l0,0c0.1,0.1,0.3,0.2,0.4,0.3 c0.2,0.3,0.4,0.6,0.4,1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0.6,0,12.9c0,0.1,0,0.1,0,0.2C31.7,28.7,31.7,28.8,31.7,28.8 M37.1,10 L37.1,10C37.1,10,37.1,10,37.1,10L20.5,0.4C20.1,0.1,19.7,0,19.2,0c-0.5,0-0.9,0.1-1.3,0.4L1.3,10C0.5,10.4,0,11.2,0,12.1 c0,0.1,0,0.1,0,0.2v19.4c0,0.1,0,0.1,0,0.2c0,0.9,0.5,1.7,1.3,2.1l16.6,9.6c0.4,0.2,0.8,0.4,1.3,0.4c0.5,0,0.9-0.1,1.3-0.4 L37.1,34c0,0,0,0,0,0l0,0v0c0.7-0.4,1.2-1.2,1.2-2V12.1C38.3,11.2,37.9,10.4,37.1,10"/>
<path style="fill:#ffffff" id="path11" d="M19.5,22.3h2.6h1.6c0.1,0.5,0.6,0.9,1.2,0.9c0.7,0,1.2-0.5,1.2-1.2c0-0.7-0.6-1.3-1.2-1.3c-0.6,0-1.1,0.4-1.2,0.9h-2.1 l-2.1,0v-1.8h2c0,0,0.2,0,0.3-0.1c0.2-0.1,0.6-0.6,0.6-0.6l1.2-1.2c0.2,0.1,0.4,0.1,0.6,0.1c0.7,0,1.2-0.6,1.2-1.2 c0-0.7-0.6-1.2-1.2-1.2c-0.7,0-1.2,0.6-1.2,1.2c0,0.2,0.1,0.5,0.2,0.7L21.7,19c0,0-0.2,0.2-0.3,0.2c0,0-0.1,0-0.1,0h-1.8v-0.8v-2 c0.8-0.2,1.4-0.9,1.4-1.7c0-1-0.8-1.7-1.7-1.7c-1,0-1.7,0.8-1.7,1.7c0,0.9,0.6,1.6,1.4,1.7v2.8h-1.8c0,0-0.1,0-0.1,0 c-0.1,0-0.2-0.2-0.2-0.2l-1.4-1.5c0.1-0.2,0.2-0.4,0.2-0.7c0-0.7-0.6-1.2-1.2-1.2c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2 c0.2,0,0.4-0.1,0.6-0.1l1.2,1.2c0,0,0.4,0.4,0.6,0.6c0.1,0.1,0.3,0.1,0.3,0.1h2v1.3v0.5l-2,0h-2.2c-0.1-0.5-0.6-0.9-1.2-0.9 c-0.7,0-1.2,0.6-1.2,1.3c0,0.7,0.6,1.2,1.2,1.2c0.6,0,1-0.4,1.2-0.9h2.2h2v1.8h-2c0,0-0.2,0-0.3,0.1c-0.2,0.1-0.6,0.6-0.6,0.6 L14.7,26c-0.2-0.1-0.4-0.1-0.6-0.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2c0-0.2-0.1-0.5-0.2-0.7 l1.4-1.5c0,0,0.2-0.2,0.2-0.2c0,0,0.1,0,0.1,0h1.8V26v1.5c-0.8,0.2-1.4,0.9-1.4,1.7c0,1,0.8,1.7,1.7,1.7c1,0,1.7-0.8,1.7-1.7 c0-0.9-0.6-1.6-1.4-1.7v-2.8h1.8c0,0,0.1,0,0.1,0c0.1,0,0.3,0.2,0.3,0.2l1.4,1.5c-0.1,0.2-0.2,0.4-0.2,0.7c0,0.7,0.6,1.2,1.2,1.2 c0.7,0,1.2-0.6,1.2-1.2c0-0.7-0.6-1.2-1.2-1.2c-0.2,0-0.4,0.1-0.6,0.1l-1.2-1.2c0,0-0.5-0.4-0.6-0.6c-0.1-0.1-0.3-0.1-0.3-0.1h-2 v-1.1L19.5,22.3L19.5,22.3z M24.9,21.4c0.3,0,0.6,0.3,0.6,0.6c0,0.3-0.3,0.6-0.6,0.6c-0.3,0-0.6-0.3-0.6-0.6 C24.3,21.7,24.6,21.4,24.9,21.4z M24.1,16.3c0.3,0,0.6,0.3,0.6,0.6c0,0.3-0.3,0.6-0.6,0.6c-0.3,0-0.6-0.3-0.6-0.6 C23.5,16.6,23.8,16.3,24.1,16.3z M14.2,17.5c-0.3,0-0.6-0.3-0.6-0.6c0-0.3,0.3-0.6,0.6-0.6c0.3,0,0.6,0.3,0.6,0.6 C14.8,17.2,14.5,17.5,14.2,17.5z M13.4,22.6c-0.3,0-0.6-0.3-0.6-0.6c0-0.3,0.3-0.6,0.6-0.6c0.3,0,0.6,0.3,0.6,0.6 C14,22.3,13.8,22.6,13.4,22.6z M14.2,27.7c-0.3,0-0.6-0.3-0.6-0.6c0-0.3,0.3-0.6,0.6-0.6c0.3,0,0.6,0.3,0.6,0.6 C14.8,27.4,14.5,27.7,14.2,27.7z M24.1,26.5c0.3,0,0.6,0.3,0.6,0.6c0,0.3-0.3,0.6-0.6,0.6c-0.3,0-0.6-0.3-0.6-0.6 C23.5,26.8,23.8,26.5,24.1,26.5z M19.2,30.3c-0.6,0-1.1-0.5-1.1-1.1c0-0.6,0.5-1.1,1.1-1.1c0.6,0,1.1,0.5,1.1,1.1 C20.3,29.8,19.8,30.3,19.2,30.3z M19.2,13.7c0.6,0,1.1,0.5,1.1,1.1s-0.5,1.1-1.1,1.1c-0.6,0-1.1-0.5-1.1-1.1S18.6,13.7,19.2,13.7z "/>
</g>
<g style="fill:#ffffff" id="g13">
<path style="fill:#ffffff" id="path15" d="M66,29.8V19.2c0-2.3-0.9-3.4-3.4-3.4c-1.1,0-1.9,0.2-2.7,0.5v13.5h-2.5V15.3c1.4-0.7,3.3-1.1,5.2-1.1c4.1,0,5.9,1.8,5.9,5 v10.6C68.5,29.8,66,29.8,66,29.8z"/>
<path style="fill:#ffffff" id="path17" d="M75.6,29.9c-2.2,0-3.7-1.3-3.7-3.9V16h-1.8v-1.6h1.8v-3.5l2.5-0.8v4.3h2.7V16h-2.7v10c0,1.3,0.7,2.1,1.9,2.1 c0.3,0,0.5,0,0.8-0.1v1.6C76.7,29.8,76.2,29.9,75.6,29.9"/>
<path style="fill:#ffffff" id="path19" d="M96.6,29.8V19.1c0-2-0.9-3.3-3.1-3.3c-1.2,0-2.2,0.6-3,1.5v12.6H88V18.7c0-1.8-1-2.9-3.2-2.9c-1.2,0-2,0.1-2.9,0.5v13.5 h-2.5V15.3c1.5-0.7,3.2-1.1,5.2-1.1c2.3,0,3.6,0.6,4.6,1.8c1-1.1,2.6-1.8,4.4-1.8c3.7,0,5.4,2,5.4,4.9v10.7H96.6z"/>
<polygon style="fill:#ffffff" id="polygon21" points="102.4,29.8 102.4,24.3 102.4,19.6 102.4,14.5 103.8,14.5 104.9,14.5 104.9,18.4 104.9,22.1 104.9,29.8 103.7,29.8 "/>
<path style="fill:#ffffff" id="path23" d="M113.2,30.1c-3.7,0-5.9-3.3-5.9-8c0-4.7,2.3-7.9,5.9-7.9c1.4,0,2.6,0.4,3.4,1l-0.6,1.5c-0.6-0.5-1.5-0.8-2.4-0.8 c-2.4,0-3.8,2.6-3.8,6.2c0,3.5,1.4,6.2,3.8,6.2c0.9,0,1.8-0.3,2.4-0.7l0.6,1.6C115.8,29.7,114.6,30.1,113.2,30.1"/>
<path style="fill:#ffffff" id="path25" d="M125,16.1c-0.5-0.2-1-0.3-1.6-0.3c-0.7,0-1.4,0.1-1.9,0.4v13.5H119V15.3c1.3-0.7,3-1.1,5.2-1.1c0.6,0,1.2,0.1,1.3,0.1 L125,16.1z"/>
<path style="fill:#ffffff" id="path27" d="M132,15.8c-2.7,0-3.5,2.9-3.5,6.3c0,3.4,0.9,6.3,3.5,6.3c2.7,0,3.5-2.9,3.5-6.3C135.5,18.6,134.6,15.8,132,15.8 M132,30.1 c-4.1,0-6-3.4-6-8c0-4.6,1.9-7.9,6-7.9c4.1,0,6,3.4,6,7.9C138,26.7,136.1,30.1,132,30.1"/>
<path style="fill:#ffffff" id="path29" d="M51.7,28.1c-0.6,0.3-1.6,0.5-2.5,0.5c-2.4,0-3.7-1.2-3.7-3.2c0-2.7,2.3-3.8,6.2-4.2V28.1z M48.7,14.2 c-1.6,0-3.4,0.5-4.7,1.1l0.6,1.5c1-0.6,2.5-1,3.8-1c2.1,0,3.3,0.9,3.3,3v0.9c-4.9,0.5-8.6,1.9-8.6,5.6c0,3,2.2,4.6,5.8,4.6 c2,0,3.9-0.4,5.1-1.1v-9.8C54,15.7,52,14.2,48.7,14.2"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
media/renode-ci-test.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB