(转)从0移植uboot (四) _点亮调试LED
这一节主要讨论1个问题:点灯。点灯是实际开发中,特别是裸板开发中常见的调试手段,相当于主机开发中漫天飞舞的printf/printk。为了追踪程序的现场执行情况,很多时候我们都使用点一个灯的方法来进行初步的判断。如果你把刚才编译的程序烧录到SoC,你又怎么知道这个Uboot有没有工作呢?所以,我们在这里就要完成这样一个程序的改造。
虽说只是点一个灯, 但麻雀虽小五脏俱全, 也算是对uboot源码进行修改, 我总结了一点改造uboot的流程, 这一篇就按下面的改造流程来组织:
- 找运行逻辑,即插入代码的位置。
- 根据运行逻辑编写功能代码。
- 找配置逻辑,即修改哪些文件使配置生效。
- 根据配置逻辑修改配置使功能代码生效。
- 重新编译烧写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(强烈建议写脚本,我这里就不贴了),如果没有问题,我们的灯就可以亮了
(转)从0移植uboot (四) _点亮调试LED的更多相关文章
- 从0移植uboot (四) _点亮调试LED
这一节主要讨论1个问题:点灯.点灯是实际开发中,特别是裸板开发中常见的调试手段,相当于主机开发中漫天飞舞的printf/printk.为了追踪程序的现场执行情况,很多时候我们都使用点一个灯的方法来进行 ...
- 从0移植uboot(六) _实现网络功能
为uboot添加网卡功能可以让uboot通过tftp下载内核, 方便我们的开发, 对于网卡功能的移植,我们依然在在一遍又一遍的实践这个uboot改造的套路. 找运行逻辑,即插入代码的位置. 根据运行逻 ...
- (转)从0移植uboot(六) _实现网络功能
ref:https://www.cnblogs.com/xiaojiang1025/p/6500532.html 为uboot添加网卡功能可以让uboot通过tftp下载内核, 方便我们的开发, 对于 ...
- 从0移植uboot (二) _启动流程分析
经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够,首先,此时的uboot并不符合三星芯片对bootloader的格式要求,其次,此时的uboot.bin也没有结合 ...
- 从0移植uboot(五) _实现串口输出
串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可以将程序运行的情况直接通过串口线输出到屏幕上,对于这种异常重要的功能,uboot原生就提供了支持,但为此我们需要做一些 ...
- 从0移植uboot(三) _编译最小可用uboot
前两篇介绍了uboot-2013.01的配置原理以及大体的运行流程,本文将讨论如何对uboot源码进行配置,将一个可用的uboot烧录到SD卡中. 定制自己的core board 市面上能买到的开发板 ...
- 从0移植uboot (一) _配置分析
来源:Linux社区 作者:xiaojiang1025 :http://www.linuxidc.com/Linux/2017-02/141018.htm 和绝大多数源码编译安装一样,uboot的 ...
- (转) 从0移植uboot(五) _实现串口输出
ref : https://www.cnblogs.com/xiaojiang1025/p/6500520.html 串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可 ...
- (转)从0移植uboot(三) _编译最小可用uboot
ref: https://www.cnblogs.com/xiaojiang1025/p/6436752.html 前两篇介绍了uboot-2013.01的配置原理以及大体的运行流程,本文将讨论如何对 ...
随机推荐
- pimpleFoam求解器 vs simpleFoam求解器 vs pisoFoam求解器 vs icoFoam
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/68072-pimplefoam-vs-simplefoam ...
- 简记webpack运行报错 Uncaught TypeError: self.postMessage is not a function
说好2017Fix的还是能重现,可能项目的版本比较旧了,简要记录解决办法 1.错误: index.js?bed3:67 Uncaught TypeError: self.postMessage is ...
- mysql 对返回的值是null进行判断和重新赋值
SELECT IFNULL(sum(c.tax_data),) ,IFNULL(SUM(c.fiscal_ret),) FROM corp_tax c WHERE c.industry_id = 使用 ...
- IOS开发环境搭建
前置条件 1. 必要:一台装有Mac OS X操作系统的电脑:经济允许的话可以买一部Mac book:否则的话,可以试试黑苹果或虚拟机. 2.必要:一个有可用的Apple ID:免费,在Apple的官 ...
- mkfs格式化分区(为分区写入文件系统)
mkfs 命令非常简单易用,不过是不能调整分区的默认参数的(比如块大小是 4096 Bytes),这些默认参数除非特殊清况,否则不需要调整.如果想要调整,就需要使用 mke2fs 命令重新格式化.命令 ...
- 学习笔记:Linux下共享内存的方式实现进程间的相互通信
一.常用函数 函数系列头文件 #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> ft ...
- appium 小程序自动化测试
https://www.cnblogs.com/yoyoketang/p/9144987.html adb shell su ACTIVITY com.tencent.mm/.plugin.appbr ...
- JavaScript原型,原型链 ? 有什么特点?
每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时, 如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会 ...
- python 设计模式之 (Chain of Responsibility)责任链模式
#写在前面 对于每一种设计模式,如果不理解它的原理和结构,是写不出例子来的.所以弄明白很重要. 等过完这段浑浑噩噩的日子,我要找个遍地开花的地方开怀大笑一场 #责任链模式定义 简书上一网友就把这个定义 ...
- LoadRunner11下载、安装与破解
目前LoadRunner最新版本已经更新到LR12了,但是只有试用版本,最多只支持50人的并发,所以我们还是只能用LR11的破解版,毕竟商用 版是真的很贵,一般企业怕是都不会去购买. 1.LoadRu ...