首页 GEC2440&linux 2.6.30.4内核移植

GEC2440&linux 2.6.30.4内核移植

举报
开通vip

GEC2440&linux 2.6.30.4内核移植 1 广州广嵌电子科技有限公司 >>http://www.gec-lab.org(系统组编辑) GEC2440&Linux 2.6.30.4 内核移植实验 概述: 对于嵌入式 linux系统来说,有各种体系结构的处理器和硬件平台,用户根据自己 的需要定制的硬件平台,只要是硬件平台有一点点变化,就需要做一些移植工作,linux 内核移植是嵌入式 linux系统中最常见的一项工作。 由于 linux内核具备可移植性的特点,并且已经支持了很多种目标板,这样,用户 很容易从中找到跟自己硬件平台类似的目标板,参考内核...

GEC2440&linux 2.6.30.4内核移植
1 广州广嵌电子科技有限公司 >>http://www.gec-lab.org(系统组编辑) GEC2440&Linux 2.6.30.4 内核移植实验 概述: 对于嵌入式 linux系统来说,有各种体系结构的处理器和硬件平台,用户根据自己 的需要定制的硬件平台,只要是硬件平台有一点点变化,就需要做一些移植工作,linux 内核移植是嵌入式 linux系统中最常见的一项工作。 由于 linux内核具备可移植性的特点,并且已经支持了很多种目标板,这样,用户 很容易从中找到跟自己硬件平台类似的目标板,参考内核已经支持的目标板来进行移植 工作。 linux-2.6内核已经支持S3C2440处理器的多种硬件板,由于S3C2410跟S3C2440 同属于 ARM920T系列芯片,且寄存器等硬件电路基本一致,我们可以参考 SMDK2410 参考板来移植 2440开发板 实验步骤: (1)准备工作 (2)修改顶层 Makefile (3)修改 falsh 分区 (4)配置编译内核 一、准备工作 建立工作 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 ,下载内核源码:linux-2.6.30.4.tar.bz2。步骤如下: Mkdir cd /root/build_kernel tar jxvf linux-2.6.30.4.tar.gz 解压后会在当前目录下生成一个 linux-2.6.30.4的内核源码目录 安装交叉工具链,步骤如下: #mkdir /usr/local/arm #cd /usr/local/arm #tar jxvf eabi-0529.tar.bz2 解压后会在当前目录下生成一个 eabi的工具链目录 #mv eabi 4.1.2 修改环境变量,添加新工具链的路径信息,步骤如下: #vi /etc/bashrc 在 bashrc脚本的最后一行添加工具链的路劲信息: #export PATH=/usr/local/arm/4.1.2/bin:$PATH 使 bashrc脚本生效 #source /etc/bashrc 二、修改内核源码顶层 MakefileMakefileMakefileMakefile 修改内核目录树根下的的 Makefile,指明体系结构是 arm,交叉编译工具是 arm-linux-。 #vi Makefile 找到 ARCH和 CROSS_COMPILE,修改 ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/4.1.2/bin/arm-linux- 2 广州广嵌电子科技有限公司 >>http://www.gec-lab.org(系统组编辑) 保存退出。 三、修改机器码 在 u-boot-2009.11的/board/samsun/gec2440/gec2440.c设置了MACH_TYPE的类型为 MACH_TYPE_SMDK2410,查看 u-boot 里的 include/asm-arm/mach-types.h 文件,有下 面定义: #define MACH_TYPE_SMDK2410 193 //针对 2440 的 MACH_TYPE 码的值定义为 193 而 linux内核源码的 arch/arm/tools/mach-types 文件有如下定义: smdk2410 MACH_SMDK2410 SMDK2410 193 即 u-boot 和 linux内核的同样类型的机器码都为 193。 那么我们就修改 kernel 的 MACH_TYPE 代码引用部分,确定 kernel 的 MACH_TYPE。 如下: 修改 arch/arm/mach-s3c2440/mach-smdk2440.c : //修改文件最后面 将 MACHINE_START(S3C2440, "SMDK2440") 修改为: MACHINE_START(SMDK2410, "SMDK2440") 修改 arch/arm/kernel/head.S //在 ENTRY(stext)下添加如下代码(红色部分) ENTRY(stext) mov r0, #0 mov r1, #0xc1 // MACH_TYPE_SMDK2410 值 193 换成十六进制就是 0xc1 ldr r2, =0x30000100 //Linux kernel parameter 第二种改法: 查 linux内核源码的 arch/arm/tools/mach-types 文件有如下定义: smdk2440 MACH_SMDK2440 SMDK2440 1008 做如下修改 # vi arch/arm/mach-s3c2440/mach-smdk2440.c 将 MACHINE_START(S3C2440, "SMDK2440") 修改为: MACHINE_START(SMDK2440, "SMDK2440") 修改 arch/arm/kernel/head.S //在 ENTRY(stext)下添加如下代码(红色部分) ENTRY(stext) mov r0, #0 mov r1, #0x3f0 // MACH_TYPE_SMDK2440 值 1008 换成十六进制就是 0x3f0 ldr r2, =0x30000100 //Linux kernel parameter 这种改法中会出现如下问题: 定义在 arch/arm/mach-s3c2410/mach-smdk2410.c 中的设备驱动没能链接进来。 3 广州广嵌电子科技有限公司 >>http://www.gec-lab.org(系统组编辑) 四、设置 flashflashflashflash分区 1、找到修改的内核文件,此处需要修改以下文件: arch/arm/plat-s3c24xx/common-smdk.c ;修改分区信息 2、确定内核分区 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 0x04000000------- 0x00340000------- 0x00040000 ------- 0x00030000 ------- 0x00000000 _______ 我们可以根据以上的分区信息来配置我们的系统. 3.13.13.13.1修改分区信息(默认 8888个分区,具体分区数目可以根据项目而定,本初设置为 3333个) vi arch/arm/plat-s3c24xx/common-smdk.c 修改内核分区信息(本示例分设四个分区)。 意义:要让内核知道 nand flash的分区信息,设置成跟 bootloader一致。修改如下: static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "U-Boot", .size = 16*SZ_16K, //分区大小 256k .offset = 0, // 本分区起始地址 0x0 }, [1] = { .name = "Kernel", .offset = 16*SZ_16K, // 本分区起始地址 0x40000 .size =3*SZ_1M, // 分区大小 3M }, [2] = { .name = "Rootfs", .offset = MTDPART_OFS_APPEND, // 紧接上一分区地址 // 本区起始地址 0x340000 .size = MTDPART_SIZ_FULL, // 使用剩余全部空间 } //本分区大小 0x3cc0000 }; // 62208K rootfs kernel Uboot参数 u-boot 4 广州广嵌电子科技有限公司 >>http://www.gec-lab.org(系统组编辑) name: 代表分区名字 size: 代表 flash 分区大小(单位:字节) offset: 代表 flash 分区的起始地址(相对于 0x0 的偏移) 保存退出。 另外在该文件中修改 smdk_nand_info如下: static struct s3c2410_platform_nand smdk_nand_info = { .tacls =0, //default is 20 参数设置需参看 datasheet,上有描述 .twrph0 =30, //default is 60 .twrph1 =0, //defualt is 20 .nr_sets = ARRAY_SIZE(smdk_nand_sets), .sets = smdk_nand_sets, }; 3.23.23.23.2.修改时钟 ((((终端输出若有乱码则需修改)))) 在 arch/arm/mach-s3c2440/mach-smdk2440.c中修改 smdk2440_map_io如下 static void __init smdk2440_map_io(void) { s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); s3c24xx_init_clocks(12000000); //default is 0 s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs)); } 3.33.33.33.3 修改 nandnandnandnand FlashFlashFlashFlash的校验方式,去掉 ECCECCECCECC校验,否则上电启动会提示 ECCECCECCECC错误或 者 I/OI/OI/OI/O读取错误。 在 drivers/mtd/nand/s3c2410.c中 将 chip->ecc.mode = NAND_ECC_SOFT; 改为 chip->ecc.mode = NAND_ECC_NONE; 五、配置编译内核 #make s3c2410_defconfig #make menuconfig 在 s3c2410_defconfig基础上,增删的内核配置项如下: 这里约定“#”后面的是注释部分。 Boot options --> Default kernel command string: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 (接下行) rootfstype=jffs2 #说明:mtdblock2代表第 3 个 flash分区,它是预设的 rootfs分区 # console=ttySAC0,115200使 kernel启动期间的信息全部输出到串口 0 上. # 2.6内核对于串口的命名改为 ttySAC0,但这不影响用户空间的串口编程。 # 用户空间的串口编程针对的仍是/dev/ttyS0等 5 广州广嵌电子科技有限公司 >>http://www.gec-lab.org(系统组编辑) #接下来做的是针对文件系统的设置,实验时目标板上要上的文件系统是 cramfs 与 jffs2,故做如下配置 File systems --> <> Second extended fs support #去除对 ext2 的支持 Miscellaneous filesystems --> [*] JFFS2 XATTR support (EXPERIMENTAL) #支持 jffs2 和 cramfs文件系统 Network File Systems --> #支持 NFS 文件系统 [ ] NFS client support for the NFSv3 ACL protocol extension [*]NFS client support for NFS version 4 (EXPERIMENTAL) <*> NFS server support Kernel Features ---> [*] Use the ARM EABI to compile the kernel # 一定要选上, 否则会出现内核恐慌(内核指针跑飞) 保存退出,产生.config内核配置文件,该文件会在 make的时候被调用。 编译内核 make 编译完成后会在 arch/arm/boot/目录下生产 zImage 内核映象。zImage 映象是可引 导的,压缩的内核映象,就是我们要移植到开发板上的内核映象文件。 uImage镜像制作 [root@localhost tools]# ./mkimage -n 'linux-2.6.30.4' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d /root/build_kernel/linux-2.6.30.4/arch/arm/boot/zImage /root/build_kernel/linux-2.6.30.4/arch/arm/boot/uImage 上述步骤仅添加了外设 flash与串口等一些基本的驱动,实现一个能在开发板上运 行的内核镜像。根据项目要求,需要继续移植的还有: CD、触摸 DM9000网卡、L 屏、USB、音频等驱动。
本文档为【GEC2440&amp;linux 2.6.30.4内核移植】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_970888
暂无简介~
格式:pdf
大小:185KB
软件:PDF阅读器
页数:5
分类:互联网
上传时间:2014-04-30
浏览量:25