summaryrefslogtreecommitdiff
path: root/assembly/beacon
diff options
context:
space:
mode:
authorcheapie <cheapiephp@gmail.com>2026-06-06 11:25:21 -0500
committercheapie <cheapiephp@gmail.com>2026-06-06 11:25:21 -0500
commit2b1c27b2b6ae78a043ecae25603939c76d63956e (patch)
tree8550d7369e5f7b4efdbd995cbfeb44a2f788c192 /assembly/beacon
parentad3b71a2a7c895ab4209619492d1e0b2a39adb82 (diff)
downloadrvcontroller-2b1c27b2b6ae78a043ecae25603939c76d63956e.tar
rvcontroller-2b1c27b2b6ae78a043ecae25603939c76d63956e.tar.gz
rvcontroller-2b1c27b2b6ae78a043ecae25603939c76d63956e.tar.bz2
rvcontroller-2b1c27b2b6ae78a043ecae25603939c76d63956e.tar.xz
rvcontroller-2b1c27b2b6ae78a043ecae25603939c76d63956e.zip
Add beacon and digital sign files
Diffstat (limited to 'assembly/beacon')
-rw-r--r--assembly/beacon/Makefile24
-rw-r--r--assembly/beacon/beacon.S85
-rwxr-xr-xassembly/beacon/beacon.elfbin0 -> 5872 bytes
-rw-r--r--assembly/beacon/beacon.hex25
-rw-r--r--assembly/beacon/beacon.obin0 -> 3080 bytes
l---------assembly/beacon/rvcontroller.ld1
6 files changed, 135 insertions, 0 deletions
diff --git a/assembly/beacon/Makefile b/assembly/beacon/Makefile
new file mode 100644
index 0000000..84d76c4
--- /dev/null
+++ b/assembly/beacon/Makefile
@@ -0,0 +1,24 @@
+MARCH ?= rv32imacbzicntr_zicond_zicsr_zifencei_zihintpause_zilsd_zclsd_zabha_zacas_zbkb_zbkx_zcb_zcmp_zcmt
+
+.PHONY: all dump load clean
+
+all: beacon.hex
+
+beacon.o: beacon.S
+ riscv32-none-elf-as -I../rvcontroller-libraries -march=${MARCH} -o beacon.o beacon.S
+
+beacon.elf: beacon.o
+ riscv32-none-elf-ld -T rvcontroller.ld --no-warn-rwx-segments -o beacon.elf beacon.o
+
+dump: beacon.elf
+ riscv32-none-elf-objdump -d beacon.elf
+
+beacon.hex: beacon.elf
+ riscv32-none-elf-objcopy -O ihex beacon.elf beacon.hex
+
+load: beacon.hex
+ bash -c "wl-copy < beacon.hex"
+
+clean:
+ rm -f beacon.bin beacon.elf beacon.o
+
diff --git a/assembly/beacon/beacon.S b/assembly/beacon/beacon.S
new file mode 100644
index 0000000..26c271e
--- /dev/null
+++ b/assembly/beacon/beacon.S
@@ -0,0 +1,85 @@
+# Initialize timer
+la a0,timerchannel
+la a1,timerinit1
+li a7,129 # Send digilines message
+ecall
+la a1,timerinit2
+ecall
+
+loop:
+
+# Check if the timer has ticked
+li a7,133 # Get digilines buffer level
+ecall
+beqz a0,sleep # Sleep if it hasn't
+li a7,134 # Clear digilines receive buffer
+ecall
+
+# Do the actual flashing
+li a7,129 # Send digilines message
+la a0,lightchannel1
+la a1,lightonmsg
+ecall # Light 1 on
+pause
+la a1,lightoffmsg
+ecall # Light 1 off
+pause
+la a1,lightonmsg
+ecall # Light 1 on
+pause
+la a1,lightoffmsg
+ecall # Light 1 off
+pause
+la a1,lightonmsg
+ecall # Light 1 on
+pause
+la a1,lightoffmsg
+ecall # Light 1 off
+pause
+la a1,lightonmsg
+ecall # Light 1 on
+pause
+la a1,lightoffmsg
+ecall # Light 1 off
+pause
+la a0,lightchannel2
+la a1,lightonmsg
+ecall # Light 2 on
+pause
+la a1,lightoffmsg
+ecall # Light 2 off
+pause
+la a1,lightonmsg
+ecall # Light 2 on
+pause
+la a1,lightoffmsg
+ecall # Light 2 off
+pause
+la a1,lightonmsg
+ecall # Light 2 on
+pause
+la a1,lightoffmsg
+ecall # Light 2 off
+pause
+la a1,lightonmsg
+ecall # Light 2 on
+pause
+la a1,lightoffmsg
+ecall # Light 2 off
+pause
+j loop
+
+sleep:
+csrw 0x800,1 # Lightweight on
+pause
+csrw 0x800,0 # Lightweight off
+j loop
+
+
+timerchannel: .asciz "timer"
+timerinit1: .asciz "loop_on"
+timerinit2: .asciz "1"
+lightchannel1: .asciz "light1"
+lightchannel2: .asciz "light2"
+lightonmsg: .asciz "14"
+lightoffmsg: .asciz "0"
diff --git a/assembly/beacon/beacon.elf b/assembly/beacon/beacon.elf
new file mode 100755
index 0000000..e1c0b55
--- /dev/null
+++ b/assembly/beacon/beacon.elf
Binary files differ
diff --git a/assembly/beacon/beacon.hex b/assembly/beacon/beacon.hex
new file mode 100644
index 0000000..418d25b
--- /dev/null
+++ b/assembly/beacon/beacon.hex
@@ -0,0 +1,25 @@
+:10000000170500001305C515970500009385A51574
+:1000100093081008730000009705000093852515CC
+:10002000730000009308500873000000630105127C
+:10003000930860087300000093081008170500007B
+:1000400013050513970500009385651373000000E1
+:100050000F000001970500009385951273000000C2
+:100060000F000001970500009385651173000000E3
+:100070000F000001970500009385951073000000A4
+:100080000F000001970500009385650F73000000C5
+:100090000F000001970500009385950E7300000086
+:1000A0000F000001970500009385650D73000000A7
+:1000B0000F000001970500009385950C7300000068
+:1000C0000F000001170500001305F50A9705000051
+:1000D0009385E50A730000000F00000197050000FA
+:1000E0009385150A730000000F00000197050000BA
+:1000F0009385E508730000000F00000197050000DC
+:1001000093851508730000000F000001970500009B
+:100110009385E506730000000F00000197050000BD
+:1001200093851506730000000F000001970500007D
+:100130009385E504730000000F000001970500009F
+:1001400093851504730000000F000001E1BD73D01A
+:1001500000800F00000173500080E9B574696D657F
+:1001600072006C6F6F705F6F6E0031006C69676852
+:100170007431006C696768743200313400300000FB
+:00000001FF
diff --git a/assembly/beacon/beacon.o b/assembly/beacon/beacon.o
new file mode 100644
index 0000000..e5cafbb
--- /dev/null
+++ b/assembly/beacon/beacon.o
Binary files differ
diff --git a/assembly/beacon/rvcontroller.ld b/assembly/beacon/rvcontroller.ld
new file mode 120000
index 0000000..bc01402
--- /dev/null
+++ b/assembly/beacon/rvcontroller.ld
@@ -0,0 +1 @@
+../../rvcontroller.ld \ No newline at end of file