第11讲-嵌入式Linux开发环境的搭建_第1页
第11讲-嵌入式Linux开发环境的搭建_第2页
第11讲-嵌入式Linux开发环境的搭建_第3页
第11讲-嵌入式Linux开发环境的搭建_第4页
第11讲-嵌入式Linux开发环境的搭建_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章嵌入式Linux开发环境的搭建目标掌握嵌入式交叉编译环境的搭建学会配置Linux下的minicom和windows下的超级终端学会编译Linux内核一、嵌入式交叉编译环境的搭建交叉编译:就是在一个平台上生成可以在另一个平台上执行的代码。编译最主要的工作就是将程序转化成运行该程序的cpu所能识别的机器代码。交叉编译器完整的安装一般涉及到多个软件的安装,包括binutils、gcc、glibc等软件;下载地址:ftp:///pub/交叉编译环境的建立cross-2.95.3.tar.bz2适用于Linux2.4内核:///适用于Linux2.6内核:///交叉编译环境的建立安装步骤:〔1〕下载放到Windows下的任意盘中〔C盘〕〔2〕重启机器转到Linux下,并用普通用户身份登录。〔3〕翻开“终端〞,切换到超级用户模式下。su-root〔4〕查看所在的Windows下对应的分区的格式,并记下其文件设备名称,如“/dev/hdsa1〞等;fdisk–l〔5〕使用mkdir命令,在/mnt新建子目录作为挂载点Mkdir/mnt/windows〔6〕挂载Windows相应的分区mount–tvfat/dev/had*/mnt/windows交叉编译环境的建立〔7〕进入挂载目录,查看是否确实挂载上。cd/mnt/windowsls(8)在/usr/local下建一名为arm的目录mkdir/usr/local/arm交叉编译环境的建立(9)将复制到刚刚新建立的目录中。cp/mnt/windows/arm-linux-gcc-3.3.2.tar.bz2/usr/local/arm(10)将当前工作目录转到“/usr/local/arm〞下cd/usr/local/arm(11)解压缩该软件tar–jxvf交叉编译环境的建立(12)将此目录下的/bin目录添加到环境变量中去。exportPATH=/usr/local/arm/3.3.2/bin:$PATH(13)查看该路径是否已经添加到环境变量中。echo$PATH交叉编译环境的建立二、超级终端和Minicom配置及使用1、超级终端:〔1〕Windows下“开始〞->〞附件〞->〞通讯〞->〞超级终端〞,在“名称〞处可随意输入该连接的名称。〔2〕在“连接时使用〞的方式改为“COM1〞,即通过串口1

〔3〕设置串口连接参数。每块开发板的连接参数有可能会有差异,其中的具体数据在开发商提供的用户手册中有说明。比方:远峰的YF2410采用的波特率:115200,数据为8位,无奇偶校验位,停止位1,无硬件流;〔4〕根本配置完成,“单击〞确定,如果把开发板的串口线和PC机相连,在开发板上电后,就会显示超级终端的信息。2、Minicom从internet上得到一个LinuxKernel的软件包请写出将其编译安装的过程。

linux的内核编译

1.编译内核概述编译内核的原因:(1)新内核提供更好的硬件支持能力。新内核有某些特殊的优点,例如,对多处理器〔SMP〕更好的支持,或者是支持USB。新内核修正了一些BUG。(2)你自己定制的内核去除了多余的元素,因此它更快,更稳定。〔最后一个原因是最普遍的〕编译内核包含两大项内容,即配置内核和编译内核2。编译前的准备〔1〕了解自己系统的硬件配置情况,比方CPU的类型、主板芯片、显卡和声卡的型号等〔2〕首先需要将内核源码下载到/usr/src/目录下面,然后运行命令tarxzvf,解压内核,这时会建立Linux-2.4.23内核源代码树。〔如果你在安装系统的时候,已经安装了内核源代码,而且打算编译的是当前的内核源代码,那么不需要下载了。〕

linux的内核编译

3.编译内核第一步:配置内核

linux的内核编译

利用命令cd/usr/src/linux,进入linux内核源代码目录。一、在开始配置内核之前,首先需要通过下面的命令去除所有的临时文件、中间件和配置文件。对于一个刚从网上下载的内核来说,它肯定是干净的,这么做只会多此一举。但是这是一个良好习惯,而且不会有坏结果。命令:#makemrproper二、配置内核选项,比较常用的有:makemenuconfig一个文本模式、简单的菜单模式的配置界面。makexconfig基于Tcl/Tk的X图形配置界面。

linux的内核编译

linux的内核编译

