新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于AT91RM9200的嵌入式ARM开发平台的实现

基于AT91RM9200的嵌入式ARM开发平台的实现

作者: 时间:2011-06-17 来源:网络 收藏

(3)修改头文件 include/Configs/dk.H,主要修改的是针对SDRAM以及Flash的参数配置:将phys_sdram设置成0x20000000,这个是SDRAM的起始地址,phys_flash_sdram_size设置为0x1000000,SDRAM容量为16 MB。对于Flash,需要修改的是:Flash起始地址设置为0x10000000(Flash挂在bank0上),phys_flash_size设置为0x1000000。扇区的总数cfg_max_flash_sect相应设置为128。
最后在Linux里安装交叉编译器,笔者用的交叉编译器的版本是2.95.3,编译代码,生成U-Boot.bin文件。U-Boot启动后显示,如图2所示。

2 Linux2.6.20内核移植
2.1 Linux内核版本选择
Linux内核版本更新速度非常块,现在最新的版本已发展到了2.6.26.3。与2.4内核相比,2.6内核稳定性更好、对于总线、文件系统、块设备支持、多媒体、网络安全性等方面都有了更好的支持,因此笔者选择移植功能和可靠性都比较欧成熟的Linux2.6.20版本到本系统中。Linux内核的源代码可在www.kernel.org网站上下载,Atmel官方网站上可以获取针对的补丁2.6.20-AT91.patch.gz和Linux-2.6.20-exp.diff.Bz2。对Linux2.6.20源代码打上支持处理器的补丁之后,内核就可以支持AT91RM9200处理器了。
2.2 交叉编译环境的建立
采用的交叉编译工具为ARM-Linux-Gcc3.4.1,这是目前比较通用支持编译2.6内核的交叉编译器,完全支持编译2.6内核,在开发平台上将交叉编译器安装好,并配置好环境变量Path=$Path:/Usr/Local/Arm/3.4.1/Bin。
2.3 解决Machine Id问题
在U-Boot的代码中,支持的AT91RM9200的Machine类型为25 1、262两种,这两种在Include/asm-arm/mach-types.h定义为mach_type_AT91RM9200和mach_type_AT91RM9200dk,在U-Boot中board/AT9 1 RM9200dk/AT91 RM9200dk.c中采用的是第一种,而在Linux2.6.20内核代码中arh/Arm/Math-AT91RM9200使用的类型却为AT91RM9200DK,也就是第2种。因此在启动的时候会出现Machine不匹配的问题,解决问题的办法就是更改U-Boot或者Linux内核的代码,使其Machine类型相匹配。
2.4 Nor Flash的地址安排
笔者采用的Flash为16 MB NOR Flash,为了实现层次文件系统,需要增加NOR Flash MTD驱动支持,具体地址安排,如图3所示。

在Dirvers/MTD/Maps/里增加AT91 RM9200.c文件,作为自己的分区代码,并且编译进内核。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