Linux在ARM上的移植.ppt

上传人:sccc 文档编号:5593498 上传时间:2023-07-31 格式:PPT 页数:29 大小:388.01KB
返回 下载 相关 举报
Linux在ARM上的移植.ppt_第1页
第1页 / 共29页
Linux在ARM上的移植.ppt_第2页
第2页 / 共29页
Linux在ARM上的移植.ppt_第3页
第3页 / 共29页
Linux在ARM上的移植.ppt_第4页
第4页 / 共29页
Linux在ARM上的移植.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《Linux在ARM上的移植.ppt》由会员分享,可在线阅读,更多相关《Linux在ARM上的移植.ppt(29页珍藏版)》请在三一办公上搜索。

1、2023/7/31,第1页,Linux在ARM上的移植,一、什么是移植?二、Linux内核代码三、Linux内核编译,2023/7/31,第2页,一、什么是移植?,移植就是让一个平台的代码能够在其它平台上运行。将Linux运行在ARM上,即称为Linux在ARM上的移植。移植大致分3个层次:体系结构、处理器和板级移植。通常所说的移植指的是Linux内核移植,而不是发行版本的移植。,2023/7/31,第3页,一、什么是移植?,将Linux移植到ARM的前提:熟悉Linux系统运行机理、熟悉Linux内核代码结构、掌握ARM体系结构、目标处理器、目标系统相关、掌握GNU汇编和C编程以及Linux

2、下脚本编程。通常仅需要作板级移植,有必要时进行处理器级移植。参考现有的移植。,2023/7/31,第4页,二、Linux内核代码,Linux内核由进程管理、内存管理、文件系统、网络接口、进程间通信、设备驱动等模块组成。Linux内核代码包含这些目录:arch Documentation include kernel scripts drivers init lib mmfs ipc net,2023/7/31,第5页,二、Linux内核代码,/arch目录包含各体系结构特定的代码,如ARM、i386、PPC、MIPS等。*/Documentation目录存放相关说明文档。/include目录存

3、放相关头文件。*/kernel目录包含Linux内核管理代码/srcipts目录存放一些脚本文件/drivers目录包含Linux内核所有设备驱动,2023/7/31,第6页,二、Linux内核代码,/init目录包含内核初始化代码/lib目录包含一些库文件/mm目录存放内存管理代码/fs目录存放所有文件系统代码/ipc目录存放进程间通信代码/net目录存放网络相关代码,2023/7/31,第7页,二、Linux内核代码,/arch目录包含各体系结构特定的代码,在每个体系结构目录下都有:boot 内核需要的特定平台代码kernel 体系结构特有的代码lib 通用函数在特定体系结构的实现math

4、-emu 模拟FPU的代码,在ARM 中,使用mach-xxx代替*mm 特定体系结构的内存管理实现,2023/7/31,第8页,二、Linux内核代码,/include目录存放体系结构特定的头文件,里面包含如asm-arm、asm-i386等目录,在其中才存放相关头文件。*,2023/7/31,第9页,二、Linux内核移植,Linux在ARM上的移植涉及目录和文件/根目录:Makefile文件/arch/arm目录:Makefile、config.in文件/arch/arm/boot目录:Makefile文件/arch/arm/boot/compressed目录:Makefile、head

5、-xxx.S文件,2023/7/31,第10页,二、Linux内核移植,Linux在ARM上的移植涉及目录和文件/arch/arm/kernel目录:Makefile、debug-armv.S、entry-armv.S、setup.c/arch/arm/mm目录:mm-armv.c文件其它目录如/arch/arm/def-configs目录,用于存放目标板的默认配置等。,2023/7/31,第11页,二、Linux内核移植,/根目录Makefile文件 修改该Makefile文件,指定目标平台和交叉编译器。指定ARCH=目标平台移植前:#ARCH:=$(shell uname-m|sed-e

