




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统教案 云南师范大学信息学院 2 1 3 2 4 5 Linux内核移植 gcc编译器的使用 6 7 第八章嵌入式Linux应用程序设计 Makefile文件和Make命令 Linux启动过程 配置文件 Linux内核移植中存在的问题 Linux操作系统的移植 3 gcc编译器的使用 最初gcc的意思是GNUCCompiler 即只作为C程序语言的编译器 现在 经过多年的发展 gcc已经变成了GNUCompilerCollection 即GNU编译器家族的意思 除支持C语言以外 还支持Ada语言 C 语言 Java语言等多种语言 gcc是GNU组织提供的免费C编译器 大多数Linux版本都默认安装了这种编译器 4 gcc编译器的用法 Gcc的使用格式为 gcc option file 其中option是以 开始的各种选项 file是要编译的文件名 在使用gcc进行编译时 必须要给出必要的选项和文件名 Gcc的整个编译过程分为预处理 编译 汇编和链接四个过程 5 gcc编译器的用法 gcc编译器的常用选项有 o 表示要求编译器生成指定文件名的可执行文件 c 表示只要求编译器进行编译 而不要进行链接 生成以源文件的文件名命名但把其后缀由 c或 cc变成 o的目标文件 g 要求编译器在编译的时候提供以后对程序进行调试的信息 E 表示编译器对源文件只进行预处理就停止 而不做编译 汇编和链接 S 表示编译器只进行编译 而不做汇编和链接 O 是编译器对程序提供的编译优化选项 以提高执行效率 Wall 指定产生全部的警告信息 6 gcc编译器的用法 例 给出以下Hello源程序voidmain printf Hellotheworld n 要编译这个程序 只需输入以下命令即可完成 gcc ohellohello c其中gcc表示用gcc来编译源程序 o选项表示要求编译器生成可执行文件的文件名 hello c是要编译的源程序文件 7 Makefile文件和Make命令 Linux内核的配置系统由以下三个部分组成 Makefile 用于定义Linux内核的编译规则 配置文件 config in 给用户提供配置选择的功能 配置工具 包括配置命令解释器和配置用户界面等 其中 Makefile文件描述了目标文件之间的依赖关系 以及指定编译过程中使用的工具 即根据配置的情况 构造出需要编译的源文件列表 然后分别编译 并把目标代码链接到一起 最终形成Linux内核的二进制文件 Makefile带来的好处就是自动化编译 批处理 在需要编译时只需要一个Make命令即可自动完成 极大的提高了软件开发的效率 8 Makefile文件和Make命令 在Linux内核中 与Makefile直接相关的文件有 Makefile 顶层Makefile 是整个内核配置 编译的总体控制文件 Config 内核配置文件 包含由用户选择的配置选项 用来存放内核配置后的结果 Arch Makefile 位于各CPU体系目录下的Makefile 各子目录下的Makefile 负责所在子目录下源代码的管理 Rules make 规则文件 被所有的Makefile使用 顶层Makefile有两个主要任务 一是产生vmlinux文件 二是产生内核模块 module 9 Makefile文件和Make命令 Makefile中的变量顶层Makefile定义并向环境中输出了很多变量 为各个子目录下的Makefile传递一些信息 具体常用变量如下 版本信息 用来定义当前内核的版本 CPU体系结构 用于定义目标CPU的体系结构 路径信息 用于定义内核等源代码所在的目录 内核组成信息 包括头文件 内核文件等 编译信息 用于定义交叉编译的环境 配置变量config 用来说明用户配置的结果 10 Makefile文件和Make命令 Rules make变量Rules make定义了所有Makefile共用的编译规则 Linux把所有共用的编译规则统一放置到Rules make中 并在各自的Makefile中通过语句 includeRules make 包含Rules make 这样可避免多个Makefile中重复这些规则 子目录Makefile用来控制本级目录下源代码的编译规则 MakeMake是一个解释Makefile中指令的命令工具 Make命令执行时 需要一个Makefile文件 以告诉make命令怎么去编译和链接程序 11 配置文件 除了Makefile的编写 另外一个重要的工作就是把新功能加入到Linux的配置选项中 并提供此项功能的说明 让用户有机会选择此项功能 这些工作需要在config in文件中用配置语言编写配置脚本来实现 在Linux内核中 配置命令有多种方式 Makeconfig 配置命令 scripts configure 解释脚本 Makeoldconfigscripts configureMakemenuconfigscripts menuconfigMakexconfigscripts tkparse以字符界面配置Makeconfig为例 其配置过程为顶层Makefile调用scripts configure按照arch arm config in来进行配置 命令执行完后产生配置文件 config 其中保存着有关配置信息 12 配置文件 配置语言顶层菜单mainmenu name prompt prompt 用于指定本CONFIG语言文件顶层的名字 其中 prompt 是一串提示符 询问语句Bool prompt symbol hex prompt symbol word int prompt symbol word string prompt symbol word tristate prompt symbol 询问语句首先显示一串提示符 prompt 等待用户输入 并把输入的结果赋给 symbol 所代表的配置变量 13 配置文件 定义语句define bool symbol word 定义语句显式的给配置变量 symbol 赋值 word 依赖语句dep bool prompt symbol dep 依赖语句与询问语句一样 也是定义新的变量 不同的是 symbol 的取值将依赖于配置变量列表 dep 选择语句choice prompt work word 选择语句主要用于给出一串选择列表 以供用户选择 If语句菜单块Source语句 14 启动加载程序bootloader SRAM SDRAM等存储设备属于易失性的存储器 掉电以后其中的内容会全部丢失 所以必须把操作系统的内核镜像存放在Flash等不易失性的存储介质上 而操作系统在运行时 需要动态的创建一些如数据段 堆栈 页表 针对使用虚拟地址的操作系统 等内容 所以需要在RAM中运行操作系统 因此 这就需要一个引导程序把操作系统的内核镜像从Flash存储器拷贝到RAM中 然后再从RAM中执行操作系统的内核 Bootloader就是可以完成这样一种功能的程序 15 启动加载程序bootloader 从本质上来讲 bootloader不属于操作系统内核 它采用汇编语言编写 因此针对不同的CPU体系结构 这一部分代码不具有可移植性 在移植操作系统时 这部分代码必须加以改写 具体来讲 bootloader在系统启动时主要完成以下几项工作 将操作系统内核从Flash拷贝到SDRAM中 如果是压缩格式的内核 还要将之解压缩 改写系统的memorymap 原先flash起始地址映射为0地址 这时需要将RAM的起始地址映射为0 设置堆栈指针并将bss段清零 将来执行C语言程序和调用子函数时要用到 改变pc值 使得CPU开始执行真正的操作系统内核 16 运行操作系统内核 bootloader程序执行完上述的各项工作后 通过一条跳转指令 转而执行init目录下C语言源文件main c中的函数start kernel 因为在此之前bootloader已经创建好一个初始化环境 C函数可以开始执行了 17 Linux操作系统移植 在交叉编译环境和BootLoader建立后 下面的工作就是对操作系统的移植 对于系统移植 Linux系统实际上是由两个比较独立的部分组成 即内核部分和系统部分 具体过程如下 系统启动时 加载程序 BootLoader 首先将Linux的部分内核调入内存 并将控制权交给内存中Linux内核的第一行代码 加载程序的工作就算完成了 然后Linux内核再将剩余的部分全部加载到内存 初始化所有的设备 在内存中建立好所需的数据结构 这部分工作属于内核部分 内核加载设备并启动init守护进程 init守护进程再根据配置文件加载文件系统 配置网络 服务进程等 这部分工作属于系统部分 即内核部分的工作是初始化并控制大部分硬件设备 为内存管理 进程管理等工作作好准备 而系统部分的工作是加载必需的设备 配置各种环境以便用户可以使用整个系统 18 Linux内核移植 Linux内核的移植可以分为板级移植和片级移植 对于Linux发行版本中已经支持的CPU通常只需要针对板级硬件进行适当的修改即可 这种移植叫做板级移植 而对于Linux发行版本中没有支持的CPU则需要添加相应CPU的内核移植 这种移植叫做片级移植 片级移植相对板级移植来说要复杂许多 本系统采用的Linux发行版本中已经包含S3C2410XARM920T处理器的移植包 因此 只需要在其上进行Linux板级移植的基本过程和方法 19 Linux内核的目录结构 20 Linux内核的arch目录 与架构和平台相关的源代码都放在arch目录下 对于ARM的Linux 包含于arch目录下的arm子目录中 21 Linux内核的arch目录 当使用压缩核心时 boot目录下包含压缩和解压核心的源代码和Makefile文件 kernel目录的entry armv S中为未压缩内核的起始执行文件 内核从其第一条指令处执行 vmlinux lds文件为核心的连接脚本文件 压缩核心解压后必须解压缩到该文件指定的地址 22 Linux内核移植 配置内核 编译内核 下载 运行 调试内核 23 配置Linux内核 makeconfig makemenuconfig makexconfig 24 makeconfig 25 makemenuconfig 26 makexconfig 27 Linux常用配置选项 系统及其存储器配置 网络支持 显示器支持 触摸屏支持 28 系统及其存储器配置 在 SystemType 菜单中中进行配置 选择系统类型处理器型号 选择处理器其它特性 USB支持等 29 网络支持 在 Networkingoptions 以及 Networkdevicesupport 中进行配置 选择支持TCP IP协议 30 网络支持 在 Networkdevicesupport 配置中 添加选项 Networkdevicesupport 并在 Ethernet 10or100Mbit 中选择 OtherISAcards 如下图所示选择NE2000 NE1000support 采用RTL8019网卡芯片 为NE2000兼容网卡芯片 因此 选择该网卡 31 显示器支持 在 Characterdevices 以及 Consoledrivers 中进行配置 在 Characterdevices 配置中 添加选项 Virtualterminal 配置 如下图所示 Virtualterminal支持 32 显示器支持 在 Consoledrivers 中添加 SupportFramebufferdevices 配置 采用256色STN显示器 因此必须选择8bpp支持 33 触摸屏支持 在 Characterdevices 的 SupportS3C2410TouchScreen 子菜单中进行配置 选择s3c2410触摸屏支持 34 编译Linux内核 建立依赖关系 makedep 编译内核 make编译内核makezImage编译压缩核心 zImage 编译生成地Linux映像文件zImage通常保存在arch arm boot 目录下 创建内核模块 编译Linux内核大体上需要三个步骤 即建立内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年施工员专业基础知识全真模拟试卷及答案(共七套)
- 精明宝宝测试题及答案
- 新型纳米材料的合成挑战试题及答案
- 安全工程师考试中关于事故处理的求解考题试题及答案
- 有机合成反应类型试题及答案
- 黄石社区面试真题及答案
- 2025年公务员考试题目及答案
- 家具设计师的创新思维与案例分析试题及答案
- 小学教育教学反思对教师发展的重要性试题及答案
- 中药现代化进程中的国际市场中药产品价格策略研究报告
- 幼儿园音乐教育活动设计与实施课件
- 石槽村洗煤厂职业健康管理及职业病防治知识培训考试试卷
- 急救技术气道开放技术课件
- 如何申报纵向课题
- 在线考试系统的设计与实现论文
- 个性化家庭医生签约服务包
- GA∕T 1622-2019 法庭科学 生物检材中沙蚕毒素、杀虫双、杀虫环和杀螟丹检验 气相色谱、气相色谱-质谱和液相色谱-质谱法
- 国际商事仲裁法
- 区域电力系统规划设计开题报告
- 居民企业资产股权划转特殊性税务处理申报表
- 高层建筑无地下室倾覆及滑移计算
评论
0/150
提交评论