【uboot移植】基于samsung移植过的uboot(一)

编程入门 行业动态 更新时间:2024-10-20 07:49:23

【<a href=https://www.elefans.com/category/jswz/34/1759272.html style=uboot移植】基于samsung移植过的uboot(一)"/>

【uboot移植】基于samsung移植过的uboot(一)

准备工作

我这边获取到了三星关于其开发板smdkv210移植过的uboot源代码,当然这个代码也是三星基于uboot官方的某一版本开发的。三星出的开发板会卖给一些大代理商,因此源代码也会随之流出。

分头在windows的共享文件夹、ubuntu中各解压,便于看代码和编译,以及修改文件之后方便拷贝。

对于我们看代码来说,为了避免在SourceInsight中看到太多的重名文件,我们最好对其目录下的cpu、board文件夹下的文件进行删减。cpu下仅留下s5pc11x,board下仅留下samsung。

尝试运行

一般来说,我们使用的开发板是基于三星出的开发板的硬件基础上进行了一定的修改或裁剪。因此,我们开发板使用的uboot与Samsung使用的开发板uboot,其实很大程度上存在相似。由此,我们可以尝试直接将Samsung的uboot在我们的开发板上跑一下。

一、那既然要跑一下的话,我们先看Makefile中的交叉编译工具链(CROSS_COMPILE) 是否配置正确。ubuntu对应的目录也安装了该工具链。
二、交叉编译工具链检查好之后,我们可以尝试编译了,uboot在编译前需要先配置,make xxx_config。但是这个uboot中并没有我们开发板相关的配置项以及配置头文件。我们开发板x210是基于三星开发板smdkv210开发的,因此找到smdkv210的配置项。有5个开发板,我们就随便选一个吧,第一个mdkv210single_config(理论上如果知道哪个与我们开发板更类似就选取哪个),mdkv210single_config对应include/configs/smdkv210single.h头文件。

make smdkv210single_config之后make。然后通过烧录脚本进行烧录,这里的烧录脚本中执行的两个文件sd_fdisk、mkbl1(分别是sd_fdisk.c、C110-EVT1-mkbl1.c编译而来的)是x86-64架构的,三星上传到时候没有将其clean。我们重新将这两个文件make一下,得到 Intel 80386版本的。

然后运行,运行结果是:
第一,串口无输出;
第二,开发板供电锁存成功。
那么可以得出结论:错误在开发板供电锁存代码和串口初始化打印"O"代码之间死掉了。

顺藤摸瓜找错误点

找到中间段的一些代码,通过led去找到卡死的函数为PMIC_InitIp(PMIC是电源管理芯片),因为我们开发板没有PMIC,因此这个函数内部向PMIC发送I2C接口的命令时会死循环,所以屏蔽这里之后问题解决。

找的问题所在点之后,把led的代码去掉,重新启动。

那后uboot卡在了打印“NAND:”之后,我们搜索之后锁定到了lib_arm/board.c中。结合分析调用顺序以及加打印确认(串口已经初始化了),锁定到了start_armboot函数中Board Specific这一系列的defined(CONFIG_SMDKC110)中的nand_init这个函数。

但是定位到这个函数之后,继续加打印定位。最后其调用关系如下:
drivers/mtd/nand/nand.c中nand_init( )
nand_init_chip( )
cpu/s5pc11x/nand.c中的board_nand_init( )


最后定位到了这一句,这句代码是在等待引脚的预备状态。按理说这些地方应该是不需要改动的,因此应该是前置步骤的某些配置相关出问题了。

所以分析到这就先不往下分析了,后续从前面的打印内容来查问题。

更多推荐

【uboot移植】基于samsung移植过的uboot(一)

本文发布于:2024-03-23 22:54:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743807.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:uboot   samsung

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!