在这里移植的uboot源码是三星官方提供的
1:移植前准备:
下载并解压uboot源代码,并创建Source Insight工程,注意linux源代码不能在
共享文件中直接解压,原因是linux中采用了很多链接功能,而这个功能在windows
里面是没有的,所以在共享文件夹中编译会出错,解压代码
1
|
<span style=
"font-size:24px;"
>tar -jxvf name<br data-filtered=
"filtered"
></span>
|
2:查看Makefile
在编译之前要看Makefile中的交叉编译工具链的设置是否和我们虚拟机中交叉编译工具链的配置相同(主要是安装路径和版本)
1
2
3
4
5
6
|
ifeq ($(ARCH),arm)
#CROSS_COMPILE = arm-linux-
#CROSS_COMPILE = /usr/local/arm/4.4.1-eabi-cortex-a8/usr/bin/arm-linux-
#CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
endif
|
3:编译、烧录
使用make smdkv210single_config,对应include/configs/smdkv210single.h头文件
运行的现象为:SD checksun Error,开发板供电锁存开启
分析:
(1)打印的第一个SD CHECKSUM ERROR可以理解,因为那是SD0通道的iNand校验失败,
(2)开发板供电锁存是在uboot启动的第一阶段的lowlevel_init.S中完成的,开发板供电锁存但没有打印OK说明错误发生在开发板供电锁存与DDR初始化之间,分析可知开发板是没有PMIC(电源管理模块)的,所以当uboot跳转到PMIC_InitIp这个函数时就会发生死循环,所以这行代码应该屏蔽掉
1
|
//bl PMIC_InitIp
|
4: uboot成功启动,并打印出如下信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
SD checksum Error
OK
U-Boot 1.3.4 (Aug 5 2016 - 15:08:57)
for
SMDKV210
CPU: S5PV210@1000MHz(OK)
APLL = 1000MHz, HclkMsys = 200MHz, PclkMsys = 100MHz
MPLL = 667MHz, EPLL = 80MHz
HclkDsys = 166MHz, PclkDsys = 83MHz
HclkPsys = 133MHz, PclkPsys = 66MHz
SCLKA2M = 200MHz
Serial = CLKUART
Board: SMDKV210
DRAM: 1 GB
Flash: 8 MB
SD/MMC: unrecognised EXT_CSD structure version 6
unrecognised EXT_CSD structure version 6
Card init fail!
0 MB
NAND: 0 MB
The input address don't need a
virtual
-to-physical translation : 23e9c008
*** Warning -
using
default
environment
In: serial
Out: serial
Err: serial
checking mode
for
fastboot ...
Hit any key to stop autoboot: 0
no devices available
no devices available
get_format
-------- 0 --------
Wrong Image Format
for
bootm command
ERROR: can't get kernel image!
SMDKV210 #
|
至此说明uboot已经成功启动,只是uboot启动第二阶段的配置有不正确,需要进一步修改
本文转自 菜鸟养成记 51CTO博客,原文链接:http://blog.51cto.com/11674570/1835704