linux内核在arm处理器上的移植,Linux在ARM上的移植.ppt

2020 2 10 第1页 Linux在ARM上的移植 一 什么是移植 二 Linux内核代码三 Linux内核编译 2020 2 10 第2页 一 什么是移植 移植就是让一个平台的代码能够在其它平台上运行 将Linux运行在ARM上 即称为Linux在ARM上的移植 移植大致分3个层次 体系结构 处理器和板级移植 通常所说的移植指的是Linux内核移植 而不是发行版本的移植 2020 2 10 第3页 一 什么是移植 将Linux移植到ARM的前提 熟悉Linux系统运行机理 熟悉Linux内核代码结构 掌握ARM体系结构 目标处理器 目标系统相关 掌握GNU汇编和C编程以及Linux下脚本编程 通常仅需要作板级移植 有必要时进行处理器级移植 参考现有的移植 2020 2 10 第4页 二 Linux内核代码 Linux内核由进程管理 内存管理 文件系统 网络接口 进程间通信 设备驱动等模块组成 Linux内核代码包含这些目录 archDocumentationincludekernelscriptsdriversinitlibmmfsipcnet 2020 2 10 第5页 二 Linux内核代码 arch目录包含各体系结构特定的代码 如ARM i386 PPC MIPS等 Documentation目录存放相关说明文档 include目录存放相关头文件 kernel目录包含Linux内核管理代码 srcipts目录存放一些脚本文件 drivers目录包含Linux内核所有设备驱动 2020 2 10 第6页 二 Linux内核代码 init目录包含内核初始化代码 lib目录包含一些库文件 mm目录存放内存管理代码 fs目录存放所有文件系统代码 ipc目录存放进程间通信代码 net目录存放网络相关代码 2020 2 10 第7页 二 Linux内核代码 arch目录包含各体系结构特定的代码 在每个体系结构目录下都有 boot内核需要的特定平台代码 kernel体系结构特有的代码 lib通用函数在特定体系结构的实现 math emu模拟FPU的代码 在ARM中 使用mach xxx代替 mm特定体系结构的内存管理实现 2020 2 10 第8页 二 Linux内核代码 include目录存放体系结构特定的头文件 里面包含如asm arm asm i386等目录 在其中才存放相关头文件 2020 2 10 第9页 二 Linux内核移植 Linux在ARM上的移植涉及目录和文件 根目录 Makefile文件 arch arm目录 Makefile config in文件 arch arm boot目录 Makefile文件 arch arm boot compressed目录 Makefile head xxx S文件 2020 2 10 第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目录 用于存放目标板的默认配置等 2020 2 10 第11页 二 Linux内核移植 根目录 Makefile文件修改该Makefile文件 指定目标平台和交叉编译器 指定ARCH 目标平台移植前 ARCH shelluname m sed es i 86 i386 es sun4u sparc64 es arm arm es sa110 arm 移植后 ARCH arm 2020 2 10 第12页 二 Linux内核移植 根目录 Makefile文件指定交叉编译器 指定CROSS COMPILE 交叉编译器移植前 CROSS COMPILE 移植后 CROSS COMPILE arm linux 指定使用arm linux gcc交叉编译器 2020 2 10 第13页 二 Linux内核移植 arch arm目录 Makefile文件指定内核起始运行地址 和硬件相关 例如 ifeq CONFIG ARCH xxx y TEXTADDR 0 xC0008000MACHINE xxxendifCONFIG ARCH xxx在config in中 2020 2 10 第14页 二 Linux内核移植 arch arm目录 config in文件修改配置菜单 增加平台配置选项 choice ARMsystemtype xxx basedCONFIG ARCH xxx SharkCONFIG ARCH SHARK RiscPC 2020 2 10 第15页 二 Linux内核移植 if CONFIG ARCH xxx y thencomment xxxImplementation dep bool SMDK MERITECHBOARD CONFIG xxx SMDK CONFIG ARCH xxxfi CONFIG ARCH xxx 2020 2 10 第16页 二 Linux内核移植 还有其它配置选项 可以根据自己的需要进行添加或者修改 具体参考已经移植的代码 添加的信息将会在makemenuconfig的菜单中出现 2020 2 10 第17页 二 Linux内核移植 arch arm boot Makefile文件解压缩器从这里调用内核 ifeq CONFIG ARCH xxx y ZTEXTADDR 0 xXXXX8000EndifZTEXTADDR 解压缩器的起始地址 需要根据硬件进行设定 2020 2 10 第18页 二 Linux内核移植 arch arm boot head xxx S新增该文件 初始化处理器 编写这段代码需要非常熟悉处理器 源代码参考内核 2020 2 10 第19页 二 Linux内核移植 arch arm boot compressd Makefile文件增加head xxx S的编译 ifeq CONFIG ARCH xxx y OBJS head xxx oendif 2020 2 10 第20页 二 Linux内核移植 arch arm kernel Makefile文件增加处理器和其它功能支持 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 2020 2 10 第21页 二 Linux内核移植 arch arm kernel debug armv S entry armv S setup c增加代码 对芯片进行初始化和中断处理 以及体系结构相关初始化 arch arm mm mm armv c和平台相关的内存管理 2020 2 10 第22页 二 Linux内核移植 其它目录如 arch arm mach xxx其它文件和代码 请参考现成的移植 driver目录板级移植时 一些必要的驱动程序如以太网等 2020 2 10 第23页 三 Linux内核编译 需要正确安装交叉编译器如arm linux gcc相关命令makemenuconfig 菜单界面makedep 依赖关系makezImage 得到内核makemrproper 干净的源码makedistclean 清除文件 2020 2 10 第24页 三 Linux内核编译 进入配置菜单 界面makeconfig 文本界面makemenuconfig 菜单界面 makexconfig 图形界面常用makemenuconfig命令进行 进入Linux内核源代码目录 执行该命令 得到Linux内核配置主界面 2020 2 10 第25页 三 Linux内核编译 对各项进行配置 包括系统类型 存储器 网络等 可以装载某开发板的默认配置 如MagicARM2410默认配置文件为ZY2410 x 2020 2 10 第26页 三 Linux内核编译 装载默认配置后 可修改或者不修改 配置完毕选择退出并保存 2020 2 10 第27页 三 Linux内核编译 配置完毕 需要先建立依赖关系 makedep如果没有错误 即可编译内核 makezImage如果编译无错 在arch arm boot目录下将生成内核文件zImage 2020 2 10 第28页 三 Linux内核编译 如果配置中有编译为模块的 需要 makemodulesmakemodules install如果有错 请进行排错后再次编译 重新编译之前 可使用makemrproper命令得到干净的源代码或者使用makedistclean清除以前编译产生的文件 然后才重新进行 2020 2 10 第29页

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值