四.linux开发之uboot移植(四)——uboot初体验记录

版权声明:本文为博主原创文章,允许转载请注明。谢谢! https://blog.csdn.net/wangweijundeqq/article/details/79128442

一.X210官方uboot配置编译实践

这里写图片描述
将整个BSP打包文件弄到linux的源生目录中去解压分析,不要在windows中的共享文件夹中解压开。( 除非你的代码只在windows下去分析而不去编译,如果你想编译工程就一定不要在windows共享文件夹下,否则会出错)

(1)将共享文件下的bsp所有文件及其子目录复制复制到目录/root/下:

这里写图片描述

(2)解压:tar -zcvf /home/xahot.tar.gz /xahot

tar -zcvf 打包后生成的文件名全路径 要打包的目录

例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件。
这里写图片描述
解压后如下如下:
这里写图片描述

(3)配置:

配置方法是:首先cd进入uboot源码的根目录,然后在根目录下执行:

make x210_sd_config。执行配置命令后,如果出现:Configuring for x210_sd board…

说明配置好了
这里写图片描述

(4)编译得到uboot.bin

(1)编译之前一定要注意检查arm-linux-gcc对不对,检查份2步:

第一步:检查当前编译环境中有没有安装合适的arm-linux-gcc。我们装的是arm-2009q3,因为这个是三星官方、九鼎官方开发uboot时使用的。
这里写图片描述
第二步:检查当前目录下(uboot根目录)的Makefile中编译器的设置是否正确。在工程的总Makefile中会设置交叉编译工具链的路径和名字,必须确保这个路径和名字和我们自己装的一致,否则编译会出错。
这里写图片描述
(2)确保了以上2点,即可进行编译。编译很简单,直接make即可。或者

可以make -j4 (多线程编译,主机如果是多核心电脑,可以尝试多线程编译,会快一些)
这里写图片描述

二.uboot的源码目录分析

1.各文件介绍

(1).gitignore。git工具的文件,git是一个版本管理工具(类似的还有个svn),这个文件和git有关,和uboot本身无关的,不用去管。

(2)arm_config.mk。后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。

(3)三个Changelog文件,修改记录文件,该文件记录了这个uboot项目的版本变迁以及每个版本较上个版本修改的记录。正式的项目都有这些记录的。可以直接忽略,主要是给维护uboot的人用的。

(4)config.mk。和arm_config.mk差不多性质。

(5)COPYING。版权声明,uboot本身是GPL许可证的。

(6)CREDITS。鸣谢,里面记录了对uboot有贡献的人,感谢目录。

(7)image_split。一个脚本,看说明是用来分割uboot.bin到BL1的,暂时用不到,先不管。

(8)MAINTAINERS。维护者,就是当前在参与维护uboot源码的社区工作者。

(9)MAKEALL。一个脚本,应该是帮助编译uboot的。

(10)Makefile。这个很重要,是uboot源代码的主Makefile,将来整个uboot被编译时就是用这个Makefile管理编译的,所以我们在下个课程中研究uboot配置编译过程时就要分析这个Makefile。

(11)mk。快速编译的脚本,其实就是先清理然后配置然后编译而已。

(12)mkconfig。这个很重要,是uboot配置阶段的主要配置脚本。uboot的可移植性很大程度就是靠这个配置脚本在维护的。我们在下个课程中研究uboot配置编译过程时就要分析这个配置脚本。

(13)mkmovi。暂时不去管他,一个脚本,和iNand/SD卡启动有关

(14)README。所有的软件都有README,一般拿到一个东西要先读README,这个东西其实就是个简单的使用说明书。

(15)rules.mk。这个文件是我们uboot的Makefile使用的规则,本身非常重要,但是我们不去分析他,不去看他。

*总结 :以上这些文件中,对我们比较重要,需要认真看的有2个:mkconfig和Makefile。一个负责uboot的配置,一个负责编译。我们在第四部分的课程中会详细讲解分析这两个东西。*

2.uboot的源码文件夹结构分析

1、cpu

本文件夹下的子文件与处理器相关,每个文件夹代表一种CPU系列。每个子目录中都包括cpu.c、interrupts.c、start.S文件。

cpu.c主要用于初始化CPU、设置指令Cache和数据Cache等

interrupt.c主要用于设置系统的各种中断和异常

start.S是U-boot启动时执行的第一个文件,主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础。

S5PV210芯片对应的文件夹是s5pc11x。

cpu/s5pc11x/s5pc110/cpu\_init.S主要用于SDRAM内存的初始化设置。

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2、board

