參考資訊:
https://pyra-handheld.com/wiki/index.php?title=Main_Page
鍵盤背光電路如下,PERIPHERAL-RESET是連接到MCSPI1_CS1(GPIO5_144),KEYPAD-BL是連接到PWM(GPIO8_230)

MCSPI1_CS1_MUXMODE = 6 (GPIO5_144)

TIMER8_PWM_EVT_MUXMODE = 6 (GPIO8_230)

GPIO5 Clock

GPIO8 Clock

GPIO_OE

GPIO_DATAOUT

main.s
.global _start
.equ CM_L4PER_GPIO5_CLKCTRL, 0x4a009078
.equ CM_L4PER_GPIO8_CLKCTRL, 0x4a009118
.equ CONTROL_CORE_PAD0_MCSPI1_CS1_PAD1_I2C5_SCL, 0x4a0029c4
.equ CONTROL_CORE_PAD0_TIMER8_PWM_EVT_PAD1_I2C3_SCL, 0x4a002978
.equ GPIO5_OE, 0x4805b134
.equ GPIO8_OE, 0x48053134
.equ GPIO5_DATAOUT, 0x4805b13c
.equ GPIO8_DATAOUT, 0x4805313c
.arm
.text
_start:
b reset
b .
b .
b .
b .
b .
b .
b .
reset:
ldr r0, =CM_L4PER_GPIO5_CLKCTRL
ldr r1, =(1 << 0)
str r1, [r0]
ldr r0, =CONTROL_CORE_PAD0_MCSPI1_CS1_PAD1_I2C5_SCL
ldr r1, =6
str r1, [r0]
ldr r0, =CM_L4PER_GPIO8_CLKCTRL
ldr r1, =(1 << 0)
str r1, [r0]
ldr r0, =CONTROL_CORE_PAD0_TIMER8_PWM_EVT_PAD1_I2C3_SCL
ldr r1, =6
str r1, [r0]
ldr r0, =GPIO5_OE
ldr r1, =0
str r1, [r0]
ldr r0, =GPIO5_DATAOUT
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =GPIO8_OE
ldr r1, =0
str r1, [r0]
ldr r0, =GPIO8_DATAOUT
ldr r1, =0xffffffff
ldr r2, =0x00000000
0:
eor r2, r1
str r2, [r0]
ldr r3, =50000000
1:
subs r3, #1
bne 1b
b 0b
.end
main.ld
MEMORY
{
RAM : ORIGIN = 0, LENGTH = 32M
}
SECTIONS
{
.text : { *(.text*) } > RAM
.data : { *(.data*) } > RAM
}
Makefile
SD=/dev/sdX
all:
arm-linux-gnueabihf-as -mcpu=cortex-a7 -o main.o main.s
arm-linux-gnueabihf-ld -T main.ld -o main.elf main.o
arm-linux-gnueabihf-objcopy -O binary main.elf main.bin
sd:
sudo dd if=/dev/zero of=${SD} bs=1M count=10
sudo dd if=MLO of=${SD} count=2 seek=1 bs=128k
sudo dd if=main.bin of=${SD} count=4 seek=1 bs=384k
clean:
rm -rf main.bin main.o main.elf
P.S. /dev/sdX是SD位置
編譯並且燒錄到SD
$ wget https://github.com/steward-fu/archives/releases/download/pyra/MLO
$ make
arm-linux-gnueabihf-as -mcpu=cortex-a7 -o main.o main.s
arm-linux-gnueabihf-ld -T main.ld -o main.elf main.o
arm-linux-gnueabihf-objcopy -O binary main.elf main.bin
$ make sd
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 2.61366 s, 4.0 MB/s
sudo dd if=MLO of=/dev/sdb count=2 seek=1 bs=128k
0+1 records in
0+1 records out
66172 bytes (66 kB, 65 KiB) copied, 0.00214024 s, 30.9 MB/s
sudo dd if=main.bin of=/dev/sdb count=4 seek=1 bs=384k
0+1 records in
0+1 records out
188 bytes copied, 0.00200567 s, 93.7 kB/s
P.S. MLO是OMAP的X-Loader,司徒是直接從U-Boot編譯後,拿來使用的
將SD插入到Pyra左邊的卡槽,開機後,鍵盤背光就會開始閃爍
