嵌入式Linux内核详细设计.docx
《嵌入式Linux内核详细设计.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux内核详细设计.docx(58页珍藏版)》请在三一办公上搜索。
1、嵌入式1.inux内核详细设计嵌入式1.imIX内核全面设计说明书拟制:校对:湖南计算机股份有限公司嵌入式系统研究所2001.5目录1.引言21.l参考资料21.2术语与缩写词22设计概览52.1 设计的驱动因素与各自重要性的排序(比如,功能、性能、可靠性、硬件、内存考虑等等)52.2 不致设计方案的评价52.3 对所选设计方案总体结构图示及讨论52.4 开发环境(如开发语言、硬件、外设等等)63设计描述73 .1全局数据结构74 .2进程调度子系统253 .2.1模块功能概览254 .2.2全面输入、输出及处理描述253.3 内存管理管系统313.3.1 模块功能概览313.3.2 全面输入
2、、输出及处理描述313.4 虚拟文件子系统343 .4.1模块功能概览344 .4.2全面输入、输出及处理描述343.5 进程间通信(信C)子系统513.5.1 模块功能概览513.5.2 全面输入、输出及处理描述513.6 网络模块(NET)子系统603.6.1模块功能概览603.6.2全面输入、输出及处理描述601.引言.参考资料无1 .2术语与缩写词ArgumentARP参数,函数与例程中能够带入参数进行处理。地址转换协议。被用来将IP地址转换成物理硬件地址,如网卡地址。ARP是TCP/IP协议族中一个非常重要的协议。AsciiAscii代表着AnIeriCanStandardCodef
3、orInformationInterchange.字母表中的每个字母代表一个8位的编码。ASeii被用来存储”可写”的字符。Bit值域为0或者1的一个二进制数据位。BottomHalfHandler核心里在队列中的任务的句柄或者指针。ByteCCPUDataStructureDeviceDriver字节,8位数据。一种高级编程语言,1.inux基本上是用C编写的。CentralProcessingUnit(中央处理单元)。数据结构。设备驱动程序。用来操纵一个特定设备类的软件。比如,NCR810设备驱动程序操纵NCR810SCSI设备。DMAE1.FEIDEExecutableimageFunc
4、tionIDEImageIPIPCInterfaceIRQISADirectMemoryACCeSS(直接内存存取)Executableand1.inkableFOnnaI(可执行与可连接格式).扩展IDE.可执行映象。一个含有指令与数据的文件。能够被调进虚拟内存而执行。函数IntegratedDiskElectronics.参阅可执行映象。InternetProtOCOI(网际协议).InterprocessCommUniCtiOn(进程间通讯)接口。接口是一个抽象的概念。实现中,通常指一些函数或者例程接口。InterruptRequestQUeUe(中断申请队列).IndustryStan
5、dardArchitecture.Thisisastandard,althoughnowratherdated,databusinterfaceforsystemcomponentssuchasfloppydiskdrivers.KernelModuleKilobyteMegabyteMicroprocessorModuleObjectfile一个能够动态地被装载的核心部份,如文件系统与设备驱动序。1024字节。一兆字节或者1024K字节。微处理器。模块。一个含有指令的文件。目标文件。或者*.。文件。指一个含有指令与数据的文件。但这个文件尚未与其所需要的其他目标文件或者库相连接以形成一个可执行
6、文件。Page物理内存被分成许多同样大小的页面。是虚拟内存管理调度的最小单位。PointerProcessProcessorPCIPeripheralProgramProtocolRegisterRoutineSCSIShellSMPSocketSoftwareSystemV指针进程。一个正在执行的程序。处理器的简称。PeripheralComponentInterconnect.一个外设总线。外围设备程序。协议。通常指两个实体间“对话”的一种事先格式约定。寄存器例程。与函数类似,除了不返回值。SmallComputerSystemsIntCrfaCe(小型计算机接口).commandshel
7、l01.inux缺省用的是bashshell.Symmetricalmultiprocessing.SyStenIS(对称多处理系统)。一个socket代表着一个网络连接。1.inUX支持BSDSocket接口。软件Unix的一个版本,公布于1983。这个版本中,引进了著名的士SystemVIPC机制。TCPTaskQueueUDPVirtualmemoryTransmissionControlProtOCo1(传输操纵协议).任务队列UserDatagramPrOtOCOI(用户数据报协议).虚拟内存2 .设计概览2.1 设计的驱动因素与各自重要性的排序(比如,功能、性能、可靠性、硬件、内存
8、考虑等等)在设计过程中,要紧要考虑的有下列几点:跨平台的可移植性,在保证功能与不牺牲性能的前提下尽量减小核心的体积,为今后进一步开发留下空间与便利。其中,最要紧的就是可移植性,这是这个嵌入式系统的特色。减少核心的体积能够降低成本,但是随着当今硬件生产技术的提高完善,这一点已经不像过去那样重要了,因此在裁剪核心的同时要避免牺牲性能与功能。2 .2不一致设计方案的评价内核使用层次式结构。这样的结构大概层次清晰,易于修改。但是它严重降低了内核的效率。由于当高层次的函数调用底层提供的功能时,可能需要跨越几个层次,这样会增加系统开销。而且,在系统核心中,各个部分互相提供功能调用,假如严格按照层次式结构组
9、织将打破核心中各个功能部分的有机结构,使结构变的混乱。内核使用整体式结构。这样的结构的特点是这个内核由许多过程构成,但是不像在层次式结构中那样,每个过程只能被紧挨着它的上层调用。在整体式结构中,每个过程独立编译后,连接程序将其连接成为一个单独的目标程序,每个过程都对其它过程可见。这样的结构尽管在内部关系上确实变的复杂了(各个模块间是网状的结构),但是在调用关系与提供服务的角度来看变的简单清晰也更直观了,子系统间易于访问,内核工作效率较高。而且也有助于不一致的人参与不一致过程的开发。因此对内核的组织使用整体式结构。2.3 对所选设计方案总体结构图示及讨论内核由5个要紧的子系统构成,它们之间的大致
10、依靠关系如图。FS:文件系统IPC:进程间通信MM:内存管理NET:网络模块SCHED:进程调度进程调度子系统处于核心地位,其它子系统要完成操作都需要它来调度以占用系统资源完成自己的操作。文件系统需要利用网络模块支持网络文件系统,也需要利用内存管理支持RAMDISK设备。内存管理利用文件系统支持交换,交换进程定期的由调度程序调度,这也是内存管理依靠于进程调度的原因。进程间通信子系统要依靠内存管理支持共享内存通信机制。进程调度子系统需要内存管理的支持来完成创建进程等操作。2.4 开发环境(如开发语言、硬件、外设等等)内核由GNUC语言及汇编语言开发。硬件平台是1386嵌入式平台。所支持的外设诸如
11、标准PC的外设,与一些基本的嵌入式系统的硬件设备。如网络设备,显示设备,外存,音频设备,视频设备等。3 .设计描述3.3 全局数据结构全局数据结构的描述。block_dev_struct数据结构用来登记块设备以被缓冲区使用。structblk_dev_struct(void(*request_fn)(void);structrequest*CUrrenJrequest;structrequestplug;structtq_structplug_tq;buffer_head数据结构用来存放缓冲区中的一个数据块的信息。*bhstatebits*/defineBHUptodate0*1缓冲区里有数据
12、*/defineBH_Dirty1*1缓冲区脏*/defineBH_1.ock2*1缓冲区被锁*/defineBHRcq3/*0缓冲区无效*/defineBl1.ToUChed4/*1缓冲区被重复访问*/#defineBHHasaged5/*1缓冲区过时*/defineBH_Protected6*1缓冲区处于保护状态*/MefineBI1.FreeOnIO7/*1IO后丢弃缓冲区头部*/structbufferhead*Firstcacheline:*/unsignedlongb_blocknr;*块数目*/kdevtbdev;*设备(BFREE=free)*/kdevtbrdev;*真实设备
13、*/unsignedlongb_rsector;*磁盘上的真是缓冲区*/structbuffer_head*bnext;*信号队列列表*/structbuffer_head*b_this_page;*一页内的缓冲区循环列表*/*Secondcacheline:*/unsignedlongbstate;*缓冲区状态掩码*/structbuffer_head*b_next_free;unsignedintb_count;*用户使用此块*/unsignedlongbsize;*块大小*/*Non-performance-criticaldatafollows.*/char*bdata;*数据块指针*
14、/unsignedintb_list;*缓冲区公布表*/unsignedlongbflushtimc;*脏缓冲区被重写时间*/unsignedlongbru_time;*缓冲区上次被使用时间*/structwaitqueue*bwait;structbufferhead*b_prev;*双重连接的哈希表*/structbuffer_head*b_prev_free;*双重连接的缓冲区*/structbuffer_head*breqnext;*请求队列*/);device系统中每一个网络设备都对应于一个设备数据结构。structdevice/*这里是这个结构的可见部分的第一部分(就像用户在文件S
15、pace,c中看到的一样).这是它的名称与接口.*/char*namc;*I/Ospecificfields*/unsignedunsignedunsignedunsignedunsignedunsignedlonglonglonglonglongcharrmemend;rmem_start;memmom1.end;*共享内存结束*/1.start;/*共享内存起始*/base_addr;/*设备IO地址*/irq;*deviceIRQnumber*/*1.ow-levelstatusflags.*/volatileunsignedcharstart,*开始一个操作*/interrupt;*中
16、断到达*/unsignedlongtbusy;*传送忙*/structdevice*next;*设备初始化,只被调用一次*/int(*init)(structdevice*dev);*有些设备还需要下面这些字段,但是它们不是在文件Space,c中通常的设置项.*/unsignedcharif_port;/*可选择的AUI,TP,*/unsignedchardma;*DMA通道*/structenet_statistics*(*get_stats)(structdevice*dev);*标记了结构的可见部分的结束部分.这后面的所有字段是系统内部的,能够被随意改动*/*这些可能为将来的远程关机代码
17、使用*/unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsignedlong trans_start; *最后一次传送的时间*/ long last_rx; /* 最后 RX 的时间 */shortshortshortshortshortshortvoid *priv; *flags; * 接口标记(BSD)*/family; * 地址族 ID */metric; *路由距离*/mtu; * MTU 值 */type; *硬件类型*/hard_header_len; /* 硬件地址长度 */ 私有数据*/*接口地
18、址信息*/unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsignedcharcharchar char long long long longbroadcastMAX_ADDR_LEN; pad;dev addrMX ADDR_LEN;addrlen; /* pa_addr; /* pa_brdaddr;. padstaddr;. pamask; *:硬件地址长度*/协议地址*/*协议广播地址*/* P - P协议另i端地址*/ 协议网络掩码*/short pa_alen; *协议地址长度*/
19、structdev_mc_list*mclist;*MaC广播地址*/intmc_count;/*已安装的MaC编号*/structip_mcist*IPMac链*/u32tx_queue_len;/*每个队列的最大帧长度*/*Forloadbalancingdriverpairsupport*/unsignedlongpktqueue;*包队歹IJ*/structdevice*slave;*附属设备*/structnet_alias_info*alias_info;*主设备别名信息*/structnetalias*myalias;*别名设备*/*Pointertotheinterfacebu
20、ffers.*/structsk_buff_headbuffsDEV_NUMBUFFS;*Pointerstointerfaceserviceroutines.*/int(*open)(structdevice*dev);int(*stop)(structdevice*dev);int(*hard_startxmit)(structskbuff*skb,structdevice*dev);int(*hardheader)(structskbuff*skb,structdevice*dev,unsignedshorttype,void*daddr,void*saddr,unsignedlen);
21、int(*rebuiIdheader)(void*eth,structdevice*dev,unsignedlongraddr,structsk_buff*skb);void(*setmulticastlist)(structdevice*dev);int(*setmacaddress)(structdevice*dev,void*addr);int(*do_ioctl)(structdevice*dev,structifreq*ifr,intcmd);int(*set_config)(structdevice*dev,structifmap*map);void(*header_cache_b
22、ind)(structhhcache*hhp,structdevice*dev,unsignedshorthtype,_u32daddr);void(*header_cacheupdate)(structhhcache*hh,structdevice*dev,unsignedchar*haddr);int(*change_mtu)(structdevice*dev,intnewmtu);structiwstatistics*(*get_wireless_stats)(structdevice*dev););device.struct数据结构用来登记字符与块设备(含有相应的名字与对此设备的文件操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 内核 详细 设计

链接地址:https://www.31ppt.com/p-5213367.html