commit 639a57fd0f5377427f1a63f2a60801ddcf4b52ed
parent 2f9ef944febbcada24036ae92b04669639753935
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Wed, 13 Aug 2025 06:42:03 +0900
change name
Diffstat:
| D | spi/Makefile | | | 37 | ------------------------------------- | 
| D | spi/boot2.s | | | 29 | ----------------------------- | 
| D | spi/main.s | | | 297 | ------------------------------------------------------------------------------- | 
| D | spi/memmap.ld | | | 18 | ------------------ | 
4 files changed, 0 insertions(+), 381 deletions(-)
diff --git a/spi/Makefile b/spi/Makefile
@@ -1,37 +0,0 @@
-AS = arm-none-eabi-as
-LD = arm-none-eabi-ld
-OBJCOPY = arm-none-eabi-objcopy
-BINCRC = ../tools/bincrc
-BIN2UF2 = ../tools/bin2uf2
-
-MCPU = -mcpu=cortex-m0plus
-ASFLAGS = $(MCPU)
-CFLAGS = $(MCPU) -ffreestanding -nostartfiles -O0 -fpic -mthumb -c
-LDFLAGS = --no-relax -nostdlib
-
-all: tools a.uf2
-
-clean:
-	rm -f *.o *.elf *.uf2 *.bin
-	cd ../tools && make clean
-
-.s.o:
-	$(AS) $(ASFLAGS) -o $@ $<
-
-a.elf: boot2.o main.o memmap.ld
-	$(LD) $(LDFLAGS) -o $@ -T memmap.ld boot2.o main.o 
-
-a.bin: a.elf
-	$(OBJCOPY) -O binary a.elf $@
-
-a.uf2: a.bin
-	$(BINCRC) a.bin a_crc.bin
-	$(BIN2UF2) a_crc.bin $@
-
-flash: all
-	#mount /dev/disk/by-label/RPI-RP2 /mnt
-	mount /dev/sd2i /mnt
-	cp a.uf2 /mnt
-
-tools:
-	cd ../tools && make
diff --git a/spi/boot2.s b/spi/boot2.s
@@ -1,29 +0,0 @@
-.cpu cortex-m0plus
-.thumb
-
-	.section .boot2
-setup_xip:
-	ldr r3, rom_base
-
-	ldrh r0, [r3, #0x14] // rom_func_table
-	ldr r1, =('C' | 'X' << 8) // _flash_enter_cmd_xip()
-	ldrh r2, [r3, #0x18] // rom_table_lookup
-	blx r2
-	blx r0
-
-	ldr r0, =vectors
-	ldr r1, m0plus_vtor 
-	str r0, [r1, #0] // M0PLUS: VTOR
-	ldr r1, [r0, #4] // entry point
-	ldr r0, [r0, #0] // stack pointer
-	mov sp, r0
-	bx r1
-
-	.align 2
-rom_base:
-	.word 0x00000000
-m0plus_vtor:
-	.word 0xe0000000 + 0xed08
-literals:
-	.ltorg
-
diff --git a/spi/main.s b/spi/main.s
@@ -1,297 +0,0 @@
-.cpu cortex-m0plus
-.thumb
-
-	.global vectors
-vectors:
-	.word 0x20040000 // initial SP
-	.word (reset+1)  // entry point
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-	.word 0xdeadbeef
-
-	.word (uart_interrupt_handler+1) // UART0_IRQ
-
-	.section .text
-reset:
-	// unreset gpio, pll_sys, uart0
-	ldr r0, =(1 << 22 | 1 << 12 | 1 << 5) // uart0 | pll_sys | io_bank0
-	ldr r3, resets_base
-	ldr r1, atomic_clr
-	str r0, [r3, r1] // RESETS: RESET
-	mov r1, #1
-	lsl r1, #22
-	bic r0, r1 // uart stays in reset state until clock_peri is enabled
-unreset_chk:
-	ldr r1, [r3, #0x8] // RESETS: RESET_DONE
-	bic r0, r1
-	bne unreset_chk
-
-	// set gpio functions
-	ldr r3, io_bank0_base
-	mov r0, #2 // uart0
-	mov r1, #0x4
-	str r0, [r3, r1] // IO_BANK0: GPIO0_CTRL
-	mov r1, #0xc
-	str r0, [r3, r1] // IO_BANK0: GPIO1_CTRL
-
-	// setup xosc
-	ldr r3, xosc_base
-	mov r0, #47 // start up delay for 12MHz rosc (xosc?)
-	str r0, [r3, #0xc] // XOSC: STARTUP
-	ldr r0, =(0xfab << 12 | 0xaa0)
-	str r0, [r3, #0] // XOSC: CTRL
-wait_xosc:
-	ldr r0, [r3, #0x4] // XOSC: STATUS
-	lsr r0, r0, #31 // STABLE bit
-	beq wait_xosc
-
-	// setup pll_sys 133MHz
-	ldr r3, pll_sys_base
-	// set feedback divider
-	mov r0, #133
-	str r0, [r3, #0x8] // PLL: FBDIV_INT
-	// power on pll and vco
-	ldr r0, =(1 << 5 | 1) // VCOPD | PD
-	ldr r1, atomic_clr
-	add r1, r1, #0x4
-	str r0, [r3, r1] // PLL: PWR
-	// wait vco to lock
-wait_vco:
-	ldr r0, [r3, #0] // PLL: CS
-	lsl r0, r0, #31
-	beq wait_vco
-	// setup post dividers
-	ldr r0, =(4 << 16 | 3 << 12)
-	str r0, [r3, #0xc] // PLL: PRIM
-	// power on post divider
-	mov r0, #8 // POSTDIVPD
-	str r0, [r3, r1] // PLL: PWR
-
-	// set system clock clksrc_pll_sys
-	ldr r3, clocks_base
-	ldr r0, =(0x0 << 5 | 0x1)
-	str r0, [r3, #0x3c] // CLOCKS: CLK_SYS_CTRL
-	// enable clk_peri
-	mov r0, #1
-	lsl r0, r0, #11
-	str r0, [r3, #0x48] // CLOCKS: CLK_PERI_CTRL
-
-	// setup uart0
-	ldr r3, uart0_base
-	// set baudrate 115200
-	// BDRI = 72, BDRF = 0.157 (10 / 64)
-	mov r0, #72
-	str r0, [r3, #0x24] // UART: UARTIBRD
-	mov r0, #10
-	str r0, [r3, #0x28] // UART: UARTFBRD
-	// enable uart0
-	mov r0, #1 // UARTEN
-	ldr r1, atomic_set
-	add r1, r1, #0x30
-	str r0, [r3, r1] // UART: UARTCR
-	// enable FIFO and set format
-	ldr r0, =(3 << 5 | 1 << 4) // WLEN = 8, FEN = 1
-	str r0, [r3, #0x2c] // UART: UARTLCR_H
-
-	// enable uart interrupt in cpu
-	ldr r4, ppb_base
-	mov r5, #0xe1
-	lsl r5, #8
-	mov r0, #1
-	lsl r0, #20
-	str r0, [r4, r5] // M0PLUS: NVIC_ISER
-
-	// enable uart interrupt in uart0 subsystem
-	ldr r1, uart0_base
-	// according to sdk's src/rp2_common/hardware_uart/include/hardware/uart.h
-	// receive interrupt needs RTIM bit masked
-	mov r2, #(1<<6|1<<4) // RTIM | RXIM
-	str r2, [r1, #0x38] // UART: UARTIMSC
-	// set fifo level to 0
-	mov r2, #0
-	str r2, [r1, #0x34] // UART: UARTIFLS
-	bl delay
-	ldr r0, [r1, #0x3c] // UART: UARTRIS
-	bl printh
-
-loop:
-	wfe
-	b loop
-
-// functions
-
-	// print r0 in hex for debugging.
-printh:
-	push {r4, r5, r6, r7, lr}
-	mov r4, r0
-	mov r5, #28
-	mov r6, #0xf
-	mov r7, #10
-printh_loop:
-	mov r0, r4
-	lsr r0, r0, r5
-	and r0, r0, r6
-	sub r1, r0, r7
-	blt digi
-	add r0, r0, #('a' - 10)
-	b alpha
-digi:
-	add r0, r0, #'0'
-alpha:
-	bl putbyte
-	sub r5, r5, #4
-	bge printh_loop
-	pop {r4, r5, r6, r7, pc}
-
-putbyte:
-	ldr r3, uart0_base
-	mov r1, #1
-	lsl r1, r1, #5 // TXFF
-txff:
-	ldr r2, [r3, #0x18] // UART: UARTFR
-	tst r1, r2
-	bne txff
-	mov r1, #0xff
-	and r0, r0, r1
-	str r0, [r3, #0] // UART: UARTDR
-	bx lr
-
-getbyte:
-	ldr r3, uart0_base
-	mov r1, #1
-	lsl r1, r1, #4 // RXFE
-rxfe:
-	ldr r2, [r3, #0x18] // UART: UARTFR
-	tst r1, r2
-	bne rxfe
-	ldr r0, [r3, #0] // UART: UARTDR
-	mov r1, #0xff
-	and r0, r0, r1
-	bx lr
-
-// The following functions make no side effects and
-// can be used anywhare without pushing and popping
-// registers.
-
-	// Print register content with 2 leds, lsb first.
-pled:
-	push {r0, r1, r2, r3, r4, r5, r6, lr}
-	mov r4, r0
-	mov r5, #32
-	mov r6, #1
-pled_loop:
-	tst r4, r6
-	beq pled0
-	bl bled1
-	b pled1
-pled0:
-	bl bled0
-pled1:
-	lsr r4, r4, #1
-	sub r5, r5, #1
-	bne pled_loop
-	pop {r0, r1, r2, r3, r4, r5, r6, pc}
-
-bled0:
-	push {r0, r1, r2, r3, lr}
-	mov r0, #1
-	lsl r0, r0, #24
-	bl bled
-	pop {r0, r1, r2, r3, pc}
-
-bled1:
-	push {r0, r1, r2, r3, lr}
-	mov r0, #1
-	lsl r0, r0, #25
-	bl bled
-	pop {r0, r1, r2, r3, pc}
-
-bled:
-	push {r0, r1, r2, r3, r4, r5, lr}
-	ldr r4, sio_base
-	mov r5, r0
-	str r5, [r4, #0x10] // SIO: GPIO_OUT_XOR
-	bl delay
-	str r5, [r4, #0x18] // SIO: GPIO_OUT_XOR
-	bl delay
-	pop {r0, r1, r2, r3, r4, r5, pc}
-	
-delay:
-	push {r0}
-	mov r0, #1
-	lsl r0, r0, #24
-delay_loop:
-	sub r0, r0, #1
-	bne delay_loop
-	pop {r0}
-	bx lr
-
-uart_interrupt_handler:
-	push {lr}
-	bl getbyte
-	bl putbyte
-	pop {pc}
-
-	.align 2
-literals:
-	.ltorg
-atomic_set:
-	.word 0x00002000
-atomic_clr:
-	.word 0x00003000
-clocks_base:
-	.word 0x40008000
-resets_base:
-	.word 0x4000c000
-io_bank0_base:
-	.word 0x40014000
-xosc_base:
-	.word 0x40024000
-pll_sys_base:
-	.word 0x40028000
-uart0_base:
-	.word 0x40034000
-sio_base:
-	.word 0xd0000000
-ppb_base:
-	.word 0xe0000000
diff --git a/spi/memmap.ld b/spi/memmap.ld
@@ -1,18 +0,0 @@
-MEMORY
-{
-	FLASH(rx) : ORIGIN = 0x10000000, LENGTH = 2048k
-	SRAM(rwx) : ORIGIN = 0x20000000, LENGTH = 264k
-}
-
-SECTIONS
-{
-	.boot2 : {
-		*(.boot2)
-		. = 0x100;
-	} > FLASH
-
-	.text : {
-		*(.text)
-	} > FLASH
-}
-