more basics

Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
Sean Cross 2023-08-15 18:25:28 +02:00
parent 8968455dee
commit 7b8e6ccf41
9 changed files with 85 additions and 45 deletions

View File

@ -67,7 +67,7 @@ section.has-light-background h6 {
}
.reveal .footer {
background-image: url("../../img/fossasia-logo.png");
/* background-image: url("../../img/fossasia-logo.png"); */
background-repeat: no-repeat;
background-size: 10%;
background-position-x: 50px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Binary file not shown.

BIN
img/renode-multi-system.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 KiB

BIN
img/svd-files.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
img/vt100-MA-4352.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

View File

@ -57,7 +57,7 @@
</ul>
</section>
<section>
<h2>Whole-system Emulator</h2>
<h2>Generic Whole-system Emulator</h2>
<ul>
<li>CPU cores</li>
<li>Peripherals</li>
@ -76,7 +76,7 @@
<li>arm64</li>
<li>ppc</li>
<li>riscv</li>
<li>spark</li>
<li>sparc</li>
<li>xtensa</li>
</ul>
</section>
@ -105,20 +105,13 @@
<img data-src="img/memory-write.png">
</section>
<section>
<h2>10% of the Functionality Gets You 90% of the Way There</h2>
<ul>
<h2>10% Functionality Solves 90% of Usecases</h2>
<img data-src="img/vt100-MA-4352.png">
<!-- <ul>
<li>E.g. in a serial device, baudrate, timers, and parity/stop can be ignored</li>
<li>Just "Tx", "Rx", and interrupt setup</li>
<li>Most software works just fine if you return zeroes for invalid addresses</li>
</ul>
</section>
<section>
<h2>SVD files are your friend</h2>
<ul>
<li>Your chip probably comes with a SVD file</li>
<li>This gives a map of RAM and peripherals</li>
<li>Renode can parse this and use it for logging / defaults</li>
</ul>
</ul> -->
</section>
<section>
<h2>Existing Peripherals in Renode</h2>
@ -143,6 +136,15 @@
<li>Peripherals can be written and loaded at runtime</li>
</ul>
</section>
<section>
<h2>SVD Files Are Your Friend</h2>
<!-- <ul>
<li>Your chip probably comes with a SVD file</li>
<li>This gives a map of RAM and peripherals</li>
<li>Renode can parse this and use it for logging / defaults</li>
</ul> -->
<img data-src="img/svd-files.png">
</section>
<section>
<h2>Networks in Renode</h2>
<ul>
@ -205,31 +207,28 @@
</ul>
</section>
<section>
<h2>Emulating it under Renode</h2>
<h2>Betrusted</h2>
<img data-src="img/renode-multi-system.png">
</section>
<section>
<h2>Emulating it With Renode</h2>
<ul>
<li>Good enough to develop the OS!</li>
<li>Good enough to catch bugs</li>
</ul>
</section>
<section data-transition="slide-in fade-out">
<h2>Getting Hardware to Users</h2>
<img src="img/betrusted-wycheproof-patch.png">
</section>
<section data-transition="fade-in">
<h2>Getting Hardware to Users</h2>
<img src="img/betrusted-wycheproof-patch-fix.png">
</section>
<section>
<h2>ENGINE bug</h2>
<ol>
<li>Added test vectors to the OS</li>
<li>Ran test vectors on physical device</li>
<li>Got test vectors passing in Renode</li>
<li>
<ul>
<li>Yay!</li>
</ul>
</li>
<li>Someone (without a device!) decided to add more vectors</li>
<li>Tested in Renode</li>
<li>Passed</li>
<li>Failed on hardware</li>
<li>Bug in detecting overflow condition for normalization in hardware</li>
<li>https://github.com/betrusted-io/gateware/commit/817e284a3d92037b8cb0686735578d2bb60853e9
</li>
</ol>
<section>
<h1>Demonstration!</h1>
</section>
</section>
<section>
<h2>Getting Started with Renode</h2>
@ -239,36 +238,53 @@
</ol>
</section>
<section>
<h2>Example project repl</h2>
<h2>Example project repl: </h2>
<pre><code>using "platforms/cpus/nrf52840.repl"
gpio0: // PinName in ArduinoIDE
24 -> led_red@0 // LED_RED
16 -> led_green@0 // LED_GREEN
6 -> led_blue@0 // LED_BLUE
camera: Sensors.ArduCAMMini2MPPlus @ {
spi2;
twi0 0x30
}
lsm9ds1_imu: Sensors.LSM9DS1_IMU @ twi0 0x6b
lsm9ds1_mag: Sensors.LSM9DS1_Magnetic @ twi0 0x1e
</code></pre>
</section>
<section>
<h2>Example project resc</h2>
<pre><code>using sysbus
mach create
machine LoadPlatformDescription @platforms/cpus/stm32f103.repl
machine LoadPlatformDescriptionFromString \
"button: Miscellaneous.Button @ gpioPortC 13 { IRQ -> gpioPortC@13 }"
showAnalyzer usart2
macro reset
"""
sysbus LoadELF @zephyr-stm32f103-button.elf
"""
runMacro $reset</code></pre>
</section>
<section>
<h2>Running it</h2>
<pre><code>mono64 Renode.exe project.resc</code></pre>
</section>
<section>
<h2>How to Extend Renode</h2>
<ol>
<li>Find a peripheral that does what you want</li>
<li>
<ul>
<li>You might even find a compatible peripheral!</li>
</ul>
</li>
<ul>
<li>You might even find a compatible peripheral!</li>
</ul>
<li>Copy it to your project</li>
<li>Change the constructor</li>
<li>Change the register set</li>
<li>Import the `.cs` file into Renode</li>
<li>Import the <code>.cs</code> file into Renode</li>
<li>Add it to your platform file</li>
</ol>
</section>
</section>
<section>
<section>
<h1>Demonstration!</h1>
</section>
</section>
<section>
<section>
<h2>Running Badge Software in Renode</h2>
@ -372,6 +388,30 @@ sysbus: Write of value 0x4 to an unimplemented register SYSTEM:PERIP_RST_EN0 (0x
<ul>
<li>SPI Controller</li>
<li>Interrupt Controller</li>
<li>I2C Controller</li>
<li>Touch Controller</li>
<li>Display</li>
</ul>
</section>
<section>
<h2>Displays</h2>
<ul>
<li>Implement <code>ISpiDevice</code></li>
<li>Subclass AutoRepaintingVideo</li>
<li>Implement <code>Repaint()</code></li>
</ul>
</section>
<section>
<h2>Touch Controller</h2>
<ul>
<li>Possibly interact with the Display controller</li>
<li>Implement <code>II2CPeripheral</code></li>
</ul>
</section>
<section>
<h2>Audio is Hard</h2>
<ul>
<li>Existing I2S peripherals just pattern-match audio</li>
</ul>
</section>
</section>