东北林业大学信息学院3+1实验班——嵌入式linux培训课程介绍目的:本课程旨在指导同学们入门。通过本阶段学习,可以自己学习嵌入式Linux相关内容。早日成为具有嵌入式linux开发能力的人才。授课形式:采用理论教学与实践相结合的方式,将整个培训划分为三个阶段即环境及基础阶段、linux开发阶段及自学提高阶段,各阶段循序渐进,本课程主要指导大家完成前两个阶段。实验环境:PC机,各种开发软件,嵌入式开发板(TQ2440)课程内容及安排推荐的教材《嵌入式linux应用程序开发详解》孙琼等华清远见图书《linux设备驱动开发详解》李俊等华清远见图书《嵌入式linux应用开发完全手册》韦东山《ARM嵌入式linux系统开发从入门到精通》李亚峰,欧文圣注:这些都是我使用的。有些有电子版我放在电子书文件夹里了。第一章嵌入式linux基础及嵌入式开发软件的安装1.1嵌入式Linux简介及历史1、什么是嵌入式linux?嵌入式linux是以linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。嵌入式linux将linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上开放的源代码资源,又具有嵌入式操作系统的特性。知识回顾1、什么是嵌入式系统?2、什么是嵌入式操作系统?下一页1、嵌入式系统以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统一般这部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统、特定的应用程序。嵌入式系统的特点为应用的特定性和广泛性、高效性、高可靠性、软硬一体返回返回2、嵌入式操作系统是嵌入式应用软件的基础和开发平台。嵌入式系统的出现,解决了嵌入式软件开发标准化的难题。嵌入式系统具有操作系统的最基本的功能包括进程调度、内存管理、设备管理、文件管理、操作系统接口(API调用)。嵌入式操作系统具有的特点为系统可裁减,可配置、系统具备网络支持功能、系统具有一定的实时性返回2、嵌入式linux发展历史1)、1983年RichardStallman创立了GNU计划。这个计划的目标是为了发展一个完全免费自由的unix-like操作系统。这个计划自90年代以来,GNU开始大量生产收集各种系统所必须的元件,但是除了执行核心(kernel)。2)、Linux发展史1991年Linux诞生,由芬兰赫尔辛基大学学生LinusTorvalds在本校用于系统教学的Minix系统基础上开发的类UNIX操作系统。它的标志是一个名为Tux的可爱的小企鹅。1991年10月5日,Linus发布了Linux的第一个版本:Linux0.0.2,遵循通用公共许可证(GPL,GeneralPublicLicense)同年11月Linus发布了其稳定版0.10版,12月又发布了0.11版本。由于许多专业用户(主要是程序员)自愿的开发它的应用程序,并借助Internet拿出来大家一起修改,所以它的应用程序越来越多,linux本身也逐渐发展壮大。目前,最新的Linux内核版本是linux2.6.38。1.2开发软件安装与常用软件的使用安装开发软件ADS软件、keilMDK、jlink、虚拟机vmware、vmwaretools软件、redhat9操作系统、学会使用上述软件、DNW及超级终端使用。1.2.1ADS1.2ADS(ARMDeveloperSuite)是ARM公司推出的新一代ARM继承开发工具。ADS由命令行开发工具,ARM实时库,GUI开发环境(CodeWarrior和AXD),实用程序和支持软件组成。有了这些部件,用户就可以为ARM系统的RISC处理器编写和调试自己的开发应用程序。CodeWarriorc/c++编辑区工程管理区c/c++浏览区AXD图形工具图形窗口寄存器反汇编存储器1.2.2KEILMDKRealviewMDK开发套件源自德国的keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。KeilMDK集成了业内最先进的技术,包括μVision4集成开发环境和Realview编译器。支持ARM7、ARM9和最新的Cortex-M3/M1/M0内核处理器,自动配置启动代码,集成Flash烧写模块,强大的simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS相比,RealView编译器的最新版本可将性能改善超过20%。1.2.3Jlink现在的pc,越来越少并口了,特别是手提电脑。那怎么用Jtag下载程序到开发板,成为开发者面临的问题。J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAREWARM,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9内核芯片的仿真,通过接口和各集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。实验一嵌入式开发软件的安装及使用1.3linux操作系统Linux发行版本:RedHatFedoraCoreMandrakeSuseDebianCentOSUbuntuRedFlag1.3.1linux操作系统安装前准备1、Linux操作系统硬件准备:CPU:Pentium以上处理器。内存:至少128MB,推荐使用256MB以上的内存。硬盘:至少需要600MB硬盘空间。完全安装大约需要5GB的硬盘空间。显卡:VGA兼容显卡。光驱:CD-ROM或DVD-ROM。其他设备:如声卡、网卡、软驱和Modem等。注意:用户可以通过Windows的设备管理器来获得自己计算机的硬件型号等参数。2、linux分区准备每块计算机硬盘上最多可以被划分出4个主分区,也可以被划分出3个主分区和一个扩展分区,然后在扩展分区内建立多个逻辑分区,通常逻辑分区没有个数的限制。在安装RedHatLinux9之前,通常对Linux系统的分区做如下的安排:/swap:交换分区,用来支持虚拟内存的分区,通常放在单独的分区,其大小为内存容量的1~2倍。/:根分区,它只存放启动系统所需的文件和系统配置文件,应放置在ext3fs主分区中,单独分区。1.3.2Linux文件及文件系统文件类型普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。可以通过ls–lh命令来查看文件的属性(-)目录文件Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。每个目录文件至少包括两个条目,“..”表示上一级目录,“.”表示该目录本身。可以用ls–lh查看某个目录文件详细信息。(d)链接文件有两种,一种是符号链接,也称为软连接,一种是硬链接。(l)设备文件Linux系统把每个设备都映射成一个文件,这就是设备文件,它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。(b)管道文件是Linux中较特殊的文件类型,这类文件多用于进程间的通信方面。使用ls-lh命令查看文件信息时。(p)套接字(s)1.3.3linux操作系统的定制安装实验二虚拟机vmware的安装实验三Linux操作系统的安装实验四vmwaretools的安装及配置windows共享文件1.3.4linux系统的根文件目录结构1.4建立嵌入式开发环境Linux下开发环境的建立主要有建立交叉编译环境、配置网络文件系统、配置PC机Linux的FTP服务、配置PC机linux的Telnet服务。其中最重要的建立交叉编译环境。为什么使用交叉编译环境宿主机和目标机的体系结构不同,在宿主机X86平台上可以运行的程序在目标机ARM平台上是无法运行的。嵌入式硬件(目标机)的性能一般无法满足开发环境的要求。例如:主频比较低、内存少、没有硬盘、没有大型显示设备、没有全键盘。交叉编译——采用PC(X86)作为主机来搭建开发环境进行编译,但编译出来的软件能够在不同CPU体系架构的目标设备上运行。我们使用的虚拟机安装的linux是redhat9,内核是linux-2.4.20的内核,那么在redhat9上编译开发板上的linux2.6内核,就要用到交叉编译器编译开发板用的Linux2.6的内核。交叉编译器利用PC的linux作为工作平台,它调用的头文件,库等都是交叉编译器自身或者开发板所用的linux内核自带的,和PC的linux一点关系都没有。搭建交叉编译环境的方法很多,不同的体系结构、不同的操作内容甚至是不同版本的内核,都会用到不同的交叉编译器。我用的开发板是天嵌的。所以我搭建的交叉编译环境是针对TQ开发板的。对于其他的开发板搭建具体过程类似。实验五建立开发环境之建立交叉编译环境。1.5嵌入式系统开发流程1.5.1bootloader介绍Bootloader是硬件启动的引导程序,是启动操作系统的根本;是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用准备好环境;在一般典型系统中整个系统加载启动任务就完全由bootloader来完成。1.5.2Uboot介绍Uboot是德国DENX小组开发用于多种嵌入式CPU的bootloader程序。1.5.3linux内核介绍内核指的是一个提供硬件抽象层、磁盘机文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。通常我们使用的linux系统是一个集linux内核、工具集、各种库、桌面管理器、应用程序等等与一体的一个发布包。1.5.4linux文件系统文件系统是一组程序,它们告诉操作系统如何访问及解释存储在磁盘或磁带驱动器或者其他存储媒介上的内容。Cramfs只读压缩的文件系统。文件系统类型是ext2,ext3。内核把cramfs文件系统载入内存中解压,比较占内存。Yaffs是一种类似于JFFS/JFFS2的专门为flash设计的嵌入式文件系统。