本文件下的子文件与开发板相关,每一个子文件代表一个芯片厂家,芯片厂家文件夹下存放的每一个子文件夹是一种开发板,由于历史原因,board目录下尚保留有大量的开发板文件夹没有归档到芯片厂家文件夹内,保持兼容性,因此整体显得比较混乱。如samsung的smdk2400、smdk2410开发板就位于samsung文件夹外。

S5PV210芯片对应的文件夹位于board/samsung/smdkc110,文件夹内的lowlevel\_init.S文件主要用于时钟、串口、MMU、Flash底层驱动、板级初始化,u-boot.lds文件是链接脚本文件,对于工程项目编译后期的链接阶段非常重要,决定了程序的组装。

 
 
  • 1

3、common

本文件夹下存放与处理器体系结构无关的通用代码,uboot的命令解析代码/common/command.c、所有命令的上层代码cmd\_\*.c、uboot环境变量处理代码env\_\*.c、CRC校验等都位于本目录下。

 
 
  • 1

4、drivers

本目录下存放所有外围芯片的驱动,网卡、USB、串口、LCD、Nand Flash等。

 
 
  • 1

5、disk

本目录存放于磁盘驱动的分区处理代码

 
 
  • 1

6、fs

本目录下存放文件系统相关的代码,每一个子文件夹代表一种文件系统。

 
 
  • 1

7、net

本目录下存放于网络协议相关的代码

 
 
  • 1

8、doc

本目录下存放uboot的说明文档。

 
 
  • 1

9、api、api_examples、examples

外部扩展程序的API和示例

 
 
  • 1

10、include

头文件,包括各种CPU的寄存器定义,文件系统、网络等等configs子目录下的文件是与目标板相关的配置头文件

 
 
  • 1

11、lib_xxx

lib\_arm、lib\_avr32、lib\_blackfin、lib\_generic、lib\_i386、lib\_m68k、lib\_microblaze、lib\_mips、lib\_nios、lib\_nios2、lib\_ppc、lib\_sh、lib\_sparc

 
 
  • 1

每一个文件夹代表一种CPU体系架构。与S5PV210相关的文件夹有lib_arm、lib_generic,lib_generic目录存放的是各CPU体系架构通用的加密算法、压缩算法、字符处理相关代码。在每一种CPU体系架构文件夹内都存在board.c,是uboot启动第二阶段代码入口函数和相关初始化函数存放的地方。

12、libfdt

本目录下存放的是设备数相关的代码。

 
 
  • 1

13、tools

编译S-Record或uboot映像等相关工具,如制作bootm引导的内核映像文件工具mkimage源码。

 
 
  • 1

14、post

上电自检相关代码

 
 
  • 1

15、nand_spl、onenand_bl1、onenand_ipl

Nand、onenand启动相关的代码。

 
 
  • 1

16、sd_fusing

本目录下存放的是烧录相关的工具代码

17、工程编译配置文件

      Makefile、MAKEALL、config.mk、rules.mk、mkconfig

控制工程编译过程的主Makefile文件和规则文件

config.mk文件内的TEXT\_BASE指定了代码在内存中的地址。

 
 
  • 1
  • 2
  • 3
  • 4
  • 5

18、版本、版权说明文件

    CHANGELOG、CHANGELOG-before-U-Boot-1.1.5、COPYING、CREDITS、MAINTAINERS、README、Changelog\_Samsung。

 
 
  • 1

三.SourceInsight的基本使用

1.建立工程及添加文件

(1)首先要创建一个工程。菜单栏:Project->new project。

(2)工程项目文件和工程中管理的源代码文件目录可以不同,但是我一般习惯放在一起。放在:E:\Linux\2.Uboot_DEMO\uboot\uboot_jiuding\SI_Proj

点确定,进入new project setting,直接点ok进入下一步。

(3)到了向项目中添加文件的步骤。

在左侧选择uboot-jiuding这个目录,然后点右侧边栏的add tree即可添加。

(4)本来应该已经结束了,但是有遗留问题。因为SI软件有个特点,它只能发现自己识别了的文件类型,对于它未识别的文件类型它就看不到。譬如start.S文件就未包含在内,因为SI默认不认识.S后缀的文件。

解决方案:第一种是自己配置;
这里写图片描述
(5)解决了4中的问题然后再次添加文件。菜单栏 Project->Add and Remove Project Files 再次浏览到uboot-jiuding目录下,再次add tree,发现添加了额外的19个文件。

2.解析工程文件

我们使用SI查阅源码前应该预先进行源码解析,为了让SI查找速度变得快

在菜单栏Project->Syneronize Files,选中上面2个,然后确定。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值