u-boot制作编译过程ok

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.1.5 UBOOT的制作过程

1.第一步:修改makefile,目的告诉makefile导入的工程名是什么。

1)在/1niuedu/u-boot-1.3.4的Makefile的2494行进行COPY后进行修改,

范例如下:

smdk2410_config : unconfig

@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 复制并修改为:

edu2440_config: unconfig

@$(MKCONFIG) $(@:_config=) arm arm920t edu2440 NULL s3c24x0

2)交叉编译143 144修改为(很多u-boot为默认,一般不修改,如不同需要修改)

ifeq ($(ARCH),arm)

CROSS_COMPILE = arm-linux-

说明:

在顶层Makefile(u-boot文件中)中为开发板添加新的配置选项,使用已有的配置项目为例复制修改如下代码:

Smdk2410_config:unconfig(2497行)(告诉makefile导入的工程名是怎么设置的) @./mkconfig$(@:_config=)arm arm 920t smdk2410 NULL s3c24x0 Arm:CPU架构

Arm920t:CPU类型,对应cpu/arm920t目录

xyd2440:开发板型号,对应board/xyd2440

NULL:开发者

s3c2440:片上系统(SOC)

2.第二步:配置开发板选项,修改board中相应开发板选项

1)在board目录中将smdk2410复制,然后修改名字为edu2440。

2)在board/edu2440目录下将smdk2410.c修改为edu2440.c(可能运行不了,那么再做如下修改)将

E:\信盈达常用资料库\嵌入式配套资料\mini2440-20100717光盘资料\linux\bootloader\u-boot-1.1.6\board\open24x0里面的:boot_init.c,open24x0.c两个文件copy到board-edu2440文件下面。并将open24x0.c文件修改为edu2440.c 说明:start.s需要调用这两个文件中的函数。

3)将board/edu2440目录下makefile文件里面(28行)COBJS:=smdk2410.o flash.o 修改为COBJS := edu2440.o flash.o boot_init.o(将boot_init.c编译为目标.o文件).

说明:

修改edu2440/config.mk文件:设置存储地址;最后一句TEXT_BASE = 0x33F80000是

设置UBOOT从NORFLASH放入内存的地址。

修改edu2440/boot_init.c:设置时钟频率(465行)或者在edu2440/edu2440.c中修改时钟频率。

UBOOT和LINUX不能同时存在,怎么来进行参数的传递呢,利用edu2440/edu2440.c的gd->bd->bi_boot_params = 0x30000100告诉LINUX参数存放在内存的地址,然后linux 自己要进行相应设置,然后LINUX启动时就会自动去这个地址取参数了。

U-boot.lds文件:.text (u-boot分散加载文件,把分散空间组合成统一空间,也可以把连续文件变成分散文件,根据CPU需要而定。) :

{

cpu/arm920t/start.o (.text)

board/xyd2440/lowlevel_init.o (.text)

board/xyd2440/boot_init.o (.text)

*(.text)

}

先运行这三段代码,然后跳到主函数中;. = ALIGN(4)是4字节对齐,.rodata : { *(.rodata) }是固定段放固定数;若定义 char i=0 初始化的这个值0是放在.data : { *(.data) }中;.got : { *(.got) }是运行空间。

3.第三步:修改include/configs相应内容

1)在复制/1niuedu/u-boot-1.3.4/include/configs中将smdk2410复制后修改为edu2440。

2)然后用文本编辑器打开edu2440,将里面的网卡驱动(56-58)

#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */

#define CS8900_BASE 0x19000300

#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */ 修改为:

#define CONFIG_DRIVER_DM9000 1

#define CONFIG_DM9000_USE_16BIT 1

#define CONFIG_DM9000_BASE 0x20000000

#define DM9000_IO 0x20000000

#define DM9000_DATA 0x20000004

(在E:\信盈达常用资料库\嵌入式配套资料\mini2440-20100717光盘资料\linux\bootloader\u-boot-1.1.6\include\configs的open24x0.h文件中)

或者直接屏蔽:(因为uboot不需要启动网卡)

#if 0 //为0不执行

#define CONFIG_DRIVER_DM9000 1

#define CONFIG_DM9000_USE_16BIT 1

#define CONFIG_DM9000_BASE 0x20000000

#define DM9000_IO 0x20000000

#define DM9000_DATA 0x20000004

#endif

即可。

以上三步配置完后在终端中运行:make edu2440_config(配置一下,确定编译那个工程)

然后make(默认为make all)

如果出问题就要解决问题:

常见问题:

A:提示找不到U-BOOT_xyd_VER--定义

相关文档
最新文档