




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第一章嵌入式开发概述1什么是嵌入式系统嵌入式系统就是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适合应用系统对功能、可靠性、成本、体积、功耗等严格要求的一种专用计算机系统。手机、洗衣机、高端武器2嵌入式系统特点和应用领域它一般由以下几部分组成1嵌入式微处理器2外围硬件设备3嵌入式操作系统4特定的应用程序其特点为专用、灵活性、小巧轻便、成本低、功耗低、效率高其只要应用领域为常见的一些嵌入式产品主要有如下产品网络设备交换机、路由器消费电子手机、MP3、PDA、可视电话、电视机顶盒、数字电视、数码照相机、数码摄像机、信息家电办公设备打印机、传真机、扫描仪汽车电子ABS防死锁刹车系统、车载GPS。其他设备自动售货机、ATM23嵌入式系统的历史和前景20世纪70年代单片机出现20世纪80年代嵌入式操作系统出现20世纪90年代实时多任务操作系统随着计算机技术、互联网技术及纳米微电子技术的突破,将来我们接触的每一样东西都将装有芯片和嵌入式软件,所以嵌入式系统存在着巨大的商机;计算机产业是垄断,但是可以应用于各种不同应用领域的嵌入式系统是不可能被垄断的,所以留给各个行业的中小规模高技术公司的创新余地很大4嵌入式系统的构架嵌入式一般有以下几部分组成1)嵌入式微处理器2)外围硬件设备3)嵌入式操作系统4)特定的应用程序5嵌入式处理器嵌入式处理器主要有以下三种1)ARMARM公司2)POWEPCMOTOROLA公司3)MIPSMIPS公司ARM就是该公司设计的嵌入式微处理器核心,ARM后面的数字越大越高级,卖给了INTEL公司之后INTEL公司在此基础上又融合了一些新的设计,就出现了STRONGARM,XSCALE3等。我们上课的开发板是三星公司生产的S3C2410,其核心处理器是ARM9。ARM现有的系统构架有ARM7,ARM9,ARM11。6嵌入式系统在嵌入式系统中流行的操作系统有很多。比较有名的是WINCE,LINUX、UCLINUX、LINUX的ECOS、UCOS、PALM、VXWORKS、QNX等。由于LINUX免费且公开源代码,成为了大家的首选。UCLINUX跟LINUX的区别UCLINUX不带MMU(内存管理单元),所以UCLINUX使用在那些不带MMU功能的处理器芯片里,如S3C44X0。7嵌入式开发开发板就是以ARM处理器为核心,添加了一些外围资源,比如说ROM、RAM、USB口、LCD液晶显示屏、LED灯等等,其实跟一台PC机差不多。实验室常见的有三星的SMDK2410和INTEL的SITSANGSMDK2410的处理器是三星公司S3C2410,200M的主频,32MB的RAM,32MB的ROM。而我们使用的开发板是北京博创公司的UPNETARM2410S开发平台。8嵌入式开发流程嵌入式开发,我们一般都是在PC上写好程序,然后交叉编译生成可执行文件,通过数据线(如串口线、网线)下载到ARM开发板上运行。实际运行在开发板上进行,成功后,对开发板进行裁减。一些没有用到的硬件就可以不用了。画PCB板,制版,移植软件,成4品。宿主机(开发平台)目标机(运行平台)宿主机采用LINUX系统(REDHAT60)目标板采用修剪过的LINUX嵌入式系统。串口线通常用于在烧写系统用,网线用于传输应用程序用。9宿主机LINUX简介LINUX是一个网络操作系统。它是由以LINUSTORVALDS为首的一批INTERNET上的志愿者开发的,完全免费,并与另一著名的网络操作系统UNIX完全兼容,是一个具有很高性能价格比的可剪裁的网络操作系统。LINUX的版本号又分为两部分内核(KERNEL)版本和发行(DISTRIBUTION)版本。内核版本号由3个数字组成R,X,Y。R主版本号;X偶数(稳定版本)奇数(测试版本);Y错误修补的次数。LINUX体系结构如下图SHELL直接与系统内核进行交互,无语编译的语言,执行速度快,往往在WINDOWS5中需要就百行程序代码的操作,只需要简简单单的几个SHELL命令就行了。LINUX的发行版本很多,其中商业版本是需要购买的,但是大部分的LINUX是非商业的,也就是说其不需要购买,用户只需要下载镜像文件,刻录成光盘,然后安装系统就可以了。值得注意的是LINUX的文件系统与我们常用的WINDOWS文件系统有着千差万别,他只有一个根目录。下面节解释LINUX中各个目录的重要意义1)/即文系统的根目录。包含所有的其他目录。2)/BIN常用命令的执行规则的存放地3)/BOOT系统启动时的内核文件和信息文件4)/DEVLINUX把外设都看成文件,对文件操作就是对外设操作5)/ETC系统的配置文件,修改这些文件即修改系统的配置6)/HOME普通用户的根目录,用户的数据一般都放在这里7)/LIB存放系统启动时用到的链接库文件8)/MNT额外系统文件的安装目录,如软驱和光驱的挂载地9)/PROC通过查看该目录里的文件可以了解系统的运行状况610)/ROOTROOT用户的主目录,一般用户没有将进入的权限11)/SBIN超级用户命令的执行规则存放地,普通的不能执行12)/TMP临时文件存放地,和WINDOWS一样13)/USR存放不需要修改的应用程序、文档等,占空间最大10宿主机LINUX简介目标也采用LINUX系统,是常用的LINUX系统的阉割版。当然你也可以采用例如WINCE等其他系统,但是WINCE的内核是MICROSOFT独立拥有的,你想剪裁成自己想拥有,且体积不用那么大的内核是很难的,所以嵌入式多采用LINUX,其开源,内核可裁剪的特性是其他嵌入式系统所不能拥有的。LINUX做嵌入式的优势,首先,LINUX是开放源代码的,不存在黑箱技术,遍布全球的众多LINUX爱好者。LINUX开发者的强大技术支持;其次,LINUX的内核小、效率高,内核的更新嵌入式LINUX速度很快,LINUX是可以定制的,其系统内核最小只有约134KB。LINUX是免费的OS,在价格上极具竞争力。LINUX还有着嵌入式操作系统所需要的很多特色,突出的就是LINUX适应于多种CPU和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。很多CPU包括家电业芯片,都开始做LINUX的平台移植工作。移植的速度远远超过JAVA的开发环境。也就是说,如果今天用LINUX环境开发产品,那么将来换CPU就不会遇到困扰。同时,LINUX内核的结构在网络方面是非常完整的,LINUX对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,TOKERRING令牌环网、光纤甚至卫星的支持。所以LINUX很适于做信息家电的开发。还有使用LINUX为的是来开发无线连接产品的开发者越来越多。LINUX在快速增长的无线连接应用主场中有一个非常重要的优势,就是有足够快的开发速度。这是因为LINUX有很多工具,并且LINUX为众多程序员所熟悉。因此,我们要在嵌入式系统中使用LINUX操作系统。LINUX的大小适合嵌入式操作系统LINUX固有的模块性,适应性和可配置性,使得这很容易做到。另外,LINUX源码的实用性和成千上万的程序员热切期望它用于无数的嵌入式应用软件中,导致很多嵌入式LINUX的出现,包括EMBEDIX,ETLINUX,LEM,LINUXROUTERPROJECT,LOAF,UCLINUX,MULINUX,THINLINUX,FIREPLUG,LINUX和PIZZABOXLINUX相比微软,LINUX的图形界面发展很快,像GNOME,KDE,UTITY等都是很优秀的桌7面管理器,并且其背后有着众多的社团支持,可定制性强,已经在UNIX和LINUX世界普及开来。第二章宿主机系统开发环境建立1REDHAT60系统建立在XP系统下通过VM虚拟机来安装REDHAT60系统。1)安装VM虚拟机在网上下载VM70绿色版版本的虚拟机,解压到XP中即可使用。2)到网上下载REDHAT60桌面版,通过虚拟机安装到XP环境下。(安装步骤网上都可以搜到,很容易实现)。注意事项在选择网络连接的时候,要选择与桥接模式,而不要选择NAT模式。3)安装VMTOOLSVMTOOL是虚拟机中虚拟系统与现实系统之间交互的工具,安装VMTOOLS后,其更容易与本地计算机进行交互。用户可以从物理主机直接往虚拟机里面拖文件。而且鼠标进入虚拟机后可以直接出来,不安装的话要按CTRLALT才可以释放鼠标。另外会自动安装声卡驱动等等。首先到网上下载对应版本的VMTOOLS,注意是LINUX版本,而不是WINDOWS版本,下载后通过虚拟机的虚拟光驱挂在到LINUX中,解压到LINUX桌面。然后,打开文件夹,查找有没有INSTALLPL的文件,这是VMTOOLS安装的脚本文件。他的执行需要有可执行的权限,使用终端,输入CHOMDXINSTALLPL终端切换到该文件夹,然后继续键入/INSTALLPL来完成安装。通过以上不步骤即可完成REDHAT60以及VMTOOLS的安装。XP与LINUX之间的文件传输方案有以下几种1)利用VM虚拟机传入,在VM设置中有一个共享文件夹。2)利用VMTOOLS,可以直接将文件从XP中拖拽到LINUX中3)利用XMANGER中的XSHELL与LINUX进行交互,通过其中的文件传送功能,来传送文件到LINUX(推荐)宿主机LINUX的C/C编译环境建立安装好的LINUX如果是不包含G编译器或者是BUILDESSENTIAL包含C和C头文件库。可以到晚上下载对应的RPM包安装到系统。通过编写一个简单的C/C程序,例如HELLOCPP,在终端CD到源程序文件夹,键入GHELLOCPPOHELLO来检查是否安装好编译器和BUILDESSENTIAL2宿主机LINUX的交叉编译器安装安装交叉编译器。所谓的交叉编译器就是简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念体系结构(ARCHITECTURE)、操作系统(OPERATINGSYSTEM)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的X86LINUX平台实际上是INTELX86体系结构和LINUXFORX86操作系统的统称;而X86WINNT平台实际上是INTELX86体系结构和WINDOWSNTFORX86操作系统的简称。8有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。交叉编译器安装主要有两种发法1)ARMLINUXGCC利用NFS或者文件夹共享,将配好的REDHATLINUX中OPT/CROSSTOOLS文件夹考到本地LINUX中OPT目录下,修改/ROOT/BASH_PROFILE文件或者利用共享覆盖(PATHPATHHOME/BIN/),注销登录。2)ARMV4LUNKNOWNLINUXGCC拷贝ARMV4LUNKNOWNLINUXGCC的安装包,TARZVJX来解压缩安装包,在安装的文件夹下,利用终端安装/INSTALLSH,然后利用方法1中来修改/ROOT/BASH_PROFILE文件。第三章目标机最小系统的建立和安装目标机中的LINUX的运行离不开三个主要的核心,首先是BOOTLOADER,然后是KERNEL,最后是FILESYSTEM,且这个次序是不可以更改的。在建立目标机环境之前,我们要了解如何与目标板进行交互,以及如何目标机之间进行文件传输。交互方案1)利用XP自带的超级终端来进行交互,其要就宿主机和目标级之间利用串口连接,然后在超级终端建立过程中注意以下设置,第一端口号要选择115200,硬件要选择无。2)利用软件XSHELL进行交互,XSHELL是XMANGER中的一部分功能,其功能类似超级终端,而且他可以利用其带有的一个小功能实现XP和LINUX系统之间的文件传输。3)通过在虚拟机的LINUX中设置NFS服务器,在目标机中使用MOUNT来挂在这个文件夹。EG宿主机IP192168161目标机IP192168171,在LINUX中配置NFS服务器,然后SERVICENFSRESTART。通过XSHELL与目标机交互,然后输入MOUNT192168161/XXX/XXX共享文件夹/MNT/NFS1BOOTLOADER建立和烧写基础准备知识1)PC机的引导装载程序普通PC体结构中,引导装载程序一般分为BIOS和操作系统BOOTLOADER两部分,BIOS负责完成硬件的检测和资源分配;而BOOTLOADER的任务是将操作系统内核从硬盘上读入RAM中,然后跳转到内核的入口点,从而启动操作系统。2)嵌入式系统的启动由于受硬件资源的限制,通常没有BIOS,所以整个系统的加载启动全部由BOOTLOADER完成。3)BOOTLOADER的基本概念BOOTLOADER就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。BOOTLOADER是一段可执行程序,完成的主要功能是将操作系统搬移到内存中,然后将控制权交给操作系统。94)开放源代码的LINUX引导程序UBOOT已经能够支持POWERPC、ARM、X86、MIPS体系结构的上百种开发板,已经成为功能最多、灵活性最强并且开发最积极的开放源码BOOTLOADER。在我们所学的课中主要是使用UBOOT来实现引导的。5)BOOTLOADER的结构框架(工作过程)大多数BOOTLOADER都分为两个部分STAGE1和STAGE2STAGE1主要作用是基本硬件的初始化,其中包括屏蔽所有中断设置CPU的度和时钟频率RAM初始化初始化LED。为加载STAGE2准备RAM空间,并且为拷贝STAGE2内容到RAM空间,设置堆栈指针并跳转到STAGE2的C入口点。STAGE2初始化本阶段要使用的硬件设备(如串口、网卡等,成功驱动后,可以输出一些打印信息。),检测系统的内存映射,加载内核映像和根文件系统映像,设置内核的启动参数,调用内核。通过UBOOT移植适合S3C2410的BOOTLATER通常,BOOTLOADER是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BOOTLOADER几乎是不可能的。尽管如此,我们仍然可以对BOOTLOADER归纳出一些通用的概念来,以指导用户特定的BOOTLOADER设计与实现。UBOOT已经能够支持POWERPC、ARM、X86、MIPS体系结构的上百种开发板,已经成为功能最多、灵活性最强并且开发最积极的开放源码BOOTLOADER为我们的开发板建立BOOTLOADER可移植文件,开发板名字为UP2410,其主要的移植过程大致有以下几步1、修改MAKEFILE文件,2、建立板级支持包,3、建立配置文件(修改),4、修改源文件支持从NAND启动,5、编译生成UBOOTBIN。(其详细内容参见实验指导书)10BOOTLOADER的烧写一个编译好的BOOTLOADER叫做VIVI,一个空白的开发板是没有任何程序的,没有BOOTLOADER,没有内核,也没有文件系统,所以他只能通过并口线来烧写VIVI。其过程如下把并口线插到PC机的并口,并把并口与JTAG相连,JTAG与开发板的14针JTAT口相连,打开2410S把整个GIVEIO目录在LINUXV60IMGFLASHVIVI目录下)拷贝到CWINDOWS下,并把该目录下的GIVEIOSYS文件拷贝到C/WINDOWS/SYSTEM32/DRIVERS下。在控制面板里,选添加硬件下一步选是我已经连接了此硬件下一步选中添加新的硬件设备下一步选中安装我手动从列表选择的硬件下一步选择显示所有设备选择从磁盘安装浏览,指定驱动为CWINDOWSGIVEIOGIVEIOINF文件,点击确定,安装好驱动在D盘新建一目录BOOTLOADER,把SJF2410S在LINUXV60IMGFLASHVIVI目录下)和要烧写的VIVI拷贝到该目录下,在程序附件MSDOS下,进入该目录,运行SJF2410S命令如下SJF2410S/FVIVI在此后出现的三次要求输入参数,第一次是让选择FLASH,选0;第二次是选择JTAG对FLASH的两种功能,也选0;第三次是让选择起始地址,选0此后就等待大约35分钟的烧写时间,当VIVI烧写完毕后选择参数2,退出烧写。2内核建立和烧写内核简介内核是所有LINUX系统的中心软件组件。嵌入式领域所说的LINUX,一般是指LINUX内11核。移植也是指的是移植LINUX内核到目标平台。内核的目录结构也包括以下部分ARCH包含和硬件体系结构相关的代码,每种平台占一个相应目录。如ARM、AVR32、BLACKFIN、MIPS等。INCLUDE头文件存放目录。与系统相关的头文件放在INCLUDE/LINUX下与ARM体系结构相关头文件放在INCLUDE/ASMARM下。KERNEL内核的核心代码,包括进程调度、定时器等。和ARM平台相关的核心代码在ARCH/ARM/KERNEL目录下。MM内存管理代码,和ARM平台相关的内核管理代码在ARCH/ARM/MM目录下。DRIVERS设备驱动程序,其下细分为不同种类的设备。如BLOCK、CHAR、MTD、NET、USB、VIDEO等。FS内核支持的文件系统的实现,如EXT2、EXT3、CRAMFS、JFFS2、NFS等。INIT内核初始化代码。NET网络相关代码,实现各种常见的网络协议。SCRIPTS包含用于配置内核的各种脚本文件。只在配置时是有意义的。内核移植涉及文件分布介绍内核移植涉及的头文件LINUX26188/INCLUDE/ASMARM(与处理器相关的头文件);LINUX26188/INCLUDE/LINUX(和处理器无关的头文件)内核移植涉及的源文件LINUX26188/ARCH/ARM/TOOLS/MACHTYPES(MACHTYPES文件定义了不同系统平台的系统平台号。移植LINUX内核到新的平台上需要对新的平台登记系统平台号。编译时根据平台号选择不同的H文件)LINUX26188/ARCH/ARM/BOOT/COMPRESSED(HEADS是内核映像的入口代码,是自引导程序。包含了一些与体系结构相关的初始化程序,之后,调用MISCC文件中的DECOMPRESS_KERNEL函数解压缩内核映像到指定的位置,然后跳转到KERNEL的入口地址。)LINUX26188/ARCH/ARM/KERNEL(内核入口处也是由一段汇编语言实现的,由HEADS和HEADCOMMONS两个文件组成。HEADS是内核的入口文件,在HEADS的末尾处INCLUDE“HEADCOMMONS”。主要是完成CPU和体系结构的检查及CPU的初始化;之后跳转到LINUX26188/INIT/MAINC中的START_KERNEL函数中,开始内核的基本初始化过程)LINUX26188/ARCH/ARM/MACHS3C2410(这个目录中的文件都是板级相关的,其中比较重要是如下几个LINUX/ARCH/ARM/MACHS3C2410/CPUCLINUX/ARCH/ARM/PLATS3C24XX/COMMONSMDKCLINUX/ARCH/ARM/MACHS3C2410/DEVSCLINUX/ARCH/ARM/MACHS3C2410/MACHSMDK2410CLINUX/ARCH/ARM/MACHS3C2410/MAKEFILEBOOTLINUX/ARCH/ARM/MACHS3C2410/S3C2410C)内核镜像文件ZIMAGE生成配置MAKEMENUCONFIG选择体系结构、文件系统支持及其他功能的选择,配置的目的是减小内核大小。MAKEMENUCONFIG采用目录结构选择配置的方式,这些目录由各子目录中的KCONFIG产生。我们在配置内核时所做的任何修改,最终都会在CONFIG文件中体现出来。编译MAKECONFIG文件这是LINUX编译时所依赖的文件。我们在配置内核时所做的任何修改,12最终都会在这个文件中体现出来。它是MAKEFILE对内核进行处理的重要依据。一般来说,内核提供了芯片公司DEMO板的CONFIG文件,我们一般找一个近似的进行修改。如S3C2410平台上可以选择S3C2410_DECONFIG这个文件。三种配置方式MAKECONFIG基于文本对话的配置方式,比较细致,但是浪费时间。对专业的内核开发人员比较合适。MAKEXCONFIG基于图形界面的配置方式。非常直观,但是需要特殊的软件支持,一般不推荐MAKEMENUCONFIG推荐的内核配置方式,采用目录的方式,直观,容易使用。MAKEFILE文件用于编译生成最终的内核可执行连接文件。LINUX内核源码的每个目录下都有一个MAKEFILE,由该MAKEFILE对源代码的编译、链接等操作进行控制。编译完成后,每个源代码目录下都会生成一个名叫BUILTINO的文件。这个文件由源代码目录下的所有源文件编译后的目标文件链接而成;而不同的BUILTINO又被上层目录中的MAKEFILE链接成更大的BUILTINO,直到最后链接成为一个内核VMLINUXO。内核的移植设置交叉编译环境修改内核的顶层MAKEFILE,ARCHARMCROSS_COMPILEARMLINUX获得CONFIG文件CONFIG是内核编译时所依赖的重要文件,与具体的硬件构架和开发板类型相关。我们选择内核提供的S3C2410_DEFCONFIG进行修改。CPARCH/ARM/CONFIGS/S3C2410_DEFCONFIGCONFIG设置NANDFLASH经典2410平台上配置一片容量大小为64M的K9F2808UNANDFLASH。为了使内核能正常使用NANDFLASH,需要在内核中正确地配置NANDFLASH驱动支持。修改ARCH/ARM/PLATS3C24XX/COMMONSMDKC具体详细的过程可以参照实验指导书外围设备驱动设置LCD驱动2410平台上配置了一个640480的LCD,需要在内核中对LCD进行正确的配置,才能使用LCD。网卡驱动LINUX内核中实现了网卡的驱动程序,但是需要我们进行一些必要的配置。YAFFS文件系统支持YAFFS文件系统是专门为NANDFLASH设计的。YAFFS文件系统上的文件以固定大小的块进行分割存储。每个数据块包含一个块头,存储在相应的16字节的备用空间上。当文件系统被挂载时,只需要读出块头的信息,这样大大提高了文件系统的访问速度。但是增加了内存消耗。将YAFFS文件系统拷贝并解压到KERNEL的同级目录下/PATCHKERSHC/LINUX26244/编译内核运行MAKE、命令编译内核。编译完成后,在ARCH/ARM/BOOT目录下生成ZIMAGE文件,就是压缩格式的内核。ZIMAGE经MKIMAGE工具处理后,生成UIMAGE,可供UBOOT启动的二进制内核镜像,以启动内核。/MKIMAGEAARMTKERNELCNONEOLINUXA0X30008000E0X30008040DZIMAGENLINUX2624UIMAGE烧写内核将编译好的内核烧写到开发板上使其可以正常运行。复位2410S,进入VIVI。VIVILOADFLASHKERNELX回车13当出现READYFORDOWNLOADINGUSINGXMODEM如图点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件ZIMAGE,ENTER,协议为XMODEM,点击“发送”,4分钟左右ZIMAGE烧写完毕;3文件系统的建立和烧写基础知识文件系统简单的说就是一种目录结构,操作系统为计算机提供的各种数据是通过文件系统直观地存储在介质上,对其进行管理。对于用户而言它是操作系统中最直观、可见的部分,用户可以通过文件直接和操作系统交互。WINDOWS中,我们可以极端地认为“一切皆设备”;而LINUX中所有的东西,设备、内存都模拟成文件。LINUX的文件系统可以认为包括4种主要组成部分命名空间API安全模式实现命名空间设备文件包括C字符设备和B块设备,其他还有L链接文件,F普通文件,D目录文件。设备文件LINUX中常见的设备有2种字符设备无缓冲且只能顺序存取。如串口、鼠标/键盘/游戏杆/手写版等、块设备有缓冲且可以随机存取,如SCSI磁盘、RAMDISK、U盘等。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备使用同一个驱动程序。LINUX常用的文件系统有这些EXT2FS(一般根文件系统使用此文件系统)、EXT3FS、REISERFS、IBMJFS等,现在已经有EXT4FS了。LINUX根文件系统LINUX内核在系统启动期间进行的最后操作之一就是安装根文件系统。根文件系统一直是所有类UNIX系统不可或缺的组件。根文件系统要包括LINUX启动时所必须的目录和关键性的文件。各个文件目录的作用和分布都已经在前面介绍了。14根文件系统的移植ROOTFSCRAMFS要让LINUX系统支持CRAMFS文件系统,我们必须在定制内核时加入对CRAMFS的支持。需要修改的是MEMORYTECHNOLOGYDEVICESMTD选项和COMPRESSEDROMFILESYSTEMSUPPORT选项,使系统支持内存技术设备和ROM文件系统。建立根文件系统创建一个文件夹ROOTFS,将当前路径转到ROOTFS执行命令MKDIRBINDEVETCHOMELIBMNTPROCSBINSYSTMPVARUSR建立相应的文件夹,再建立ETC下的INITD文件夹。借助BUSYBOX软件,剪裁出一个适合嵌入式LINUX的工具集合。生成BINSBINUSRLINUXRCEXAMPLES目录中包含有ETC需要文件,只需要做简单修改即可。DEV目录下增加两个必要的设备驱动KNODM600DEV/CONSOLEC51;MKNODM666DEV/NULLC13。LIB目录下增加一些需要的动态链接库如LIBMSO6LIBCSO6LDLINUXSO2LIBGCC_SSO1从HTTP/PRDOWNLOADSSOURCEFORGENET/CRAMFS/下载CRAMFS11TARGZ软件包,解压后MAKE编译生成MKCRAMFS脚本文件,用该脚本工具既可以制作出ROOTFSCRAMFS镜像文件/MKCRAMFSROOTFSROOTCRAMFS文件系统的烧写VIVILOADFLASHROOTX回车当出现READYFORDOWNLOADINGUSINGXMODEM如图点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件ROOTCRAMFS,协议为XMODEM,点击“发送“,7分钟左右ROOTCRAMFS烧写完毕。到此,就可以正常启动LINUX系统了。15第四章嵌入式应用程序开发1普通C/C程序编译执行1)首先要求REDHAT60安装过GCC和G编译器,以及含有头文件的BUILDESSIONAL,这样可以编译原C/C文件,并且要求安装了交叉编译器,ARMLINUXGCC,这样可以编译出目标机可以执行的文件。2)将编写好的C/C源文件放在一个特定的文件夹内,根据其依赖关系写好相应的MAKEFILE文件。3)通过MAKEFILE编译源文件生成相应的可执行文件。输入/XXXX来执行相应的文件,如果编译没有问题,将MAKEFILE中的GCC/G换成ARMLINUXGCC(G)来生成在目标机上的可执行文件。4)将生成的文件拷贝到目标机中(方法参加第三章的交互方式),/PROGRAMM执行。2QT程序编译执行1)QT简介QT是一个多平台的C图形用户界面应用程序框架。它提供给应用程序开发者建立图形用户界面应用程序所需的所有功能。QT是完全面向对象的,它很容易扩展,并且允许真正的组件编程,QT也是流行的LINUX桌面环境KDE的基础。QT提供了一组范围相当广泛的C类库,并包含了几种命令行和图形界面的工具,有效地使用这些工具可以加速开发过程。QTDESIGNERQT设计器。用来可视化地设计应用程序界面。QTLINGUISTQT语言学家。用来翻译应用程序。以此提供对多种语言的支持。QMAKE使用此工具可以由简单的、与平台无关的工程文件来生成编译所需的MAKEFILE。MOC元对象编译器。UIC用户界面编译器。在程序编译时被自动调用,通过UI_H文件生成应用程序界面。2)QT安装(LINUX下的安装)首先下载QT源码包到本机,然后解压缩,更改环境变量,到解压缩的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论