第四章 嵌入式Linux开发环境的搭建.ppt_第1页
第四章 嵌入式Linux开发环境的搭建.ppt_第2页
第四章 嵌入式Linux开发环境的搭建.ppt_第3页
第四章 嵌入式Linux开发环境的搭建.ppt_第4页
第四章 嵌入式Linux开发环境的搭建.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 嵌入式Linux开发环境的搭建,char *f()char a5;char b5;a0=a;a1=b;a2=c;a3=d;a4=e;strcpy(b,a);return b;请问:一:该函数中用a作为一个字符串是否存在问题? 二、该函数返回的b是否可用,为什么?,x value is 0 x12345566 xAddress is 0 x12ff7c,#include int main(int argc, char * argv) unsigned int x = 12345566; printf(x value is 0 x%dn, x); printf(xAddress is 0

2、x%xn, ,x value is 0 x123456 xAddress is 0 x12ff7c xsize is 4,#include stdio.h“ int main(int argc, char * argv) unsigned int x=123456; printf(x value is 0 x%dn, x); printf(xAddress is 0 x%xn, ,本章目标,掌握嵌入式交叉编译环境的搭建 学会配置Linux下的minicom和windows下的超级终端 学会在Linux下和Windows下配置TFTP服务 学会配置NFS服务 学会编译Linux内核 掌握Boot

3、loader的原理,一、嵌入式交叉编译环境的搭建,交叉编译:就是在一个平台上生成可以在另一个平台上执行的代码。 编译最主要的工作就是将程序转化成运行该程序的cpu所能识别的机器代码。 交叉编译器完整的安装一般涉及到多个软件的安装,包括binutils、gcc、glibc等软件; 下载地址:/pub/,交叉编译环境的建立,cross-2.95.3.tar.bz2 适用于Linux 2.4内核 /download/projects/toolchain/archive/ arm-linux-gcc-3.3.2.tar.bz

4、2 适用于Linux2.6内核 /download/projects/toolchain/,交叉编译环境的建立,安装步骤: (1)下载arm-linux-gcc-3.3.2.tar.bz2放到Windows下的任意盘中(C盘) (2)重启及其转到Linux下,并用普通用户身份登录。 (3)打开“终端”,切换到超级用户模式下。 su - root,(4)查看arm-linux-gcc-3.3.2.tar.bz2所在的Windows下对应的分区的格式,并记下其文件设备名称,如“/dev/hdsa1”等; fdisk l (5)使用mkdir命令,在/m

5、nt新建子目录作为挂载点 Mkdir /mnt/windows (6)挂载 Windows相应的分区 mount t vfat /dev/had* /mnt/windows,交叉编译环境的建立,注意:由于ntfs格式在Linux下是不安全的,只能读,不能写,因此最好把文件放到fat32格式的文件系统中 (7)进入挂载目录,查看是否确实挂载上。 cd /mnt/windows ls (8)在/usr/local下建一名为 arm的目录 mkdir /usr/local/arm,交叉编译环境的建立,(9) 将arm-linux-gcc-3.3.2.tar.bz2复制到刚刚新建立的目录中。 cp /

6、mnt/windows/ arm-linux-gcc-3.3.2.tar.bz2 /usr/local/arm (10)将当前工作目录转到 “/usr/local/arm”下 cd /usr/local/arm (11)解压缩该软件 tar jxvf arm-linux-gcc-3.3.2.tar.bz2,交叉编译环境的建立,(12) 将此目录下的/bin目录添加到环境变量中去。 export PATH =/usr/local/arm/3.3.2/bin:$PATH (13)查看该路径是否已经添加到环境变量中。 echo $PATH,交叉编译环境的建立,二、超级终端和Minicom配置及使用,

7、1、超级终端: (1)Windows下“开始”-”附件”-”通讯”-”超级终端”,在“名称”处可随意输入该连接的名称。,(2)在“连接时使用”的方式改为“COM1”,即通过串口1,(3)设置串口连接参数。每块开发板的连接参数有可能会有差异,其中的具体数据在开发商提供的用户手册中有说明。 比如:远峰的YF2410采用的波特率:115200,数据为8位,无奇偶校验位,停止位1,无硬件流;,(4)基本配置完成,“单击”确定,如果把开发板的串口线和PC机相连,在开发板上电后,就会显示超级终端的信息。,二、超级终端和Minicom配置及使用,三、 Linux下和Windows下配置TFTP服务,Tftp

