參考資料:
https://github.com/steward-fu/pdf/blob/master/f133/rm.pdf
LED是連接到PWM7

PWM7是PD22

GPIO位址

PD_CFG2

PD_DAT

main.s
.global _start
.equ GPIO_BASE, 0x02000000
.equ PD_CFG2, 0x0098
.equ PD_DAT, 0x00a0
.text
.long 0x0a00006f
.byte 'e','G','O','N','.','B','T','0'
.long 0x5F0A6C39
.long 0x8000
.long 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0
.org 0x00a0
_vector:
j _start
.org 0x0100
_start:
li t0, (1 << 24)
li a0, GPIO_BASE + PD_CFG2
sw t0, 0(a0)
li t1, (1 << 22)
0:
xor t0, t0, t1
li a0, GPIO_BASE + PD_DAT
sw t0, 0(a0)
lui t2, 10000
1:
nop
addi t2, t2, -1
bgtz t2, 1b
j 0b
.end
main.ld
MEMORY {
FLASH : ORIGIN = 0, LENGTH = 32M
}
SECTIONS {
.text : { *(.text*) } > FLASH
.rodata : { *(.rodata*) } > FLASH
.bss : { *(.bss*) } > FLASH
}
Makefile
all: riscv64-unknown-linux-gnu-as -o main.o main.s riscv64-unknown-linux-gnu-ld -T main.ld -o main.elf main.o riscv64-unknown-linux-gnu-objcopy -O binary main.elf tmp.bin python3 gen_checksum.py tmp.bin main.bin run: xfel ddr f133 && xfel write 0x40000000 main.bin && xfel exec 0x40000000 clean: rm -rf main.bin main.o main.elf tmp.bin
編譯
$ make
riscv64-unknown-linux-gnu-as -o main.o main.s
riscv64-unknown-linux-gnu-ld -T main.ld -o main.elf main.o
riscv64-unknown-linux-gnu-objcopy -O binary main.elf tmp.bin
python3 gen_checksum.py tmp.bin main.bin
執行
$ make run
xfel ddr f133 && xfel write 0x40000000 main.bin && xfel exec 0x40000000
Initial ddr controller succeeded
100% [================================================] 16.000 KB, 431.932 KB/s
完成
