2024年3月17日发(作者:卿友安)
嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一)
(2009-11-27
10:46)
分类: Bootloader移植篇
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望
能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。
共享资源,欢迎转载:
一、移植环境
主 机:VMWare--Fedora 9
开发板:Mini2440--64MB Nand,Kernel:2.6.30.4
编译器:
u-boot:2
二、移植步骤
本次移植的功能特点包括:
支持Nand Flash读写
支持从Nor/Nand Flash启动
支持CS8900或者DM9000网卡
支持Yaffs文件系统
支持USB下载(还未实现)
1
.
了解u-boot主要的目录结构和启动流程,如下图。
u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;
u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。
各个部分的流程图如下:
2. 建立自己的开发板项目并测试编译。
目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就
是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建
立自己的开发板项目。
1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板
的项目,取名叫my2440
#tar -jxvf 2 //解压源码
#cd u-boot-2009.08/board/samsung/ //进入目录
#mkdir my2440 //创建my2440文件夹
2)因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改
#cp -rf smdk2410/* my2440/ //将2410下所有的代码复制到2440下
#cd my2440 //进入my2440目录
#mv smdk2410.c my2440.c //将my2440下的smdk2410.c改名为my2440.c
#cd ../../../ //回到u-boot根目录
#cp include/configs/smdk2410.h include/configs/my2440.h //建立2440头文件
#gedit board/samsung/my2440/Makefile //修改my2440下Makefile的编译项,如
下:
COBJS := my2440.o flash.o //因在my2440下我们将smdk2410.c改名为my2440.c
3)修改u-boot跟目录下的Makefile文件。查找到smdk2410_config的地方,在他下面按
照smdk2410_config的格式建立my2440_config的编译选项,另外还要指定交叉编译器
#gedit Makefile
CROSS_COMPILE ?= arm-linux- //指定交叉编译器为arm-linux-gcc
smdk2410_config : unconfig //2410编译选项格式
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
my2440_config : unconfig //2440编译选项格式
@$(MKCONFIG) $(@:_config=) arm arm920t my2440 samsung s3c24x0
2024年3月17日发(作者:卿友安)
嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一)
(2009-11-27
10:46)
分类: Bootloader移植篇
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望
能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。
共享资源,欢迎转载:
一、移植环境
主 机:VMWare--Fedora 9
开发板:Mini2440--64MB Nand,Kernel:2.6.30.4
编译器:
u-boot:2
二、移植步骤
本次移植的功能特点包括:
支持Nand Flash读写
支持从Nor/Nand Flash启动
支持CS8900或者DM9000网卡
支持Yaffs文件系统
支持USB下载(还未实现)
1
.
了解u-boot主要的目录结构和启动流程,如下图。
u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;
u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。
各个部分的流程图如下:
2. 建立自己的开发板项目并测试编译。
目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就
是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建
立自己的开发板项目。
1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板
的项目,取名叫my2440
#tar -jxvf 2 //解压源码
#cd u-boot-2009.08/board/samsung/ //进入目录
#mkdir my2440 //创建my2440文件夹
2)因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改
#cp -rf smdk2410/* my2440/ //将2410下所有的代码复制到2440下
#cd my2440 //进入my2440目录
#mv smdk2410.c my2440.c //将my2440下的smdk2410.c改名为my2440.c
#cd ../../../ //回到u-boot根目录
#cp include/configs/smdk2410.h include/configs/my2440.h //建立2440头文件
#gedit board/samsung/my2440/Makefile //修改my2440下Makefile的编译项,如
下:
COBJS := my2440.o flash.o //因在my2440下我们将smdk2410.c改名为my2440.c
3)修改u-boot跟目录下的Makefile文件。查找到smdk2410_config的地方,在他下面按
照smdk2410_config的格式建立my2440_config的编译选项,另外还要指定交叉编译器
#gedit Makefile
CROSS_COMPILE ?= arm-linux- //指定交叉编译器为arm-linux-gcc
smdk2410_config : unconfig //2410编译选项格式
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
my2440_config : unconfig //2440编译选项格式
@$(MKCONFIG) $(@:_config=) arm arm920t my2440 samsung s3c24x0