重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5330|回复: 3
打印 上一主题 下一主题

uboot移植

[复制链接]

20

主题

74

帖子

382

积分

学生管理组

Rank: 8Rank: 8

积分
382
跳转到指定楼层
楼主
发表于 2017-8-5 23:17:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
        最近这两周的空余时间一直在研究uboot,移植过程中也遇到了很多问题,开贴说一下自己的理解。
        uboot代码我是下载的206年7月分的版本(u-boot-2016.07.tar.bz2),下载地址:ftp://ftp.denx.de/pub/u-boot/
        目标开发板:AQ2440,CPU为三星s3c2440。

第一步:在uboot代码中添加对开发板的支持
        uboot虽然已经支持了很多处理器平台,但是也没有做到将市面上的所有CPU都进行适配。所以我们在移植时可以选择一个已经适配了的CPU型号进行移植。uboot已经对s3c2410这一款CPU进行了适配,而s3c2440与s3c2410相近,所以我选择了在s3c2410的代码上进行修改,所以我直接将S3C2410的单板相关文件都复制为S3C2440的。
        假设我们已经到了源码的根目录,执行以下操作:
a.在board中创建单板目录
       
[Bash shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
cd board/samsung/
cp smdk2410 -r smdk2440

        然后修改Kconfig文件内容,将所有的”2410“替换为”2440“,替换后文件如下:
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
if TARGET_SMDK2440
	

修改MAINTAINERS文件,修改后如下
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
SMDK2440 BOARD
	M:	David Müller <[email]d.mueller@elsoft.ch[/email]>
	S:	Maintained
	F:	board/samsung/smdk2440/
	F:	include/configs/smdk2440.h
	F:	configs/smdk2440_defconfig

修改Makefile,
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
obj-y   := smdk2440.o
	obj-y   += lowlevel_init.o

最后将smdk2410.c改名为smdk2440.c
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
mv smdk2410.c smdk2440.c


创建单板相关头文件
        同样,我们将include/configs/目录下的smdk2410.h文件复制为smdk2440.h
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
cd include/config
cp smdk2410.h smdk2440.h

        然后修改两个宏定义,
        修改前:#define CONFIG_S3C2410 /* specifically a SAMSUNG S3C2410 SoC */
                    #define CONFIG_SMDK2410 /* on a SAMSUNG SMDK2410 Board */
        修改后:
                  #define CONFIG_S3C2440 /* specifically a SAMSUNG S3C2440 SoC */
                  #define CONFIG_SMDK2440 /* on a SAMSUNG SMDK2440 Board */
c.创建defconfig文件
        同样直接拷贝:
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
cd configs/
cp smdk2410_defconfig smdk2440_defconfig

        拷贝过来以后,修改smdk2440_defconfig文件:
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
CONFIG_ARM=y
	CONFIG_TARGET_SMDK2440=y
	CONFIG_BOOTDELAY=5
	CONFIG_HUSH_PARSER=y
	CONFIG_SYS_PROMPT="SMDK2440 # "
	CONFIG_CMD_USB=y
	# CONFIG_CMD_SETEXPR is not set
	CONFIG_CMD_DHCP=y
	CONFIG_CMD_PING=y
	CONFIG_CMD_CACHE=y
	CONFIG_CMD_EXT2=y
	CONFIG_CMD_FAT=y

d.修改arch/arm/Kconfig文件
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
vi arch/arm/Kconfig

        添加如下内容:
       
[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode
config TARGET_SMDK2440
    bool "Support smdk2440"
    select CPU_ARM920T

source "board/samsung/smdk2440/Kconfig"


        在上述操作完成后,尝试编译:
       
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode
make smdk2440_config

make
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

20

主题

74

帖子

382

积分

学生管理组

Rank: 8Rank: 8

积分
382
沙发
 楼主| 发表于 2017-8-5 23:29:39 | 只看该作者
单板添加完成后就是代码的修修改改了,先放两张图,如何让uboot顺利的跑起来,理解这两张图是关键

20160909010209706.jpg (37.53 KB, 下载次数: 949)

20160909010209706.jpg
回复 支持 反对

使用道具 举报

20

主题

74

帖子

382

积分

学生管理组

Rank: 8Rank: 8

积分
382
板凳
 楼主| 发表于 2017-8-5 23:33:55 | 只看该作者
关于uboot的启动过程可以先参考这篇博客http://blog.csdn.net/hare_lee/article/details/6916325
回复 支持 反对

使用道具 举报

20

主题

74

帖子

382

积分

学生管理组

Rank: 8Rank: 8

积分
382
地板
 楼主| 发表于 2017-8-5 23:36:42 | 只看该作者
概括来说uboot的启动分为两个阶段,
(1)第一阶段的功能

a.硬件设备初始化
b.加载U-Boot第二阶段代码到RAM空间
c.设置好栈
d.跳转到第二阶段代码入口

       (2)第二阶段的功能
a. 初始化本阶段使用的硬件设备
b.检测系统内存映射
c.将内核从Flash读取到RAM中
d.为内核设置启动参数
e.调用内核
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-4-20 12:53 , Processed in 0.181611 second(s), 32 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表