Makemenuconfig配置界面三、根据自己的需要,进行各个选择和子选项的配置。对每一个内核选项,可以有三个选择:不包括〔N〕,build-in〔Y〕,和模块化支持〔M〕。内核的配置选项很多,这里就主要选项进行简要说明,使大家能根据自己的情况,进行内核定制。如果某些项把握不准,可以参考documentation/Configure.help文件,也可在为网络上搜索一些文章。

linux的内核编译

1.Loadablemodulesupport〔可加载模块支持〕其中“Enableloadablemodulesupport〞选项可让内核支持模块;“Moduleunloading〞选项可以让用户卸载不再使用的模块,如果不选的话用户将不能卸载任何模块;“Moduleversioningsupport〔EXPERIMENTAL〕〞选项允许用户可以使用其它版本内核中编译的模块,不过并不可靠,所以一般不选择它;“Automatickernelmoduleloading〞选项允许内核自动调用“modprobe〞命令来加载需要的模块。模块是一小段代码,编译后可在系统内核运行时被动态地参加内核,从而为内核增加一些特性或对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以缩小内核的体积。在运行时可以使用“modprobe〞命令把模块加载到内核中去〔在不需要时还可以卸载它〕。

linux的内核编译

2.Setversioninfomationonallsymbolsformodules〔CONFIG_MODVERSIONS〕是有关内核模块版本控制的选项。如果用户打算开发内核模块代码〔包括当前内核源码树中之外的任何模块代码〕,就开启这个设置。一般的用户可以关闭。

linux的内核编译

3.〔Pentium-III/Celeron〔Coppermine〕Processorfamily用来选择CPU类型。它允许内核使用高级处理器内部的特殊指令。当然,如果用户的CPU是80386,就没必要选择P4。但是如果实在不知该怎么选择,就选386。这时如果用户使用高级的CPU,内核的运行速度会比它应有的速度慢,但至少它能够运行。建议使用Help和/proc/cpuinfo获得更多的帮助。

linux的内核编译

4.HighMemorySupport〔CONFIG_NOHIGHMEM〕使内核支持大内存。通常情况下内核只支持1GB内存〔实际情况是896MB,它与vmalloc〔〕的实现有关,这超出了我们的讨论范围〕。如果用户的内存数量超过了896MB,请选择内核对4GB内存的支持,甚至64GB内存的支持。

linux的内核编译

5.Symmetricmulti-processingsupport〔CONFIG_SMP〕使内核支持多处理器。如果用户有多于一个CPU,那么一定要选这项。6.MaximumnumberofCPUs〔2-32〕用以选择处理器数量。对于单CPU用户来说,选多少都没有意义。

linux的内核编译

7.Generalsetup表示通用配置。这里可设置内核对虚拟内存的支持和为SystemV的进程提供通信机制;通过“Sysctlsupport〞选项可以动态地更改一些核心参数与变量,而不需要重新启动系统8.Filesystems〔文件系统〕这里的内容很多,建议在缺省的根底上进行修改。一般需要DOSFAT(FAT16、FAT32)、VFAT,EXT3、NTFS和ISO9660(标准光盘使用的文件系统)支持。

linux的内核编译

9.Powermanagementoptions(ACPI、APM)是高级电源管理。要注意ACPI与APM不能同时使用。如果同时配置了这两者,那么在系统启动时,假设发现一个可工作的ACPI设备,那么APM将被关闭,ACPI会被加载.如果想让Linux支持高级电源管理,例如软关机、系统休眠等,需要选择“PowerManagementsupport〞选项;“SoftwareSuspend〔EXPERIMENTAL〕〞选项可以挂起计算机〔类似WindowsXP中的休眠〕,这个功能不需要高级电源管理的支持;“Processor〞选项可让处理器在空闲时节省电能,应该选上;“ThermalZone〞选项在系统温度过高时,及时调整系统的工作状态,以保护CPU〔需要硬件的支持〕。

linux的内核编译

10.Busoptions〔PCI、PCMCIA、EISA、MCA和ISA〕用以设置系统总线。根据主板参数自己进行选择。针对PCI总线的是“PCIsupport〞选项,下面还有ISA和EISA子项,一般都是需要的;“Supportforhot-pluggabledevices〞选项是对热插拔设备的支持;“PCMCIA/CardBussupport〞选项支持PCMCIA。11.Executablefileformats表示可执行文件格式,一般全要选上

linux的内核编译

12.DeviceDrivers用来选择设备驱动程序。声卡、显卡、网卡和电视卡等驱动都在这里选择。其中“PlugandPlaysupport〞选项支持即插即用;“Blockdevices〞选项支持块设备;“SCSIdevicesupport〞选项支持SCSI设备;“Multi-devicesupport〔RAIDandLVM〕〞选项支持RAID和逻辑卷;“Networkingsupport〞选项支持网络,包括网络协议和网络设备,协议中肯定要“TCP/IP〞项,根据自己的网卡选择相应的设备;“USBSupport〞选项该项很重要,平常用的优盘就是一种USB设备

