linux u-boot跟踪方法总结
拿到一块板子,其中很重要的一项就是看电路图还有Datasheet。
这个真的很重要,首先你要知道cpu的架构是什么,armv7?arvmv5?还是其他的,哪个公司的芯片?是freescale 还是TI还是MTK,还是samsung,Hisilicon还是一些其他的什么芯片,现在的CPU的数据手册都比较全,都很容易在官网找到相关的资料,但是还要在官网找到其他的一些有用的信息,比如说官方对于这个芯片有没有评估板,对于这块板子有哪些支持的系统,相关的工具,比如说烧写系统的工具,都是很有用的。
其实一款嵌入式产品,除了初期产品规划时候规划的功能以外,cpu已经给这款产品定了型。
今天就记录一下针对一款产品u-boot 的跟踪方法。
纯属个人土方法,不正确望指出。
1.如果拿到板子的时候已经给了一套系统给你,确定了正确的烧写方式,确定了正确的sysboot。那么就可以着手开始跟踪u-boot,在以前的随笔里有一些记录,但是也是不是很成熟很通俗易懂,今天讲一个比较俗的跟踪方法。
首先,确定你的makefile 的正确配置,将这个u-boot配置一次,然后编译成功出来一次。
就拿以前的tiny4412那块板子来说,u-boot的正确配置是 make tiny4412_config make -j8 编译成功后。
他会生成几个重要的文件,u-boot.bin , u-boot.lds 第一个是编译完的二进制文件,第二个是编译链接脚本。
我们开始的地点就是u-boot.lds.
这里面会指定u-boot的开始位置,打个简单的比方,如果你的cpu是 armv7的架构,那个你的开始位置十有八九是arch/arm/cpu/armv7/start.S
不要问我为什么,这是经验。但是上述情况也有特殊情况,具体要看u-boot.lds,如果实在不行就看这个这个文件下有没有start.o文件,有的话就是了。
我的u-boot.lds是
.text :
{
arch/arm/cpu/armv7/start.o (.text)
board/samsung/tiny4412/libtiny4412.o (.text)
arch/arm/cpu/armv7/exynos/libexynos.o (.text)
*(.text)
}
这说明我的开始位置就是刚才那个,第二个文件就下下面那个。。。。
那个文件还规定了入口是(_start)
接下来就是 _start reset cpu_init_crit board_init_f relocate_code board_init_r main_loop 反正就是这个套路,顺着下去就是了,如果不确定这个文件是不是自己要进去的,那么就搜索一下这个文件的.o文件,如果有,一般来说就是,但是还要看include/configs/********.h 文件,这个文件我在前面也介绍了。
如果你不知道u-boot的各个文件结构,看顶层文件的README应该有一些介绍。
linux u-boot跟踪方法总结的更多相关文章
- Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线
Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线 我们在开发中常常会注意到一些Crash,这正是很头疼的,而且Crash会带来很多意想不到的状态,很恶心 ...
- (转)Linux I/O 调度方法
Linux I/O 调度方法 转自https://blog.csdn.net/theorytree/article/details/6259104 操作系统的调度有 CPU调度 CPU sche ...
- 嵌入式linux应用程序调试方法
嵌入式linux应用程序调试方法 四 内存工具 五 C/C++代码覆盖.性能profiling工具 四 内存工具 您肯定不想陷入类似在几千次调用之后发生分配溢出这样的情形. 许多小组花了许许多多时间来 ...
- Linux学习-Boot Loader: Grub2
boot loader 的两个 stage 在 BIOS 读完信息后,接下来就是会到第一个开机装置 的 MBR 去读取 boot loader 了.这个 boot loader 可以具有选单功能.直接 ...
- traceroute在linux中的使用方法
traceroute在linux中的使用方法 一.traceroute的实现原理 二.traceroute命令使用方法 1.命令格式 2.常用命令参数 3.使用实例 一.traceroute的实现原理 ...
- Spring Boot部署方法
Spring Boot部署方法 网上搜到的部署方法无非是打成jar包,然后shell执行nohup java调用jar命令,或者是打成war包然后部署到tomcat或者jetty容器上面. S ...
- 嵌入式linux应用程序移植方法总结
嵌入式linux应用程序移植方法总结 前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟.江浩 ...
- 1008win7与虚拟机中的linux共享文件的(详细)方法
转自http://jingyan.baidu.com/article/ca00d56c74dde4e99eebcfd2.html 好东西一起分享 win7与虚拟机中的linux共享文件的(详细)方法 ...
- KCF目标跟踪方法分析与总结
KCF目标跟踪方法分析与总结 correlation filter Kernelized correlation filter tracking 读"J. F. Henriques, R. ...
随机推荐
- 脚本放在 <body> 元素的底部
建议把脚本放在 <body> 元素的底部. 这会提高网页加载速度,因为 HTML 加载不受制于脚本加载.
- JS通过getBoundingClientRect获取的height可能与css设置的height不一致
发现如果DOM元素有padding-top或者padding-bottom值时, $(dom).height() = dom.style.display + padding-top + padding ...
- PasswordHasher
namespace Microsoft.AspNet.Identity { public class PasswordHasher : IPasswordHasher { public virtual ...
- Winform打包工具SetupFactory 9 的使用
写了个WinForm的小程序..以前没打过包..只是直接把Bin里的东西复制出来使用..自己使用是足够.但是发给别人毕竟不太好看(不牛逼)..所以就想着打包.. Vs2012自带的有打包的功能..相信 ...
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
public function getMinLimit () { $sql = "..."; $result = yii::app()->db-& ...
- 使用微信JS-SDK调用微信浏览器的接口
先附上微信公众平台的相关链接: 微信公众平台:https://mp.weixin.qq.com/ 微信公众平台开发文档:https://mp.weixin.qq.com/wiki 微信公众平台JS-S ...
- 网页JQ基础之jq-隐藏以及显示特效
简单的 隐藏以及显示的 JQ 的代码如下: <!DOCTYPE html> <html> <head> <script src="/jquery/j ...
- Linux下的百度云客户端
项目的github地址:https://github.com/LiuLang/bcloud 安装包以及说明:https://github.com/LiuLang/bcloud-packages 我在百 ...
- nginx -s reload失败
在重启nginx时报错误. wangkongming@ThinkPad-T410 ~ $ sudo /usr/sbin/nginx -s reload nginx: [error] invalid P ...
- 论Linux运维的一些基础安全知识和简单办法
不知不觉本人来北京也已经第三个年头了,从一个Linux小小鸟,开始,2012年我参加了第一份工作,其实现在想想其实我是幸运的,本来求学的时候,就没好好的学Linux,我认为有Cisco知识从上wind ...