Linux在ARM上的移植.ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/4/6
第4页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核代码
/arch目录包含各体系结构特定的代码,如 ARM、i386、PPC、MIPS等。*
/Documentation目录存放相关说明文档。 /include目录存放相关头文件。* /kernel目录包含Linux内核管理代码 /srcipts目录存放一些脚本文件 /drivers目录包含Linux内核所有设备驱动
移植前:CROSS_COMPILE = 移植后:CROSS_COMPILE = arm-linux-
指定使用arm-linux-gcc交叉编译器
2020/4/6
第12页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核移植
/arch/arm目录--Makefile文件
指定内核起始运行地址,和硬件相关。
choice 'ARM system type' \ xxx-based CONFIG_ARCH_xxx \ Shark CONFIG_ARCH_SHARK" RiscPC
Baidu Nhomakorabea
2020/4/6
第14页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核移植
if [ "$CONFIG_ARCH_xxx" = "y" ]; then comment ‘xxx Implementation' dep_bool ' SMDK (MERI TECH BOARD)'
用于存放目标板的默认配置等。
2020/4/6
第10页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核移植
/根目录--Makefile文件
修改该Makefile文件,指定目标平台和交叉编译器。
指定ARCH=目标平台 移植前:#ARCH := $(shell uname -m |
2020/4/6
第7页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核代码
/include目录存放体系结构特定的头文件, 里面包含如asm-arm、asm-i386等目录, 在其中才存放相关头文件。**
2020/4/6
第8页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核移植
移植大致分3个层次:体系结构、处理器和 板级移植。
通常所说的移植指的是Linux内核移植,而 不是发行版本的移植。
2020/4/6
第2页
(C)版权所有 广州致远电子有限公司
一、什么是移植? Linux操作系统
将Linux移植到ARM的前提:熟悉Linux系 统运行机理、熟悉Linux内核代码结构、掌 握ARM体系结构、目标处理器、目标系统 相关、掌握GNU汇编和C编程以及Linux下 脚本编程。
通常仅需要作板级移植,有必要时进行处 理器级移植。
参考现有的移植。
2020/4/6
第3页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核代码
Linux内核由进程管理、内存管理、文件系 统、网络接口、进程间通信、设备驱动等 模块组成。
Linux内核代码包含这些目录: arch Documentation include kernel scripts drivers init lib mm fs ipc net
2020/4/6
第9页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核移植
Linux在ARM上的移植涉及目录和文件 /arch/arm/kernel目录:Makefile、
debug-armv.S、entry-armv.S、setup.c /arch/arm/mm目录:mm-armv.c文件 其它目录如/arch/arm/def-configs目录,
Linux在ARM上的移植涉及目录和文件 /根目录:Makefile文件 /arch/arm目录:Makefile、config.in文
件 /arch/arm/boot目录:Makefile文件 /arch/arm/boot/compressed目录:
Makefile、head-xxx.S文件
2020/4/6
第5页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核代码
/init目录包含内核初始化代码 /lib目录包含一些库文件 /mm目录存放内存管理代码 /fs目录存放所有文件系统代码 /ipc目录存放进程间通信代码 /net目录存放网络相关代码
2020/4/6
例如:
ifeq ($(CONFIG_ARCH_xxx),y)
TEXTADDR
= 0xC0008000
MACHINE
= xxx
endif
CONFIG_ARCH_xxx在config.in中。
2020/4/6
第13页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核移植
/arch/arm目录--config.in文件 修改配置菜单,增加平台配置选项。
sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) 移植后:ARCH := arm
2020/4/6
第11页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核移植
/根目录--Makefile文件 指定交叉编译器: 指定CROSS_COMPILE=交叉编译器
Linux操作系统
Linux在ARM上的移植
一、什么是移植? 二、Linux内核代码 三、Linux内核编译
2020/4/6
第1页
(C)版权所有 广州致远电子有限公司
一、什么是移植? Linux操作系统
移植就是让一个平台的代码能够在其它平 台上运行。
将Linux运行在ARM上,即称为Linux在 ARM上的移植。
第6页
(C)版权所有 广州致远电子有限公司
二Linux、操作系L统inux内核代码
/arch目录包含各体系结构特定的代码,在 每个体系结构目录下都有: -boot 内核需要的特定平台代码 -kernel 体系结构特有的代码 -lib 通用函数在特定体系结构的实现 -math-emu 模拟FPU的代码,在ARM 中,使用mach-xxx代替** -mm 特定体系结构的内存管理实现
相关文档
最新文档