从0移植uboot (四) _点亮调试LED

这一节主要讨论1个问题:点灯。点灯是实际开发中,特别是裸板开发中常见的调试手段,至关于主机开发中漫天飞舞的printf/printk。为了追踪程序的现场执行状况,不少时候咱们都使用点一个灯的方法来进行初步的判断。若是你把刚才编译的程序烧录到SoC,你又怎么知道这个Uboot有没有工做呢?因此,咱们在这里就要完成这样一个程序的改造。
虽然说只是点一个灯, 但麻雀虽小五脏俱全, 也算是对uboot源码进行修改, 我总结了一点改造uboot的流程, 这一篇就按下面的改造流程来组织:调试

  1. 找运行逻辑,即插入代码的位置。
  2. 根据运行逻辑编写功能代码。
  3. 找配置逻辑,即修改哪些文件使配置生效。
  4. 根据配置逻辑修改配置使功能代码生效。
  5. 从新编译烧写uboot。

1. 找运行逻辑

咱们但愿板子在uboot的运行的时候就点灯示意, 因此应该在启动过程当中尽量考前的位置编写点灯代码, 根据上一篇对启动流程的叙述, 显然咱们须要修改的文件就是"arch/arm/cpu/armv7/start.S ", 咱们在启动代码以后添加咱们的代码, 即"134行"code

2. 编写功能代码

根据个人电路板。个人LED最终接在了GPF3_5接口,因此我配置相应的寄存器,点亮一个灯,并将这部分代码添加到"arch/arm/cpu/armv7/start.S +134"接口

135         msr     cpsr,r0
136     
137 #if 1
138         ldr r0, =0x114001E0             @load GPF3CON address to register
139         ldr r1, [r0]                    @load data in GPF3_5CON 
140         bic r1, r1,#0xff0000            @output 0x110000
141         orr r1, r1,#0x110000
142         str r1, [r0]
143 
144         ldr r0, =0x114001E4             @load GPF3_5DAT address to register
145         mov r1, #0x20                   @10 0000
146         str r1, [r0]
147 #endif
148 /*

3. 找配置逻辑。

这段代码不须要额外的配置便可工做开发

4. 修改配置

源码

5. 从新编译烧写

改写完程序,从新编译uboot(强烈建议写脚本,我这里就不贴了),若是没有问题,咱们的灯就能够亮了编译

相关文章
相关标签/搜索