二十八.点亮LED

来源:互联网 发布:淘宝联盟app返利 编辑:程序博客网 时间:2024/04/28 08:42
1.led通常作为一种调试手段

2.GPIO:通用输入输出口
常有三个寄存器控制

3.不同平台的GPIO控制寄存器地址不同,工作模式不同,相应的控制寄存器的布局也不同,有的甚至一组GPIO要两个寄存器控制。

4.对于6410还要注意在uboot中对外设进行地址初始化
(1)将基地址存入r0,

(2)设置大小,即偏移量,将基地址加上偏移量就得到映射地址(orr指令)

(3)将映射地址写入协处理器cp15的c15

(4)思考:为什么大小(偏移量)256MB(从0x70000000到0x7FFFFFFF,共256MB)

5.流程:
(1)设置工作模式为输出

(2)设置数据寄存器,决定哪盏灯点亮

6. 210用了NPN三极管,故GPIO接基极时应该输出高电平,集电极才会输出低电平,才能点亮LED。而且uboot还要利用店等程序来调试找bug.
发现210的关闭MMU和2440.6410不一样,使cache数据失效的参数不一样,且最好把Icache也关闭。注意加头。。。。。。。

7.代码实现
@点亮LED#define GPKCON0 0x7F008800#define GPKDAT  0x7F008808light_led:@设置GPKCON0ldr r1, =GPKCON0 ldr r0, =0x11110000  str r0, [r1]@设置GPKDAT点亮4颗LEDldr r0, =GPKDATldr r1, =0xa0str r1, [r0]mov pc, lr




0 0
原创粉丝点击