- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章的要求 第5章、嵌入式Linux开发环境的搭建 掌握嵌入式交叉编译环境的搭建 掌握嵌入式主机通信环境的配置 学会使用交叉编译工具链 学会配置Linux下的minicom和Windows下的超级终端 学会在Linux下和Windows下配置TFTP服务 学会配置NFS服务 学会编译Linux内核 学会搭建Linux的根文件系统 熟悉嵌入式Linux的内核相关代码的分布情况 掌握Bootloader的原理 了解U-Boot的代码结构和移植 本章的主要内容 5.1 嵌入式开发环境的搭建 5.2 U-Boot移植 5.3 实验内容——创建Linux内核和文件系统 5.1 嵌入式开发环境的搭建 嵌入式交叉编译环境的搭建 (1) 搭建交叉编译环境是嵌入式开发的第一步,也是必备一步。搭建交叉编译环境的方法很多,不同的体系结构、不同的操作内容甚至是不同版本的内核,都会用到不同的交叉编译器 。 交叉编译器完整的安装一般涉及到多个软件的安装(读者可以从/pub/下载),包括binutils、gcc、glibc等软件。其中,binutils主要用于生成一些辅助工具,如objdump、as、ld等;gcc是用来生成交叉编译器的,主要生成arm-linux-gcc交叉编译工具(应该说,生成此工具后已经搭建起了交叉编译环境,可以编译Linux内核了,但由于没有提供标准用户函数库,用户程序还无法编译);glibc主要是提供用户程序所使用的一些基本的函数库。这样,交叉编译环境就完全搭建起来了。 嵌入式交叉编译环境的搭建 (2) 第1步,取得Binutils、GCC、Glibc 源码。 第2步,配置并编译Binutils 取得我们所需要的汇编和连接程序。 第3步,配置并编译GCC 源码生成GCC 编译器。一般是C 编译器首先生成,然后以这个为基础在结合下一步生成的Glibc 的C 函数库,再编译生成其它编译器。 第4步,配置Glibc 并编译生成Glibc 的C 函数库。 第5步,再次配置和编译GCC 源码,生成其它语言的编译器,如C++编译器等。 超级终端的使用 minicom的使用(1) minicom的使用(2) minicom的使用(3) Linux下tftp服务配置(1) Linux下tftp服务配置(2) Windows下tftp服务(tftpd32)配置 串口下载 – 使用DNW工具 内核配置(1) 内核配置(2) 建立依赖关系 由于内核源码树中的大多数文件都与一些头文件有依赖关系,因此要顺利建立内核,内核源码树中的每个Makefile都必须知道这些依赖关系。建立依赖关系通常在第一次编译内核的时候(或者源码目录树的结构发生变化的时候)进行,它会在内核源码树中每个子目录产生一个“.depend”文件。运行“make dep”即可。在编译linux2.6版本的内核通常不需要这个过程,直接输入“make”即可。 创建内核镜像 建立内核可以使用“make”、“make zImage”或“make bzImage”,这里建立的为压缩的内核映像。通常在Linux中,内核映像分为压缩的内核映像和未压缩的内核映像。其中,压缩的内核映像通常名为zImage,位于“arch/$(ARCH)/boot”目录中。而未压缩的内核映像通常名为vmlinux,位于源码树的根目录中。 Linux内核源码目录结构 ? /include子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其他模块重建内核。 ? /init子目录包含了内核的初始化代码,这里的代码是内核工作的起始入口。 ? /arch子目录包含了所有处理器体系结构特定的内核代码。如:arm、i386、alpha。 ? /drivers子目录包含了内核中所有的设备驱动程序,如块设备和SCSI设备。 ? /fs子目录包含了所有的文件系统的代码,如:ext2,vfat等。 ? /net子目录包含了内核的网络相关代码。 ? /mm子目录包含了所有内存管理代码。 ? /ipc子目录包含了进程间通信代码。 ? /kernel子目录包含了内核核心代码。 为什么需要文件系统? 嵌入式文件系统 嵌入式Linux也支持多种文件系统。虽然在嵌入式中,由于资源受限的原因,它的文件系统和PC机Linux的文件系统有较大的区别,但是,它们的总体架构是一样的,都是采用目录树的结构。在嵌入式中常见的文件系统有cramfs、romfs、jffs、yaffs等 。 cramfs文件系统是一种经过压缩的、极为简单的只读文件系统,因此非常适合嵌入式系统。 busybox busybox是构造文件系统最常用的软件工具包,它被非常
文档评论(0)