6、s/i.86/i386/-e s/sun4u/sparc64/-e s/arm.*/arm/-e s/sa110/arm/)移植后:ARCH:=arm,2023/7/31,第12页,二、Linux内核移植,/根目录Makefile文件 指定交叉编译器:指定CROSS_COMPILE=交叉编译器移植前:CROSS_COMPILE=移植后:CROSS_COMPILE=arm-linux-指定使用arm-linux-gcc交叉编译器,2023/7/31,第13页,二、Linux内核移植,/arch/arm目录Makefile文件 指定内核起始运行地址,和硬件相关。例如:ifeq($(CONFIG_A

7、RCH_xxx),y)TEXTADDR=0 xC0008000MACHINE=xxxendifCONFIG_ARCH_xxx在config.in中。,2023/7/31,第14页,二、Linux内核移植,/arch/arm目录config.in文件 修改配置菜单,增加平台配置选项。choice ARM system type xxx-based CONFIG_ARCH_xxx Shark CONFIG_ARCH_SHARK RiscPC,2023/7/31,第15页,二、Linux内核移植,if$CONFIG_ARCH_xxx=y;thencomment xxx Implementationd

8、ep_bool SMDK(MERI TECH BOARD)CONFIG_xxx_SMDK$CONFIG_ARCH_xxxfi#/*CONFIG_ARCH_xxx*/,2023/7/31,第16页,二、Linux内核移植,还有其它配置选项,可以根据自己的需要进行添加或者修改,具体参考已经移植的代码。添加的信息将会在make menuconfig的菜单中出现。,2023/7/31,第17页,二、Linux内核移植,/arch/arm/bootMakefile文件解压缩器从这里调用内核:ifeq($(CONFIG_ARCH_xxx),y)ZTEXTADDR=0 xXXXX8000EndifZTEXT

9、ADDR:解压缩器的起始地址.需要根据硬件进行设定。,2023/7/31,第18页,二、Linux内核移植,/arch/arm/boothead-xxx.S新增该文件,初始化处理器。编写这段代码需要非常熟悉处理器。源代码参考内核。,2023/7/31,第19页,二、Linux内核移植,/arch/arm/boot/compressdMakefile文件增加head-xxx.S的编译。ifeq($(CONFIG_ARCH_xxx),y)OBJS+=head-xxx.oendif,2023/7/31,第20页,二、Linux内核移植,/arch/arm/kernelMakefile文件增加处理器和

10、其它功能支持:no-irq-arch:=$(CONFIG_ARCH_INTEGRATOR)$(CONFIG_ARCH_CLPS711X)$(CONFIG_FOOTBRIDGE)$(CONFIG_ARCH_EBSA110)$(CONFIG_ARCH_SA1100)$(CONFIG_ARCH_CAMELOT)$(CONFIG_ARCH_S3C2400)$(CONFIG_ARCH_xxx),2023/7/31,第21页,二、Linux内核移植,/arch/arm/kerneldebug-armv.S、entry-armv.S、setup.c增加代码,对芯片进行初始化和中断处理,以及体系结构相关初始化

11、/arch/arm/mmmm-armv.c和平台相关的内存管理,2023/7/31,第22页,二、Linux内核移植,其它目录如/arch/arm/mach-xxx其它文件和代码,请参考现成的移植。/driver目录板级移植时,一些必要的驱动程序如以太网等。,2023/7/31,第23页,三、Linux内核编译,需要正确安装交叉编译器如arm-linux-gcc相关命令make menuconfig菜单界面make dep依赖关系make zImage得到内核make mrproper干净的源码make distclean清除文件,2023/7/31,第24页,三、Linux内核编译,进入配置

12、菜单/界面make config文本界面make menuconfig菜单界面*makexconfig图形界面常用make menuconfig命令进行。进入Linux内核源代码目录,执行该命令,得到Linux内核配置主界面。,2023/7/31,第25页,三、Linux内核编译,对各项进行配置,包括系统类型、存储器、网络等。可以装载某开发板的默认配置,如MagicARM2410默认配置文件为ZY2410 x。,2023/7/31,第26页,三、Linux内核编译,装载默认配置后,可修改或者不修改。配置完毕选择退出并保存。,2023/7/31,第27页,三、Linux内核编译,配置完毕,需要先建立依赖关系:make dep如果没有错误,即可编译内核:make zImage如果编译无错,在arch/arm/boot目录下将生成内核文件zImage。,2023/7/31,第28页,三、Linux内核编译,如果配置中有编译为模块的,需要:make modulesmake modules_install如果有错,请进行排错后再次编译。重新编译之前,可使用make mrproper命令得到干净的源代码或者使用make distclean清除以前编译产生的文件,然后才重新进行。,2023/7/31,第29页,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号