将内核映像和根文件系统映像从flash上读到RAM空间中、设置内核启动参数以及调 用内核。 3.2.2 U一boot移植 移植U一boot到ARM板上需要完成添加开发板硬件相关的支持文件、配置U一boot 并编译生成bin格式的二进制文件,然后烧写到开发板。具体步骤如下: a)修改 Makefile文件: 在顶层的 Makefile文件中添加s3e244o_eonfig:uneonfig @./mkeonfig$(@:_eonfig=)armarm92Ots3e244oNULLs3e24xo 修改Makefile的目的是定义交叉编译链和开发板配置选项,arm是CPu的架构 (arch),arm920t指的是cPu的类型,53c2440是开发板型号,最后一项是片上系统 (SOC)定义。 b)在board子目录中建立s3c2440并将于开发板最接近的支持包Sdmk2410里的 所有文件拷贝到新建目录下并改成相应的名称。 c)修改文件53c2440.h文件来配置U一boot的软硬件需求,包括CPU型号、开发 板型号、关闭MMU、关闭中断、初始化 malloC池大小、数据段大小、使用网卡许可、 网卡基地址、网卡物理地址、开发板以及服务器IP、内存物理地址、内存大小、默认 的加载地址、flash的基地址,以及使用的串口号和波特率等等。 d)把上述所有相关文件及配置都设置好之后就可以进行编译: makes3e244o_eonfig makeCROSSCOMPILE=arm一 1inux一 编译生成一个U一boot.bin的映像文件 通过JTAG接口,将U一boot.bin映像文件烧写到53C2440平台的flash中。引导 程序U一boot的移植就算完成了。 然后使用重启开发板,就可以在 Nandflash上启动U一boot引导程序。启动过程如 图4一2。 ![]() 3.3Linux2.6内核的移植 Linux是开源代码的操作系统.其内核很小,一般只有几百Kbyte,它很适合移植 到嵌入式系统中,并且提供免费下载。因此Linux内核的应用越来越广泛。下面简要 说明一下Linux内核移植到53C2440平台的方法。本文使用的版本为2.6.24.4的Linux 内核。它对2410的支持完全适用于2440。先将Linux2.6.24.4内核从网上下载下来, 并解压到开发目录下,然后进行以下配置。 3.3.1内核配置 首先修改内核根目录下的Makefile,指明体系结构是arm,交叉编译工具是 arm一 11nux一,打开Makefile找到: ARCH?== CROSSCOMPILE?= 这两项,不修改这两项的话将会默认使用x86的配置,这里修改为 ARCH?=arm CROSSCOMPILE?=arm一linux- 设置 nandflash分区结构:修改areh/arm/maehs3e24lo/devs.e、 arCh/arm/maehS3e24lO/maeh一Smdk241O.e不口drivers/mtd/nand/S3e241O.e这三个文 件来实现对 nandflash的支持以及启动时初始化和禁止ECC校验。 首先要修改分区信息,使得内核的 nandflash的分区信息与U一bo。t中的设置一 样: statie Struet mtd_artition smdk_default_nand_part[]={ [O〕= 。name=“boot’, .offset 51Ze= =Ox0000000O Ox0003000O. 〔l〕 。name=“kernel” offset 。 5IZe= =Ox0005000O, OxOOZ00000, }, [2〕= name=“root” .offset 。 51Ze= =Ox0O250000, OxO3dae000, } }; 另外还要修改一下 nandflash配置的几个参数,使其适配开发板的需求: s3e241o_platform--nand_smdk_nand_infosmdk_nand_info={ ?taels=O, .twrPhO=30, ?twrphl=O, …}; 内核是通过U一boot烧写到 nandflash上的,而U一boot与内核的ECC校验码不一样, 为了避免系统启动时出错,必须禁止 nandflashECC校验: 在 drivers/mtd/nand/s3e244oxe第669行 将ehipZ)eee.mode=NAND_ECC_SOFT; 改为ehipZ)eee.mode=NAND_ECC_NONE; 由于U一boot传递给Linux内核的机器码也应该与U一boot传递参数一致,所以还需要 修改arCh/arm/too1s/math一types文件: 将 53e2440ARCH_53C244053C2440362 修改为 53e2440ARCH_53C244053C2440782 3.3.2内核配置与编译 配置Linux2.6.24.4内核:先把默认配置文件拷贝过来cp areh/arm/ConfigS/s3e241o_defeonfig.Config然后键入命令 makemenuConfig,在 smdk241o_defconfig基础上主要做以下配置改动: [*jEnableloadablemodulesupPort-一) 〔*」 Moduleunloading [*〕 Automatiekernelmoduleloading SystemTyPe一一一> [*〕 S3C24lODMAsupport [*〕 SupportARM92OTprOCeSSOr S3C24lOMaehines一一> [*〕 SMDK2410/A9M2410 |