uboot目录

来源:互联网 发布:淘宝客推广api 申请 编辑:程序博客网 时间:2024/06/09 19:23
一 u-boot 目录结构

1.board 存放是特定开发板相关的代码,一般以芯片厂家的名字命名
  origen是三星基于exynos4412做一块开发板

  board/samsung/origen/lowlevel_init.S  系统时钟初始化代码
  board/samsung/origen/mem_setup.S      内存初始化代码 


2.arch 都是跟cpu架构相关的代码,例如:arm ,x86 ,mips ,ppc 
  arch/arm/cpu/armv7/start.S  这个是uboot首先执行的代码 
  arch/arm/cpu/u-boot.lds     这个是连接脚本文件(告诉编译在连接生成可执行文件的时候,一些段存放位置) 


3.include 存放的是uboot相关代码需要头文件
  include/configs/origen.h origen开发板对应的头文件,它决定了origen所需要的一些代码的宏开关
  它也是开发板配置头文件,开发板所需要的代码宏开关和相关的宏定义的参数都应该在此文件中定义    

#ifdef SAMSUNG_XXXX
    .......
#endif 

#ifdef TI_XXX
    .....
#endif 
    ....

4.net  uboot支持的一些网络协议 
  ping  tftp  arp(根据ip地址获取目标主机mark地址(网卡地址))


5.lib  多有平台通用的代码
  string.c 实现了字符串相关操作的代码 

6.common uboot支持的命令实现代码 

7.driver uboot支持的一些硬件驱动代码 


二 如何在uboot工程中添加代码 

在uboot的每个子目录下,都有一个Makefile文件 

例如:
我想将 driver/net/dm9000x.c 添加uboot代码中,此时只需在它的Makefile中添加所需要编译的文件

COBJS-$(CONFIG_DRIVER_DM9000) += dm9000x.o

注意:只有在CONFIG_DRIVER_DM9000这个宏被定义后,dm9000x.o才会被生成,此时我们只需要在
include/configs/origen.h头文件定义这个宏就可以了 


三  通过tags 文件来阅读源代码

tags 文件是通过命令:ctags -R 生成索引文件(源代码目录下所有的结构体定义,函数的定义,宏定义
都可以通过索引文件找到它所在的路径文件)

ctags + ]  跳转到指定符号所定义的文件 
ctags + t  返回 


注意:
必须让vi编辑器能寻找到tags文件 

修改用户主目录下的.vimrc文件,添加自己tags文件路径,这样vi编辑器就可以找到我们的tags啦
set tags+=/home/linux/fs4412/u-boot/u-boot-2013-learn/tags


四 通过grep命令搜索我们的符号所定义的地方 

在源码的顶层目录执行如下命令:

grep "符号名"  * -n -R


五 u-boot-2013.01 启动流程

(1)ARM核相关的设置
  <1>设置了异常向量表
  <2>告诉ARM核异常量表基地址
  <3>关闭cache和mmu 

(2)SOC相关的初始化
   <4>判断uboot是否已经在内存中
   <5>如果不在内存中,初始化系统时钟和内存
   <6>初始化UART