From 69a7cb520189e910ba85123275d025704beee4e6 Mon Sep 17 00:00:00 2001 From: cheapie Date: Fri, 19 Jun 2026 23:15:24 -0500 Subject: Add random number printer sample --- c/randomnumbers/Makefile | 20 +++++++++++++++++ c/randomnumbers/randomnumbers.c | 14 ++++++++++++ c/randomnumbers/randomnumbers.elf | Bin 0 -> 6288 bytes c/randomnumbers/randomnumbers.hex | 13 +++++++++++ c/randomnumbers/randomnumbers.o | Bin 0 -> 1420 bytes c/randomnumbers/rvcontroller.ld | 45 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 92 insertions(+) create mode 100644 c/randomnumbers/Makefile create mode 100644 c/randomnumbers/randomnumbers.c create mode 100755 c/randomnumbers/randomnumbers.elf create mode 100644 c/randomnumbers/randomnumbers.hex create mode 100644 c/randomnumbers/randomnumbers.o create mode 100644 c/randomnumbers/rvcontroller.ld (limited to 'c/randomnumbers') diff --git a/c/randomnumbers/Makefile b/c/randomnumbers/Makefile new file mode 100644 index 0000000..4fa36c6 --- /dev/null +++ b/c/randomnumbers/Makefile @@ -0,0 +1,20 @@ +all: randomnumbers.hex + +randomnumbers.o: randomnumbers.c + clang -target riscv32-none-elf -I../rvcontroller-libraries -march=rv32imacb_zicntr_zicond_zicsr_zifencei_zihintpause_zilsd_zclsd_zabha_zacas_zbkb_zbkx_zcb_zcmp_zcmt -ffreestanding -O3 -c -o randomnumbers.o randomnumbers.c + +randomnumbers.elf: ../rvcontroller-libraries/rvcontroller-init.o ../rvcontroller-libraries/rvcontroller-ecalls.o randomnumbers.o + clang -target riscv32-none-elf -T rvcontroller.ld -nostdlib -nostartfiles -Xlinker --no-warn-rwx-segments -o randomnumbers.elf ../rvcontroller-libraries/rvcontroller-init.o randomnumbers.o ../rvcontroller-libraries/rvcontroller-ecalls.o + +dump: randomnumbers.elf + riscv32-none-elf-objdump -d randomnumbers.elf + +randomnumbers.hex: randomnumbers.elf + riscv32-none-elf-objcopy -O ihex randomnumbers.elf randomnumbers.hex + +load: randomnumbers.hex + bash -c "wl-copy < randomnumbers.hex" + +clean: + rm -f randomnumbers.hex randomnumbers.elf randomnumbers.o init.o + diff --git a/c/randomnumbers/randomnumbers.c b/c/randomnumbers/randomnumbers.c new file mode 100644 index 0000000..b0e0d13 --- /dev/null +++ b/c/randomnumbers/randomnumbers.c @@ -0,0 +1,14 @@ +/* Random Number Thing for RVController + * A product of Advanced Mesecons Devices, a Cheapie Systems company + * This is free and unencumbered software released into the public domain. + * See http://unlicense.org/ for more information */ + +#include +#include "rvcontroller-ecalls.h" + +void main(void) { + for (;;) { + printint(randomint(0,999999)); + printchar('\n'); + } +} diff --git a/c/randomnumbers/randomnumbers.elf b/c/randomnumbers/randomnumbers.elf new file mode 100755 index 0000000..d9ac97e Binary files /dev/null and b/c/randomnumbers/randomnumbers.elf differ diff --git a/c/randomnumbers/randomnumbers.hex b/c/randomnumbers/randomnumbers.hex new file mode 100644 index 0000000..c61811b --- /dev/null +++ b/c/randomnumbers/randomnumbers.hex @@ -0,0 +1,13 @@ +:10000000370101002920A94873000000828052B8FE +:1000100037440F001304F4230145A2858D282120C5 +:1000200029451128D5BF854873000000828091487A +:10003000730000008280AD48730000008280930846 +:1000400010087300000082809308500873000000BD +:10005000828093087008730000008280732510C0AE +:100060008280732500C082809308600873000000BE +:1000700082800589F322008093920248B3E2A200B5 +:1000800073900280828095487300000082809308FC +:100090000008730000008280A14873000000828085 +:1000A00093083008730000008280930840087300B2 +:0400B000000082804A +:00000001FF diff --git a/c/randomnumbers/randomnumbers.o b/c/randomnumbers/randomnumbers.o new file mode 100644 index 0000000..b922158 Binary files /dev/null and b/c/randomnumbers/randomnumbers.o differ diff --git a/c/randomnumbers/rvcontroller.ld b/c/randomnumbers/rvcontroller.ld new file mode 100644 index 0000000..985892b --- /dev/null +++ b/c/randomnumbers/rvcontroller.ld @@ -0,0 +1,45 @@ +/* Thanks https://github.com/darklife/darkriscv */ + __heap_size = 0x200; /* required amount of heap */ + __stack_size = 0x800; /* required amount of stack */ + ENTRY(_start); + MEMORY + { + RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 0x10000 + } + SECTIONS + { + .text : + { + *(.text.startup) + *(.text) + *(.text) + *(.rodata*) + } > RAM + .data : + { + *(.sbss) + *(.data) + *(.bss) + *(.rela*) + *(COMMON) + } > RAM + + .heap : + { + . = ALIGN(4); + PROVIDE ( end = . ); + _sheap = .; + . = . + __heap_size; + . = ALIGN(4); + _eheap = .; + } >RAM + + .stack : + { + . = ALIGN(4); + _estack = .; + . = . + __stack_size; + . = ALIGN(4); + _sstack = .; + } >RAM + } -- cgit v1.2.3