第六章 Linux内核移植.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
实用操作系统概念 张惠娟 副教授 1.
基于ARM和linux的开发 华中科技大学 武汉创维特 2017/3/20.
在PHP和MYSQL中实现完美的中文显示
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
内核移植实例.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
Linux 切换、 创建和删除目录 系统管理 宁波市高校慕课联盟课程
配置编译内核.
Bootloader技术分析.
DM81X 视频采集处理 ——MCFW框架介绍 广州创龙电子科技有限公司
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
褚霸 核心系统数据库组 /11/15 Oprofile 系统层面的性能微调工具 褚霸 核心系统数据库组 /11/15.
第二讲 搭建Java Web开发环境 主讲人:孙娜
学习前的准备工作 讲师:burning.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
存储系统.
SVN服务器的搭建(Windows) 柳峰
网络常用常用命令 课件制作人:谢希仁.
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
SPI驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
嵌入式系统的Boot Loader技术 陈文智 浙江大学计算机学院 2009年5月.
第8章 构建嵌入式Linux系统.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
按键驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
ENS 10.1安装配置指南 王俊涛 | SE.
(第2版).
Linux核心編譯與模組管理 2013/01/19.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
Windows 7 的系统设置.
YMSM D-PACK 安装手册 作成者:D-PACK维护组(YMSLx) 作成日:
Gzip编译及调试 曹益华
三:基于Eclipse的集成开发环境搭建与使用
Author:BobZhang Copy Right 2007
Visual Studio 2010简捷入门.
第二章 登录UNIX操作系统.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
Web安全基础教程
标准配色方案 背景 文本和线条 阴影 强调色 主色一 主色二 主色三 主色四 推荐应用顺序. 标准配色方案 背景 文本和线条 阴影 强调色 主色一 主色二 主色三 主色四 推荐应用顺序.
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
Platform Builder使用介绍 WINCE系统应用开发流程说明 ACTION RDC 杨 涛 2005.Dec.3th
项目二:HTML语言基础.
ES 索引入门
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
VRP教程 2011.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
24 or 1024? PWN Jawbone Up24 手环.
本节内容 如何调试驱动程序? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
培训课件 AB 变频器的接线、操作及参数的备份 设备动力科.
JUDDI安装手册.
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

第六章 Linux内核移植

主要内容 6.1 移植的概念 6.2 Linux内核结构 6.3 Linux内核选项配置分析 6.4 Linux内核编译 6.5 U-Boot引导linux内核启动

6.1 移植的概念 如果一个系统可以在不同硬件平台上运行,那么这个系统就是可移植的,使某个平台的代码运行在其他平台上的过程就叫做移植 Linux系统内核源码中有arch目录,其中包含了不同平台的代码,该目录是为多平台设计并使用的,与体系结构相关的代码都放在arch/<architecture>/和include/asm-< architecture >/目录中, architecture是linux支持的体系结构的简称.ARM体系结构的相关代码放在arch/arm和include/asm-arm目录中. 嵌入式系统的硬件可裁剪性决定了系统移植必须根据硬件的不同对内核代码进行修改移植,才能使系统能在相应的硬件平台上运行.

6.2 Linux内核结构 在移植linux操作系统前,需先认识一下linux的内核结构.linux内核主要由五个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。 Linux内核源码是usr/src/linux-内核版本目录中。包括驱动程序在内有数百兆之多。 /arch 包含了所有硬件结构特定的内核代码 /drivers 包含了内核中所有的设备驱动程序 /fs 包含了所有的文件系统的代码,如ext3等 /include包含了建立内核代码时所需的大部分库文件。

Linux内核结构 /init包含了内核 的初始代码,内核从此处工作 /ipc包含了进程间通信代码 /kernel包含了主内核代码 /mm包含了所有内存管理代码 /net包含了和网络有关的代码 /crypto包含了加密算法 /security包含了安全相关的代码

Linux的下载工具 Linux下载工具如gftp,kget,wget等,其中wget比较好用,它支持FTP和HTTP,还支持断点续传,不过是命令行的方式. 例:下载源码包 wget –c http://kernel.org/pub/linux/kernel/v2.6/X.tar.bz2 wget http://kernel.org/pub/linux/kernel/v2.6/X.tar.bz2.sign 下载完成后,可先验证一下电子签名: gpg –verify linux-x.tar.bz2.sign

