---------------------------------精选公文范文------------------------------------------精选公文范文----------------1嵌入式生产实习报告篇一:嵌入式实习报告嵌入式系统实习报告学院:专业:班级:学号:姓名:指导老师:计算机与信息学院电子信息工程200911112009111123王金民严朝军彭文标嵌入式系统开发与应用概述在今日,嵌入式ARM技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM的影子。如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎---------------------------------精选公文范文------------------------------------------精选公文范文----------------2你所想到的领域。由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征,目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。嵌入式的广泛应用可以说是无所不在。linux系统linux系统主要是由用户空间和内核空间再加上外部的硬件平台构成,用户空间就是用户应用程序的运行空间,主要包括两方面的内容:用户应用程序和GNUCLibrary。而内核空间有三方面的内容,一是系统调用接口,它作为用户空间和内核空间相互转移的一种方式,二是内核空间,三是体系相关内核代码,在linux内核代码中,可以看到arch目录下有许多子目录,其中每一个子目录代表一种硬件平台。而为什么要把linux系统划分为用户空间和内核空间呢?主要是一旦用户空间和内核空间没有分开,那用户将拥---------------------------------精选公文范文------------------------------------------精选公文范文----------------3有很大的权限去操控内核或用户应用程序的崩溃将会造成系统的崩溃,而linux系统是利用cpu的模式分级来分别运行用户空间和内核空间,这样就可以使操作系统得到充分的保护。而现代的cpu通常实现了不同的工作模式,以ARM处理器为例实现了7种运行模式,分别为:1)用户模式:ARM微处理器正常程序执行模式2)系统模式:运行具有特权的操作系统任务3)中断模式:用于通用的中断处理4)外部中断模式:用于高速数据传输或通道处理5)数据访问终止模式:当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护6)管理模式:操作系统使用的保护模式7)未定义指令中止模式:当未定义的指令执行时进入该模式,可用于支---------------------------------精选公文范文------------------------------------------精选公文范文----------------4持硬件协处理器的软件仿真ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变,除用户模式外,其他模式都是非用户模式或特权模式,除用户模式和系统模式外,其他模式都是异常模式,常用于处理异常或中断,以及需要访问受保护的系统资源等情况。同时用户空间和内核空间是程序执行的两种不同状态,通过系统调用和硬件中断去实现用户空间到内核空间的转移,系统调用是主动的,硬件中断是被动的,比如键盘按下或者串口中断。接下来说说linux的内核架构,它主要是包含7大组成部分1.内存管理内存管理的主要作用是使多个进程能安全高效的共享内存区域,通常使用以下两个手段:①内存映射:将物理内存映射到虚拟内存中,变有限为无限②有效管理:使用各种内存管理算法(如伙伴算法),减少内存浪费---------------------------------精选公文范文------------------------------------------精选公文范文----------------52.虚拟文件系统vfs隐藏了各种文件系统的具体细节,为文件操作提供统一的接口3.网络协议栈它为linux提供了完善丰富的网络协议实现4.进程管理进程管理的重点是创建进程、停止进程,并控制它们之间的通信。进程管理还包括控制活动进程如何共享cpu,即进程调度。5.设备驱动设备驱动也是内核的一部分,它不同于内核的其他部件,并且独立于内核的其他部件,同时它是与设备交互的唯一模块,通常由第三方厂商开发,一个驱动程序不与其他驱动程序交互;内核与驱动程序之间也仅通过一个严格定义的接口交互。6.系统调用接口SCI层为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核空间的桥梁。7.体系相关部分Linux内核源代码采用树形结构进---------------------------------精选公文范文------------------------------------------精选公文范文----------------6行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。下面介绍下这些目录的组成arch目录arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。其下子目录有|--x86/*英特尔cpu及与之相兼容体系结构的子目录*/||--boot/*引导程序*/|||--compressed/*内核解压缩*/||--tools/*生成压缩内核映像的程序*/||--kernel/*相关内核特性实现方式,如信号处理、时钟处理*/||--lib/*硬件相关工具函数*/block目录部分块设备驱动程序---------------------------------精选公文范文------------------------------------------精选公文范文----------------7crypto目录加密、压缩、CRC校验算法documentation内核的文档drivers目录(重点)设备驱动程序fs目录存放各种文件系统的实现代码。每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统vfs。||--devpts/*/dev/pts虚拟文件系统*/||--ext2/*第二扩展文件系统*/||--fat/*MS的fat32文件系统*/||--isofs/*ISO9660光盘cd-rom上的文件系统*/include目录内核所需要的头文件。与平台无关的头文件在include/linux子目录下,与平台相关的头文件则放在相应的子目录中。---------------------------------精选公文范文------------------------------------------精选公文范文----------------8init目录内核初始化代码ipc目录进程间通信的实现代码kernel目录Linux大多数关键的核心功能都是在这个目录实现。(调度程序,进程控制,模块化)lib目录库文件代码mm目录mm目录中的文件用于实现内存管理中与体系结构无关的部分(与体系结构相关的部分在哪里实现?arch)net目录网络协议的实现代码||--802/*802无线通讯协议核心支持代码*/||--appletalk/*与苹果系统连网的协议*/||--ax25/*AX25无线INTERNET---------------------------------精选公文范文------------------------------------------精选公文范文----------------9协议*/||--bridge/*桥接设备*/||--ipv4/*IP协议族V4版32位寻址模式*/||--ipv6/*IP协议族V6版*/samples一些内核编程的范例scripts配置内核的脚securitySElinux的模块sound音频设备的驱动程序usrcpio命令实现virt内核虚拟机Linux内核的配置与编译Linux内核具有可定制的优点,配置内核的目的是裁剪掉不必要的文件和目录,获得一个最简单的又能满足用户开发的操作系统,以解除嵌入式开发过---------------------------------精选公文范文------------------------------------------精选公文范文----------------10程中所遇到的存储空间有限的困扰。内核配置与编译的具体步骤如下:1.清除临时文件、中间文件和配置文件1)makecleanRemovemostgeneratedfilesbutkeeptheconfig即清除大部分生成的文件但保留配置文件2)makemrproperRemoveallgeneratedfiles+configfiles即清除所有生成的文件还有配置文件3)makedistcleanMrproper+removeeditorbackupandpatchfiles即实现makemrproper命令的同时删除编辑器备份文件和补丁文件2.确定目标系统的软硬件配置情况,比如cpu类型,网卡型号,所需支持的网络协议等。3.使用如下命令之一配置内核:1)makeconfig:基于文本模式的---------------------------------精选公文范文------------------------------------------精选公文范文----------------11交互式配置2)makemenuconfig:基于文本模式的菜单型配置3)makeoldconfig:使用已有的配置文件(.config),但是会询问新增的配置选项4)makexconfig:图形化的配置(需安装图形化系统)Makemenuconfig是最为常用的内核配置方式如果一个.config文件已经存在,它将使用该文件设置那些默认的值4.编译内核编译内核通常也需要几个步骤,一是清除以前编译通过的残留文件;二是编译内核image文件和可加载模块;三是安装模块。下面是编译内核的具体步骤。①makedep命令用在内核或之前,用于建立源文件之间的依赖关系,在执行内核配置命令之后使用,不过在内核中已经取消该命令,该功能由内核---------------------------------精选公文范文------------------------------------------精选公文范文----------------12配置命令实现。②makeclean命令用于删除前面留下来的中间文件,该命令不会删除.config等配置文件。这个步骤是可选的,它的目的是清除原先编译过而残留的.com和.o(obj文件)。如果是刚下载的源代码,那么这一步就可以省略了,但是如果已经编译多次内核,这一步是必要的,不然后面可能会出现很多莫名其妙的小问题。③makezImage命令用于编译生成压缩形式的内核镜像,当编译成功后,就会在arch\arm\boot\目录下生成zImage文件,大小一般为几百KB。对于嵌入式Linux内核而言,直接将生成的zImage下载到嵌入式目标板的flash中即可。对于较大的内核,如果用makezImage编译,系统会提示使用makebzImage命令来编译,bzImage是bigzImage的缩写,可用于生成较大的压缩内核,比如桌面Linux系统内核。④在配置菜单的过程中,有些选项被选择为模块的,即选项前为[M],并且---------------------------------精选公文范文-------------------------------