拿到一块板子,其中很重要的一项就是看电路图还有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跟踪方法总结的更多相关文章

  1. Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线

    Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线 我们在开发中常常会注意到一些Crash,这正是很头疼的,而且Crash会带来很多意想不到的状态,很恶心 ...

  2. (转)Linux I/O 调度方法

    Linux I/O 调度方法 转自https://blog.csdn.net/theorytree/article/details/6259104 操作系统的调度有 CPU调度    CPU sche ...

  3. 嵌入式linux应用程序调试方法

    嵌入式linux应用程序调试方法 四 内存工具 五 C/C++代码覆盖.性能profiling工具 四 内存工具 您肯定不想陷入类似在几千次调用之后发生分配溢出这样的情形. 许多小组花了许许多多时间来 ...

  4. Linux学习-Boot Loader: Grub2

    boot loader 的两个 stage 在 BIOS 读完信息后,接下来就是会到第一个开机装置 的 MBR 去读取 boot loader 了.这个 boot loader 可以具有选单功能.直接 ...

  5. traceroute在linux中的使用方法

    traceroute在linux中的使用方法 一.traceroute的实现原理 二.traceroute命令使用方法 1.命令格式 2.常用命令参数 3.使用实例 一.traceroute的实现原理 ...

  6. Spring Boot部署方法

    Spring Boot部署方法     网上搜到的部署方法无非是打成jar包,然后shell执行nohup java调用jar命令,或者是打成war包然后部署到tomcat或者jetty容器上面. S ...

  7. 嵌入式linux应用程序移植方法总结

    嵌入式linux应用程序移植方法总结 前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟.江浩 ...

  8. 1008win7与虚拟机中的linux共享文件的(详细)方法

    转自http://jingyan.baidu.com/article/ca00d56c74dde4e99eebcfd2.html 好东西一起分享 win7与虚拟机中的linux共享文件的(详细)方法 ...

  9. KCF目标跟踪方法分析与总结

    KCF目标跟踪方法分析与总结 correlation filter Kernelized correlation filter tracking 读"J. F. Henriques, R. ...

随机推荐

  1. 脚本放在 <body> 元素的底部

    建议把脚本放在 <body> 元素的底部. 这会提高网页加载速度,因为 HTML 加载不受制于脚本加载.

  2. JS通过getBoundingClientRect获取的height可能与css设置的height不一致

    发现如果DOM元素有padding-top或者padding-bottom值时, $(dom).height() = dom.style.display + padding-top + padding ...

  3. PasswordHasher

    namespace Microsoft.AspNet.Identity { public class PasswordHasher : IPasswordHasher { public virtual ...

  4. Winform打包工具SetupFactory 9 的使用

    写了个WinForm的小程序..以前没打过包..只是直接把Bin里的东西复制出来使用..自己使用是足够.但是发给别人毕竟不太好看(不牛逼)..所以就想着打包.. Vs2012自带的有打包的功能..相信 ...

  5. Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']

    public function getMinLimit () {        $sql = "...";        $result = yii::app()->db-& ...

  6. 使用微信JS-SDK调用微信浏览器的接口

    先附上微信公众平台的相关链接: 微信公众平台:https://mp.weixin.qq.com/ 微信公众平台开发文档:https://mp.weixin.qq.com/wiki 微信公众平台JS-S ...

  7. 网页JQ基础之jq-隐藏以及显示特效

    简单的 隐藏以及显示的 JQ 的代码如下: <!DOCTYPE html> <html> <head> <script src="/jquery/j ...

  8. Linux下的百度云客户端

    项目的github地址:https://github.com/LiuLang/bcloud 安装包以及说明:https://github.com/LiuLang/bcloud-packages 我在百 ...

  9. nginx -s reload失败

    在重启nginx时报错误. wangkongming@ThinkPad-T410 ~ $ sudo /usr/sbin/nginx -s reload nginx: [error] invalid P ...

  10. 论Linux运维的一些基础安全知识和简单办法

    不知不觉本人来北京也已经第三个年头了,从一个Linux小小鸟,开始,2012年我参加了第一份工作,其实现在想想其实我是幸运的,本来求学的时候,就没好好的学Linux,我认为有Cisco知识从上wind ...