diff --git a/index.html b/index.html index 6933f5b..792f0ae 100644 --- a/index.html +++ b/index.html @@ -81,6 +81,75 @@
+
+
+

Renode

+

I find it a useful tool. Maybe you will, too! +

+
+

About Me: I Do Weird Hardware

+
    +
  • Simmel: Contact Tracing with Audio
  • +
  • Chibitronics: Programming Stickers with Audio
  • +
  • Novena: Open Source Laptop
  • +
  • Senoko: Open Source Power Board for Novena
  • +
+
+
+

About Renode

+
    +
  • Whole-System Emulator
  • +
  • Supports concurrent emulation
  • +
  • Extensible with C# and Python
  • +
  • MIT Licensed
  • +
  • Windows, Mac, Linux
  • +
+
+
+

About This Talk

+
    +
  • Overview of Emulators
  • +
  • Oevrview of Weird Hardware
  • +
  • Cool things you can do
  • +
+
+
+

Who will find this interesting?

+
    +
  • Creators: Those making new boards or hardware
  • +
  • Integrators: Running CI on firmware files
  • +
  • Reverse Engineers: Understanding new hardware and firmware
  • +
+
+
+

Creators: Making New Things!

+
    +
  • Reusing an existing platform
  • +
  • Reusing an existing microcontroller
  • +
  • New microcontroller fron existing family
  • +
+
+
+

Integrators: Making Sure Nothing Broke!

+
    +
  • Hardware testing incompatible with cloud
  • +
      +
    • ...it sure is effective, though
    • +
    +
  • Hardware crunch makes it difficult to get hardware
  • +
  • Downloading software is much cheaper than shipping
  • +
  • Can run tests on every code push
  • +
+
+
+

Reverse Engineers: What Is This Blob Doing?

+
    +
  • Staring at code flow is enlightening, but time-consuming
  • +
  • What is it doing and how does it get there?
  • +
  • How can we make it do $x?
  • +
+
+

What is an Emulator?

@@ -123,6 +192,13 @@
+ +
+
+

What is a Computer?

+
+
+

Example of Weird Hardware

@@ -206,6 +282,78 @@
  • Very few projects use built-in blocks
  • +
    +

    It's All About Small Victories

    +
      +
    • Serial ports are super rewarding
    • +
    • They're also usually simple!
    • +
    • They are easy to script
    • +
    +
    +
    +

    Steps to Set Up a Serial Port

    +
      +
    1. Enable peripheral
    2. +
    3. Set up clock
    4. +
    5. Mux GPIOs
    6. +
    7. Calculate baud rate
    8. +
    9. Write to UART TX register
    10. +
    +
    +
    +

    Steps to Set Up a Serial Port

    + +
    +
    +

    Advantages of Emulation

    + +
    +
    +

    Advantages of Emulation

    + +
    +
    +

    Steps to Set Up a Serial Port

    +
      +
    • Interrupt Support
    • +
    • DMA
    • +
    +
    +
    +

    Example Serial Port

    +
    
    +						{(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;
    +								})
    +						},		
    +					
    +
    +
    +

    Robot Framework: Running Tests in CI

    +
    
    +							*** 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
    +						
    +
    @@ -217,6 +365,20 @@

    Debugging with GDB

    +
    +

    Software Assumes Hardware Works

    +
      +
    • Rarely checks for sane ranges (why would you?)
    • +
    • TOC-TOU
    • +
    +
    +
    +

    Incremental Changes

    +
      +
    • Small changes are very rewrding
    • +
    • Device will work with only partial implementation
    • +
    +
    @@ -226,6 +388,7 @@ + - + \ No newline at end of file diff --git a/media/betrusted-soc-uart-mux.png b/media/betrusted-soc-uart-mux.png new file mode 100644 index 0000000..fc39e8b Binary files /dev/null and b/media/betrusted-soc-uart-mux.png differ diff --git a/media/bluenrg-block-diagram-cpu.png b/media/bluenrg-block-diagram-cpu.png new file mode 100644 index 0000000..6ff29e1 Binary files /dev/null and b/media/bluenrg-block-diagram-cpu.png differ diff --git a/media/bluenrg-block-diagram-memories.png b/media/bluenrg-block-diagram-memories.png new file mode 100644 index 0000000..e37bcb5 Binary files /dev/null and b/media/bluenrg-block-diagram-memories.png differ diff --git a/media/bluenrg-block-diagram-no-extra-bits.png b/media/bluenrg-block-diagram-no-extra-bits.png new file mode 100644 index 0000000..2e7deed Binary files /dev/null and b/media/bluenrg-block-diagram-no-extra-bits.png differ diff --git a/media/bluenrg-block-diagram-peripherals.png b/media/bluenrg-block-diagram-peripherals.png new file mode 100644 index 0000000..31428cb Binary files /dev/null and b/media/bluenrg-block-diagram-peripherals.png differ diff --git a/media/bluenrg-block-diagram.png b/media/bluenrg-block-diagram.png new file mode 100644 index 0000000..c191d8b Binary files /dev/null and b/media/bluenrg-block-diagram.png differ diff --git a/media/bluenrg-peripherals.png b/media/bluenrg-peripherals.png new file mode 100644 index 0000000..8148114 Binary files /dev/null and b/media/bluenrg-peripherals.png differ diff --git a/media/pl011-bluenrg.png b/media/pl011-bluenrg.png new file mode 100644 index 0000000..64849de Binary files /dev/null and b/media/pl011-bluenrg.png differ diff --git a/media/renode-xous-double-uart-horiz.png b/media/renode-xous-double-uart-horiz.png new file mode 100644 index 0000000..988f0fd Binary files /dev/null and b/media/renode-xous-double-uart-horiz.png differ diff --git a/media/renode-xous-double-uart-tiled.png b/media/renode-xous-double-uart-tiled.png new file mode 100644 index 0000000..f908f88 Binary files /dev/null and b/media/renode-xous-double-uart-tiled.png differ diff --git a/media/renode-xous-double-uart-vert.png b/media/renode-xous-double-uart-vert.png new file mode 100644 index 0000000..3785c7d Binary files /dev/null and b/media/renode-xous-double-uart-vert.png differ diff --git a/media/renode-xous-kernel-uart.png b/media/renode-xous-kernel-uart.png new file mode 100644 index 0000000..3c38cec Binary files /dev/null and b/media/renode-xous-kernel-uart.png differ diff --git a/media/s32k-block-diagram-no-extra-bits.png b/media/s32k-block-diagram-no-extra-bits.png new file mode 100644 index 0000000..7282517 Binary files /dev/null and b/media/s32k-block-diagram-no-extra-bits.png differ diff --git a/media/s32k-block-diagram.png b/media/s32k-block-diagram.png new file mode 100644 index 0000000..0cf71fa Binary files /dev/null and b/media/s32k-block-diagram.png differ