diff --git a/index.html b/index.html index c3ec791..d133a17 100644 --- a/index.html +++ b/index.html @@ -1,40 +1,209 @@ - - - - reveal.js + + + - - - + Renode: Easy CI for your Weird Hardware - - - - -
-
-
Slide 1
-
Slide 2
-
+ + + + + + + + +* Emulators are useful tools + - PC emulator (e.g. Docker on Mac, WSL on Linux) + - NES emulator -- fun and games, realtime output + - Also have debugging emulators + - Renode + +* Renode Stack + - CPU cores written in C + - arm, i386, ppc, riscv, sparc, xtensa + - Windows, Mac, Linux + - Peripherals and UI written in C# + - Extensible via Python and C# + - Write once. Run anywhere. Using C# to define new peripherals + +* Three major users + - Designers of new boards + - Reverse engineering exsisting hardware + - Silicon designers + +* Designers of new boards + - One or more chips + - How are they connected? + - What weird hardware exists? + + * Concurrent emulation of multiple devices + - Can connect multiple devices, e.g. via UART, GPIO, SPI, Ethernet, CAN... + - All devices are emulated using the same time source + - Helps to debug timing differences with different processors on a board + + * Board definition format + - Easily define memory layout + - Easily move blocks around + - Only define what's necessary + - You don't need to be perfect, just good enough! + + * Can read SVD files + + * Hardware has Similarities + - Picture of existing register sets + - There are only so many combinations + - Rip. Mix. Burn. Many chips are just copies of one another. + + * Tests in CI + +* Reverse engineering existing hardware + + * If it's a supported architecture, it's easy to run code + * LoadBinary and set PC + * Can skip much of the boot ROM + * Attach GDB + * Reproducible makes it easy to test theories + +* Developing new Silicon blocks + + * Betrusted hardware + - Create a new design in LiteX / Verilog + - Document the design + - Create a model + - Timing isn't as critical + + * + + + +
+
+
+
+

What is an Emulator?

+
    +
  • Desktop
  • +
  • CPU
  • +
  • Console
  • +
+
+
+

Desktop Emulator

+
    +
  • VirtualBox
  • +
  • VMWare
  • +
  • Parallels
  • +
  • HyperV
  • +
  • WSL2/Docker
  • +
+
+
+

CPU Emulator

+
    +
  • qemu on Linux
  • +
  • Rosetta on Mac
  • +
+
+
+

Console Emulator

+
    +
  • Wii Virtual Console
  • +
+
+
+
Slide 2
+
- - - - - + + + + + - - + // Basic deserialization + for (let i in query) { + let value = query[i]; + + query[i] = deserialize(unescape(value)); + } + + // Do not accept new dependencies via query config to avoid + // the potential of malicious script injection + if (typeof query['dependencies'] !== 'undefined') delete query['dependencies']; + + return query; + + } + var presenter = !!getQueryHash().s; + // More info about initialization & config: + // - https://revealjs.com/initialization/ + // - https://revealjs.com/config/ + Reveal.initialize({ + hash: true, + + controls: presenter ? false : true, + progress: true, + history: true, + center: true, + controlsTutorial: presenter ? false : true, + + slideNumber: presenter ? null : 'c/t', + + // The "normal" size of the presentation, aspect ratio will be preserved + // when the presentation is scaled to fit different resolutions. Can be + // specified using percentage units. + width: 960, + height: 700, + + // Factor of the display size that should remain empty around the content + margin: 0.1, + + multiplex: { + // Example values. To generate your own, see the socket.io server instructions. + secret: getQueryHash().s || null, + id: '160c0567ef5ca18f', + url: 'https://p.xobs.io/' + }, + + + // Bounds for smallest/largest possible scale to apply to content + minScale: 0.02, + maxScale: 5.5, + + transition: 'slide', // none/fade/slide/convex/concave/zoom + + // Don't forget to add the dependencies + dependencies: [ + { src: 'https://reveal-multiplex.glitch.me/socket.io/socket.io.js', async: true }, + { src: 'https://reveal-multiplex.glitch.me/client.js', async: true } + ], + + // Learn about plugins: https://revealjs.com/plugins/ + plugins: [RevealMarkdown, RevealHighlight, RevealZoom] + }); + + + + + + \ No newline at end of file diff --git a/media/hardware-20191117.jpg b/media/hardware-20191117.jpg new file mode 100644 index 0000000..6f62449 Binary files /dev/null and b/media/hardware-20191117.jpg differ diff --git a/media/renode-20191117.jpg b/media/renode-20191117.jpg new file mode 100644 index 0000000..a19216c Binary files /dev/null and b/media/renode-20191117.jpg differ diff --git a/media/renode-20191117.mp4 b/media/renode-20191117.mp4 new file mode 100644 index 0000000..4e6d6ff Binary files /dev/null and b/media/renode-20191117.mp4 differ