Part6——点亮指路灯

LED是因为前面学习的bootlooder和内核都不能显示出结果,哪怕错了也不知道,所以我们要加入调试的手段,就是LED灯来调试

 

1、找出底板上的LED原理图

二极管导通就是需要让二极管上承担一定的电压差

在核心板原理图上   以nLED_1为例,问题就转化为GPK4输出高低的问题

 

 

GPIO为通用输入/输出引脚,对于许多结果比较简单的外部设备,GPIO更合适,如果用USB串口这种高级的接口反而不合适

 

 

 2440有130个引脚,他们被分为八组,从A到J

以A为例,

 

控制寄存器:               如果为0是输出,为1是功能引脚

   数据寄存器:       每一位对应一个引脚,输出为0或1

 

 

 

6410

 

 

 

 2、思维导图

 

 

2440

#define GPBCON 0x560000000

#define GPBDAT 0x560000014

light_led:

  ldr r0,=GPBCON

  ldr r1,#0x15400               //前面是高位的,最后是0位,但是前面的0不用管

  str r1,[r0]

  

  ldr r0,=GPBCON

  ldr r1,#0x6bf                //同理,按照位数配置

  str r1,[r0]

 

 

 

启动辅助程序,首先格式化,然后选择download u-boot

 

6410

#define GPKCON 0x7f008800

#define GPKDAT 0x7f008808

light_led:

  ldr r0,=GPKCON

  ldr r1,#0x11110000 

  str r1,[r0]

  

  ldr r0,=GPKCON

  ldr r1,#0xa0

  str r1,[r0]

  mov pc,lr

 

 

同样格式化,写入u-boot.bin,然后建立USB连接

/home/dnw ./gboot.bin 0x50000000

启动                      //但是这里6410不能工作,原因是没有对外设初始化,详情看前面的架构图

 

外设初始化:

在这里找到外设设置

实际上就是这里第一个

这里我们的基地址选择

set_peri_port:

  ldr r0,=#0x70000000      //先设置基地址,后面几位被忽略了

  orr r0,r0,#0x13            //再加上大小设置为256M

  mcr p15,0,r0,c15,c2,4    //再写回原地址

  mov pc,lr                    //54min

posted @ 2017-06-13 16:59  郁兴力  阅读(214)  评论(0)    收藏  举报