u-boot移植(一)---准备工作
一、工具链的制作
1.1 工具
软件工具:crosstool-ng
下载地址:git clone https://github.com/crosstool-ng/crosstool-ng
crosstool-ng的环境需要libncurse5-dev
sudo apt-get install libncurse5-dev
安装autoconf: sudo apt-get install autoconf
进入crosstool-ng目录,执行./bootstrap,生成 configure 执行文件
检查安装环境,报什么错,就安装什么软件:./configure --prefix=`pwd`/crosstool
需要的软件有:
sudo apt-get install gperf bison flex texinfo help2man gawk
执行命令 make执行命令:
make install
export PATH="${PATH}:`pwd`/crosstool/bin"
1.2 开始制作
1.2.1 建立目标文件夹
根目录下建立三个文件夹:
mkdir src x-tools crosstool

1.2.2 环境
进入crosstool目录:cd ~/.crosstool
执行:ct-ng list-samples

选择arm-unknown-linux-gnueabi 作为交差编译工具链的模版
执行命令:ct-ng show-arm-unknown-linux-gnueabi,查看编译交差编译工具链所需要的配置

下载gcc 6.3.0:wget http://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.gz

执行命令:ct-ng arm-unknown-linux-gnueabi

执行命令:ct-ng menuconfig


选择 Target options
*** Target optimisations ***
(armv4t) Architecture level :指令集架构,exynos4412为armv7-a架构,-march=name
(arm920t) Emit assembly for CPU :CPU核心类型, -mcpu=name
() Tune for CPU:对CPU的优化,具体可以查看芯片手册,-mtune=name

最新版本的crosstool-ng只需要选择第一二项目就好了。
选择 toolchain options:

u-boot 2016.01 不支持GCC6,因此 要把 GCC的版本改成GCC5.0版本--GCC6.0版本之间。
保存退出。
1.2.3 编译
执行命令:ct-ng build

编译成功:

建立环境变量:
vim .bashrc,加入下面一行
PATH=~/x-tools/arm-s3c2440a-linux-gnueabihf/bin:$PATH/
执行 source .bashrc
执行 arm-s3c2440a-linux-gnueabi-gcc -v

u-boot 2016.01 不支持GCC6,因此 要把 GCC的版本改成GCC5.0版本--GCC6.0版本之间。
二、u-boot 工作目录建立
下载u-boot_2016.01版本,解压u-boot。

2.1 board目录修改
2.1.1 创建jz2440板
查看 ../board/samsung/ 目录下的文件:

此版本中,2440已经被遗弃。所以选定smdk2410为模版创建2440的u-boot。

2.1.2 jz2440文件名修改
修改文件名:

2.1.3 Kconfig修改
修改Kconfig和Makefile文件,将里面的smdk2410修改为jz2440,如下:
Kconfig文件:

2.1.4 Makefile修改

2.2 修改头文件

头文件中增加内容:

添加对S3C2440的支持
找到包含smdk2410.h这个头文件的文件:

没有需要修改的地方
2.3 修改配置文件
当前新版的u-boot与linux源码一样,都执行make menuconfig 进行配置,所以在configs目录下要有jz2440的配置。
config目录下配置:


2.5 修改arch/arm下的配置文件
arch/arm/Kconfig,里面添加对jz2440的支持


2.6 修改rch/arm/include/asm/mach-types.h


三、配置.config及编译u-boot
3.1 配置.config
执行命令:make jz2440_defconfig

执行命令:make menuconfig

在ARM architecture中选择target_select项,然手选择jz2440:

配置 u-boot的命令行提示符:


保存退出配置。
3.2 编译

编译成功:

四、编译错误
4.1 Not enough room for program headers
arm-2440-linux-gnueabi-ld.bfd: u-boot: Not enough room for program headers, try linking with -N
arm-2440-linux-gnueabi-ld.bfd: final link failed: Bad value
make: *** [Makefile:1193: u-boot] Error 1
解决方法:https://www.mail-archive.com/u-boot@lists.denx.de/msg235861.html
在根目录的Makefile中加上如下几行:

