Chinaunix首页 | 论坛 | 博客
  • 博客访问: 278337
  • 博文数量: 91
  • 博客积分: 2105
  • 博客等级: 大尉
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-14 19:30
文章分类
文章存档

2011年(11)

2010年(64)

2009年(16)

我的朋友

分类: LINUX

2010-09-02 10:51:06

1. U-Boot中添加XSBASE270目标板的定义

具体方法可参考第一节,本篇给出部分细节和要点,假定$U-BOOT为源码根目录。

############################################################

# (1)建立目标板目录

其中lowlevel_init.S采用adsvix的文件,以开启turbo mode,并注释掉

其中对pxavoltage.S文件中initPXAvolatage函数的调用。

############################################################

cd board/

cp -arv lubbock xsbase270

mv xsbase270/lubbock.c xsbase270/xsbase270.c

cp adsvix/lowlevel_init.S xsbase270/

vim xsbase270/lowlevel_init.S

@setvoltage:

@ mov r10, lr

@ bl initPXAvoltage

@ mov lr, r10

############################################################

# (2)建立目标板配置头文件

############################################################

cd $U-BOOT/include/configs

cp lubbock.h xsbase270.h

############################################################

# (3)修改Makefile

############################################################

#########$U-BOOT/Makefile中添加:

xsbase270_config: unconfig

@$(MKCONFIG) $(@:_config=) arm pxa xsbase270

#########$U-BOOT/Makefile中修改CROSS_COMPILE

CROSS_COMPILE = arm-iwmmxt-linux-gnueabi-

#########$U-BOOT/board/xsbase270/Makefile中修改:

#COBJS := lubbock.o flash.o

COBJS := xsbase270.o

这里去掉了flash.c文件,因为它是在lubbock板中自定义的FLASH存储器驱动,lubbock不使用U-Boot自带的FLASH驱动;而在本次移植中,我们将使用U-Boot自带的drivers/cfi_flash.c作为XSBASE270开发板的NOR型闪存28F128K18C的驱动程序,具体过程后述。

实际移植过程中还可能要作如下改动:

#############################################################

# (1) cpu/pxa/config.mk

#############################################################

#armv5-->armv5te, modified by aaron wong

PLATFORM_CPPFLAGS += -march=armv5te -mtune=xscale

#############################################################

# (2) include/asm-arm/mach-types.h

#############################################################

/* added by aaron */

#define MACH_TYPE_XSBASE270 1141

编译U-Boot:

export BUILD_DIR=~/u-boot_xsbase270/build/

make xsbase270_config

make

作其他必要修改,直至能正常编译通过。然后再进行后续的针对目标板的定制步骤。

2. 修改U-Boot Stage 1(汇编级)的平台相关代码

U-Boot第一阶段的代码包括:

(1) cpu/pxa/start.S (平台无关,处理器架构相关)

(2) board/xsbase270/lowlevel_init.S (平台与处理器型号相关)

(3) board/xsbase270/config.mk (平台相关,设置TEXT_BASE)

(4) include/configs/xsbase270.h (平台相关,设置寄存器初值等)

lowlevel_init.S已在第一步作了相应修改。config.mk中设置TEXT_BASE(U-Boot的链接起始地址),暂时不改动(0xa3080000)

xsbase270.h中定义了系统初始化时的寄存器初值(主要是GPIO配置,时钟与处理器频率设置,片上存储器控制器与存储系统的初始化),这需要根据平台进行配置。下面给出部分代码示例及注释:

/*

* High Level Configuration Options (easy to change)

*/

#define CONFIG_PXA27X /*to keep PXA27x specific code*/

#define CONFIG_XSBASE270 1

#define BOARD_LATE_INIT 1

#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */

......

/*

* Size of malloc() pool

*/

#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)

#define CFG_GBL_DATA_SIZE 128

/*

* Stack sizes

* The stack sizes are set up in start.S using the settings below

*/

#define CONFIG_STACKSIZE (128*1024) /* regular stack */

#ifdef CONFIG_USE_IRQ

#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */

#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */

#endif

/*

* Miscellaneous configurable options

*/

#define CFG_CPUSPEED 0x207 /* cpu start-up frequency,91MHz */

/*

* GPIO settings

*/

#define CFG_GPSR0_VAL 0x00003000

#define CFG_GPSR1_VAL 0x00000000

#define CFG_GPSR2_VAL 0x00010000

#define CFG_GPSR3_VAL 0x00020000

#define CFG_GPCR0_VAL 0x00000800

......

/*

* Clock settings

*/

#define CFG_CKEN 0x00400200

#define CFG_CCCR 0x08000290 /* 520 MHz */

/*

* Memory settings

*/

#define CFG_MSC0_VAL 0x7FF82BD0

#define CFG_MSC1_VAL 0x7FF87FF8

#define CFG_MSC2_VAL 0x7FF87FF8

#define CFG_MDCNFG_VAL 0x00001AC9

#define CFG_MDREFR_VAL 0x0000001E

#define CFG_MDMRS_VAL 0x00000000

......

/*

* PCMCIA and CF Interfaces

*/

#define CFG_MECR_VAL 0x00000001

#define CFG_MCMEM0_VAL 0x00010504

#define CFG_MCMEM1_VAL 0x00010504

......

3. 修改U-Boot Stage 2(C语言级)的平台相关代码

U-Boot第二阶段的大部分代码是平台无关的。从移植的角度,我们仅需要关注下面一些平台相关的代码:

(1) include/configs/xsbase270.h:通过使用定义或取消定义相关的预编译变量,用于对平台无关的代码进行平台相关的定制,包括定制U-Boot命令、缺省的环境变量、存储器映射、串口控制台配置、驱动程序等。

(2) board/xsbase270/xsbase270.c:板级初始化,只需进行最基本的配置,包括设置mach-type,启动参数列表首地址,设置标准输入输出设备,获取系统RAM配置信息等。

(3) 驱动程序的移植。最基本的是FLASH存储器驱动程序和以太网卡驱动程序。对于U-Boot中已经支持的器件,可以进行简单移植,否则需要自己加入相关的设备驱动程序。

下面对以上三部分分别阐述。

阅读(465) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-04-13 16:35:47

学习了,多谢楼主分享哦!也欢迎广大linux爱好者来我的论坛一起讨论arm哦!www.lt-net.cn

chinaunix网友2010-09-04 14:37:35

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com