最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

u_boot 移植(一)之uboot配置编译

来源:动视网 责编:小OO 时间:2025-10-02 15:44:41
文档

u_boot 移植(一)之uboot配置编译

u_boot移植(一)之uboot配置编译一、开发环境PCOS:Ubuntu14.04SOC:基于ARMCortex-a8核的S5PC100开发板:FSC100u_boot:u-boot-2010.03编译器:arm-cortex_a8-linux-gnueabi-gccversion4.4.6二、目标1.Uboot能从FSC100的NandFlash正常启动2.Uboot支持DM9000网卡3.Uboot支持NandFlash读、写、擦除4.Uboot支持Linux内核引动好了,接下来就进行
推荐度:
导读u_boot移植(一)之uboot配置编译一、开发环境PCOS:Ubuntu14.04SOC:基于ARMCortex-a8核的S5PC100开发板:FSC100u_boot:u-boot-2010.03编译器:arm-cortex_a8-linux-gnueabi-gccversion4.4.6二、目标1.Uboot能从FSC100的NandFlash正常启动2.Uboot支持DM9000网卡3.Uboot支持NandFlash读、写、擦除4.Uboot支持Linux内核引动好了,接下来就进行
u_boot 移植(一)之uboot配置编译

一 、开发环境

PC OS : Ubuntu 14.04

SOC : 基于ARM Cortex-a8 核的S5PC100

开发板 : FSC100

u_boot : u-boot-2010.03

编译器 : arm-cortex_a8-linux-gnueabi-gcc version 4.4.6

二、目标

1.Uboot 能从FSC100的 Nand Flash 正常启动

2.Uboot 支持DM9000 网卡

3.Uboot 支持Nand Flash 读、写、擦除

4.Uboot 支持Linux 内核引动

好了,接下来就进行移植uboot到FSC100开发板吧 。

三、建立自己的平台

1、 下载源码

我们可以在下面这个网站上下载最新的和以前任一版本的 uboot

ftp://ftp.denx.de/pub/u-boot/

2、 解压 uboot 源码并进入目录

tar zxvf u-boot-2010.03.tar.gz

cd u-boot-2010.03

u-boot-2010.3 源码中已经支持了SMDKC100了(SMDKC100是三星公司基于SOC : S5PC100设计的一块开发板)。我们的FSC100使用的SOC也是S5PC100,所以我们只需要稍加修改Uboot支持的SMDC100代码,就可以编译出支持我们的FSC100开发板的uboot了。

1.修改 u-boot 顶层目录下的 Makefile,指定交叉工具链

ifeq ($(HOSTARCH, $(ARCH))

CROSS_COMPILE ?=

endif

下添加:

ifeq (arm, $(ARCH))

CROSS_COMPILE ?= arm-cortex_a8-linux-gnueabi

endif

2.在 u-boot 顶层目录下的 Makefile 中添加 fsc100 配置信息

smdkc100_config: unconfig

@$(MKCONFIG) $(@:_config=) arm arm_cortexa8 smdkc100 samsung s5pc1xx

下添加:

fsc100_config: unconfig

@$(MKCONFIG) $(@:_config=) arm arm_cortexa8 fsc100 samsung s5pc1xx

3. 添加 fsc100 平台信息

(1)进入board/samsung目录

(2)拷贝smdkc100 为 fsc100

(3)进入fsc100目录下修改smdkc100.c 为fsc100.c

修改Makefile中的smkc100.o 为fsc100.o

(4)进入include/configs目录,拷贝smdkc100.h为fsc100.h

include/configs目录下的.h文件为对应开发板的配置文件。smdkc100.h 为SMDKC100开发板的配置文件,所以

我们把smdkc100.h文件拷贝成fsc100.h,作为我们FSC100开发板的配置文件。

四、配置和编译uboot

1.配置我们自己的开发板fsc100

2.编译uboot

编译完成后生成的 u-boot.bin 是二进制的文件。但是该文件只能在 smdkc100 平台上运行,我们需要对 u-boot 源代码进行相应的修改。

五、如何快速的调试uboot我想很多人在移植uboot的时候,都经历过,为了调试uboot,每次修改代码,编译好后,都需要将它烧写到开发板上这个过程。当然,并不是一次修改后,烧写到开发板上就一定可以成功启动。大多数情况都是启动开发板后,没有任何反应的结果。需要多次调试。

究其原因,无非以下几种情况。

(1)内存初始化代码有问题

(2)从Nand Flash启动的时候,读Nand Flash 的代码有问题

(3)SOC的时钟初始化有问题,导致串口输出乱码

每次调试,将uboot烧写到Nand Flash是一个很耗时、很繁琐的操作。其实,很多时候我们拿到一块开发板的时候,这块开发板中已经有一个uboot 了,我们可以利用这个uboot来进行调试。

FSC100开发板,从Nand Flash启动后,已经有一个uboot了。这个uboot支持网络、NAND Flash操作等功能。我们可以利用uboot的TFTP 服务将我们的调试的uboot下载到内存中去,然后利用uboot中的go 命令运行我们调试的uboot 。

好了,接下来我们就按照这个思路来进行吧!

哦!还不能立即进行,我们还需要修改一下uboot代码。通过前面对uboot 的分析,大家应该知道uboot启动的时候,会初始化系统时钟和内存。要知道,我们开发板自带的uboot在启动的时候,已经初始化好了系统时钟和内存。如果再次初始化系统时钟或内存,我们的内存就不能正常工作了。

嗯,我们修改以下几个地方。

(1)修改cpu/arm_cortexa8/start.S , 去掉内存初始化和系统时钟初始化

(2)修改board/samsung/fsc100目录下的config.mk文件。

config.mk文件中,存放的是代码段运行的起始地址。它的内容如下:

S5PC100 的内存映射图如下:

从上图可以知道,TEXT_BASE的默认值,不符合当前情况。

FSC100上接了256M内存,所以能使用的地址范围为 : 0x20000000 ~

0x2fffffff。在这里我们将TEXT_BASE的值修改为 0x20f00000。

是不是一定是这个值?不是,其他值也可以。当然不是这个范围的任意一个值都可以,要想知道原因,你就必须知道uboot内存的分配情况了。这里就不说了,前面已经说过了。

嗯,修改完成后,编译uboot。编译完成后,将uboot拷贝到tftp的工作目录下。

启动开发板,通过tftp 下载uboot到0x20f00000

用go命令运行uboot,效果如下:

文档

u_boot 移植(一)之uboot配置编译

u_boot移植(一)之uboot配置编译一、开发环境PCOS:Ubuntu14.04SOC:基于ARMCortex-a8核的S5PC100开发板:FSC100u_boot:u-boot-2010.03编译器:arm-cortex_a8-linux-gnueabi-gccversion4.4.6二、目标1.Uboot能从FSC100的NandFlash正常启动2.Uboot支持DM9000网卡3.Uboot支持NandFlash读、写、擦除4.Uboot支持Linux内核引动好了,接下来就进行
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top