8、协议是简单文件传输协议,可以看做是ftp协议的简化版 本,与ftp协议相比,它的最大区别在于没有用户管理功能。,Tftp分为客户端和服务器端两种,首先在宿主机上开启tftp服 务,设置好tftp的根目录内容,接着,在目标班上开启tftp客户端程序,目标板和宿主机用直连线相连后,就可以通过tftp 传输文件了。,tftp服务器的配置,(2)在安装光盘上找到tftp-server-0.32-4.i386.rpm,将其拷贝到/dev_home下,,(1)在普通用户文件夹下,创建目录dev_home,mkdir dev_home,cp tftp-server-0.32-4.i386.rpm /home

9、/arm/dev_home,(3)检查 tftp-server是否安装,rpm q tftp-server,(4)安装tftp-server-0.32-4.i386.rpm,rpm ivh tftp-server-0.32-4.i386.rpm,tftp服务器的配置,(6)备份配置文件,(5)建立tftp的主工作目录,rootlocalhost btools#mkdir /tftpboot,(7)修改配置文件,rootlocalhost btools#if -f /etc/xinetd.d/tftp then cp /etc/xinetd.d/tftp /etc/xinetd.d/tftp.o

10、ld fi,rootlocalhost btools#vi /etc/xinedt.d/tftp,tftp服务器的配置,(9)如果没有打开,则用下面的命令打开,(8)检查tftp服务是否打开,rootlocalhost btools#chkconfig -list,(10)重启服务,rootlocalhost btools#chkconfig tftp on,rootlocalhost btools# /etc/init.d/xinetd restart,rootlocalhost btools# netstat a |grep tftp,udp 0 0 *:tftp *:*,表示已经安装,从

11、internet上得到一个Linux Kernel的软件包linux-2.4-20.tz请写出将其编译安装的过程。,linux 的内核编译,1.编译内核概述 编译内核的原因: (1) 新内核提供更好的硬件支持能力。新内核有某些特殊的优点,例如,对多处理器(SMP)更好的支持, 或者是支持USB。新内核修正了一些BUG。 (2)你自己定制的内核去除了多余的元素,因此它更快,更稳定。(最后一个原因是最普遍的) 编译内核包含两大项内容,即配置内核和编译内核,2。编译前的准备 (1)了解自己系统的硬件配置情况,比如CPU的类型、主板芯片、显卡和声卡的型号等 (2)首先需要将内核源码下载到/usr/sr

12、c/目录下面, 然后运行命令tar xzvf linux-2.4.23.tar.gz,解压 内核,这时会建立Linux-2.4.23 内核源代码树。(如 果你在安装系统的时候,已经安装了内核源代码,而 且打算编译的是当前的内核源代码,则不需要下载 了。),linux 的内核编译,3.编译内核第一步:配置内核,linux 的内核编译,利用命令cd /usr/src/linux,进入linux内核源代码目录。 一、在开始配置内核之前,首先需要通过下面的命 令清除所有的临时文件、中间件和配置文件。对于一 个刚从网上下载的内核来说,它肯定是干净的,这么 做只会多此一举。但是这是一个良好习惯,而且不会

13、有坏结果。 命令:#make mrproper,二、配置内核选项,比较常用的有: make menuconfig 一个文本模式、简单的菜单模式 的配置界面。 make xconfig 基于Tcl/Tk的X图形配置界面。,linux 的内核编译,linux 的内核编译,Make menuconfig 配置界面,三、根据自己的需要,进行各个选择和子选项的配置。对每一个内核选项,可以有三个选择:不包括(N),build-in(Y),和模块化支持(M)。 内核的配置选项很多,这里就主要选项进行简要说明,使大家能根据自己的情况,进行内核定制。如果某些项把握不准, 可以参考documentation/Co

14、nfigure.help 文件,也可在为网络上搜索一些文章。,linux 的内核编译,1Loadable module support(可加载模块支持) 其中“Enable loadable module support”选项可让内核支持模块; “Module unloading”选项可以让用户卸载不再使用的模块,如果不选的话用户将不能卸载任何模块;“ Module versioning support(EXPERIMENTAL)”选项允许用户可以使用其它版本内核中编译的模块,不过并不可靠,所以一般不选择它; “Automatic kernel module loading”选项允许内核自动调

