您的位置:首页 > 常用软件 > 基于PXA270的嵌入式Linux操作系统移植

基于PXA270的嵌入式Linux操作系统移植

2010-01-28  01:07  阅读(39 views)

嵌入式Linux系统的软件主要包括如下几部分:Bootloader,操作系统,文件系统,驱动程序和应用程序。
Bootloader Boot Loader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
本系统采用u-boot作为Bootloader,u-boot是德国DENX小组开发的,用于式嵌入式PowerPC,ARM和MIPS等体系结构的一个启动程序。最新版的程序是2009年3月发布的,我们采用1.1.4版本。
Bootloader与硬件紧密相关,主要是完成CPU与外围接口的初始化,用于基本的显示与下载,为嵌入式Linux的移植与下载建立了一个简单的平台。
嵌入式Linux系统移植
内核支持
在内核中添加对mtd的支持,配置选项如下:
#Memory Technology Devices(MTD)
CONFIG_MTD=y CONFIG_MTD_PARTITIONS=y
#
#User Modules And Translation Layers
#
CONFIG_MTD_BLOCK=y
#
#RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y CONFIG_MTD_GEN_PROBE=y CONFIG_MTD_MAP_BANK_WIDTH_1=y CONFIG_MTD_MAP_BANK_WIDTH_2=y CONFIG_MTD_MAP_BANK_WIDTH_4=y CONFIG_MTD_CFI_I1=y CONFIG_MTD_CFI_I2=y CONFIG_MTD_CFI_AMDSTD=y CONFIG_MTD_CFI_AMDSTD_RETRY=0 CONFIG_MTD_CFI_UTIL=y
#
#Mapping drivers for chip access
#
CONFIG_MTD_29GL256=y 3.3.2 MTD代码简要解析
#vi linux-2.6.9/drivers/mtd/maps/pxa27x-gl256.c
关于FLASH的基本信息
#define WINDOW_ADDR 0x 00000000
定义FLASH的起始地址
#define WINDOW_SIZE 0x 02000000
定义FLASH的大小
#define BUSWIDTH4
定义总线宽度
FLASH的分区信息
本系统中定义了三个分区:Bootloader,Kernel,Jffs2;
每个分区名称用.name来表示,每个分区大小用.size来表示,每个分区的起始地址用offset来表示。
static struct mtd_partition static_partitions[3]=
{
{
.name="Bootloder",
.size=3*128*1024,
.offset=0
},
{
.name="Kernel",
.size=2*1024*1024,
.offset=0×80000
},
{
.name="Jffs2",
.size=(0x 2000000-0×80000-2*1024*1024),
.offset=(0×80000+2*1024*1024)
},
};
从代码中可以看出:
分区名称分区起始地址分区大小对应的设备节点
Bootloader0×0000_ 0000384K Bytemtdblock0 Kernel0×0008_00002M Bytemtdblock1 Jffs20×0028_0000约29.5M Bytemtdblock2
表中的分区起始地址也就是要烧写的地址,这个地址是可以改变的,除了Bootloader以外。
制作jffs2映像文件
./mkfs.jffs2– r–root=DIR jffs2.img
其中DIR为要制作成Jffs2的目录,jffs2.img为要生成的jffs2映像名称,生成以后可以直接烧写到地址0×0028_0000。注意jffs2.img文件的大小不能超出分区的大小限制。
关于DIR目录的内容
DIR的目录内容可以直接使用能够运行的RAMDISK的内容。可以在需要的目录里添加内容。另外在/dev/目录下创建几个mtdblock的节点,mtdblock0,mtdblock1,mtdblock2,mtd0,mtd1,mtd2。
烧写
U-Boot tftp 0xa 0800000 jffs2.img jffs2.img下载完毕后
U-Boot cp.b 0xa 0800000 0x 280000 LEN
其中LEN为jffs2.img文件的大小,可以从下载界面里获取,一般比这个文件稍大也是可以的。
执行完成,jffs2的映像烧写完成,重启运行

暂无评论