linux的内核编译

四、实质:执行了“make〞之后,系统会在include/linux目录下生成一个autoconf.h文件。例如,在配置内核选项时选择支持NTFS文件系统,并把它编译进了内核,那么在.config中就会生成“CONFIG_NTFS_FS=y〞这项,相应的在include/linux/autoconf.h中会生成“#defineCONFIG_NTFS_FS1〞这项。因此所有与NTFS文件系统相关的C源文件都会包含include/config/ntfs/fs.h这个头文件。

linux的内核编译

编译内核第二步:编译内核编译内核的软件环境是kbuild系统,它泛指构建一完整并能够运行的Linux内核所需要的一切资源。这些资源包括构建程序、脚本、中间件、配置文件和Makefile。依次输入下面命令,进行编译过程:makedep;makeclean;makebzImage;makeinstallmakemodules;makemodules_install

linux的内核编译

makedep:kbuild调用中间件scripts/mkdep来生成描述与相关核心文件形成依赖关系的.h文件〔绝大多数〕列表。这个列表保存在.depend中。用户即使不执行这一步,kbuild也会自动执行的。makeclean:這是去除先前编译产生的诸如.o目标文件等中间文件makebzImage:bzImage构建大内核镜像makeinstall:安装内核

linux的内核编译

makemodules:编译所有被配置为模块的内核组件:makemodules_install:把所有编译好的内核模块按照功能拷贝到目录下。

linux的内核编译

启动新的内核配置内核和编译内核两个步骤完成之后,只是得到了新的bzImage文件、initrd-2.6.0.img和System.map文件。为了让新的内核发挥作用,必须采取一定的措施,以便让下次计算机启动linux系统的时候,可以使用新的内核。当然,可以覆盖掉现有的旧的内核,但是为了保证系统的稳定性,一般要保存旧的内核。一般这个工作是由bootloader完成的。

linux的内核启动

利用lilo需要修改lilo的配置文件,lilo.conf文件将看起来如下:boot=/dev/hdadelay=20vga=normalroot=/dev/hda1read-onlyimage=/boot/vmlinuz1label=linuximage=/boot/vmlinuz2label=newlinux然后运行lilo命令就可以了。

linux的内核启动

利用grub需要修改grub的配置文件。根据发行版的不同,通常GRUB配置文件会在/etc/grub.conf、/boot/grub/menu.lst或/boot/grub/grub.conf三个地方。配置完成,重新启动。

linux的内核编译

linux的内核启动

内核源代码的各个目录的功能介绍1.Documentation这个目录下面没有内核代码,只有一套有用的文档。但是这些文档的质量不一。有一局部内核文档,例如文件系统,在该目录下有相当优秀而且相当完整的文档;而另外一局部内核,例如进程调度,那么根本就没有文档。但是在这里你可以不时地发现自己所最需要的东西。

linux的内核编译

内核源代码的各个目录的功能介绍2.archarch目录下的所有子目录中都是体系结构相关的代码。每个体系结构特有的子目录下都又至少包含三个子目录:kernel,存放支持体系结构特有的诸如信号处理和SMP之类特征的实现;

lib,存放高速的体系结构特有的诸如strlen和memcpy之类的通用函数的实现;

mm,存放体系结构特有的内存管理程序的实现。

linux的内核编译

内核源代码的各个目录的功能介绍3.drivers这个目录是内核中非常大的一块。实际上,drivers目录下包含的代码占整个内核发行版本代码的一半以上。它包括显卡、网卡、SCSI适配器、软盘驱动器、PCI设备和其他任何你可以说出的Linux支持的外围设备的软件驱动程序。drivers目录下的一些子目录是平台特有的,例如,zorro子目录中包含有和Zorro总线通讯的代码。而Zorro总线只在Amiga中使用过,因此这些代码必然是Amiga特有的。而其他一些子目录,例如pci子目录,那么至少是局部平台无关的。

linux的内核编译

内核源代码的各个目录的功能介绍4.fsLinux支持的所有文件系统在fs目录下面都有一个对应的子目录。一个文件系统是存储设备和需要访问存储设备的进程之间的媒介。文件系统可能是本地的物理上可访问的存储设备,例如硬盘或CD-ROM驱动器;在这两种情况下将分别使用ext2和isofs文件系统。文件系统也可能是可以通过网络访问的存储设备,这种情况下使用的文件系统是NFS。

linux的内核编译

内核源代

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论