Raspberry Pi OK01

实验目标

通过GPIO使能Pi上ACT/OK灯,从而了解GPIO口。

代码分析

ldr r0,=0x20200000
GPIO-Register-Bytes.png
GPIO-Register-Bytes.png

通过上表我们可以知道GPIO口是以0x20200000作为开始的,那么此时r0寄存器中保存的就是基址。

mov r1,#1
lsl r1,#18
str r1,[r0,#4]
Bits-Pin-Map.png
Bits-Pin-Map.png

根据以上两张图我们可以知道将地址0x20200000的第18位置1,相当于将GPIO16设置为output,此处GPIO16就是我们要点亮的ACT灯的输出位置。


在正式点亮ACT灯之前,树莓派还要求将GPIO16口进行清除操作

mov r1,#1
lsl r1,#16
str r1,[r0,#40]

根据图标显示我们有了以上代码,将物理地址0x20200028里的第16位设置成1,代表着清除GPIO16。


可以将以上代码理解成初始化步骤,接下里就让Pi在一个无限循环的loop里工作。

loop$:
b loop$

此时使用make指令,将生成的kernel.img文件进行更换,可以观察到Pi的ACT灯亮起,实验结束。

结果展示