zoukankan      html  css  js  c++  java
  • (转)从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行"

    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(强烈建议写脚本,我这里就不贴了),如果没有问题,我们的灯就可以亮了

  • 相关阅读:
    IntelliJ IDEA 14.03 java 中文文本处理中的编码格式设置
    应聘感悟
    STL string分析
    CUDA SDK VolumeRender 分析 (1)
    BSP
    CUDA SDK VolumeRender 分析 (3)
    CUDA SDK VolumeRender 分析 (2)
    Windows软件发布时遇到的一些问题
    Ten Commandments of Egoless Programming (转载)
    复习下光照知识
  • 原文地址:https://www.cnblogs.com/schips/p/11396419.html
Copyright © 2011-2022 走看看