blob: cc1eff610979fd753e755d605340b1cf6a335540 [file] [log] [blame]
:name: Shodan
:description: This script runs Tock & seL4 on Shodan matcha
$name?="matcha"
using sysbus
mach create $name
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.RiscV32"
include @sim/config/shodan_infrastructure/SpringbokRiscV32.cs
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.SpringbokRiscV32"
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.SpringbokRiscV32_ControlBlock"
include @sim/config/shodan_infrastructure/KelvinRiscV32.cs
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.KelvinRiscV32"
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.KelvinRiscV32_ControlBlock"
include @sim/config/shodan_infrastructure/SmcRiscV32.cs
include @sim/config/shodan_infrastructure/Mailbox.cs
include @sim/renode/tools/sel4_extensions/seL4Extensions.cs
include @sim/config/shodan_infrastructure/AddressRangeStub.cs
$repl_file ?= @sim/config/platforms/shodan.repl
machine LoadPlatformDescription $repl_file
$term_port?=3456
emulation CreateServerSocketTerminal $term_port "term" false
connector Connect uart5 term
# for a client, bash users may consider this inline script:
#
# stty sane -echo -icanon; socat TCP:localhost:$term_port -; stty sane
#
# tmux users may consider adding a binding to ~/.tmux.conf
#
# bind-key k split-window "stty -echo -icanon; socat TCP:localhost:$term_port -"
# Hook up the analyzers to the uarts so we can see their output in the main
# Renode log
showAnalyzer "uart0-analyzer" sysbus.uart0 Antmicro.Renode.Analyzers.LoggingUartAnalyzer
showAnalyzer "uart5-analyzer" sysbus.uart5 Antmicro.Renode.Analyzers.LoggingUartAnalyzer
# Set the uarts host/virt timestamp format. Options: None, Virtual, Host, Full.
uart0-analyzer TimestampFormat None
uart5-analyzer TimestampFormat None
# Load the bootrom into the 32k rom at 0x8000 (useVirtualAddress = false, allowLoadsOnlyToMemory = true)
sysbus LoadELF @out/shodan_boot_rom/multihart_boot_rom.elf false true cpu0
# Load the tarball of CAmkES components, cpio bundle of built-in files, and the seL4 kernel
$tar ?= @out/ext_flash_release.tar
$tar_load_address ?= 0x44000000
$cpio ?= @out/cantrip/riscv32-unknown-elf/release/ext_builtins.cpio
$cpio_load_address ?= 0x46000000
$kernel ?= @out/cantrip/riscv32-unknown-elf/release/kernel/kernel.elf
sysbus LoadBinary $tar $tar_load_address
sysbus LoadBinary $cpio $cpio_load_address
sysbus LoadSymbolsFrom $kernel
# Start cpu0 at the bootrom reset vector, which is stored immediately after the
# bootrom interrupt vector table at 0x8080.
# (see https://ibex-core.readthedocs.io/en/latest/03_reference/exception_interrupts.html for details)
sysbus.cpu0 PC 0x8080
# Start the vector core at address 0 of its instruction TCM.
sysbus.cpu2 PC 0x80000000
# Set the vector core to be less interactive to IO for faster execution
$vector_core_mips ?= 1000
sysbus.cpu2 PerformanceInMips $vector_core_mips
# Start GDB and halt both cores so we can connect GDB before the bootrom has
# started.
$gdb_port?=3333
machine StartGdbServer $gdb_port false cpu0
machine StartGdbServer $gdb_port false cpu1
machine StartGdbServer $gdb_port false cpu2
cpu0 IsHalted true
cpu1 IsHalted true
cpu2 IsHalted true