156
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
									
										156
									
								
								index.html
									
									
									
									
									
								
							@@ -86,12 +86,22 @@
 | 
			
		||||
        <div class="slides">
 | 
			
		||||
            <section>
 | 
			
		||||
                <section>
 | 
			
		||||
                    <h2>Renode: Easy CI for your Weird Hardware</h2>
 | 
			
		||||
                    <h2>Renode: Easy Emulation for your Weird Hardware</h2>
 | 
			
		||||
                    <h3>Sean Cross</h3>
 | 
			
		||||
                    <p>Follow along at <a href="https://p.xobs.io/fa22">https://p.xobs.io/fa22</a></p> 
 | 
			
		||||
                </section>
 | 
			
		||||
                <section>
 | 
			
		||||
                    <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>
 | 
			
		||||
                    <h2>What is "Weird Hardware"?</h2>
 | 
			
		||||
@@ -101,15 +111,6 @@
 | 
			
		||||
                        <li>Hardware that uses ARM, i386, PowerPC, Risc-V, Sparc, or Xtensa</li>
 | 
			
		||||
                    </ul>
 | 
			
		||||
                </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>
 | 
			
		||||
                    <h2>Hardware with Embedded Software</h2>
 | 
			
		||||
                    <ul>
 | 
			
		||||
@@ -121,22 +122,13 @@
 | 
			
		||||
                <section>
 | 
			
		||||
                    <h2>About Renode</h2>
 | 
			
		||||
                    <ul>
 | 
			
		||||
                        <li>Whole-System Emulator</li>
 | 
			
		||||
                        <li>Supports concurrent emulation</li>
 | 
			
		||||
                        <li>Multi-Node Emulator</li>
 | 
			
		||||
                        <li>Extensible with C# and Python</li>
 | 
			
		||||
                        <li>Windows, Mac, Linux</li>
 | 
			
		||||
                        <li>MIT Licensed</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 Might Find This Talk Interesting?</h2>
 | 
			
		||||
                    <ul>
 | 
			
		||||
                        <li>Creators</li>
 | 
			
		||||
@@ -171,7 +163,7 @@
 | 
			
		||||
                        <li>What is it doing and how does it get there?</li>
 | 
			
		||||
                    </ul>
 | 
			
		||||
                    <img src="media/bluenrg-ghidra-trace.png" class="fragment">
 | 
			
		||||
                </section>
 | 
			
		||||
                </section> -->
 | 
			
		||||
            </section>
 | 
			
		||||
            <section>
 | 
			
		||||
                <section>
 | 
			
		||||
@@ -199,14 +191,14 @@
 | 
			
		||||
                    </ul>
 | 
			
		||||
                    -->
 | 
			
		||||
                </section>
 | 
			
		||||
                <section>
 | 
			
		||||
                <!-- <section>
 | 
			
		||||
                    <h2>Transparent Emulator</h2>
 | 
			
		||||
                    <ul>
 | 
			
		||||
                        <li>WSL2/Docker</li>
 | 
			
		||||
                        <li>qemu on Linux</li>
 | 
			
		||||
                        <li>Rosetta on Mac</li>
 | 
			
		||||
                    </ul>
 | 
			
		||||
                </section>
 | 
			
		||||
                </section> -->
 | 
			
		||||
                <section data-transition="slide-in fade-out">
 | 
			
		||||
                    <h2>What is an Emulator?</h2>
 | 
			
		||||
                    <img class="fragment" src="media/bbs-example.png">
 | 
			
		||||
@@ -278,20 +270,20 @@
 | 
			
		||||
                </section>
 | 
			
		||||
                <section>
 | 
			
		||||
                    <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
 | 
			
		||||
                            size: 0x00008000
 | 
			
		||||
 | 
			
		||||
                        sram: Memory.MappedMemory @ sysbus 0x20000000
 | 
			
		||||
                            size: 0x00001000
 | 
			
		||||
    
 | 
			
		||||
                        nvic: IRQControllers.NVIC @ sysbus 0xE000E000
 | 
			
		||||
                            IRQ -> cpu@0
 | 
			
		||||
 | 
			
		||||
                            
 | 
			
		||||
                        cpu: CPU.CortexM @ sysbus
 | 
			
		||||
                            cpuType: "cortex-m0+"
 | 
			
		||||
                            PerformanceInMips: 24
 | 
			
		||||
                            nvic: nvic
 | 
			
		||||
    
 | 
			
		||||
                        nvic: IRQControllers.NVIC @ sysbus 0xE000E000
 | 
			
		||||
                            IRQ -> cpu@0
 | 
			
		||||
                    </code></pre>
 | 
			
		||||
                    bluenrg-1.repl
 | 
			
		||||
                </section>
 | 
			
		||||
