uboot 移植流程

9人阅读 评论(0) 收藏 举报
分类:

开发环境:
处理器:s3c2440(arm920t)
uboot版本:u-boot-2012.04.01

下载、编译、烧写

tar xjf u-boot-2012.04.01.tar.bz2 //解压
make smdk2410_config  //配置,smdk2410_config 的解释见顶层Makefile
make//编译

效果:无输出

分析u-boot:

通过链接命令分析组成文件、阅读代码分析启动过程,可知需要留意的文件如下:
参考: u-boot Makefile分析
u-boot 第一段程序start.S 分析

移植uboot:

新建一个单板 smdk2440

cd board/samsung/    //进入相关单板目录
cp smdk2410 smdk2440 -rf//复制一份单板文件
cd ../../include/configs/     //进入单板配置文件目录
cp smdk2410.h smdk2440.h    //复制相关的配置文件

此时,进行 配置
make smdk2440_config

提示:no rule to make target 'smdk2440_config' 

可知:还缺上相关规则,来生成配置
源码内搜索关键字:smdk_2410

grep "smdk_2410" *nR //搜索关键字,以递归+显示行信息 的方式

可知需修改boards.cfg,增加相关的单板信息。
修改boards.cfg:
仿照
smdk2410 arm arm920t - samsung s3c24x0
添加:
smdk2440 arm arm920t - samsung s3c24x0

调试

无输出:

留意uboot的第一阶段启动代码,以及第二阶段的串口初始化相关代码
查看start.s文件,仔细阅读;参考[u-boot 第一段程序start.S 分析],(https://blog.csdn.net/guozhongwei1/article/details/79629290)
调试工具配合使用(单步+断点);

串口乱码:

第二阶段代码,串口初始化部分,

查看串口波特率的设置,发现在get_HCLK里没有定义CONFIG_S3C2440
处理措施:
include/configs/smdk2440.h: 增加 #define CONFIG_S3C2440 宏定义
编译不通过,需要去掉 //#define CONFIG_CMD_NAND

UBOOT 编译出的可执行文件巨大

原来的代码在链接时加了”-pie”选项, 使得u-boot.bin里多了”(.rel)”, “*(.dynsym)”,使得程序非常大,不利于从NAND启动(重定位之前的启动代码应该少于4K)。
处理方法:
去掉 “-pie”选项,

arch/arm/config.mk:75:LDFLAGS_u-boot += -pie 去掉这行

重新调整uboot的第一阶段start.S代码,拒绝使用位置无关代码的套路。

修改UBOOT支持NAND FLASH

修改:include/configs/smdk2440.h: #define CONFIG_CMD_NAND
把drivers\mtd\nand\s3c2410_nand.c复制为s3c2440_nand.c

修改UBOOT支持DM9000网卡

eth_initialize
        board_eth_init
            cs8900_initialize //修改宏,进行DM9000网卡的初始化

以上,仅供个人参考,学习使用。

查看评论

U-boot1.3.4移植流程

标签: ARM Linux Uboot 移植 DM9000 YAFFS 抵岸科技U-boot简介一般来说,引导加载程序是系统加电后运行的第一段代码(at91sam芯片除外,其加电第一段程序是BOOTR...
  • dian_technology
  • dian_technology
  • 2010年09月13日 20:45
  • 1615

A20网络机顶盒移植4.5内核+U-Boot+rootfs

A20网络机顶盒移植4.5内核+U-Boot+rootfs
  • leesion_v
  • leesion_v
  • 2016年02月01日 00:32
  • 1659

uboot学习笔记之uboot1.3.4一移植

自己学习嵌入式学习已经有一段时间了,感觉不懂的太多,在这里想把每一步学习的只是一步一步记录下来,以供自己以后查看使用,也希望看到这篇文章的朋友多给点意见。这篇主要是记录一下,uboot1.3.4部分,...
  • dghfjj
  • dghfjj
  • 2016年06月05日 00:50
  • 583

uboot移植之网络驱动移植--移植操作--7.29

1、网卡驱动文件介绍 uboot/drivers/net/dm9000x.c和dm9000x.h。 这个驱动来自于linux kernel源代码。所以我们uboot中是移植而不是编写。 2、网卡移植...
  • qq_26602023
  • qq_26602023
  • 2016年07月29日 23:04
  • 618

u-boot的移植步骤

u-boot移植是系统移植的第一步也是为内核移植做准备工作,板子上电后,芯片内部irom里面的固化代码会判断开发板的启动方式(通过拨码开关可选择是EMMC启动还是SD卡启动),然后将U-BBOOT的第...
  • Mario_z
  • Mario_z
  • 2016年11月17日 14:44
  • 1745

最新uboot的Kbuild系统 1

linux kernel和最新的uboot都采用了kbuild来实现构建。所以有必要了解一下KBuild基础知识。 KBuild是基于gnu make 实现的一个内核构建系统,也就是对于gnu m...
  • groundhappy
  • groundhappy
  • 2016年10月09日 14:10
  • 848

U-boot在S3C2440上的移植详解(六)

一、移植环境 主  机:VMWare--Fedora 9开发板:Mini2440--64MB Nand,Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2.tgzu-b...
  • special00
  • special00
  • 2016年04月08日 12:36
  • 907

uboot移植-从uboot官方源码开始移植过程总结

1 选取源码 下载源码 解压源码 自行登录uboot官网,下载uboot源码,我选取的是2013.10的,因为之后的源码采用类似新的配置模式(能用即可)。 我的源码是uboot-2013.10,解压缩...
  • KayChanGEEK
  • KayChanGEEK
  • 2016年01月16日 16:08
  • 5529

uboot在2440上移植(一) - xgc94418297的日志 - 网易博客

     以前一直在用vivi,很精简很方便,源码很好懂,想改什么就改什么,但是功能差了点,所以移植个uboot来跑跑,uboot很好很强大,但是想搞清它的机制有点困难,先移植个最简单的试试,还没有增...
  • johnmcu
  • johnmcu
  • 2011年06月22日 15:51
  • 11585
    个人资料
    持之以恒
    等级:
    访问量: 14万+
    积分: 2123
    排名: 2万+
    最新评论