从零开始之uboot、移植uboot2017.01(一、移植前的准备)
手边的是一个S5PV210的开发板,想尝试移植一个比较新的uboot
下载最新版本uboot2018.
ftp://ftp.denx.de/pub/u-boot/
编译器下载
http://www.veryarm.com/arm-none-linux-gnueabi-gcc
交叉编译工具链的安装
在/usr/local/下面创建一个arm的文件夹,把交叉编译工具解压到下面去。

2.为了方便今后使用,把该路径导入到环境变量中。
把上面路径添加到run的家目录下的.bashrc文件的最后面
vi ~/.bashrcexport PATH=$PATH:/usr/local/arm/gcc-arm-none-eabi-5_4-2016q3/bin
3.尝试编译
3.1.失败,编译器和uboot版本不匹配
本想移植比较新的uboot2018.05,结果编译器不支持,新版本的uboot要gcc6以上才可以,很尴尬。

3.2.退而求其次,移植一个2017年的吧。
下载一个2017年1月版本的uboot
解压好uboot,添加好架构和交叉编译工具链

3.3.出现dtc错误
Your dtc is too old, please upgrade to dtc 1.4 or newer
安装设备树编译链
apt-get install device-tree-compiler
3.4.采用四核,静默编译。一次通过,说明起码编译器没问题,才能考虑接下来的移植。