@@ -432,7 +424,7 @@
 | 
			
		||||
                    Blocks are frequently reused across designs, and can save you from having to reimplement
 | 
			
		||||
                    everything from scratch!
 | 
			
		||||
                </section>
 | 
			
		||||
                <section>
 | 
			
		||||
                <!-- <section>
 | 
			
		||||
                    <h2>What if we need to write it ourselves?</h2>
 | 
			
		||||
                </section>
 | 
			
		||||
                <section>
 | 
			
		||||
@@ -569,7 +561,7 @@
 | 
			
		||||
                        </ul>
 | 
			
		||||
                        <li class="fragment">Most writes can be ignored</li>
 | 
			
		||||
                    </ul>
 | 
			
		||||
                </section>
 | 
			
		||||
                </section> -->
 | 
			
		||||
                <section>
 | 
			
		||||
                    <h2>Peripheral Rapid Development</h2>
 | 
			
		||||
                    <img src="media/hardware-20191117-cropped.jpg">
 | 
			
		||||
@@ -605,74 +597,6 @@
 | 
			
		||||
                    <h2>Emulation brings more eyes to the project</h2>
 | 
			
		||||
                </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>
 | 
			
		||||
                    <h2>Robot Framework: Running Tests in CI</h2>
 | 
			
		||||
@@ -689,11 +613,11 @@
 | 
			
		||||
                                ${URI}    @https://dl.antmicro.com/projects/renode
 | 
			
		||||
                                
 | 
			
		||||
                                ${LIS2DS12}=     SEPARATOR=
 | 
			
		||||
                                ...  """                                                 ${\n}
 | 
			
		||||
                                ...  using "platforms/cpus/nrf52840.repl"                ${\n}
 | 
			
		||||
                                ...                                                      ${\n}
 | 
			
		||||
                                ...  lis2ds12: Sensors.LIS2DS12 @ twi1 0x1c              ${\n}
 | 
			
		||||
                                ...  ${SPACE*4}IRQ -> gpio0@28                           ${\n}
 | 
			
		||||
                                ...  """                                         ${\n}
 | 
			
		||||
                                ...  using "platforms/cpus/nrf52840.repl"        ${\n}
 | 
			
		||||
                                ...                                              ${\n}
 | 
			
		||||
                                ...  lis2ds12: Sensors.LIS2DS12 @ twi1 0x1c      ${\n}
 | 
			
		||||
                                ...  ${SPACE*4}IRQ -> gpio0@28                   ${\n}
 | 
			
		||||
                                ...  """
 | 
			
		||||
 | 
			
		||||
                            *** Keywords ***
 | 
			
		||||
@@ -702,7 +626,7 @@
 | 
			
		||||
                                Execute Command  machine 
 | 
			
		||||
                                ...    LoadPlatformDescriptionFromString ${LIS2DS12}
 | 
			
		||||
                                Execute Command  sysbus LoadELF 
 | 
			
		||||
                                ...    ${URI}/nrf52840--zephyr_lis2dh.elf-s_747800-163b7e7cc986d4b1115f06b5f3df44ed0defc1fa
 | 
			
		||||
                                ...    ${URI}/nrf52840--zephyr_lis2dh.elf
 | 
			
		||||
 | 
			
		||||
                            *** Test Cases ***
 | 
			
		||||
                            Should Read Acceleration
 | 
			
		||||
@@ -720,6 +644,10 @@
 | 
			
		||||
                    </code></pre>
 | 
			
		||||
                    <p>LIS2DS12.robot</p>
 | 
			
		||||
                </section>
 | 
			
		||||
                <section>
 | 
			
		||||
                    <h2>Github Actions</h2>
 | 
			
		||||
                    <img src="media/renode-ci-test.png">
 | 
			
		||||
                </section>
 | 
			
		||||
            </section>
 | 
			
		||||
            <section>
 | 
			
		||||
                <section>
 | 
			
		||||
@@ -727,7 +655,7 @@
 | 
			
		||||
                </section>
 | 
			
		||||
                <section>
 | 
			
		||||
                    <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'?>
 | 
			
		||||
                        <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>
 | 
			
		||||
@@ -863,7 +791,18 @@
 | 
			
		||||
                </section>
 | 
			
		||||
                <section>
 | 
			
		||||
                    <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()
 | 
			
		||||
                        {
 | 
			
		||||
                            Registers.STATUS.Define(this) // RDY is set on reset
 | 
			
		||||
@@ -910,7 +849,8 @@
 | 
			
		||||
                Give it a try!
 | 
			
		||||
            </section>
 | 
			
		||||
            <section>
 | 
			
		||||
                <h2>Thank you for your time</h2>
 | 
			
		||||
                <h2>Thank you for joining</h2>
 | 
			
		||||
                <h3>Questions?</h3>
 | 
			
		||||
            </section>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user