Skip to content

Commit

Permalink
Load device modules
Browse files Browse the repository at this point in the history
  • Loading branch information
jmichalski-ant committed Jan 26, 2024
1 parent 3789f12 commit 84a5e01
Show file tree
Hide file tree
Showing 9 changed files with 182 additions and 5 deletions.
50 changes: 45 additions & 5 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ name: Generate and publish docs

on:
push:
branches:
- main
# branches:
# - main
pull_request:
workflow_dispatch:
schedule:
Expand Down Expand Up @@ -33,10 +33,50 @@ jobs:
tuttest README.md example > example.yml
protoplaster -t example.yml --generate-docs
- name: Generate test report from yml
# - name: Generate test report from yml
# run: |
# protoplaster -t example.yml --csv report.csv
# protoplaster-test-report report.csv -t md

- name: Generate test report in Renode
uses: antmicro/renode-linux-runner-action@v1
with:
board: custom
resc: /home/runner/work/protoplaster/protoplaster/protoplaster/test_platform/init.resc
repl: /home/runner/work/protoplaster/protoplaster/protoplaster/test_platform/platform.repl
arch: riscv64
kernel: /home/runner/work/protoplaster/protoplaster/protoplaster/test_platform/kernel-riscv64-hifive_unleashed_virtio.tar.xz
image-type: native
image: /home/runner/work/protoplaster/protoplaster/protoplaster/test_platform/image-riscv64-default.tar.xz
shared-dirs: ./
renode-run: |
ls /dev | grep video
python -m venv .venv
source .venv/bin/activate
pip install .
protoplaster -t example.yml --csv report.csv
protoplaster-test-report report.csv -t md
mkdir -p protoplaster/host_dir
mount /dev/vdb protoplaster/host_dir
cp report.md protoplaster/host_dir/report.md
cp report.csv protoplaster/host_dir/report.csv
echo "file from guest" > protoplaster/host_dir/test2.txt
ls protoplaster/host_dir
umount protoplaster/host_dir
devices: |
# vivid
gpio 0 32
i2c 0x3C
tasks: |
/home/runner/work/protoplaster/protoplaster/protoplaster/test_platform/renode_network.yml
/home/runner/work/protoplaster/protoplaster/protoplaster/test_platform/v4l2.yml
- name: Read report from image
run: |
protoplaster -t example.yml --csv report.csv
protoplaster-test-report report.csv -t md
mkdir guest_out
sudo mount protoplaster/test_platform/drive.img guest_out
ls guest_out
cp guest_out/report.md report.md
- name: Generate system report from yml
run: |
Expand Down
Binary file added protoplaster/test_platform/drive.img
Binary file not shown.
Binary file not shown.
30 changes: 30 additions & 0 deletions protoplaster/test_platform/init.resc
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
$name?="hifive-unleashed"

using sysbus
mach create $name
machine LoadPlatformDescription @action/device/hifive_unleashed/platform.repl

# rootfs
machine LoadPlatformDescriptionFromString 'virtio: Storage.VirtIOBlockDevice @ sysbus 0x100d0000 { IRQ -> plic@50 }'
virtio LoadImage @images/rootfs.img

machine LoadPlatformDescriptionFromString 'virtio2: Storage.VirtIOBlockDevice @ sysbus 0x100e0000 { IRQ -> plic@51 }'
virtio2 LoadImage @/home/runner/work/protoplaster/protoplaster/protoplaster/test_platform/drive.img true


showAnalyzer uart0
e51 LogFunctionNames true

$fdt ?= @images/hifive-unleashed-a00.dtb
$elf ?= @images/fw_payload.elf
$image ?= @images/Image
$rootfs ?= @images/rootfs.cpio

macro reset
"""
sysbus LoadELF $elf
sysbus LoadFdt $fdt 0x88000000 "earlycon=sbi console=ttyS0 root=/dev/ram init=/sbin/init initrd=0x8d000000,28M"
sysbus LoadBinary $rootfs 0x8D000000
sysbus LoadBinary $image 0x8B000000
"""
runMacro $reset
Binary file not shown.
Binary file not shown.
83 changes: 83 additions & 0 deletions protoplaster/test_platform/platform.repl
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
// Custom board - HiFive Unleashed singlecore
// Three u54 cores are disabled here to increase emulation speed