linux内核配置方式

6.3 Linux内核选项配置 本节对linux内核选项配置进行相关说明,不清楚的地方还可以参考菜单中的帮助信息,所有菜单的帮助 信息都在Kconfig文件中定义。 内核选项中,带有”->”前缀的选项表示当前主菜单的子项,带有“-->”前缀的选项表示是当前主菜单的二级子项。 每一个选项前面都有一个”[ ]”或”< >”,其含义如下: [ ] 表示该选项有两种选择方式: [*]直接编译进内核 [ ]不编译 < >表示该项选项有三种选择方式: <*>直接编译进内核 <M>编译成模块形式,但不编译进内核 < >不编译

Kconfig配置文件 Arch/$(ARCH)/Kconfig是主文件,跟体系结构有关,主Kconfig调用其他目录的Kconfig文件,其他的文件又调用各级子目录的配置文件,成树状结构. 内核配置菜单项按树状结构组织,主菜单下有子菜单,子菜单还有子菜单或配置选项,每个选项可以有依赖关系,这些依赖关系用于确定它是否显示,只有被依赖的父项被选中,子项才会显示.

Kconfig的特点和语法 语法 config <symbol> <config options> 类型定义 依赖性定义 帮助定义

(1)菜单项 config AEABI bool "Use the ARM EABI to compile the kernel“ depends on 。。。 default "" help 。。。。。。。。。 每一行开头用关键字”config”,后面可跟多行。后面的几行定义这个配置选项的属性,属性包括配置选项的类型、选择提示、依赖关系、帮助文档和缺省值.

(2)菜单属性 每个配置选项必须有类型定义,包括bool、tristate、string、hex、int共5种。其中有两种基本类型:tristate、string。每种类型定义可以有一个选择提示。 bool布尔类型; tristate三态:内建、模块、移除; string字符串; hex十六进制; int整型 详见: 配置编译内核-华清远见 P14

Kbuild执行编译过程 内核配置,生成.config文件 保存内核版本信息到include/linux/version.h 创建链接符号include/asm,链接include/asm-$(ARCH)目录 在arch/ $(ARCH)/makefile中指定附加依赖条件 递归遍历各级子目录并且编译所有的目标 链接所有的目标文件,生成顶层目录的vmlinux。链接的第一个目标文件在head-y列表中,是在arch/ $(ARCH)/makefile中定义的 后期处理,编译生成最终的引导映像zImage

Kbuild Makefile中的定义 Obj-y+= XXX.o 静态链接目标文件 Obj-m+=XXX.o 编译成可加载模块 Lib-y:=XXX.o 编译成库,组合到相应目录的built-in.o中 Lib-m:=XXX.o 编译成库,包含到相应目录的lib.a中

Makefile中列出要遍历的子目录 $(head-y) 列出链接到vmlinux的起始位置的目标文件 $(libs-y)列出lib.a的库文件所在的目录 剩余列出的目录都是built-in.o文件所在的目录 链接顺序:$(head-y)、 $(init-y) 、 $(core-y) 、 $(libs-y) 、 $(drivers-y) 、 $(net-y)

Kconfig

编译链接内核映像 一般情况下,先编译链接生成顶层目录的 vmlinux,再把vmlinux精简压缩成piggy.gz,然后加上自引导程序链接成arch/$(ARCH)/boot/zImage,这样就得到一个具备自启动能力的linux内核映像

6.4 linux 2.6内核移植 源代码修改: 1 修改顶层目录的Makefile中的平台体系结构和交叉编译器 2 修改源代码中的相关驱动程序,必要处添加内核配置选项 3 内核选项配置 4 make编译内核,生成zImage 5 u-boot工具对zImage进行处理,生成uImage 6 将uImage放入宿主机/tftpboot 7 u-boot命令行执行下载,并跳转到下载地址,运行内核

6.5 U-Boot引导linux内核启动 利用u-boot/tools/mkimage工具为内核加上u-boot格式的帧头 调试阶段:bootcmd tftp a0007000 uImage;bootm a0007000 部署阶段:bootm 烧写地址