add lots more media

Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
Sean Cross 2022-04-01 12:18:51 +08:00
parent 1907df6dca
commit b3855b6cd0
15 changed files with 168 additions and 1 deletions

View File

@ -81,6 +81,75 @@
<body> <body>
<div class="reveal"> <div class="reveal">
<div class="slides"> <div class="slides">
<section>
<section>
<h2>Renode</h2>
<p>I find it a useful tool. Maybe you will, too!
</section>
<section>
<h2>About Me: I Do Weird Hardware</h2>
<ul>
<li>Simmel: Contact Tracing with Audio</li>
<li>Chibitronics: Programming Stickers with Audio</li>
<li>Novena: Open Source Laptop</li>
<li>Senoko: Open Source Power Board for Novena</li>
</ul>
</section>
<section>
<h2>About Renode</h2>
<ul>
<li>Whole-System Emulator</li>
<li>Supports concurrent emulation</li>
<li>Extensible with C# and Python</li>
<li>MIT Licensed</li>
<li>Windows, Mac, Linux</li>
</ul>
</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 will find this interesting?</h2>
<ul>
<li>Creators: Those making new boards or hardware</li>
<li>Integrators: Running CI on firmware files</li>
<li>Reverse Engineers: Understanding new hardware and firmware</li>
</ul>
</section>
<section>
<h2>Creators: Making New Things!</h2>
<ul>
<li>Reusing an existing platform</li>
<li>Reusing an existing microcontroller</li>
<li>New microcontroller fron existing family</li>
</ul>
</section>
<section>
<h2>Integrators: Making Sure Nothing Broke!</h2>
<ul>
<li>Hardware testing incompatible with cloud</li>
<ul>
<li>...it sure is effective, though</li>
</ul>
<li>Hardware crunch makes it difficult to get hardware</li>
<li>Downloading software is much cheaper than shipping</li>
<li>Can run tests on every code push</li>
</ul>
</section>
<section>
<h2>Reverse Engineers: What Is This Blob Doing?</h2>
<ul>
<li>Staring at code flow is enlightening, but time-consuming</li>
<li>What is it doing and how does it get there?</li>
<li>How can we make it do $x?</li>
</ul>
</section>
</section>
<section> <section>
<section> <section>
<h2>What is an Emulator?</h2> <h2>What is an Emulator?</h2>
@ -123,6 +192,13 @@
</ul> </ul>
</section> </section>
</section> </section>
<section>
<section>
<h2>What is a Computer?</h2>
</section>
</section>
<section> <section>
<section> <section>
<h2>Example of Weird Hardware</h2> <h2>Example of Weird Hardware</h2>
@ -206,6 +282,78 @@
<li>Very few projects use built-in blocks</li> <li>Very few projects use built-in blocks</li>
</ul> </ul>
</section> </section>
<section>
<h2>It's All About Small Victories</h2>
<ul>
<li>Serial ports are super rewarding</li>
<li>They're also usually simple!</li>
<li>They are easy to script</li>
</ul>
</section>
<section>
<h2>Steps to Set Up a Serial Port</h2>
<ol>
<li class="fragment semi-fade-out" data-fragment-index="1">Enable peripheral</li>
<li class="fragment semi-fade-out" data-fragment-index="1">Set up clock</li>
<li class="fragment semi-fade-out" data-fragment-index="1">Mux GPIOs</li>
<li class="fragment semi-fade-out" data-fragment-index="1">Calculate baud rate</li>
<li>Write to UART TX register</li>
</ol>
</section>
<section>
<h2>Steps to Set Up a Serial Port</h2>
<img src="media/renode-xous-kernel-uart.png">
</section>
<section data-transition="fade-out">
<h2>Advantages of Emulation</h2>
<img src="media/betrusted-soc-uart-mux.png">
</section>
<section data-transition="fade-in">
<h2>Advantages of Emulation</h2>
<img src="media/renode-xous-double-uart-tiled.png">
</section>
<section>
<h2>Steps to Set Up a Serial Port</h2>
<ul>
<li>Interrupt Support</li>
<li>DMA</li>
</ul>
</section>
<section>
<h2>Example Serial Port</h2>
<pre><code class="cs" data-trim>
{(long)Registers.RxTx, new DoubleWordRegister(this)
.WithValueField(0, 8,
writeCallback: (_, value) => {
this.TransmitCharacter((byte)value);
},
valueProviderCallback: _ => {
if(!TryGetCharacter(out var character))
{
this.Log(LogLevel.Warning, "Empty Rx FIFO.");
}
return character;
})
},
</code></pre>
</section>
<section>
<h2>Robot Framework: Running Tests in CI</h2>
<pre><code class="hljs" data-trim>
*** Test Cases ***
Should Read Acceleration
Create Machine
Create Terminal Tester ${UART}
Execute Command sysbus.twi1.lis2ds12 AccelerationX 10
Execute Command sysbus.twi1.lis2ds12 AccelerationY 5
Execute Command sysbus.twi1.lis2ds12 AccelerationZ -5
Start Emulation
Wait For Line On Uart x 9.997213 , y 4.997410 , z -4.999803
</code></pre>
</section>
</section> </section>
<section> <section>
<section> <section>
@ -217,6 +365,20 @@
<section> <section>
<h2>Debugging with GDB</h2> <h2>Debugging with GDB</h2>
</section> </section>
<section>
<h2>Software Assumes Hardware Works</h2>
<ul>
<li>Rarely checks for sane ranges (why would you?)</li>
<li>TOC-TOU</li>
</ul>
</section>
<section>
<h2>Incremental Changes</h2>
<ul>
<li>Small changes are very rewrding</li>
<li>Device will work with only partial implementation</li>
</ul>
</section>
</section> </section>
</div> </div>
</div> </div>
@ -226,6 +388,7 @@
<script src="plugin/zoom/zoom.js"></script> <script src="plugin/zoom/zoom.js"></script>
<script src="plugin/markdown/markdown.js"></script> <script src="plugin/markdown/markdown.js"></script>
<script src="plugin/highlight/highlight.js"></script> <script src="plugin/highlight/highlight.js"></script>
<script type="text/javascript" src="js/robot.js"></script>
<script> <script>
/** This used to be a part of Reveal.js, but was removed at some point */ /** This used to be a part of Reveal.js, but was removed at some point */
function getQueryHash() { function getQueryHash() {
@ -295,6 +458,10 @@
transition: 'slide', // none/fade/slide/convex/concave/zoom transition: 'slide', // none/fade/slide/convex/concave/zoom
highlight: {
beforeHighlight: hljs => hljs.registerLanguage('robot', window.hljsDefineRobot)
},
// Don't forget to add the dependencies // Don't forget to add the dependencies
dependencies: [ dependencies: [
{ src: 'https://reveal-multiplex.glitch.me/socket.io/socket.io.js', async: true }, { src: 'https://reveal-multiplex.glitch.me/socket.io/socket.io.js', async: true },
@ -309,4 +476,4 @@
</script> </script>
</body> </body>
</html> </html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
media/pl011-bluenrg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB