打补丁式的移植U-Boot

来源:互联网 发布:javascript小游戏源码 编辑:程序博客网 时间:2024/06/08 06:17

通过打补丁移植 U-Boot


通过打补丁来移植U-Boot是非常简单的,仅仅几步就可以,当然中间遇到了几个有价值的障碍。


步骤如下:

一: 下载U-Boot源码(u-boot-1.1.6.tar.bz2 )

二: 根据官网提供的 关于JZ2440开发板的补丁文件(u-boot-1.1.6_jz2440.patch )对u-boot-1.1.6源码打补丁

三:安装交叉编译工具链

四:配置,编译

五: 利用 tftp 下载 & 测试运行 (开发板里已经有一个移植好的uboot,利用uboot的功能方便下载程序到内存中运行)


接下来我就把详细的步骤列出来,以备以后查阅(基于S3C2440 SOC 的 JZ2440开发板 )


一: 下载U-Boot源码(u-boot-1.1.6.tar.bz2 )

1. 访问 U-Boot官方网站,u-boot-1.1.6.tar.bz2 下载

2. 解压 tar jxf u-boot-1.1.6.tar.bz2


二: 根据官网提供的 关于JZ2440开发板的补丁文件(u-boot-1.1.6_jz2440.patch )对u-boot-1.1.6源码打补丁

1 . 切换到u-boot-1.1.6目录 : cd u-boot-1.1.6

2 . 把补丁文件拷贝到 u-boot-1.1.6目录下,利用patch命令打补丁: patch -p1 < ./u-boot-1.1.6_jz2440.patch

3 . 要是打错了补丁,可以使用 patch -R -p1 < ./u-boot-1.1.6_jz2440.patch 来删除补丁文件 。


三:安装交叉编译工具链

因为我准备了两个版本的工具链,安装过程一样。

1. arm-linux-gcc-3.4.5

如果不想自己编译工具链的话,可以从官方网站下载制作好的。我就这这么做的,下载:arm-linux-gcc-3.4.5-glibc-2.3.6.tar

1) . 解压 tar xjvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar ,得到 gcc-3.4.5-glibc-2.3.6 ,进入 gcc-3.4.5-glibc-2.3.6目录。

gcc-3.4.5-glibc-2.3.6 目录下的 bin 就包含了编译uboot和内核使用的工具链如图:
这里写图片描述

2) . 编辑 /etc/environment 文件 添加 bin 目录的路径加入环境变量 PATH中 。

这里写图片描述

3) . PATH路径全局化: source /etc/environment

到此,交叉编译工具链算是安装完成了。

2. arm-linux-gcc-4.2.2

安装过程和 arm-linux-gcc-3.4.5 一样。

利用脚本的方式 切换使用arm-linux-gcc-3.4.5 和 arm-linux-gcc-4.2.2
如图:

脚本 use_arm-linux-gcc-3.4.5内容为:

这里写图片描述

使用 : . /etc/use_arm-linux-gcc-3.4.5 切换到 arm-linux-gcc-3.4.5

同理 : . /etc/use_arm-linux-gcc-4.2.2 切换到 arm-linux-gcc-4.2.2

这样挺方便的。


四:配置,编译

1 . 配置 make 100ask24x0_config

目的是创建一些头文件和配置文件,其实里面都是一些宏定义开关

如图: make smdk2400_config
这里写图片描述

2 . 编译 make

结果如图: 执行 make

这里写图片描述

u-boot 是ELF格式的文件,由操作系统加载执行。
这里写图片描述

u-boot.bin 是二进制格式的文件,加载执行不需要操作系统,在没有操作系统的情况下,把二进制格式文件烧入Nand Flash 中执行。

第一次尝试遇到一个问题: 编译失败 。

原因是: 交叉编译工具链的版本太高了。用了 arm-linux-gcc-4.2.2

于是: 执行 . /etc/use_arm-linux-gcc-3.4.5 解决了问题。


五: 利用 tftp 下载 & 测试运行 (开发板里已经有一个移植好的uboot,利用uboot的功能方便下载程序到内存中运行)

tftp方式下载 (工具:tftpd32 ,SecureCRT)

打印 uboot 环境变量表:如图

这里写图片描述


1 . 为uboot设置 服务器端(PC)的地址(192.168.1.111)

setenv serverip 192.168.1.111
保存 saveenv

这里写图片描述

ping 主机 : ping 192.168.1.111

这里写图片描述


2 . tftp下载 uboot.bin 到DRAM中运行

设置 tftpd32 当前目录 ( 包含 uboot.bin ) 如图:

这里写图片描述

uboottftp 命令下载 : tftp 0x30000000 u-boot.bin ( 把 u-boot.bin 下载到DRAM 0x30000000 位置处 ) 如图:

这里写图片描述

DRAM执行go 0x30000000 如图 :

这里写图片描述


0 0
原创粉丝点击