《嵌入式系统第四次实验.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统第四次实验.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式系统第四次实验嵌入式系统第四次实验Page 2IndexnLinux内核移植内核移植Linux内核简介内核简介内核配置内核配置内核编译内核编译烧写内核烧写内核n根文件系统移植根文件系统移植根文件系统配置根文件系统配置烧写根文件系统烧写根文件系统根文件系统简介根文件系统简介Page 3Linux内核简介内核简介Linux内核是什么?内核是什么?Linux内核就是内核就是“操作系统操作系统”资源管理者资源管理者Ubuntu、Redhat、Debian?Linux发行版发行版“穿了衣服穿了衣服”的的LinuxLinux内核就是内核就是“操作系统操作系统”资源管理者资源管理者Ubuntu、Red
2、hat、Debian?Page 4获取获取linux内核源代码内核源代码/arm2410s/kernel-2410s是内核的源代码Page 5获取获取linux内核源代码内核源代码n在虚拟机中执行:在虚拟机中执行:#cd/arm2410s/exp/#mkdir exp4#cp-arf/arm2410s/kernel-2410s/exp4/#cd exp4#lskernel-2410s(这行是显示的结果这行是显示的结果)(Next:配置内核:配置内核.)Page 6配置内核配置内核(make menuconfig)Linux 内核支持裁剪,所以要配置内核支持裁剪,所以要配置配置配置linux内核
3、的命令:内核的命令:make menuconfig(make config/make xconfig也可以,这里不介绍)cd进内核的顶级目录,执行命令:#cd /arm2410s/exp/exp4/kernel-2410s#make menuconfigPage 7menuconfigmenuconfig菜单(简介)菜单(简介)1 1、Code maturity level optionsCode maturity level options代码成熟度选项,它又有子项:代码成熟度选项,它又有子项:1.11.1、prompt for development and/or incomplete c
4、ode/driversprompt for development and/or incomplete code/drivers该选项是对那些还在测试阶段的代码,驱动模块等的支持。一般应该选该选项是对那些还在测试阶段的代码,驱动模块等的支持。一般应该选这个选项,除非你只是想使用这个选项,除非你只是想使用LINUX LINUX 中已经完全稳定的东西。但这样中已经完全稳定的东西。但这样有时对系统性能影响挺大。有时对系统性能影响挺大。1.21.2、prompt for obsolete code/driversprompt for obsolete code/drivers该项用于对那些已经老旧的,
5、被现有文件替代了的驱动,代码的支持,该项用于对那些已经老旧的,被现有文件替代了的驱动,代码的支持,可以不选,除非你的机器配置比较旧。但那也会有不少问题。所以该可以不选,除非你的机器配置比较旧。但那也会有不少问题。所以该项以基本不用,在新的版本中已被替换。项以基本不用,在新的版本中已被替换。Page 8menuconfigmenuconfig菜单(简介)菜单(简介)2 2、loadable module supportloadable module support动态加载模块支持选项,其子项有:动态加载模块支持选项,其子项有:2.12.1、enable module support enable
6、 module support支持模块加载功能,应该选上。支持模块加载功能,应该选上。2.2 set version information on all module symbols2.2 set version information on all module symbols该项用来支持跨内核版本的模块支持。即为某个版本的内核编译的模块该项用来支持跨内核版本的模块支持。即为某个版本的内核编译的模块可以在另一个版本可以在另一个版本的内核下使用,我们一般用不上。所以不选。的内核下使用,我们一般用不上。所以不选。2.3 kernel module loader2.3 kernel module
7、 loader如果你启用这个选项,你可以通过如果你启用这个选项,你可以通过kerneld kerneld 程序的帮助在需要的时候自程序的帮助在需要的时候自动载入或卸载那些可载入式的模块。我们一般会选上。动载入或卸载那些可载入式的模块。我们一般会选上。Page 9menuconfigmenuconfig菜单(简介)菜单(简介)3 3、system typesystem type 系统类型,主要是系统类型,主要是CPU CPU 类型,以及与此相关的内容。在我们类型,以及与此相关的内容。在我们ARM2410-S ARM2410-S 平台上你在该项上看到的是平台上你在该项上看到的是S3C2410 S3
8、C2410 的的ARM ARM 系列系列CPUCPU。其它。其它选项是关于该芯片及平台的一些结构定义。其它版本内核遇到的不会选项是关于该芯片及平台的一些结构定义。其它版本内核遇到的不会是这种情况,但一般包含是这种情况,但一般包含processor family processor family 选项,它让我们选择选项,它让我们选择CPU CPU 的类型,的类型,BIOS BIOS 可以自检到,留意一下你的系统的启动信息。选上正确可以自检到,留意一下你的系统的启动信息。选上正确的的CPU CPU 类型就行。类型就行。Page 10menuconfigmenuconfig菜单(简介)菜单(简介)4
9、 4、General setupGeneral setup4.14.1、support hot-plugable deviecessupport hot-plugable devieces对可热拔插的设备的支持,看情况选择。若要对对可热拔插的设备的支持,看情况选择。若要对U U盘等盘等USB USB 设备进行控制设备进行控制可选。可选。4.24.2、NetworkingNetworking:support support 网络支持。网络支持。4.34.3、System V IPCSystem V IPC:支持:支持systemV systemV 的进程间通讯。的进程间通讯。4.44.4、sys
10、ctl supportsysctl support:该项支持在不重启情况下直接改变内核的参数。启用该选项后内核大约该项支持在不重启情况下直接改变内核的参数。启用该选项后内核大约会增大会增大8K8K,如果你的内存太小就别选。,如果你的内存太小就别选。4.54.5、NWFPE math emulationNWFPE math emulation模拟数学协处理器。模拟数学协处理器。4.64.6、Power managerPower manager电源管理,给电源管理,给X86 X86 编译内核时较有用可以选上,尤其是笔记本。给编译内核时较有用可以选上,尤其是笔记本。给ARM ARM 编内核时可不选。
11、编内核时可不选。Page 11menuconfigmenuconfig菜单(简介)菜单(简介)5 5、Networking optionNetworking option网络选项,它主要是关于一些网络协议的选项。网络选项,它主要是关于一些网络协议的选项。Linux Linux 功能也就是在于功能也就是在于对网络功能的灵活支持。这部分内容相当多,根据不同情况,一般我对网络功能的灵活支持。这部分内容相当多,根据不同情况,一般我们把以下几项选上。们把以下几项选上。5.15.1、packet socket packet socket 包协议支持,有些应用程序使用包协议支持,有些应用程序使用Packet
12、 Packet 协议直接同网络设备通讯,协议直接同网络设备通讯,而不通过内核中的其它中介协议。同时它可以让你在而不通过内核中的其它中介协议。同时它可以让你在TCP TCP 不能用时找不能用时找到一个通讯方法。到一个通讯方法。5.25.2、unix domain socket unix domain socket 对基本对基本UNIX socket UNIX socket 的支持的支持5.35.3、TCP/IP networking TCP/IP networking 对对TCP/IP TCP/IP 协议栈的支持,当然要。如果你的内核很在意大小,而且协议栈的支持,当然要。如果你的内核很在意大小,
13、而且没有什么网络要就,也不使用类似没有什么网络要就,也不使用类似X Window X Window 之类基于之类基于Unix Socket Unix Socket 的应用那你可以不选,可节省大约的应用那你可以不选,可节省大约144K 144K 空间。空间。Page 12menuconfigmenuconfig菜单(简介)菜单(简介)1010、SCSI device supportSCSI device support如果有如果有SCSI SCSI 设备设备(SCSI(SCSI 控制卡,硬盘或光驱等控制卡,硬盘或光驱等)则选上这项。目前则选上这项。目前SCSI SCSI 设备类型已经比较多,要具
14、体区分它们你得先了解他们所使用的控制设备类型已经比较多,要具体区分它们你得先了解他们所使用的控制芯片类型。芯片类型。2.6.X 2.6.X 内核中对各类型内核中对各类型SCSISCSI设备已经有更具体详细的支持。设备已经有更具体详细的支持。scsi support;scsi support;scsi disk support;scsi disk support;Page 13本次配置本次配置本次实验请将本次实验请将ADAD转换器驱动静态添加到内核中;转换器驱动静态添加到内核中;Page 14本次配置本次配置本次实验请将本次实验请将ADAD转换器驱动静态添加到内核中;转换器驱动静态添加到内核中;
15、Page 15本次配置本次配置本次实验请将本次实验请将ADAD转换器驱动静态添加到内核中;转换器驱动静态添加到内核中;其中:其中:直接编译进内核直接编译进内核 以模块形式编译,如使用需先以模块形式编译,如使用需先make modulesmake modules 为空是不进行编译为空是不进行编译Page 16本次配置本次配置保存配置保存配置(Next:编译内核:编译内核.)Page 17LinuxLinux内核编译内核编译1 1、make cleanmake clean这条命令是正式编译你的内核之前先把环境给清理干净。这条命令是正式编译你的内核之前先把环境给清理干净。2 2、make depma
16、ke dep这条命令是编译相关依赖文件。这条命令是编译相关依赖文件。3 3、make zImagemake zImage这条命令就是最终的编译命令。有时你可以直接用这条命令就是最终的编译命令。有时你可以直接用make(2.6.X make(2.6.X 版本上用版本上用)或或make bzImagemake bzImage(给(给PC PC 机编译大内核时用)机编译大内核时用)最后生成了内核镜像最后生成了内核镜像zImage.zImage.生成路径:生成路径:/arm2410s/exp/exp4/kernel-2410s/arch/arm/boot/zImage/arch/arm/boot/zI
17、mage(Next:(Next:拷贝拷贝zImagezImage到到xpxp中中)Page 18内核烧写内核烧写n编译好内核(编译好内核(zImage)后,)后,首先要将首先要将zImage这个文件保存到这个文件保存到xp主机中;主机中;然后按照实验一的方法烧写内核(见然后按照实验一的方法烧写内核(见2410-S快速开始手册快速开始手册.pdf)。)。n将文件导出到将文件导出到xp主机的方法有两种主机的方法有两种共享文件夹的方法共享文件夹的方法uvmware-VM-setting-options-Shared Folders-add-next-Browse.(name文本框中填share)-n
18、ext.oku#ls/mnt/hgfs 将显示你刚才共享的目录名字,假设为shareu#cp/arm2410s/kernel-2410s/arch/arm/boot/zImage /mnt/hgfs/share这样,你就可以在这样,你就可以在xp中你共享的目录下看到中你共享的目录下看到zImage了了ftp(Next:烧写内核烧写内核)Page 19烧写内核到开发板烧写内核到开发板打开超级终端,先按住打开超级终端,先按住pc机机“Back Space”键,然后启动键,然后启动2410S,进入,进入vivi 状态下,状态下,(如果这个步骤失败,说明(如果这个步骤失败,说明vivi烧写不正确,请参
19、考快速开始手册重新烧写)烧写不正确,请参考快速开始手册重新烧写)设置开发板设置开发板IP(其(其IP要与服务器要与服务器IP在同一网段,内核启动后将失效),其命令为:在同一网段,内核启动后将失效),其命令为:viviset c 192.168.0.115,viviset s 设置设置tftp服务器服务器IP(启动启动tftp 服务器的主机服务器的主机)Page 20nWindows平台下平台下tftp服务的配置:服务的配置:将随机附带光盘中将随机附带光盘中“tools”目录下的目录下的tftpd32.rar文件解压到文件解压到Windows的的“D:tftp32”目录下,目录下,并新建文件夹并
20、新建文件夹tftpd32,将光盘中,将光盘中“img”目录下文件拷目录下文件拷贝到该目录下。贝到该目录下。n双击双击“D:tftp32”目录下的目录下的tftpd32.exe文件,对文件,对Windows下的下的tftp服务进行配服务进行配置,如图所示:置,如图所示:烧写内核到开发板烧写内核到开发板Page 21n在在vivi状态下,输入烧写内核的命令为:状态下,输入烧写内核的命令为:tftp flash kernel zImage。烧写内核到开发板烧写内核到开发板Page 22烧写内核烧写内核n如果内核移植成功,进入系统以后,查看如果内核移植成功,进入系统以后,查看/dev目录,可以发现有一
21、个目录,可以发现有一个ADC目目录!里面有录!里面有AD转换器的驱动转换器的驱动0draw。Page 23根文件系统根文件系统n根文件系统:根文件系统就是一种特殊的文件系统根文件系统:根文件系统就是一种特殊的文件系统,那么根那么根文件系统和普通的文件系统有什么区别呢?由于根文件系文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括就要包括LinuxLinux启动时所必须的目录和关键性的文件启动时所必须的目录和关键性的文件,例,例如如LinuxLinux启动时都需要有启动时都需要有initi
22、nit目录下的相关文件,在目录下的相关文件,在 LinuxLinux挂载分区时挂载分区时LinuxLinux一定会找一定会找/etc/fstab/etc/fstab这个挂载文件这个挂载文件等,根文件系统中还包括了许多的等,根文件系统中还包括了许多的应用程序应用程序binbin目录目录等,等,任何包括这些任何包括这些Linux Linux 系统启动所必须的文件都可以成为根系统启动所必须的文件都可以成为根文件系统。文件系统。nbusybox:实现了根文件系统所需的实现了根文件系统所需的“应用程序应用程序binbin目录目录”n“启动时所必须的目录和关键性的文件启动时所必须的目录和关键性的文件”由由
23、/arm2410s/root/arm2410s/root/目录提供目录提供nmkcramfs mkcramfs 将跟目录需要的将跟目录需要的“应用程序应用程序binbin目录目录”和和“启动启动时所必须的目录和关键性的文件时所必须的目录和关键性的文件”打包成跟文件系统打包成跟文件系统Page 24根文件系统实验根文件系统实验n获取获取busybox源代码,源代码,root文件夹:文件夹:#cd/arm2410s#cp-rf busybox-1.00-pre10/exp/exp4/#cp-rf root/exp/exp4/#cd exp/exp4/n解压交叉编译工具解压交叉编译工具arm-lin
24、ux-#cd/arm2410s/exp/exp4#cp/arm2410s/gui/Qt/tools/arm-linux-gcc*./#cp/arm2410s/gui/Qt/tools/arm-linux-gcc*./成功以后,可以在当前文件夹下看到一个成功以后,可以在当前文件夹下看到一个usr目录,目录,arm-linux-交叉编译交叉编译工具就在这下面工具就在这下面修改环境变量修改环境变量PATH#export PATH=/arm2410s/exp/exp4/usr/local/arm/3.4.1/bin:$PATHPage 25配置配置busyboxn#cd/arm2410s/exp/ex
25、p4/busybox-1.00-pre10n#make menuconfign界面:界面:nGeneral Configuration-n *Use the devpts filesystem for Unix98 PTYsnBuild Options-n Build BusyBox as a static binary(no shared libs)nInstallation Options-n *Dont use/user Page 26nBuild Options-n *Do you want to build BusyBox with a Cross Compiler?n 将下一行文字
26、改为arm-linux-配置配置busyboxPage 27编译编译busyboxn#cd/arm2410s/exp/exp4/busybox-1.00-pre10/n#rm-f ./.dependn#make depn#maken#make PREFIX=./root installn编译完成后,会在当前目录下生成编译完成后,会在当前目录下生成root目录。目录。n#ls root/nbin linuxrc sbinPage 28制作根文件系统制作根文件系统n#cd/arm2410s/exp/exp4/rootn#rm rf bin/sbin/n#cp arf /arm2410s/exp/e
27、xp4/busybox-1.00-pre10/root/*./n#cd.n#mkcramfs root root.cramfsn#lsPage 29烧写根文件系统烧写根文件系统n和烧写内核类似和烧写内核类似#cp root.cramfs/mnt/hgfs/share把把root.cramfs拷贝到拷贝到D:tftp32目录下目录下其它和烧写内核相同,直到其它和烧写内核相同,直到.最后一步,将最后一步,将tftp flash kernel zImage 替换为:替换为:tftp flash root root.cramfsn烧写完毕,输入烧写完毕,输入boot:vivibootPage 30根文
28、件系统根文件系统n文件系统:简单的说就是一种目录结构,由于文件系统:简单的说就是一种目录结构,由于 linux linux操作操作系统的设备在系统中是以文件的形式存在,系统的设备在系统中是以文件的形式存在,将这些文件进将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统录结构也就是文件系统,文件系统是为用户反映系统的一,文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。种形式,为用户提供一个检测控制系统的接口。n根文件系统:根文件系统就是一种特殊的文件系统根文件系统:根文件系统就是一种特殊的文件
29、系统,那么根那么根文件系统和普通的文件系统有什么区别呢?由于根文件系文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括就要包括LinuxLinux启动时所必须的目录和关键性的文件启动时所必须的目录和关键性的文件,例,例如如LinuxLinux启动时都需要有启动时都需要有initinit目录下的相关文件,在目录下的相关文件,在 LinuxLinux挂载分区时挂载分区时LinuxLinux一定会找一定会找/etc/fstab/etc/fstab这个挂载文件这个挂载文件等,根文件系统中还包括了
30、许多的等,根文件系统中还包括了许多的应用程序应用程序binbin目录目录等,等,任何包括这些任何包括这些Linux Linux 系统启动所必须的文件都可以成为根系统启动所必须的文件都可以成为根文件系统。文件系统。Page 31什么是什么是Linux根文件系统根文件系统n使用使用LinuxLinux的时候,通过命令的时候,通过命令“ls/”“ls/”就会发现:就会发现:u在在/下包涵很多的目录,比如下包涵很多的目录,比如etcetc、usrusr、varvar、bin.bin.等等目录;目录;u而在这些目录中还有很多的目录或文件;而在这些目录中还有很多的目录或文件;u文件系统在文件系统在Linu
31、xLinux下看上去就象树形结构,下看上去就象树形结构,u所以可以把文件系统的结构形象的称为树形结构。所以可以把文件系统的结构形象的称为树形结构。nlinuxlinux文件系统的最顶端是文件系统的最顶端是“/”“/”;n我们称我们称“/”“/”为为LinuxLinux的根,也就是的根,也就是 Linux Linux操作系操作系统的根文件系统。统的根文件系统。nLinuxLinux的文件系统的入口就是的文件系统的入口就是“/”“/”,所有的目录、,所有的目录、文件、设备都在文件、设备都在“/”“/”之下。之下。Page 32根文件系统目录结构根文件系统目录结构nLinuxLinux遵守文件系统科
32、学分类标准(遵守文件系统科学分类标准(FHSFHS),一个定义许多),一个定义许多文件和目录的名字和位置的标准。文件和目录的名字和位置的标准。n一个一个linuxlinux的根文件系统目录结构如下:的根文件系统目录结构如下:/uLinuxLinux文件系统的入口,也是处于最高一级的目录;文件系统的入口,也是处于最高一级的目录;/bin/bin u系统所需要的那些命令位于此目录,比如系统所需要的那些命令位于此目录,比如 ls ls、cpcp、mkdirmkdir等命令;这等命令;这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基个目录中的文件都是可执行的、普通用户都可以使用的命令。作
33、为基础系统所需要的最基础的命令就是放在这里础系统所需要的最基础的命令就是放在这里;/boot/boot uLinuxLinux的内核及引导系统程序所需要的文件目录;如内核的映像文件,的内核及引导系统程序所需要的文件目录;如内核的映像文件,启动加载器(启动加载器(GRUBGRUB););Page 33根文件系统目录结构根文件系统目录结构/dev/dev u设备文件存储目录,比如声卡、磁盘设备文件存储目录,比如声卡、磁盘./etc/etc u系统配置文件的所在地,一些服务器的配置文件也在这里;比如系统配置文件的所在地,一些服务器的配置文件也在这里;比如/etc/inittab/etc/initta
34、b是是initinit进程的配置文件,进程的配置文件,etc/fstabetc/fstab是用来指定启动时是用来指定启动时需要自动安装的文件系统列表。需要自动安装的文件系统列表。/home/home u普通用户家目录默认存放目录;普通用户家目录默认存放目录;/lib/libu 库文件存放目录库文件存放目录 /mnt/mnt u这个目录一般是用于存放挂载储存设备的挂载目录的,比如有这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom cdrom 等目录。等目录。Page 34根文件系统目录结构根文件系统目录结构proc proc u操作系统运行时,进程信息及内核信息(比如操作系统运行
35、时,进程信息及内核信息(比如cpucpu、硬盘分区、内、硬盘分区、内存信息等)存放在这里。存信息等)存放在这里。/proc/proc目录伪装的文件系统目录伪装的文件系统procproc的挂载目的挂载目录录;/root/root uLinuxLinux超级权限用户超级权限用户rootroot的目录;的目录;/sbin/sbin u大多是涉及系统管理的命令的存放,是超级权限用户大多是涉及系统管理的命令的存放,是超级权限用户rootroot的可执行的可执行命令存放地,普通用户无权限执行这个目录下的命令命令存放地,普通用户无权限执行这个目录下的命令 ,如,如ifconfigifconfig/tmp/t
36、mp u临时文件目录临时文件目录 /usr/usr u这个是系统存放程序的目录,比如命令、帮助文件等。这个是系统存放程序的目录,比如命令、帮助文件等。/var/var u目录包含在正常操作中被改变的文件:假脱机文件、记录文件、加目录包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件锁文件、临时文件和页格式化文件 。Page 35文件存放规则文件存放规则n为了实现各种为了实现各种linuxlinux版本系统的标准化,各种版本版本系统的标准化,各种版本的的linuxlinux系统都会遵循系统都会遵循FHSFHS标准;主要规则如下:标准;主要规则如下:u配置文件放在
37、配置文件放在/etc/etc目录下;目录下;u设备文件放在设备文件放在/dev/dev目录下;目录下;u库文件放在目录库文件放在目录/lib/lib目录下;目录下;u存放系统编译后的可执行文件、命令的目录是存放系统编译后的可执行文件、命令的目录是/bin/bin、/sbin/sbin、/usr/bin/usr/bin、/usr/sbin/usr/sbin目录目录Page 36最少的目录最少的目录n在嵌入式系统中,根目录下的很多目录都可以删在嵌入式系统中,根目录下的很多目录都可以删除,如下:除,如下:u为多用户提供可扩展环境的所以目录都应该删除;如(为多用户提供可扩展环境的所以目录都应该删除;如
38、(/home,/mnt,/root/home,/mnt,/root)u根据引导加载情况,根据引导加载情况,/boot/boot目录可以删除。目录可以删除。n其余的目录其余的目录u/bin,/dev,/etc,/proc,/sbin,/usr,/lib/bin,/dev,/etc,/proc,/sbin,/usr,/lib都是不可缺少的都是不可缺少的。Page 37构建根文件系统构建根文件系统nLinuxLinux的根文件系统包括支持的根文件系统包括支持linuxlinux系统正常运行的基本内系统正常运行的基本内容,至少应包括以下几项内容:容,至少应包括以下几项内容:u基本的文件系统结构,如基本
39、的文件系统结构,如binbin、devdev、etcetc、sbinsbin,liblib、usrusr、procproc。u基本程序运行所需的动态库。基本程序运行所需的动态库。u基本的系统配置文件。基本的系统配置文件。u必要的设备文件支持。必要的设备文件支持。u基本的应用程序,如基本的应用程序,如shsh、lsls、cpcp等等n构建根文件系统就是往相应的目录添加相应的文件。如:构建根文件系统就是往相应的目录添加相应的文件。如:u在在/dev/dev添加设备文件,添加设备文件,u在在/etc/etc添加配置文件,添加配置文件,u在在/bin/bin添加命令或者程序,添加命令或者程序,u在在/lib/lib添加动态库等。添加动态库等。感谢您的关注感谢您的关注