Linux在ARM上的移植.ppt

上传人:本田雅阁 文档编号:2202087 上传时间:2019-03-03 格式:PPT 页数:29 大小:388.01KB
返回 下载 相关 举报
Linux在ARM上的移植.ppt_第1页
第1页 / 共29页
Linux在ARM上的移植.ppt_第2页
第2页 / 共29页
Linux在ARM上的移植.ppt_第3页
第3页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

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

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

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

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

5、ssed目录:Makefile、head-xxx.S文件,2019/3/3,第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目录,用于存放目标板的默认配置等。,2019/3/3,第11页,二、Linux内核移植,/根目录Makefile文件 修改该Makefile文件,指定目标平台和交叉编译器。 指定ARCH=目标平台 移植前:#ARCH

6、:= $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) 移植后:ARCH := arm,2019/3/3,第12页,二、Linux内核移植,/根目录Makefile文件 指定交叉编译器: 指定CROSS_COMPILE=交叉编译器 移植前:CROSS_COMPILE = 移植后:CROSS_COMPILE = arm-linux- 指定使用arm-linux-gcc交叉编译器,2019/3/3,第13页,二、Linux内核移植,/arch/arm目录Makefi

7、le文件 指定内核起始运行地址,和硬件相关。 例如: ifeq ($(CONFIG_ARCH_xxx),y) TEXTADDR = 0xC0008000 MACHINE = xxx endif CONFIG_ARCH_xxx在config.in中。,2019/3/3,第14页,二、Linux内核移植,/arch/arm目录config.in文件 修改配置菜单,增加平台配置选项。 choice ARM system type xxx-based CONFIG_ARCH_xxx Shark CONFIG_ARCH_SHARK“ RiscPC,2019/3/3,第15页,二、Linux内核移植,if

8、 “$CONFIG_ARCH_xxx“ = “y“ ; then comment xxx Implementation dep_bool SMDK (MERI TECH BOARD) CONFIG_xxx_SMDK $CONFIG_ARCH_xxx fi # /* CONFIG_ARCH_xxx */,2019/3/3,第16页,二、Linux内核移植,还有其它配置选项,可以根据自己的需要进行添加或者修改,具体参考已经移植的代码。添加的信息将会在make menuconfig的菜单中出现。,2019/3/3,第17页,二、Linux内核移植,/arch/arm/bootMakefile文件 解

9、压缩器从这里调用内核: ifeq ($(CONFIG_ARCH_xxx),y) ZTEXTADDR = 0xXXXX8000 Endif ZTEXTADDR:解压缩器的起始地址. 需要根据硬件进行设定。,2019/3/3,第18页,二、Linux内核移植,/arch/arm/boothead-xxx.S 新增该文件,初始化处理器。编写这段代码需要非常熟悉处理器。源代码参考内核。,2019/3/3,第19页,二、Linux内核移植,/arch/arm/boot/compressdMakefile文件 增加head-xxx.S的编译。 ifeq ($(CONFIG_ARCH_xxx),y) OBJ

10、S += head-xxx.o endif,2019/3/3,第20页,二、Linux内核移植,/arch/arm/kernelMakefile文件 增加处理器和其它功能支持: 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) ,2019/3/3,第21页,

11、二、Linux内核移植,/arch/arm/kerneldebug-armv.S、entry-armv.S、setup.c 增加代码,对芯片进行初始化和中断处理,以及体系结构相关初始化 /arch/arm/mmmm-armv.c 和平台相关的内存管理,2019/3/3,第22页,二、Linux内核移植,其它目录如/arch/arm/mach-xxx 其它文件和代码,请参考现成的移植。 /driver目录 板级移植时,一些必要的驱动程序如以太网等。,2019/3/3,第23页,三、Linux内核编译,需要正确安装交叉编译器如arm-linux-gcc 相关命令 make menuconfig 菜

12、单界面 make dep 依赖关系 make zImage 得到内核 make mrproper 干净的源码 make distclean 清除文件,2019/3/3,第24页,三、Linux内核编译,进入配置菜单/界面 make config 文本界面 make menuconfig 菜单界面* make xconfig 图形界面 常用make menuconfig命令进行。进入Linux内核源代码目录,执行该命令,得到Linux内核配置主界面。,2019/3/3,第25页,三、Linux内核编译,对各项进行配置,包括系统类型、存储器、网络等。可以装载某开发板的默认配置,如MagicARM2

13、410默认配置文件为ZY2410x。,2019/3/3,第26页,三、Linux内核编译,装载默认配置后,可修改或者不修改。配置完毕选择退出并保存。,2019/3/3,第27页,三、Linux内核编译,配置完毕,需要先建立依赖关系: make dep 如果没有错误,即可编译内核: make zImage 如果编译无错,在arch/arm/boot目录下将生成内核文件zImage。,2019/3/3,第28页,三、Linux内核编译,如果配置中有编译为模块的,需要: make modules make modules_install 如果有错,请进行排错后再次编译。 重新编译之前,可使用make mrproper命令得到干净的源代码或者使用make distclean清除以前编译产生的文件,然后才重新进行。,2019/3/3,第29页,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1