嵌入式Linux编程入门与开发实例--嵌入式VNC远程控制的实现--课件

上传人:痛*** 文档编号:241280897 上传时间:2024-06-15 格式:PPT 页数:97 大小:883KB
返回 下载 相关 举报
嵌入式Linux编程入门与开发实例--嵌入式VNC远程控制的实现--课件_第1页
第1页 / 共97页
嵌入式Linux编程入门与开发实例--嵌入式VNC远程控制的实现--课件_第2页
第2页 / 共97页
嵌入式Linux编程入门与开发实例--嵌入式VNC远程控制的实现--课件_第3页
第3页 / 共97页
点击查看更多>>
资源描述
第第1313章章 嵌入式嵌入式VNCVNC远程控制的实现远程控制的实现 随着电子技术和网络技术的发展,嵌入式系统随着电子技术和网络技术的发展,嵌入式系统在远程控制管理方面得到了越来越广泛的应用。嵌在远程控制管理方面得到了越来越广泛的应用。嵌入式系统自身具有体积小、功能强、价格便宜等优入式系统自身具有体积小、功能强、价格便宜等优点,而将远程控制软件移植进入嵌入式系统之中,点,而将远程控制软件移植进入嵌入式系统之中,能够让身处异地的人们随时方便地登录到远程个人能够让身处异地的人们随时方便地登录到远程个人计算机、远程服务器上,并对其进行控制管理操作、计算机、远程服务器上,并对其进行控制管理操作、故障诊断与维修等,并且可以分别控制和管理多台故障诊断与维修等,并且可以分别控制和管理多台不同的电脑,同时反过来可以进行远程交流、远程不同的电脑,同时反过来可以进行远程交流、远程教育等。教育等。1ppt课件第第1313章章 嵌入式嵌入式VNCVNC远程控制的实现远程控制的实现概述概述 13.1需求分析需求分析 13.2 嵌入式嵌入式LinuxLinux系统移植系统移植13.3Tiny-XTiny-X及应用程序移植及应用程序移植 13.4RFBRFB协议简析及文件系统的裁剪协议简析及文件系统的裁剪 13.52ppt课件13.1 13.1 概述概述 提提及及远远程程控控制制,大大家家都都不不会会太太陌陌生生。我我们们都都知知道道早早期期电电脑脑中中的的远远程程控控制制技技术术,始始于于DOS时时代代,只只不不过过当当时时由由于于技技术术上上没没有有什什么么大大的的变变化化,网网络络不不发发达达,市市场场没没有有更更高高的的要要求求,所所以以远远程程控控制制技技术术没没有有引引起起更更多多人人的的注注意意。但但是是,随随着着计计算算机机网网络络技技术术的的高高度度发发展展,电电脑脑管管理理及及技技术术支支持持的的需需要要,远远程程操操作作及及控控制制技技术术越越来来越越引引起起人人们们的的关关注注。远远程程控控制制一一般般支支持持下下面面的的这这些些网网络络方方式式:LAN、WAN、拨拨号号方方式式、互互联联网网方方式式。此此外外,有有的的远远程程控控制制软软件件还还支支持持通通过过串串口口、并并口口、红红外外端端口口来来对对远远程程机机进进行行控控制制(不不过过,这这里里指指的的远远程程机机,只只能能是是有有限限距距离离范范围围内内的的电电脑脑)。传传统统的的远远程程控控制制软软件件一一般般使使用用NETBEUI、NETBIOS、IPXSPX、TCPIP等等协协议议来来实实现现远远程程控控制制,不不过过,随随着着网网络络技技术术的的发发展展,目目前前很很多多远远程程控控制制软软件件提提供供通通过过Web页页面面以以Java技技术术来来控控制制远远程程电电脑脑,这这样可以实现不同操作系统下的远程控制。样可以实现不同操作系统下的远程控制。3ppt课件 目前,能实现远程控制管理的软件很多,例如Windows自带的终端服务,PCAnyWhere和冰河等,但是它们要么程序很大占用系统过多空间;要么使用起来过于麻烦、不宜配置;或是需要注册付费;抑或使用效率低下速度慢。经比较,VNC软件是一款值得推荐的远程控制软件。VNC采用远程帧缓存(RFB)协议进行通信,它的主要应用是使用户能够利用VNC客户端连接到正在运行的远程VNC服务器,并借由网络,传送键盘与鼠标的动作及即时的屏幕画面,实现远程图形化操作。VNC软件主要由两个部分组成:VNC服务端及VNC客户端。用户需先将VNC服务端安装在目标计算机上,才能够在本地计算机上执行VNC客户端进行控制。VNC支持多种操作系统,如Unix系列(Unix、Linux、Solaris等)、Windows及Mac操作系统。4ppt课件VNC运行的工作流程如下:(1)VNC客户端通过嵌入式Linux中的VNC Viewer连接至远程VNC Server。(2)VNC Server传送一对窗口至客户端,要求输入连接密码,以及存取的VNC Server显示装置。(3)在客户端输入联机密码后,VNC Server验证客户端是否具有存取权限。(4)若是客户端通过VNC Server验证,客户端即要求VNC Server显示桌面环境。(5)被控端将画面显示控制权交由VNC Server负责。(6)VNC Server将把被控端的桌面环境利用VNC通信协议送至客户端,并且允许客户端控制VNC Server的桌面环境及输入装置。5ppt课件13.2 13.2 需求分析需求分析 作为一个基于嵌入式系统的远程控制实现,无论是硬件方面的电路板体积、成本,电路的性能,还是软件方面的功能实现、运行效率和稳定性等,都会受到资源限制的影响。因此在进行软硬件开发之前要进行详细的需求分析。6ppt课件13.2.1 13.2.1 软件需求分析软件需求分析1、交叉编译工具、交叉编译工具 2、Bootloader引导程序引导程序 3、Linux内核内核 4、Linux根文件系统根文件系统5、Tiny-X及相关应用程序及相关应用程序7ppt课件1交叉编译工具 工欲善其事,必先利其器。嵌入式Linux系统开发离不开交叉编译工具。交叉开发工具链就是为了编译、链接、处理和调试跨平台体系结构的程序代码。主机端装好Linux操作系统后,就可以准备配置、制作自己的编译工具。如果要基于Gcc和glibc来制作工具链,可以使用crosstool来进行编译;如果要基于Gcc和uClibc来制作工具链,可以使用buildroot来进行编译。如果不借助这些工具,编译过程是非常繁琐的。uClibc比glibc小,在已有的接口上是兼容的,更适用于嵌入式系统。但是uClibc并没有包括glibc中的所有接口实现,因此有些应用程序可能在uClibc中不能编译。基于这个原因,本章使用glibc和Gcc来制作工具链。8ppt课件2Bootloader引导程序 我们知道,当按下PC机的启动电源时,CPU会首先运行固化在CMOS中的BIOS(Basic Input Output System)程序。BIOS程序的主要任务是对各种硬件设备进行自检和初始化,然后运行位于硬盘MBR(Master Boot Record)上的操作系统加载程序。操作系统加载程序负责把操作系统加载到内存中,并启动操作系统。在嵌入式系统中是没有BIOS程序的,从开机硬件初始化到启动操作系统内核完全是由Bootloader程序完成的。Bootloader是嵌入式系统中最先运行的程序。Bootloader启动后首先对硬件进行初始化、建立内存的映射图等,其目的是为内核准备好软硬件运行环境;接着Bootloader会把内核加载到内存中合适的位置并跳转到内核的入口处启动内核。9ppt课件3Linux内核 Linux内核主要由进程调度、内存管理、虚拟文件系统、网络接口、进程间通信等5个子系统组成,是构建Linux系统的核心组成部分。在2.6版本内核以前,并没有专门针对嵌入式平台进行支持。所以把Linux 2.6版本以前的内核移植到嵌入式平台上时必须安装相应的补丁。Linux 2.6内核于2003年12月发布,在2.4内核的基础上作了极大的改进。使用了新的调度器,进程的切换更高效;内核可以被抢占,使得用户的操作可以得到更快速的响应;I/O子系统也经历了很大的修改,使得它在各种工作负荷下都更具响应性;模块子系统、文件系统都做了大量的改进。本章移植Linux-2.6.33.1版本的内核。10ppt课件4Linux根文件系统 Linux中没有类似于Windows下的C、D、E等盘符的概念,它以树状机构管理所有目录、文件,其他分区挂接在某个目录上,这个目录被称为挂接点(mount point),然后就可以通过这个目录来访问这个分区上的文件了。在一个分区上存储文件时,需要遵循一定的格式,这种格式称为文件系统类型,比如fat、ntfs、ext2、ext3、jffs2、yaffs等。除这些拥有实实在在的存储分区的文件系统类型外,Linux还有几种虚拟的文件系统类型,比如proc、sysfs等,它们的文件并不存储在实际的设备上,而是在访问它们时由内核临时生成。11ppt课件5Tiny-X及相关应用程序 X窗口系统(X Windowing System)提供了Linux桌面图形系统。X系统中的窗口环境采用客户端/服务端(C/S)模式。X系统应用程序是客户端,它们和服务器通信,向服务器发送请求并且接收服务器发送的信息。X系统的服务器控制显示和处理来自客户端的请求。应用程序(客户端)只需要知道如何与服务器端通信,并不需要知道显示设备绘制图形的操作细节。这个通信机制(协议)能在任何提供八位字节流的进程间通信机制上工作。X使用了socket接口来达到通信协议的一致性。因为X系统是基于socket的,所以它可以在网络中运行并且能很好远程绘图(Remote graphics)。X客户端使用X窗口系统提供的API在屏幕上绘制对象。这些API是函数库X-lib中的一部分,用它连接客户端应用程序。本章移植的是体积小巧,但功能强大的Tiny-X。12ppt课件13.2.2 13.2.2 硬件需求分析硬件需求分析1嵌入式开发目标板 目前市面上流行的嵌入式开发板款式很多,本章采用友善之臂推出的mini2440开发板进行开发,它是一种集成了S3C2440处理器以及各类外设的电路板。它不但提供了运行嵌入式系统的基本平台,还提供了开发和调试嵌入式软件系统的硬件平台。其板上主要配备了以下相关部件:l CPU处理器,Samsung S3C2440A,主频 400M Hz,最高 533M Hz;l 64MB SDRAM内存,时钟频率高达 100M Hz;l 2MB NOR Flash,掉电非易失;l 128MB NAND Flash,掉电非易失;l 3.5寸真彩LCD,分别率为240320;l USB Host、USB Slave B 型接口各一个;l DM9000网卡一块;l 音频输入输出(本章未用到);l 标准SDMMC卡座。13ppt课件2嵌入式开发主机 在PC主机上,Linux已经成为优秀的计算机操作系统。各种Linux发行版本,可以直接在PC机上安装,功能十分强大。它不仅能够支持各种处理器和外围设备接口,而且提供了图形化的用户交互界面和丰富的开发环境,更重要的是Linux系统性能稳定。进行开发之前,事先在PC主机上安装Linux操作系统,这里安装的是Ubuntu9.10操作系统。开发主机上应配备有25针的并行接口一个,用来连接JTAG,下载Bootloader到NOR Flash中;9针的RS-232串行接口一个,用于打印开发板启动、调试信息并能输入控制命令;至少一块网卡,用于网络传输文件。14ppt课件13.3 13.3 嵌入式嵌入式LinuxLinux系统移植系统移植 Linux操作系统的移植主要包括移植BootLoader、移植Linux内核、移植相应的驱动程序和构建文件系统。使某个平台的代码运行在其他平台上的过程叫做移植。Linux操作系统是一种遵循GPL协议的开源系统,其内核可以进行剪裁,并且支持32位和64位的CPU,可以运行在ARM、PowerPC、M68k等多种硬件平台上。15ppt课件13.3.1 13.3.1 交叉开发环境的构建交叉开发环境的构建1.交叉开发模式 所谓的交叉开发模式就是指在主机上编辑、编译程序,然后在目标板上运行、验证程序的过程。图13-1所示是交叉开发模式。图13-1 交叉开发模式16ppt课件目标板和主机之间通常可以使用JTAG接口、串口、以太网接口以及USB接口等方式进行连接。JTAG接口传输方式:JTAG仿真器跟主机之间连接,将第一个引导程序烧写进入Nor Flash之中。串口传输方式:主机端通过kermit、minicom或者windows超级终端等工具都可以通过串口打印目标板程序运行、调试信息,另外它是嵌入式开发的重要控制台。网络传输方式:网络传输方式一般采用NFS、TFTP等协议传输文件。USB接口传输方式:通常分主从设备端,主机端为主设备端,目标板端为从设备端。用于下载测试应用程序到目标板中。17ppt课件2.交叉编译环境 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,所以要生成在目标机上运行的程序,必须要用交叉编译工具链来完成。在裁减和定制Linux内核用于嵌入式系统之前,由于一般嵌入式开发系统的资源有限,通常都要在PC上建立一个用于目标机的交叉编译工具链,用该交叉编译工具链在PC上编译目标机上要运行的程序。交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc 3个部分组成。18ppt课件 建立交叉编译工具链是一个相当复杂的过程,如果不想自己经历复杂繁琐的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载,但就以学习为目的来说读者有必要学习自己制作一个交叉编译工具链。下面就通过具体的实例讲述基于ARM的嵌入式Linux交叉编译工具链的制作过程。首先下载crosstool-0.43.tar.gz,其官方网站是http:/ http:/ crosstool-0.43.tar.gz19ppt课件 解压缩后查看目录中的文件,其中包含很多的Shell脚本文件,编辑其中的demo-arm.sh文件,其中第7行制定编译过程中软件包下载路径,第8行制定交叉编译工具链的安装路径。取消第25行的注释(这里我们要建立一个gcc-3.3.6,glibc-2.3.2的交叉编译链)同时修改notest为gdb还可以同时创建arm-linux-gdb的交叉调试工具。#!/bin/sh#This script has one line for each known working toolchain#for this architecture.Uncomment the one you want.#Generated by generate-demo.pl from buildlogs/all.dats.txtset-exTARBALLS_DIR=$HOME/downloadsRESULT_TOP=/usr/local/crosstoolexport TARBALLS_DIR RESULT_TOP20ppt课件GCC_LANGUAGES=c,c+export GCC_LANGUAGES#Really,you should do the mkdir before running this,#and chown/opt/crosstool to yourself so you dont need to run as root.mkdir-p$RESULT_TOP#eval cat arm.dat gcc-2.95.3-glibc-2.1.3.dat sh all.sh-notest#eval cat arm.dat gcc-2.95.3-glibc-2.2.2.dat sh all.sh-notest#eval cat arm.dat gcc-2.95.3-glibc-2.2.5.dat sh all.sh-notest#eval cat arm.dat gcc-3.2.3-glibc-2.2.5.dat sh all.sh-notest#eval cat arm.dat gcc-3.2.3-glibc-2.3.2.dat sh all.sh-notest#eval cat arm.dat gcc-3.2.3-glibc-2.3.2-tls.dat sh all.sh-notest#eval cat arm.dat gcc-3.3.6-glibc-2.2.2.dat sh all.sh-notest#eval cat arm.dat gcc-3.3.6-glibc-2.2.5.dat sh all.sh-notesteval cat arm.dat gcc-3.3.6-glibc-2.3.2.dat sh all.sh-gdb#eval cat arm.dat gcc-3.3.6-glibc-2.3.2-tls.dat sh all.sh-notest21ppt课件修改arm.dat文件,将TARGET=arm-unknown-linux-gnu改为TARGET=arm-linux,保证编译出来的工具是常用的名字。KERNELCONFIG=pwd/arm.configTARGET=arm-linuxTARGET_CFLAGS=-O最后一步,保证网络的畅通,以普通用户的权限来执行demo-arm.sh脚本文件。./demo-arm.sh22ppt课件它会自动从网络下载所需的软件包并且进行编译,整个编译过程大概需要12个小时。如果没出现意外情况的话,会在“/usr/local/crosstool”目录下生成一套交叉编译工具链。把制作好的交叉编译工具链添加到当前的环境变量当中,只需要修改主目录下的.bashrc文件,在文件末尾添加export PATH=/usr/local/crosstool/gcc-3.3.6-glibc-2.3.2/bin:$PATH,并且重新读取到当前的环境变量当中就可以了。echo export PATH=/usr/local/crosstool/gcc-3.3.6-glibc-2.3.2/bin:$PATH.bashrcsource.bashrc23ppt课件3主机开发工具安装与配置1)串口控制台工具 串行通讯接口很适合作为控制台,在各种操作系统上一般都有现成的控制台程序可以使用。Windows操作系统有超级终端(Hyperterminal)工具;Linux/UNIX操作系统有Minicom、C-Kermit等工具。本文用的是Linux下的minicom,首先安装Minicom到系统中,然后通过在Shell下执行“minicom -s”命令进行配置,配置菜单如图13-2所示。当需要使用时,执行“sudo minicom”运行,退出时执行“Ctrl+A+Q”组合键即可。24ppt课件图13-2 minicom配置菜单25ppt课件2)NFS服务 NFS服务的主要任务是把本地的一个目录通过网络输出,其他计算机可以远程挂接这个目录并且访问文件。NFS服务有自己的协议和端口号,但是在文件传输或者其他相关信息传递的时候,NFS则使用远程过程调用(RPC,Remote Procedure Call)协议。NFS是嵌入式开发不可或缺的工具。首先安装NFS服务软件,执行以下命令会自动下载安装:$sudo apt-get install nfs-kernel-server portmap它的配置文件为/etc/eXports,在里面可以增加想要通过网络文件系统访问的目录,本文配置内容如下:/nfsboot *(rw,sync,no_root_squash)26ppt课件13.3.2 13.3.2 BootloaderBootloader的移植的移植 简简单单地地说说,Bootloader 就就是是在在操操作作系系统统内内核核运运行行之之前前运运行行的的一一段段小小程程序序。通通过过这这段段小小程程序序,我我们们可可以以初初始始化化硬硬件件设设备备、建建立立内内存存空空间间的的映映射射图图,从从而而将将系系统统的的软软硬硬件件环环境境带带到到一一个个合合适适的的状状态态,以以便便为为最最终终调调用用操操作作系系统内核准备好正确的环境。统内核准备好正确的环境。通通常常Bootloader是是严严重重地地依依赖赖于于硬硬件件而而实实现现的的,特特别别是是在在嵌嵌入入式式世世界界。因因此此,在在嵌嵌入入式式世世界界里里建建立立一一个个通通用用的的Bootloader几几乎乎是是不不可可能能的的。尽尽管管如如此此,我我们们仍仍然然可可以以对对 Bootloader 归归纳纳出出一一些些通通用用的的概概念念来来,以以指指导导用用户户特特定的定的 Bootloader 设计与实现。设计与实现。27ppt课件Bootloader可以分为以下两种操作模式。(1)启动加载(Boot loading)模式。上电后,Bootloader从板子上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户介入。产品发布时,Bootloader工作在这种模式下。(2)下载(Down loading)模式。在这种模式下,开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机下载文件(比如内核镜像、文件系统镜像),将它们直接放在内存中运行或烧入Flash类固态存储设备中。28ppt课件 由于Bootloader的实现依赖CPU的体系结构,因此大多数Bootloader 都分为 stage1和stage2 两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1 中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而 stage2 则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。29ppt课件Bootloader 的 stage1 通常包括以下步骤(以执行的先后顺序):l硬件设备初始化。l为加载 Bootloader 的 stage2 准备 RAM 空间。l拷贝 Bootloader 的 stage2 到 RAM 空间中。l设置好堆栈。l跳转到 stage2 的 C 入口点。30ppt课件Bootloader 的 stage2 通常包括以下步骤(以执行的先后顺序):l初始化本阶段要使用到的硬件设备。l检测系统内存映射(memory map)。l将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。l为内核设置启动参数。l调用内核。31ppt课件这是 Bootloader 一开始就执行的操作,其目的是为 stage2 的执行以及随后的 kernel 的执行准备好一些基本的硬件环境。它通常包括以下步骤(以执行的先后顺序):(1)屏蔽所有的中断。为中断提供服务通常是 OS 设备驱动程序的责任,因此在 Boot loader 的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写 CPU 的中断屏蔽寄存器或状态寄存器(比如 ARM 的 CPSR 寄存器)来完成。(2)设置 CPU 的速度和时钟频率。(3)RAM 初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。(4)初始化 LED。典型地,通过 GPIO 来驱动 LED,其目的是表明系统的状态是 OK 还是 Error。如果板子上没有 LED,那么也可以通过初始化 UART 向串口打印 Bootloader 的 Logo 字符信息来完成这一点。(5)关闭 CPU 内部指令数据 cache。32ppt课件13.3.3 Linux13.3.3 Linux内核的移植内核的移植1、Linux内核的定制原理内核的定制原理 2、Linux内核源码结构内核源码结构 3、配置和编译内核源码、配置和编译内核源码4、对、对YAFFS文件系统的支持文件系统的支持 33ppt课件1Linux内核的定制原理 定制内核的根本目的是使内核能够根据嵌入式系统的软硬件需求为应用程序提供一个专用的运行平台。从实现的角度看,定制内核就是有针对性地定制内核的各项功能。定制程序功能的基本方法有两种:一是直接修改程序的源代码,二是添加或删除源文件。但是这两种方法的效率都很低,而且一旦出现错误也不容易改正,所以并不适合于代码量大的程序。对于源代码量达到上百万行的Linux内核来说,通过直接修改源代码的方式来进行定制更加行不通。34ppt课件 在Linux内核中,几乎每个目录下都有Makefile文件。面对数量众多、结构复杂的Makefile文件,仅仅依靠手工的方式来定制Makefile同样是不合适的。为此,Linux内核把哪些源文件需要被编译和链接的规则都记录在.config文件中。由Makefile文件根据.config文件中的规则来控制源文件的编译过程。这样一来,Makefile文件的定制就又转变成了.config文件的定制。为了提高.config文件的定制效率,需要使用内核配置工具。它们分别通过以下命令启动。35ppt课件make config。它采用文本的操作界面。用户通过输入y或n来配置内核的功能。由于需要逐一操作每个配置选项,所以配置的效率非常低。make menuconfig。它采用菜单操作界面。如图13-3所示。图13-3 内核配置菜单36ppt课件2Linux内核源码结构 Linux内核文件数目将近2万,除去其他架构CPU的相关文件,支持S3C2410、S3C2440这两款芯片的完整内核文件也有1万多个。这些文件的组织结构并不复杂,它们分别位于顶层目录下的各个子目录中。表13-1描述了主要目录的功能。表13-1 Linux内核子目录结构目录名描述arch体系结构相关代码,例如arch/arm、arch/i386block块设备的通用函数crypto常用的加密和散列算法,还有一些压缩和CRC校验算法37ppt课件drivers所有的设备驱动,例如drivers/char、drivers/mtdDocumentation内核文档fsLinux支持的文件系统代码,比如fs/jffs2、fs/ext2include内核头文件,有基本头文件、各种驱动或功能部件头文件、各种体系相关的头文件init内核的初始化代码,其中的main.c文件中的start_kernel函数是内核引导后运行的第一个函数38ppt课件ipc进程间通信的代码kernel内核管理的核心代码lib内核用到的一些库函数代码mm内存管理代码net网络支持代码,每个子目录对应于网络的一个方面security安全、密钥相关代码sound音频设备的驱动程序scripts用于配置、编译内核的脚本文件usr用来制作一个压缩的cpio归档文件:initrd的镜像,它可以作为内核启动后挂载的第一个文件系统39ppt课件3.配置和编译内核源码本章编译Linux-2.6.33.1版本的内核。首先,修改内核根目录下的Makeflle文件,这个文件中需修改的内容包括以下两个方面。(1)指定目标平台:修改前 ARCH?=&(SUBARCH)修改后 ARCH?=arm(2)指定交叉编译器:修改前CROSS_COMPILE?=修改后CROSS_COMPILE?=arm-linux-40ppt课件然 后,修 改 MTD(即 内 存 技 术 设 备)分 区,在 arch/arm/mach-s3c2440/mach-mini2440.c文件中,本章将Nand Flash划分为3个区,前1MB用于存放引导程序,接下来的3MB用于存放嵌入式内核,剩下的空间用来存放yaffs文件系统,分区结构如下所示:static struct mtd_partition mini2440_default_nand_part _initdata=0=.name=u-boot,.size=0 x00100000,.offset=0,1=.name=kernel,41ppt课件.size=0 x00300000,.offset=0 x00100000,2=.name=root,.size=MTDPART_SIZ_FULL,.offset=0 x00400000,;42ppt课件4.对YAFFS文件系统的支持(1)首先,获取YAFFS2的源代码从http:/www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2/下载并且解压缩,YAFFS2目录下有一个脚本文件可以用来给内核打补丁。./patch-ker.sh/c path其中/c这个参数用来将YAFFS2的代码复制到内核的相应目录下,path是内核源代码的路径。(2)其次,配置内核时选中YAFFS2支持:File systems一 Miscellaneous filesystems一 YAFFS2 file system support43ppt课件13.3.4 Linux13.3.4 Linux根文件系统的构建根文件系统的构建 文件系统是一种用于向用户提供底层数据访问的机制。它将设备中的空间划分为特定大小的块(扇区),一般每块512字节。数据存储在这些块中,大小被修正为占用整数个块。由文件系统软件来负责将这些块组织为文件和目录,并记录哪些块被分配给了哪个文件,以及哪些块没有被使用。不过,文件系统并不一定只在特定存储设备上出现。它是数据的组织者和提供者,至于它的底层,可以是磁盘,也可以是其它动态生成数据的设备(比如网络设备)。44ppt课件1.Linux文件系统层次标准介绍 因为Linux的开发人员实在太多了,如果每个人都使用自己的目录配置方法,那么将可能会带来很多管理问题。所以,后来就有所谓的文件系统层次标准(Filesystem Hierarchy Standard,FHS)出台。它定义了文件系统中的目录、文件分类存放的原则,定义了系统运行所需的最小文件、目录的集合。下面分别介绍一下各个目录的作用。(1)/bin 基础系统所需要的那些命令位于此目录,也是最小系统所需要的命令;比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。做为基础系统所需要的最基础的命令就是放在这里。(2)/boot Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;(3)/dev 设备文件存储目录,比如声卡、磁盘.45ppt课件(4)/etc 系统配置文件的所在地,一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;(5)/home 普通用户家目录默认存放目录;(6)/lib 库文件存放目录(7)/lost+found 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损 坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。(8)/media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录;CD/DVD自动挂载后,也会在这个目录中创建一个目录,类似cdrom 的目录。这个只有在最新的发行套件上才有,比如Fedora等。可以参看/etc/fstab的定义;(9)/mnt 这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。主要看/etc/fstab中怎么定义了;比如光驱可以挂载到/mnt/cdrom。46ppt课件(10)/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。(11)/root Linux超级权限用户root的家目录;/sbin 大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin或(12)/usr/local/sbin目录是相似的。(13)/tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。(14)/usr 这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts,帮助目录(15)/usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin 或/usr/local/bin。超级权限用户root的可执行命令存放目录,比如/usr/sbin 或/usr/local/sbin 等;还有程序的头文件存放目录/usr/include。47ppt课件(16)/var 这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件。(17)/etc/init.d 这个目录是用来存放系统或服务器以System V模式启动的脚本,这在以System V模式启动或初始化的系统中常见。/etc/xinit.d 如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。/etc/rc.d 这是BSD方式启动脚本的存放地;比如定义网卡,服务器开启脚本等。48ppt课件2.移植Busybox 构建Linux根文件系统,就是参照FHS的标准创建相应的目录,并且在其中存放各种可执行程序,建立相关的配置文件以及相应的库文件。这里我们采用的是Busybox工具,它是遵循GPL协议的一个开源的工具,最初是为了Debian安装盘编写的,其目的是在一张软盘上创建一个可引导的Linux系统,可以用于安装盘和急救盘,其大小在1.44MB以内。它将众多的Unix命令集合到一个可执行文件当中,很多标准的Linux工具都可以共享很多相同的元素,这些工具被合并到一个可执行程序中,就可以共享这些相同的元素,从而产生更小的可执行程序。Busybox在设计时充分的考虑了硬件资源受限的环境,通过不同的符号链接来选择到底执行哪一个命令,这对资源紧张的嵌入式Linux系统来说再合适不过了。49ppt课件首先下载busybox,http:/,这里我们用的是busybox-1.3.0,解压缩以后,修改Makefile文件移植前 ARCH?=&(SUBARCH)移植后 ARCH?=arm指定交叉编译器:移植前CROSS_COMPILE?=移植后CROSS_COMPILE?=arm-linux-50ppt课件3.构建Linux根文件系统1 首先建立etc目录和一些基本的配置文件。mkdir-p etc/init.d/&touch etc/inittab&touch etc/init.d/rcS&touch etc/fstab&touch etc/resolv.conf2 参考busybox example目录下的inittab文件编辑etc/inittab文件如下#/etc/inittab:sysinit:/etc/init.d/rcSttySAC0:askfirst:/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount-a-r 51ppt课件3 编辑etc/init.d/rcS文件,配置ip#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/sbin/ifconfig lo 127.0.0.1 netmask 255.255.255.0 upifconfig eth0 192.168.1.10 netmask 255.255.255.0 uproute add default gw 192.168.1.1mount-a然后执行chmod 755 etc/init.d/rcS添加可执行权限。52ppt课件4 编辑etc/resolv.conf修改添加dns配置echo nameserver 202.118.176.2 etc/resolv.conf5 编辑etc/fstab文件,这是一个用来定义系统开机后自动挂载的配置文件#device mount-pointtype optiondump fsckorderproc/procprocdefaults 0 0ramfs/tmpramfsdefaults 0 0sysfs/syssysfsdefaults 0 0ramfs/devramfsdefaults 0 0var/varramfsdefaults 0 053ppt课件表13-2常见的设备节点设备节点名称设备类型主设备号次设备号文件权限说明console字符51600控制台mem字符11600物理内存null字符13666空设备54ppt课件random字符18644随机数发生器tty字符50666控制台tty0字符40600虚拟控制台tty1字符41600虚拟控制台ttyS0字符464600第一个串口zero字符15666零设备55ppt课件mknod-m 600 console c 5 1mknod-m 600 mem c 1 1mknod-m 666 null c 1 3mknod-m 644 random c 1 8mknod-m 666 tty c 5 0mknod-m 600 tty0 c 4 0mknod-m 600 tty1 c 4 1mknod-m 600 ttyS0 c 4 64mknod-m 666 zero c 1 556ppt课件6 最后创建一些其他的目录mdir proc mnt tmp sys root 这样一个基本的文件系统就已经做好了,把做好的目录按照FHS标准放在自建的rootfs目录下面。现在需要制作YAFFS2文件系统映像文件,在YAFFS2源码目录下有一个utils目录,下面有编译好的mkyaffs2image的代码,编译好了以后就可以用来制作YAFFS2文件系统映像文件了。57ppt课件7 利用mkyaffsimage工具制作根文件系统镜像,例如根文件系统放在/nfsboot目录下,可以执行如下命令完成:mkyaffsimage /nfsboot rootfs.img 把rootfs.img复制到NFS目录后,在U-Boot控制界面就可以将镜像下载到开发板内存、继而把镜像烧入到Nand Flash中,操作命令如下:nfs 0 x30008000 192.168.1.105:/nfsboot/rootfs.imgnand erase 0 x400000 0 x7c00000nand write.yaffs 0 x30008000 0 x400000$(filesize)58ppt课件修改U-Boot的命令行参数以MTD2分区作为根文件系统,设置如下:setenv bootargs noinitrd console=ttySAC0 root=/dev/mtdblock2 rootfstype=yaffssaveenv启动开发板就可以了。当开发测试时,可以设置U-Boot从NFS启动,这时的设置为:setenv bootargs console=ttySAC0 init=/linuxrc mem=64M root=/dev/nfs rw nfsroot=192.168.1.105:/nfsboot,proto=tcp,nfsvers=3,nolock ip=192.168.1.100:192.168.1.105:192.168.1.105:255.255.255.0:wenjun24x0:eth0:offsetenv bootcmd nfs 0 x30008000 192.168.1.105:/nfsboot/uImage;bootmsaveenv59ppt课件13.4 Tiny-X13.4 Tiny-X及应用程序移植及应用程序移植 13.4.1 Linux X图形系统和嵌入式X13.4.2 配置编译配置编译Tiny-X 13.4.3 编译编译Matchbox 13.4.4 编译编译VNC Viewer 13.4.5 编译编译Xterm 60ppt课件13.4.1 13.4.1 Linux X图形系统和嵌入式X X窗窗口口系系统统(X Windowing System)提提供供了了Linux桌桌面面图图形形系系统统。X系系统统中中的的窗窗口口环环境境采采用用客客户户端端/服服务务端端(C/S)模模式式。X系系统统应应用用程程序序是是客客户户端端,它它们们和和服服务务器器通通信信,向向服服务务器器发发送送请请求求并并且且接接收收服服务务器器发发送送的的信信息息。X系系统统的的服服务务器器控控制制显显示示和和处处理理来来自自客客户户端端的的请请求求。应应用用程程序序(客客户户端端)只只需需要要知知道道如如何何与与服服务务器器端端通通信信,并并不不需需要要知知道道显显示示设设备备绘绘制制图图形形的的操操作作细细节节。这这个个通通信信机机制制(协协议议)能能在在任任何何提提供供八八位位字字节节流流的的进进程程间间通通信信机机制制上上工工作作。X使使用用了了socket接接口口来来达达到到通通信信协协议议的的一一致致性性。因因为为X系系统统是是基基于于socket的的,所所以以它它可可以以在在网网络络中中运运行行并并且且能能很很好好远远程程绘绘图图(Remote graphics)。X客客户户端端使使用用X窗窗口口系系统统提提供供的的API在在屏屏幕幕上上绘绘制制对对象象。这这些些API是是函函数数库库X-lib中中的的一一部部分分,用用它它连连接接客客户端应用程序。户端应用程序。61ppt课件13.4.2 13.4.2 配置编译配置编译Tiny-XTiny-X1、解压缩源代码、解压缩源代码 2、建立临时目录、建立临时目录 3、修改和添加配置文件、修改和添加配置文件4、修改、修改armtinyx/lib/X11/Makefile文件文件5、编译和安装、编译和安装Tiny-X 6、测试、测试Tiny-X62ppt课件1编译Tiny-X的依赖软件本 章 编 译 的 所 有 软 件 都 安 装 到/usr/arm目 录 下,配 置 时 指 定“-prefix=/usr/arm”。它们之间也存在依赖关系,所以按照一定顺序进行交叉编译,共计14个软件包。具体过程如下:1)zlibtar zxvf zlib-1.2.3.tar.gzcd zlib-1.2.3CC=arm-linux-gcc./configure-prefix=/usr/arm-sharedmakemake install63ppt课件2)libpngtar jxvf libpng-1.2.33.tar.bz2cd libpng-1.2.33CC=arm-linux-gcc./configure-host=arm-linux -prefix=/usr/arm makemake install64ppt课件3)expattar zxvf expat-2.0.1.tar.gzcd expat-2.0.1CC=arm-linux-gcc./configure-host=arm-linux-prefix=/usr/armmake make install65ppt课件4)freetypetar jxvf freetype-2.3.7.tar.bz2cd freetype-2.3.7CC=arm-linux-gcc./configure-host=arm-linux-prefix=/usr/armmakemake install66ppt课件5)libxmltar zxvf libxml2-2.6.31.tar.gzcd libxml2-2.6.31CC=arm-linux-gcc./configure-host=arm-linux-prefix=/usr/armmakemake install67ppt课件6)fontconfigtar zxvf fontconfig-2.6.0.tar.gzcd fontconfig-2.6.0CC=arm-linux-gccexport LIBXML2_CFLAGS=-I/usr/arm/include/libxml2export LIBXML2_LIBS=-L/usr/arm/lib-lxml2./configure-host=arm-linux-prefix=/usr/arm-with-arch=armmakemake install68ppt课件7)libdrmtar jxvf libdrm-2.3.0.tar.bz2cd libdrm-2.3.0CC=arm-linux-gcc./configure-host=arm-linux-prefix=/usr/armmakemake install69ppt课件8)openssltar zxvf openssl-0.9.8d.tar.gzcd openssl-0.9.8d./Configure -prefix=/usr/arm -openssldir=/usr/arm/openssl os/compiler:arm-linux-gccmakemake install70ppt课件9)jpegtar zxvf jpegsrc.v6b.tar.gzcd jpeg-6bCC=arm-linux-gcc./configure-host=arm-linux-prefix=/usr/arm-enable-shared修改Makefile文件,AR=ar rc 改成 AR=arm-linux-ar rc;AR2=ranlib 改成 AR2=arm-linux-ranlib,接着执行:mkdir/usr/arm/manmkdir/usr/arm/man/man1makemake install71ppt课件10)glibtar zxvf glib-2.19.0.tar.gzcd glib-2.19.0export PREFIX=/usr/armexport LDFLAGS=-L$PREFIX/libexport CFLAGS=-g-I$PREFIX/includeexport PKG_CONFIG_PATH=$PREFIX/lib/pkgconfigecho ac_cv_type_long_long=yesarm-linux.cacheecho glib_cv_stack_grows=noarm-linux.cacheecho glib_cv_uscore=noarm-linux.cacheecho ac_cv_func_posix_getpwuid_r=yesarm-linux.cacheecho ac_cv_func_posix_getgrgid_r=yesarm-linux.cacheCC=arm-linux-gcc./configure -host=arm-linux -build=i386-linux -prefix=$PREFIX -cache-file=arm-linux.cachemakemake install72ppt课件11)cairotar zxvf cairo-1.8.8.tar.gzcd cairo-1.8.8export PREFIX=/usr/armCC=arm-linux-gcc export LDFLAGS=-L$PREFIX/libexport CFLAGS=-g-I$PREFIX/includeexport PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig./configure-host=arm-linux-prefix=$PREFIX-disable-gtk-doc-disable-xcb-without-x-disable-xlib -disable-xlib-xrender -enable-directfb -ena
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!