分类: LINUX
2011-09-25 16:00:56
开发板:arm9 PXA270处理器?s3c2410处理器 :最终确定是s3c2410
硬件配置 参数 地址范围 备注 SDRAM 64M 0x30000000~0x33FFFFFF NVRAM 256K Nand Flash 64M Nor Flash 2M 0x0~0x1FFFFF 存放MDK镜像
提供带USB驱动和网络驱动的uboot,以支持USB下载和网络下载;
内核支持yaffs的根文件系统;
提供隐藏的ramdisk根文件系统;
主频,外设
移植步骤
建立自己的开发板项目,暂且叫my2410
#tar –jxvf u-boot-20**.tar.bz2 #cd u-boot/board/samsung/ #mkdir my2410 #cp smdk2410/* my2410/ 建立board的配置
#cd my2410 #mv smdk2410.c my2410.c #cd ../../../ #cp include /config # cp include/configs/smdk2410.h include/configs/my2410.h #vi board/samsung/my2440/Makefile 修改 my2410 下 Makefile 的编译项,如下 : COBJS:=my2410.o flash.o 因为已经修改成了my2410.c文件了 修改u-boot根目录下的Makefile文件,建立my2410的配置以支持编译 vi uboot/Makefile ROSS_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
* 说明: arm : CPU 的架构 (ARCH)
arm920t : CPU 的类型
my2440 : 对应在 board 目录下建立新的开发板项目的目录
samsung : 新开发板项目目录的上级目录 , 如直接在 board 下建立新的开发板项目的目,则这里就为 NULL
s3c24x0 : CPU 型号
* 注意:编译选项格式的第二行要用 Tab 键开始,否则编译会出错
测试是否以上的配置可以产生一个u-boot.bin的文件
#make my2410_config #make 查看编译结果是否有目标文件产生 以上的移植是构建了一个my_2410框架,下面就要对源码进行修改
在s3c2410的datasheet上可以查到:
看门狗,中断,cpu频率,LED灯的寄存器
# define pWTCON 0x53000000
# define INTMSK 0x4A000008 /* Interupt-Controller base addresses */
# define INTSUBMSK 0x4A00001C
# define CLKDIVN 0x4C000014 /* clock divisor register */以上三个的寄存器地址可能一样但是,其操作方式可能不一样,可以从datasheet里面来发掘。
某些部分除了在start.s内有外,可能在其他代码中也会要做些修改!
在第一阶段完成后可以进行编译了后,进行一次烧写,测试是否正确。
在第二阶段:当u-boot的start.s运行到”_start_armboot: .word start_armboot”时,就会调用lib_arm/board.c中的start_armboot函数,于是进入第二阶段。
从nand_flash中启动的话就要做的事情:
网卡的驱动,比如CS8900:采用顺藤摸瓜的方式来修改相关的网卡驱动的代的初始化
支持tftp下载。
u-boot和kernel都会有一个机器码(MACH_TYPE),只有这两个机器码一致时才能引导内核。
添加文件系统yaffs镜像的烧写。
要完成的工作
- 初始化本阶段要使用的硬件设备:
- 检测系统的内存映射:
- 将kernel映像和根文件系统映像从flash上读到RAM空间
- 为内核设置启动参数
- 调用内核