为u-boot-2016 for tiny4412添加点灯调试代码

 好的,经过前面两篇文章,我们已经能够编译和烧写u-boot到sd卡上了,接下来就是调试,完善功能了。

 说到调试,在此之前我想的调试方法是在串口还没有初始化之前,就只能通过点灯大法来调试了; 等到串口初始化完成后,就可以通过串口打印,这样调试就方便多了。不过后来看到了两篇文章,介绍的是通过jlink来进行源码级别的调试,但是我现在一来没有电烙铁,没办法将tiny4412上的jtag接口引出来,所以也就放弃了,有兴趣的朋友可以试一试使用jtag来进行源码级的调试和学习。后续我也会尝试使用jlink来进行调试和学习,毕竟现在也只是学习阶段,通过源码级别的调试,应该能学到更多东西。

 blog的链接我就放这里了:
   1. http://www.cnblogs.com/humaoxiao/p/4181078.html
   2. http://www.cnblogs.com/humaoxiao/p/4166230.html

 既然要用点灯调试,那么必然要做点灯的相关代码编写了,因为不确定代码跑到哪里就出现问题了,所以点灯代码还是使用汇编来编写会比较通用写。话不多说,下面开始写代码。

 首先要了解的是tiny4412上LED灯的相关信息,截图如下:

TINY4412 LED灯电路

TINY4412 LED灯引脚图

 看上面的截图可以了解到,只要将GPM4_0,GPM4_1,GPM4_2,GPM4_3设置为输出引脚,要让灯点亮的话,只要将引脚的设置为输出低电平就OK了。

 下面编写测试代码:

diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 7eee54b..83eed98 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -85,6 +85,10 @@ switch_to_hypervisor_ret:
 #endif
 #endif
/* 添加的测试代码,测试LED代码是否正常,测试完毕需要删除 */
+       bl LED1_ON
+       bl LED2_ON
+       bl LED3_ON
+       bl LED4_ON
        bl      _main

 /*------------------------------------------------------------------------------*/
@@ -293,3 +297,81 @@ ENTRY(cpu_init_crit)
        b       lowlevel_init           @ go setup pll,mux,memory
 ENDPROC(cpu_init_crit)
 #endif
+
+ENTRY(LED1_ON)
+       /*
+        * GPM4CON Address = 0x110002E0
+        * GPM4DAT Address = 0x110002E4
+        */
+       ldr r0, =0x110002E0
+       ldr r1, [r0]            //读出GPM4CON的值
+       bic r1, r1, #0xf        //将GPM4CON[0:3]清零
+       orr r1, r1, #0x1        //将GPM4_0设置为输出引脚
+       str r1, [r0]            //将设置的值写回GPM4CON
+
+       ldr r0, =0x110002E4
+       ldr r1, [r0]            //读出GPM4DAT的值
+       bic r1, r1, #0          //将CPM4DAT的第[0]清零,清零就是输出低电平了
+       str r1,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值