15、用“modprobe”命令来加载需要的模块。模块是一小段代码,编译后可在系统内核运行时被动态地加入内核,从而为内核增加一些特性或对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以缩小内核的体积。在运行时可以使用“modprobe”命令把模块加载到内核中去(在不需要时还可以卸载它)。,linux 的内核编译,2.Set version infomation on all symbols formodules(CONFIG_MODVERSIONS) 是有关内核模块版本控制的选项。如果用户打算开发内核模块代码(包括当前内核源码树中之外的任何模块代码),就开启这个设置。一般的用户可以关闭

16、。,linux 的内核编译,3.( Pentium-III/Celeron ( Coppermine )Processor family 用来选择CPU类型。它允许内核使用高级处理器内部的特殊指令。当然,如果用户的CPU是80386,就没 必要选择P4。但是如果实在不知该怎么选择,就选386。 这时如果用户使用高级的CPU,内核的运行速度会比它 应有的速度慢,但至少它能够运行。建议使用Help和 /proc/cpuinfo获得更多的帮助。,linux 的内核编译,4High Memory Support (CONFIG_NOHIGHMEM) 使内核支持大内存。通常情况下内核只支持1GB 内存(

17、实际情况是896MB,它与vmalloc()的实现有关,这超出了我们的讨论范围)。如果用户的内存数量超过了896MB,请选择内核对4GB 内存的支持,甚至64GB内存的支持。,linux 的内核编译,5 Symmetric multi-processing support (CONFIG_SMP) 使内核支持多处理器。如果用户有多于一个CPU, 那么一定要选这项。 6Maximum number of CPUs(2-32) 用以选择处理器数量。对于单CPU用户来说,选多 少都没有意义。,linux 的内核编译,7General setup 表示通用配置。这里可设置内核对虚拟内存的支持和为Sys

18、tem V 的进程提供通信机制;通过“Sysctl support”选项可以动态地更改一些核心参数与变量,而不需要重新启动系统 8File systems(文件系统) 这里的内容很多,建议在缺省的基础上进行修改。 一般需要DOS FAT(FAT16、FAT32)、VFAT,EXT3、NTFS和ISO9660(标准光盘使用的文件系统)支持。,linux 的内核编译,9Power management options (ACPI、APM)是高级电源管理。要注意ACPI与APM不能同时使用。如果同时配置了这两者,那么在系统启动时,若发现一个可工作的ACPI设备,那么APM将被关闭,ACPI会被加载.

19、 如果想让Linux支持高级电源管理,例如软关机、系统休眠等,需要选择“Power Management support”选项;“Software Suspend(EXPERIMENTAL)”选项可以挂起计算机(类似Windows XP 中的休眠),这个功能不需要高级电源管理的支持;“Processor”选项可让处理器在空闲时节省电能,应该选上;“ThermalZone”选项在系统温度过高时,及时调整系统的工作状态,以保护CPU(需要硬件的支持)。,linux 的内核编译,10. Bus options(PCI、PCMCIA、EISA、MCA和ISA)用以设置系统总线。根据主板参数自己进行选择

20、。针对PCI总线的是“PCI support”选项,下面还有ISA和EISA 子项,一般都是需要的;“Support forhot-pluggable devices”选项是对热插拔设备的支持;“PCMCIA/CardBus support”选项支持PCMCIA。 11Executable file formats表示可执行文件格 式,一般全要选上,linux 的内核编译,12Device Drivers用来选择设备驱动程序。声卡、显卡、网卡和电视卡等驱动都在这里选择。 其中“Plug and Play support”选项支持即插即用;“Block devices”选项支持块设备; “SCS

21、I device support”选项支持SCSI 设备; “Multi-device support(RAID and LVM)”选项支持RAID和逻辑卷; “Networking support”选项支持网络,包括网络协议和网络设备,协议中肯定要“TCP/IP”项,根据自己的网卡选择相应的设备; “USB Support”选项该项很重要,平常用的优盘就是一种USB设备,linux 的内核编译,四、实质:执行了“make ”之后,系统会在include/linux目录下生成一个autoconf.h文件。例 如,在配置内核选项时选择支持NTFS文件系统,并把它编译进了内核,那么在.config

22、 中就会生成 “ CONFIG_NTFS_FS=y ” 这项, 相应的在include/linux/autoconf.h 中会生成“ #define CONFIG_NTFS_FS 1”这项。因此所有与NTFS文件系统相关的C源文件都会包含include/config/ntfs/fs.h这个头文件。,linux 的内核编译,编译内核第二步:编译内核 编译内核的软件环境是kbuild系统,它泛指构建一完整并能够运行的Linux内核所需要的一切资源。这些资源包括构建程序、脚本、中间件、配置文件和Makefile。 依次输入下面命令,进行编译过程: make dep;make clean; make

23、bzImage; make install make modules; make modules_install,linux 的内核编译,make dep:kbuild 调用中间件scripts/mkdep 来生成描述与相关核心文件形成依赖关系的.h文件(绝大多数)列表。这个列表保存在.depend中。用户即使不执行这一步,kbuild也会自动执行的。 make clean: 這是清除先前编译产生的诸如.o目标文件等中间文件 make bzImage :bzImage 构建大内核镜像 make install:安装内核,linux 的内核编译,make modules:编译所有被配置为模块的内

24、核组 件: make modules_install:把所有编译好的内核模块按照功能拷贝到/lib/modules/2.4.23/目录下。,linux 的内核编译,启动新的内核 配置内核和编译内核两个步骤完成之后,只是得到了新的bzImage 文件、initrd-2.6.0.img 和System.map文件。为了让新的内核发挥作用,必须采取一定的措施,以便让下次计算机启动linux 系统的时候,可以使用新的内核。当然,可以覆盖掉现有的旧的内核,但是为了保证系统的稳定性,一般要保留旧的内核。 一般这个工作是由bootloader完成的。,linux 的内核启动,利用lilo 需要修改lilo的

25、配置文件,lilo.conf 文件将看起来 如下: boot=/dev/hda delay=20 vga=normal root=/dev/hda1 read-only image=/boot/vmlinuz1 label=linux image=/boot/vmlinuz2 label=newlinux 然后运行lilo命令就可以了。,linux 的内核启动,利用grub 需要修改grub的配置文件。根据发行版的不同,通常GRUB 配置文件会在/etc/grub.conf 、/boot/grub/menu.lst 或/boot/grub/grub.conf 三个地方。 配置完成,重新启动。,

26、linux 的内核编译,linux 的内核启动,内核源代码的各个目录的功能介绍,1. Documentation 这个目录下面没有内核代码,只有一套有用的文档。但是这些文档的质量不一。有一部分内核文档,例如文件系统,在该目录下有相当优秀而且相当完整的文档;而另外一部分内核,例如进程调度,则根本就没有文档。但是在这里你可以不时地发现自己所最需要的东西。,linux 的内核编译,内核源代码的各个目录的功能介绍,2. arch arch 目录下的所有子目录中都是体系结构相关的 代码。每个体系结构特有的子目录下都又至少包含三个 子目录: kernel,存放支持体系结构特有的诸如信号处理和SMP之类特征

27、的实现; lib,存放高速的体系结构特有的诸如strlen和memcpy之类的通用函数的实现; mm,存放体系结构特有的内存管理程序的实 现。,linux 的内核编译,内核源代码的各个目录的功能介绍,3. drivers 这个目录是内核中非常大的一块。实际上,drivers目录下包含的代码占整个内核发行版本代码的一半以上。它包括显卡、网卡、SCSI适配器、软盘驱动器、PCI 设备和其他任何你可以说出的Linux 支持的外围设备的软件驱动程序。 drivers 目录下的一些子目录是平台特有的,例如,zorro子目录中包含有和Zorro总线通讯的代码。而Zorro 总线只在Amiga 中使用过,因此这些代码必然是Amiga 特有的。而其他一些子目录,例如pci 子目录,则至少是部分平台无关的。,linux 的内核编译,内核源代码的各个目录的功能介绍,4. fs Linux 支持的所有文

温馨提示

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

最新文档

评论

0/150

提交评论