169
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
									
										169
									
								
								index.html
									
									
									
									
									
								
							@@ -81,6 +81,75 @@
 | 
			
		||||
<body>
 | 
			
		||||
	<div class="reveal">
 | 
			
		||||
		<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>
 | 
			
		||||
					<h2>What is an Emulator?</h2>
 | 
			
		||||
@@ -123,6 +192,13 @@
 | 
			
		||||
					</ul>
 | 
			
		||||
				</section>
 | 
			
		||||
			</section>
 | 
			
		||||
 | 
			
		||||
			<section>
 | 
			
		||||
				<section>
 | 
			
		||||
					<h2>What is a Computer?</h2>
 | 
			
		||||
				</section>
 | 
			
		||||
			</section>
 | 
			
		||||
 | 
			
		||||
			<section>
 | 
			
		||||
				<section>
 | 
			
		||||
					<h2>Example of Weird Hardware</h2>
 | 
			
		||||
@@ -206,6 +282,78 @@
 | 
			
		||||
						<li>Very few projects use built-in blocks</li>
 | 
			
		||||
					</ul>
 | 
			
		||||
				</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>
 | 
			
		||||
@@ -217,6 +365,20 @@
 | 
			
		||||
				<section>
 | 
			
		||||
					<h2>Debugging with GDB</h2>
 | 
			
		||||
				</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>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
@@ -226,6 +388,7 @@
 | 
			
		||||
	<script src="plugin/zoom/zoom.js"></script>
 | 
			
		||||
	<script src="plugin/markdown/markdown.js"></script>
 | 
			
		||||
	<script src="plugin/highlight/highlight.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/robot.js"></script>
 | 
			
		||||
	<script>
 | 
			
		||||
		/** This used to be a part of Reveal.js, but was removed at some point */
 | 
			
		||||
		function getQueryHash() {
 | 
			
		||||
@@ -295,6 +458,10 @@
 | 
			
		||||
 | 
			
		||||
			transition: 'slide', // none/fade/slide/convex/concave/zoom
 | 
			
		||||
 | 
			
		||||
			highlight: {
 | 
			
		||||
				beforeHighlight: hljs => hljs.registerLanguage('robot', window.hljsDefineRobot)
 | 
			
		||||
			},
 | 
			
		||||
 | 
			
		||||
			// Don't forget to add the dependencies
 | 
			
		||||
			dependencies: [
 | 
			
		||||
				{ src: 'https://reveal-multiplex.glitch.me/socket.io/socket.io.js', async: true },
 | 
			
		||||
@@ -309,4 +476,4 @@
 | 
			
		||||
	</script>
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
</html>
 | 
			
		||||
		Reference in New Issue
	
	Block a user