专题6-添加调试信息(led)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lvjianxin6015/article/details/54236898

下面将基于前面写的start.S、gboot.lds、和makefile,加入led的调试信息,验证程序是否完全正确。(比如:点亮led2、led4)

GPIO控制方法主要涉及到两个寄存器:
这里写图片描述
数据寄存器里面的值决定该IO口输出高电平还是低电平。
2440的led是接在GPB上的:
这里写图片描述
这里写图片描述
由原理图可知,当led的引脚接低电平时,led会亮
寄存器:
这里写图片描述
控制寄存器(决定输入输出),共22位,每两位控制一个引脚:
这里写图片描述
数据寄存器(决定高低电平):
这里写图片描述
程序如下:

#define GPBCON 0x56000010
#define GPBDAT 0x56000014
light_led:
    ldr r0,=GPBCON
    ldr r1,=0x15400   #设置GPB5(led1)~GPB8(led4)为输出模式,(01 01 01 01 00 00 00 00 00),其他默认为输入
    str r1,[r0]

    ldr r0,=GPBDAT
    ldr r1,=0x6BF   #GPB5(led1)与GPB7(led3)为低电平,其他的默认设为高电平。(11010111111)
    str r1,[r0]
    mov pc,lr

将gboot.bin下载到处理器,可以观察到led2和led4亮了。

对于6440的板子,在核心初始化中有一步忘记操作了,就是外设地址的初始化。核心初始化可参考专题5。
外设地址初始化:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

70000000为外设基地址。

set_peri_port:
    ldr r0, =0x70000000   #为外设的基地址
    orr r0, r0, #0x13
    mcr p15,0,r0,c15,c2,4
    mov pc, lr

6440点亮led:
这里写图片描述

GPKCON0每4位控制1位引脚:

这里写图片描述
这里写图片描述
代码:

#define GPKCON 0x7f008800
#define GPKDAT 0x7f008808
light_led:
    ldr r0, =GPKCON
    ldr r1, =0x11110000   #led1~led4配置为输出
    str r1, [r0]

    ldr r0, =GPKDAT
    ldr r1, =0xa0   #10100000  led2 和led4 亮
    str r1, [r0]
    mov pc, lr

猜你喜欢

转载自blog.csdn.net/lvjianxin6015/article/details/54236898
今日推荐