嵌入式Linu内核移植.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linu内核移植

1嵌入式Linux内核移植 姓名:成 炼 学号:081141 实验目的 l 了解Linux内核源代码的目录结构及各目录的相关内容 l 了解Linux内核各配置选项内容和作用 l 掌握Linux内核配置文件的作用 l 掌握Linux内核的编译过程 l 掌握将新增内核代码加入到Linux内核结构中的方法 实验指引 尽管目前Linux 2.6版本内核已经增加了很多对ARM体系甚至是S3C2410 CPU的支持,但仍然需要对内核作一些小的修改来适应我们的开发板,并且需要重新配置、编译和重新生成新的内核映像。本实验着重从NAND Flash分区到下载到开发板等一系列连贯的操作来进行嵌入式Linux内核的移植。本实验的内核版本为2.6.26。 1. NAND Flash分区 从Nand Flash启动时,S3C2410硬件会自动把Nand Flash前4K代码拷贝芯片内部RAM空间,CPU其实是从内部RAM开始执行代码的,所以vivi必须放到Nand Flash顶端。vivi开始执行后将初始化硬件设备、建立内存空间映射表,为调用内核做好准备;然后把压缩的内核映像加载到SDRAM中;最后跳转到内 核映像入口,启动内核。 内核MTD分区必须与vivi分区相一致。因为,vivi分区中的地址是引导程序、内核映像及文件系统下载到Nand Flash的真正地址;而内核启动时,内核并不是去读vivi分区中的地址,而是去读内核MTD分区设定的地址;所以,如果内核MTD分区与vivi分区不相同,很可能导致不能正常启动内核及读取文件系统。 1.1 vivi的重新分区 根据开发板的Nand Flash大小及开发用途确定新的vivi分区,如表1.1。 表1.1 vivi的分区信息表 打开vivi源代码下的arch/s3c2410/smdk.c文件,在函 数:“mtd_partition_default_mtd_partitions[]={}”中可以看到vivi默认的Nand Flash分区信息。根据表2的新分区信息,在上述函数中以相同的格式修改原有分区信息即可完成vivi的重新分区。这里可以参考vivi的使用手册,《Getting started with vivi》。 1.2 内核MTD的重新分区 在给内核MTD重新分区之前,有一点应该注意,2.6.16(含)以前内核与2.6.17(含)以后内核的MTD重新分区方法是不一样的,前者是需要增加新的分区信息,而后者源代码初始文件中已含分区信息,需要的是修改分区信息。我们此次实验选用的内核为2.6.26, 其相应的修改如下: 在源代码linux-2.6.26/arch/arm/plat-s3c2410xx/common-smdk.c文件下的“mtd_partition smdk_default_nand_part[]={}”中,可以看到默认的MTD分区。根据表1.1,以相同的格式修改原分区信息即可完成MTD的重新分 区。 /* NAND parititon from 2.4.18-swl5 */ static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = ViVi, .size = 0 .offset = 0 }, [1] = { .name = param, .offset = 0 .size = 0 }, [2] = { .name = kernel, .offset = 0 .size = 0 }, [3] = { .name = root, .offset = 0

文档评论(0)

nbc152 + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档