e51: CPU.RiscV64 @ sysbus
cpuType: "rv64imac"
hartId: 0
privilegeArchitecture: PrivilegeArchitecture.Priv1_10
timeProvider: clint

u54_1: CPU.RiscV64 @ sysbus
cpuType: "rv64gc"
hartId: 1
privilegeArchitecture: PrivilegeArchitecture.Priv1_10
timeProvider: clint

debug: Memory.MappedMemory @sysbus 0x0
size: 0x1000

e51DTim: Memory.MappedMemory @ sysbus 0x01000000
size: 0x2000

u54Hart1ITim: Memory.MappedMemory @ sysbus 0x01808000
size: 0x7000

clint: IRQControllers.CoreLevelInterruptor @ sysbus 0x2000000
frequency: 1000000
numberOfTargets: 2
[0, 1] -> e51@[3, 7]
[2, 3] -> u54_1@[3, 7]

plic: IRQControllers.PlatformLevelInterruptController @ sysbus 0xc000000
0 -> e51@11
[1,2] -> u54_1@[11,9]
numberOfSources: 53
numberOfContexts: 9
prioritiesEnabled : false

uart0: UART.SiFive_UART @ sysbus 0x10010000
IRQ -> plic@4

uart1: UART.SiFive_UART @ sysbus 0x10011000
IRQ -> plic@5

qspi0Flash: Memory.MappedMemory @ sysbus 0x20000000
size: 0x2000000

ddr: Memory.MappedMemory @ sysbus 0x80000000
size: 0x200000000

ethernet: Network.CadenceGEM @ sysbus 0x10090000
moduleRevision: 0x0109
moduleId: 0x1007
IRQ -> plic@53

phy: Network.EthernetPhysicalLayer @ ethernet 0
Id1: 0x0141
Id2: 0x0e40
BasicStatus: 0x62A4
AutoNegotiationAdvertisement: 0x1e1
AutoNegotiationLinkPartnerBasePageAbility: 0x1e1
MasterSlaveControl: 0x300
MasterSlaveStatus: 0x3000

qspi0: SPI.HiFive_SPI @ sysbus 0x10040000
IRQ -> plic@51
numberOfSupportedSlaves: 1

// The registration address value is taken from the device tree.
// It is different in the documentation (0x10140000).
qspi1: SPI.HiFive_SPI @ sysbus 0x10041000
IRQ -> plic@52
numberOfSupportedSlaves: 4

qspi2: SPI.HiFive_SPI @ sysbus 0x10050000
IRQ -> plic@6
numberOfSupportedSlaves: 1

pwm0: HiFive_PWM @ sysbus 0x10020000
IRQ -> plic@42

pwm1: HiFive_PWM @ sysbus 0x10021000
IRQ -> plic@46

15 changes: 15 additions & 0 deletions protoplaster/test_platform/renode_network.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: renode_network
shell: renode
requires: [renode_config]
echo: true
timeout: 10
fail-fast: true
sleep: 0
commands:
- emulation CreateSwitch "${{SWITCH_NAME}}"
- emulation CreateTap "${{TAP_INTERFACE}}" "tap"
- connector Connect host.tap ${{SWITCH_NAME}}
- connector Connect sysbus.ethernet ${{SWITCH_NAME}}
vars:
SWITCH_NAME: switch0
TAP_INTERFACE: tap0
9 changes: 9 additions & 0 deletions protoplaster/test_platform/v4l2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: v4l2
shell: target
before: [chroot]
echo: true
timeout: 10
fail-fast: true
disabled: false
commands:
- modprobe vivid n_devs=2 vid_cap_nr=0,2 vid_out_nr=0,2

0 comments on commit 84a5e01

Please sign in to comment.