4.清理一下前面的编译
make distclen
5.因为uboot没有为S5PV210适配相应的单板,所以我们要自己找一个相似的移植。
其中有两块开发板比较相似,smdkc100和goni,因为smdkc100部分寄存器的基地址和s5pv210的不一样,移植更麻烦一下些,所以我们从goni上开始移植。
拷贝
(1)这里拷贝一份s5p_goni_defconfig的配置文件
cp configs/s5p_goni_defconfig configs/smdkv210_defconfig
将CONFIG_TARGET_S5P_GONI=y 修改为 CONFIG_TARGET_SMDKV210这个值会指明编译的是哪个开发板
修改前:
CONFIG_ARM=y
CONFIG_ARCH_S5PC1XX=y
CONFIG_TARGET_S5P_GONI=y
CONFIG_DEFAULT_DEVICE_TREE="s5pc1xx-goni"
CONFIG_SYS_CONSOLE_IS_IN_ENV=y
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="Goni # "
修改后:
CONFIG_ARM=y
CONFIG_ARCH_S5PC1XX=y
CONFIG_TARGET_SMDKV210=y
CONFIG_DEFAULT_DEVICE_TREE="s5pc1xx-goni"
CONFIG_SYS_CONSOLE_IS_IN_ENV=y
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="Goni # "
2.拷贝一份配置头文件
cp include/configs/s5p_goni.h include/configs/smdkv210.h
3.拷贝一份单板相关的备份,将来我们在这里修改
cp board/samsung/goni/ board/samsung/smdkv210 -arf修改smdkv210目录下面的Kconfig文件 if TARGET_SMDKV210
config SYS_BOARD
default "smdkv210"
config SYS_VENDOR
default "samsung"
config SYS_SOC
default "s5pc1xx"
config SYS_CONFIG_NAME
default "smdkv210"
endif SYS_BOARD代表board/目录下的板子类型 (对应第一步)
SYS_VENDOR代表baord/(代表 board/samsung/smdkv210文件夹)
SYS_SOC代表SOC类型(因为这里没有我们的s5pv210,只能维持s5pc1xx)
SYS_CONFIG_NAME代表include/configs/目录下的头文件 (对应第二步) 4. 配置文件添加 因为我们的SOC是固定的s5pc1xx,所以到这个目录向下增加我们的smdkv210单板配置 cd arch/arm/mach-s5pc1xx
vi Kconfig if ARCH_S5PC1XX
choice
prompt "S5PC1XX board select"
optional
config TARGET_S5P_GONI
bool "S5P Goni board"
select OF_CONTROL
config TARGET_SMDKV210
bool "SMDKV210 board"
select OF_CONTROL
config TARGET_SMDKC100
bool "Support smdkc100 board"
select OF_CONTROL
endchoice
config SYS_SOC
default "s5pc1xx"
source "board/samsung/smdkv210/Kconfig"
source "board/samsung/goni/Kconfig"
source "board/samsung/smdkc100/Kconfig"
endif 拷贝一份GONI的config文件,改成我们的TARGET_SMDKV210(注意这里的名字和第一步的要一致) 拷贝一份source,改成我们的smdkv210的目录。 基本配置完毕。 先清理掉之前的配置 make clean
make distclean
make smdkv210_defconfig
make 编译通过,生成了对应的uboot.bin文件说我目前为止我们的修改都ok run@hostname:~/work/u-boot-2017.01$ make clean
run@hostname:~/work/u-boot-2017.01$ make distclean
run@hostname:~/work/u-boot-2017.01$ make smdkv210_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
run@hostname:~/work/u-boot-2017.01$ make -s -j4
arch/arm/dts/s5pc1xx-goni.dtb: Warning (unit_address_vs_reg): Node /memory has a reg or ranges property, but no unit name
arch/arm/dts/s5pc1xx-goni.dtb: Warning (unit_address_vs_reg): Node /pinctrl@e0200000/gph0 has a reg or ranges property, but no unit name
run@hostname:~/work/u-boot-2017.01$ ls
api doc lib smdkv210.h u-boot.cfg.configs
arch drivers Licenses snapshot.commit u-boot.dtb
board dts MAINTAINERS System.map u-boot-dtb.bin
cmd examples Makefile test u-boot.lds
common fs net tools u-boot.map
config.mk include post u-boot u-boot-nodtb.bin
configs Kbuild README u-boot.bin u-boot.srec
disk Kconfig scripts u-boot.cfg u-boot.sym
run@hostname:~/work/u-boot-2017.01$
从零开始之uboot、移植uboot2017.01(一、移植前的准备)的更多相关文章
- 从零开始之uboot、移植uboot2017.01(二、从入口分析流程)
原创: To_run_away 从零开始学linux 本节的开始之前,先看一下uboot的链接脚本. 一.链接脚本 /* * Copyright (c) 2004-2008 Texas Instrum ...
- 移植u-boot.2012.04.01
/*************************************************** *u-boot版本:u-boot2012.04.01 *gcc版本:arm-linux-gcc ...
- 基于335X平台的UBOOT中交换芯片驱动移植
基于335X平台的UBOOT中交换芯片驱动移植 一.软硬件平台资料 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.UBOOT版本:U-Boot-2016.05,采用FDT和DM. 3 ...
- ZYNQ Linux 移植:包含petalinux移植和手动移植debian9
参考: https://electronut.in/workflow-for-using-linux-on-xilinx-zynq/ https://blog.csdn.net/m0_37545528 ...
- uboot在s3c2440上的移植(2)
一.移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-b ...
- uboot在s3c2440上的移植(1)
一.移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-b ...
- u-boot移植(四)---修改前工作:代码流程分析3---代码重定位
一.重定位 1.以前版本的重定位 2.新版本 我们的程序不只涉及一个变量和函数,我们若想访问程序里面的地址,则必须使用SDRAM处的新地址,即我们的程序里面的变量和函数必须修改地址.我们要修改地址,则 ...
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——移植u-boot.bin(打印串口控制台)
在之前我们移植的代码中,都没看到明显的效果,这节我们实现控制台的信息打印. 在上节.我们看到调用 relocate_code 重定位.在 u-boot 的帮助文档 doc/README.arm-rel ...
- u-boot移植(二)---修改前工作:代码流程分析1
一.代码执行总体流程图 1.1 代码路径 U-boot.lds (arch\arm\cpu) vectors.S (arch\arm\lib) start.S (arch\arm\cpu\arm920 ...
随机推荐
- 简单的DOS攻击之死亡之ping详解
DOS攻击之死亡之ping详解,dos攻击,俗称拒绝服务攻击,通过发送大量的无用请求数据包给服务器,耗尽服务器资源,从而无法通过正常的访问服务器资源,导致服务器崩溃. 如果多个ip通过发起对一个服务器 ...
- codeforces_D. Treasure Hunting_[DP+Binary Search]
http://codeforces.com/contest/1201/problem/D 题意:n行m列的矩阵中,有k个targets,从[1, 1]出发,每次只能向上下左右四个方向移动一步,且只有在 ...
- [NOIP2016][luogu]换教室[DP]
[NOIP2016] Day1 T3 换教室 ——!x^n+y^n=z^n 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n 节课程 ...
- [NOIP2014]飞扬的小鸟[DP]
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
- 让VirtualBox虚拟机实现开机自动后台运行
转至:http://www.cnblogs.com/top5/archive/2012/01/19/2326234.html 测试环境:Host OS: Windows 7 x64 Guest OS: ...
- CodeForces - Path Queries (并查集+离线查询)
题目:https://vjudge.net/contest/323699#problem/A 题意:给你一棵树,然后有m个查询,每次查询问一条路径最大边小于给定查询的数量 思路:首先我们看到,我们其实 ...
- Python 测评工具
开源--Python测评工具 Github仓库 本次实验作业的测评工具仅使用Python语言编写. 程序思路是基于文本的快速匹配. 编译test.py运行 1.GUI界面 GUI界面使用了PyQt5完 ...
- day32—CSS多列布局学习
转行学开发,代码100天——2018-04-17 关于多列布局,前期已经梳理过,今天的培训课程学习中再次提及,趁此也做个总结和检验. 多列布局的介绍参考: day08—css布局解决方案之多列布局 ...
- Microsoft Azure_Fabric
目录 目录 前言 Microsoft Azure Microsoft Azure Fabric Controller 前言 WindowsAzure是相对于全球版Microsoft Azure而言的中 ...
- 测开之路七十六:linux变量和环境变量
变量 赋值 variable=0,访问 $var或${var} 参数 $n 用``引住的会先执行(~键) 位置参数 环境变量/etc/profile:全局的环境变量 . bash_profile:用户 ...