欢迎来到天天文库
浏览记录
ID:59440728
大小:89.50 KB
页数:39页
时间:2020-09-18
《构建嵌入式linux系统linux内核ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式Linux移植广东省嵌入式软件公共技术中心2007年7月14日课程介绍主要介绍:linux内核移植到开发板的过程内核映象文件的启动流程内核移植介绍内核移植介绍Linux内核移植就是从一种硬件平台转移到另一种硬件平台上运行。由于硬件板的变化,内核移植是嵌入式linux系统中最常见的一项工作。内核移植主要是修改跟硬件平台相关的代码,添加驱动,一般不涉及linux内核通用的程序。内核移植前的测试Linux内核在不断地更新,支持了各种体系结构的多种目标板;我们很容易从中找到跟自己硬件平台类似的目标板;移植的第一步工作就是参考内核已经支持的目标板来移植,就如同使用模板开发程序。移植的工作选择参考板
2、原则:参考板与开发板具有相同的处理器;参考板与开发板具有相同的外围接口电路;Linux内核已经支持了参考板,至少有参考板的补丁;参考板linux设备驱动正常工作;因为半导体公司在发布一块新的处理器的时候,一般都会提供参考设计板和LinuxBSP包,世界各地的linux爱好者也在不断地更新linux内核。通常我对都可以找到跟自己硬件平台类似的参考板。移植的工作编译测试参考板的linux内核为了确信linux对参考板的支持情况,最好是验证,配置编译linux内核,在目标板上运行测试一下。例如参考板是smdk2410,步骤如下:在顶层Makefile中设置ARCH、CROSS_COMPILE变量;A
3、RCH:=armCROSS_COMPILE:=arm-linux-使用参考板的缺省内核配置,makesmdk2410_defconfig保存配置以后,执行make编译内核编译完成后,得到内核映像文件arch/arm/boot/zImage下载内核映像到目标板中,测试内核的运行情况移植的工作分析参考板的BSP代码如果linux内核已经支持了参考板,下一步工作就是要熟悉参考板的BSP代码:分析平台相关的部分代码实现;分析内核编译组织方式;分析内核启动流程;分析驱动程序的实现。熟悉了参考板的这些代码之后,就可以动手修改内核源码了。开发板内核移植内核移植的主要工作,就是添加开发板初始化和驱动程序的代码
4、;这部分代码都是跟体系结构相关的,在arch目录下按照不同的体系结构管理。下面以ARMS3C2410平台为例,分析内核移植过程。开发板的配置选项开发板的配置选项ARM平台相关的选项在arch/arm目录下实现;在顶层Makefile中设置相应的体系结构和工具链,这样在配置linux内核的时候就会调用arch/arm/Kconfig文件;Kconfig文件是内核主配置文件,在文件中可以找到“SystemType”选项:开发板的配置选项#arch/arm/Kconfigmenu“SystemTpye”choiseprompt“ARMsystemtype”defaultARCH_RPC……confi
5、gARCH_S3C2410bool“SamsungS3C2410”……source“arch/arm/mach-s3c2410/Kconfig”……开发板的配置选项上面的“choice”语句可以在菜单中生成一个多选项这里找到“SamsungS3C2410”选项;然后通过source语句调用arch/arm/mach-s3c2410/Kconfig文件;Arch/arm/mach-s3c2410/Kconfig文件定义了各种S3C2410处理器开发板的选项,还有S3C2410处理器的特殊支持选项;通过上面两个Kconfig文件,提供了处理器和开发板以及处理器特征的选项。开发板在内核中的描述开发板
6、在内核中的描述“arch/arm/mach-s3c2410”目录是专门保存S3C2410系列处理器平台相关程序;目录下的文件可分为三种:Kconfig和Makefile,用于内核配置编译处理器通用的程序,如:clock.c、clock.h、cpu.c、cpu.h、s3c2410.c、s3c2410.h等目标板相关的,如:bast.h、bast-irq.c、mach-bast.c等在这些文件中,实现了处理器和目标板相关的一些定义和初始化函数。另外,还有一些头文件的在include/asm-arm/arch-s3c2410/下。开发板在内核中的描述在arch/arm/mach-s3c2410/ma
7、ch-smdk2410.c中定义了SMDK2410开发板在内核中的描述;#arch/arm/mach-s3c2410/mach-smdk2410.cMACHINE_START(SMDK2410,"SMDK2410").phys_ram=S3C2410_SDRAM_PA,.phys_io=S3C2410_PA_UART,.io_pg_offst=(((u32)S3C24XX_VA_UART)>>18
此文档下载收益归作者所有