u-boot移植(一)---准备工作的更多相关文章
- 标题:u-boot 移植步骤详解
1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目.从FADSROM.8xxROM.PPCBOOT逐步发展演化而来.其源码目录.编译形式与 ...
- -boot移植(十一)---代码修改---支持nandflash
一.移植前的修改 1.1 include/configs/jz2440修改 原来的定义: 可以看出,要先定义CONFIG_CMD_NAND才能使能NANDFlash. 这个在我们文件中的82行有定义, ...
- Android shell 下 busybox,clear,tcpdump、、众多命令的移植
http://my.oschina.net/mopidick/blog/167372 作为一名Android开发者,经常需要进入Android 的shell终端运行一些命令.但是我们发现Android ...
- 【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)
第10章 RL-TCPnet网络协议栈移植(FreeRTOS) 本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就 ...
- 【RL-TCPnet网络教程】第9章 RL-TCPnet网络协议栈移植(uCOS-III)
第9章 RL-TCPnet网络协议栈移植(uCOS-III) 本章教程为大家讲解RL-TCPnet网络协议栈的uCOS-III操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移 ...
- 【安富莱】【RL-TCPnet网络教程】第8章 RL-TCPnet网络协议栈移植(RTX)
第8章 RL-TCPnet网络协议栈移植(RTX) 本章教程为大家讲解RL-TCPnet网络协议栈的RTX操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就比较容易了,主要 ...
- 【安富莱】【RL-TCPnet网络教程】第7章 RL-TCPnet网络协议栈移植(裸机)
第7章 RL-TCPnet网络协议栈移植(裸机) 本章教程为大家讲解RL-TCPnet网络协议栈的裸机移植方式,学习了上个章节讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文 ...
- Spring Boot(1)——开发你的第一款Spring Boot应用(Edition1)
Spring Boot(1)——开发你的第一款Spring Boot应用(Edition1) 准备工作: java:java 8 或者 java 9: Spring框架:5.0.8.RELEASE或以 ...
- FreeRTOS——1
以下转载自安富莱电子: http://forum.armfly.com/forum.php FreeRTOS 的特点 FreeRTOS 的主要特点如下:1. 支持抢占式调度,合作式调度和时间片调度.2 ...
- Jlink下载u-boot
由于各种原因我的fl2440无启动代码,无任何程序,这时要通过jlink来烧录相关boot程序. 准备工作: 1.Jlink使用jlink commander工具 2.初始化sdram的程序boot. ...
随机推荐
- 无法获得锁 /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock
- shell of leetcode
1.Tenth Line How would you print just the 10th line of a file? For example, assume that file.txt has ...
- 线性代数的本质与几何意义 03. 矩阵与线性变换 (3blue1brown 咪博士 图文注解版)
首先,恭喜你读到了咪博士的这篇文章.本文可以说是该系列最重要.最核心的文章.你对线性代数的一切困惑,根源就在于没有真正理解矩阵到底是什么.读完咪博士的这篇文章,你一定会有一种醍醐灌顶.豁然开朗的感觉! ...
- BZOJ2144跳跳棋——LCA+二分
题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子.我们用跳跳棋来做一个简单的 游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他们的位置移动 ...
- BZOJ1834[ZJOI2010]网络扩容——最小费用最大流+最大流
题目描述 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1.在不扩容的情况下,1到N的最大流: 2.将1到N的最大流增加K所需的最小扩容费用 ...
- ASP.NET MVC5使用Area区域
转载:http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它 ...
- Goldbach`s Conjecture LightOJ - 1259 (素数打表 哥德巴赫猜想)
题意: 就是哥德巴赫猜想...任意一个偶数 都可以分解成两个(就是一对啦)质数的加和 输入一个偶数求有几对.. 解析: 首先! 素数打表..因为 质数 + 质数 = 偶数 所以 偶数 - 质数 = 质 ...
- Java8的flatMap如何处理有异常的函数
Java8的flatMap函数,作用是:如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional. 见到的映射函数往往都只有一句话,连大括号都不需要加的,如下: ...
- docker安装Zabbix
1. 先安装数据库mysqldocker run --name zabbix-mysql-server --hostname zabbix-mysql-server \-e MYSQL_ROOT_PA ...
- 【转】Context Switches上下文切换性能详解
http://blog.csdn.net/aiai5251/article/details/50015745 Context Switches 上下文切换,有时也被称为进程切换(process swi ...