4110008032付水生基于ARM CortexM3的双以太网口通信的实现.doc
学号: 4110008032 泰山医学院毕业设计(论文) 题目: 基于ARM Cortex-M3的双以太网口通信的实现 院(部)系信息工程学院所 学 专 业计算机科学与技术年级、班级2010级本科1班完成人姓名付水生指导教师姓名专业技术职称彭磊 副教授 2014年 6 月 10 日论文原创性保证书我保证所提交的论文都是自己独立完成,如有抄袭、剽窃、雷同等现象,愿承担相应后果,接受学校的处理。专业:计算机科学与技术班级:2010级本科一班 签名: 年 月 日泰山医学院本科毕业设计(论文)摘要随着嵌入式系统技术的发展,嵌入式系统技术与以太网技术融合的也越来越紧密,虽然嵌入式系统的应用程序完全可以在ARM裸机上运行,但是随着测控设备功能的增强,嵌入式系统所需完成的任务越来越复杂,需要管理的外设越来越多,传统的软件开发模式已经显得力不从心。而采用嵌入式操作系统作为软件开发平台,就可以由操作系统来完成任务的管理和系统资源的分配,开发工作的重点才能集中于实际应用系统性能的提高。此外,在操作系统基础上可实现统一规范的编程,使程序具有良好的可读性和可移植性,并可提高开发的效率。ARM Cortex-M3处理器结合了多种突破性技术,令芯片供应商提供超低费用的芯片。该处理器还集成了许多紧耦合系统外设,令系统能满足下一代产品的控制需求。本论文是基于ARM Cortex-M3微处理器MB9F618和近来比较流行RT-Thread操作系统的双以太网口通信的研制过程为主要内容,阐述了其具体使用的技术和各模块的实现方法,区别于一般的TCP/IP协议,本系统采用了LwIP的通信协议,LwIP实现的重点是在保持TCP协议主要的功能的基础上减少对RAM的占用,它只需要十几KB的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。在以上的硬件和软件的共同支持下,最终完成了双以太网口之间通信的研究。关键词: ARM Cortex-M3;RT-Thread;LwIP;双以太网的通信AbstractWith the development of embedded systems technology,embedded system technology and the integration of Ethernet technology is also more closely,though embedded systems applications can run on ARM bare metal , but with enhanced functionality and control devices , embedded systems needed to complete the task more complex, the need to manage more and more peripherals , traditional software development model has appeared to be inadequate . The focus on distribution development of embedded operating system as the software development platform .In addition, the operating system can be realized on the basis of a standardized programming, the program has good readability and portability , and improve development efficiency.ARM Cortex-M3 processor combines multiple breakthrough technologies enable chip vendors to provide ultra-low cost of the chip . The processor also integrates a number of tightly-coupled system peripherals , so that the control system can meet the needs of the next generation of products.This thesis is based on the development process of dual Ethernet port communication ARM Cortex-M3 microprocessor MB9F618 and recently more popular RT-Thread operating system as the main content , technology and describes the implementation of each module of its specific use , the difference in general TCP / IP protocol , the system uses a communication protocol LwIP focus LwIP achieve is to reduce the occupancy of RAM on the basis of maintaining the main features of the TCP protocol on , it takes about a dozen KB of RAM and 40K of ROM can run , which makes LwIP stack suitable for use in low-end embedded systems. In support of these common hardware and software , the final completion of the study of communication between the dual Ethernet ports . Keywords : ARM Cortex-M3 ;RT-Thread ;LwIP ;dual Ethernet communication泰山医学院本科毕业设计(论文)目录前言1第一章 相关技术背景介绍31. 嵌入式系统的定义32. 嵌入式处理器分类与现状43. 嵌入式操作系统64. 网络协议栈65. 本章小结7第二章 系统硬件平台81. ARM Cortex-M3处理器82. 系统任务要求92.1 硬件方面92.1 软件方面93. 开发板MB9F618简介93.2 开发板外观93.2 配置说明104. 本章小结11第三章 软件的设计121. 嵌入式操作系统的选择121.1 RT-Thread操作系统的简介121.2 虚拟文件系统131.3 shell系统131.4 图形用户界面131.5 支持的平台131.6 RT-Thread的内核对象模型141.7 内核对象管理工作模式141.8 线程状态152. LwIP协议栈162.1 LwIP协议栈简介162.2 LwIP的以太网数据接收183. LwIP协议栈的初始化214. MB9F618网口设置225. 主要函数功能的简介256. 本章小结25第四章 系统功能模块调试271. 程序烧写272. 程序烧写后273. 双网卡测试274. 网口的通信295. 本章小结31结论32参考文献33致谢34前言前言最近几年,嵌入式系统产品日臻完善,并在全世界各行业得到广泛应用。嵌入式系统产品的研制和应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。随着信息化、智能化、网络化的发展,嵌入式技术将全面展开,现在嵌入式已经成为通信和消费类产品的共同发展方向。总体来说,嵌入式系统分别在硬件和软件方面获得发展。嵌入式系统必将成为当今IT界的又一焦点,开发自主知识产权的嵌入式处理器和嵌入式操作系统,对于我们国家的民族IT产业来讲具有十分重要的战略意义。从国内IT市场来看,嵌入式系统及其产品在由家电产品和Internet衍生出来的新型市场中占有主导地位和独特份额。在消费家电的智能化的今天,嵌入式更显重要。像我们平常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,都是典型的嵌入式系统。据预测,随着Internet的迅速发展和廉价微处理器的出现,嵌入式系统将在日常生活里形成更大的应用领域。新的微处理器层出不穷,嵌入式操作系统自身结构的设计更加便于移植,能够在短时间内支持更多的微处理器。嵌入式系统的开发成了一项系统工程,开发厂商不仅要提供嵌入式软硬件系统本身,同时还要提供强大的硬件开发工具和软件支持包。各类嵌入式Linux操作系统迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合信息家电等嵌入式系统的需要,目前已经形成了能与Windows CE、Palm OS等嵌入式操作系统进行有力竞争的局面。网络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂,网络互联成为必然趋势。精简系统内核,优化关键算法,降低功耗和软硬件成本。提供更加友好的多媒体人机交互界面。 21世纪无疑将足一个网络的时代,将嵌入式系统应用到各种网络环境中去的呼声自然也越来越高。目前大多数嵌入式系统还孤立于Internet之外,随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。信息时代和数字时代的到来,为嵌入式系统的发展带来了巨大的机遇,同时也对嵌入式系统厂商提出,新的挑战。目前,嵌入式技术与Internet技术的结合正在推动着嵌入式技术的飞速发展,嵌入式系统的研究和应用产生了如下新的显著变化;随着ARM及其合作伙伴在嵌入式领域不断努力,芯片的成本不断降低,多种智能设备将通过互联网得以联动,形成一个体系。在这个网络中,所有的日常事物都将内置芯片,从而具备处理信息并与网络交流的能力,这就是所谓的物联网。与应用处理器(AP)相比,微控制器(MCU)应用和嵌入式系统开发领域无疑具有相当的多样性和复杂性。2012年23日,中国农历年的除夕这一天, LSI公司今天宣布扩大与ARM的长期的战略合作伙伴关系。新闻明确的提出,LSI将借此合作进军网络应用。根据新授权许可, LSI不但可以访问包括包括了支持虚拟化的ARM Cortex-A15处理器的一系列ARM处理器,而且可以访问对于多核应用至关重要的ARM芯片的互连技术。回顾2013,10月份,AppliedMicro 的获得v8架构授权,8月份,海思半导体获ARM技术授权,用于新一代的3G/4G基站网络基础架构。2月份, Broadcom和ARM扩展了战略合作伙伴,1月份,Cavium的进行一代SoC的新闻,再算上一直有ARM架构Marvell,ARM越来越多的和网络联系在一起。在国内,越来越多的开源软件,让一直倍受封闭系统折磨的电信OEM,开始从ARM强大的生态系统的受益。 当然,最重要的是,ARM的处理器不仅仅是在低功耗表现出色,它们在性能方面的优势逐步显现。因为网络应用永远都是性能饥渴的。将嵌入式系统技术与以太网技术集成在一起很早之前就产生了,但是有很多的客观因素制约了它的发展。早期的嵌入式系统中的处理器大部分是以8位、16位MCU微控制器为主,无论是运算速度还是存储容量都比较低。而且早期的以太网技术还不成熟,所以TCP/IP协议栈未能在嵌入式系统中得到广泛的运用。但是随着半导体微电子技术和以太网技术的高速发展,以上的问题正在逐步得到解决,32位MCU微处理器也逐步得到广泛的应用。本文以ARM处理结构的嵌入式硬件系统为基础,实现了具有网络通信的实时操作系统,该应用可以广泛的在工业控制,通讯设备,家用电器等领域推广,使得更多的设备能够被远程控制和管理,改变传统的模式,进入互联网通信的世界。除此之外,本文是采用MB9F618这开发板,TR-Thread的操作系统,以及嵌入式的LwIP协议,最终来实现本系统的测试。1第一章 相关技术背景介绍第一章 相关技术背景介绍1. 嵌入式系统的定义嵌入式系统(Embedded System)是一种包括硬和软件的完整的计算机系统,它的定义是:“嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可剪裁,适用于应用系统对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。”嵌入式系统所用的计算机是嵌入到被控对象的专用微处理器,但是功能比通用计算机专门化,具有通用计算机所不能具备的针对某个方面特别设计的、合适的运算速度、高可靠性和较低比较成本的专用计算机系统。嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器微处理器、存储器及外设器件和IO端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点:(1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。 (2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。(3)可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。(4)嵌入式微处理器必须功耗很低,尤其是用于便携。下面对嵌入式计算机系统的组成进行介绍。(1)硬件层硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。(2)中间层硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或者版级支持包(Board Support Package,BSP),它半系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入工系统的硬件初始化的BSP功能,设计硬件相关的设备驱动。(3)系统软件层系统软件层由实时多任务操作系(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。2. 嵌入式处理器分类与现状图1-1 嵌入式处理器分类嵌入式微处理器(MPU):微机中的中央处理器(CPU)称为微处理器(MPU),是构成微机的核心部件,也可以说是微机的心脏。它起到控制整个微型计算机工作的作用,产生控制信号对相应的部件进行控制,并执行相应的操作。在微机中,CPU被集成在一片超大规模集成电路芯片上,称为微处理器(MPU),微处理器插在主板的cpu插槽中。通常所说的16位机、32位机是指该计算机中微处理器内部数据总线的宽度,也就是CPU可同时操作的二进制数的位数。目前常用的CPU都是64位的,即一次可传送64位二进制数。嵌入式微控制器(MCU):(嵌入式微控制器(Embedded Microcontroller Unit,EMCU)嵌入式微控制器的典型代表是单片机,单片机从诞生之日起,就称为嵌入式微控制器。它体积小,结构紧凑,作为一个部件埋藏于所控制的装置中,主要完成信号控制的功能。就是将整个计算机系统集成到一块芯片中。但这种8位的电子器件目前在嵌入式设备中仍然有着极其广泛的应用。单片机芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。由于微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制器。为了适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的名不同的是存储器和外设的配置极封装。这样可以最大限度地与应用需求相匹配,从而减小功耗和成本。由于MCU低廉的价格,优良的功能,所以拥有的品种和数量最多。比较有代表性的包括8051、MCS96/196/296、P51XA、C166/167、68K系列以及MCU 8XC930/931、C540、C541,并且有支持12C、CANBus、LCD及众多专用MCU和兼容系列。目前MCU占嵌入式系统约70%的市场份额。嵌入式DSP处理器(DSP):DSP是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信、消费电子等领域得到广泛的应用。DSP处理器经过单片化、EMC改造、增加片上外设,或在通用单片机或SOC中增加DSP协处理器,从而发展成为嵌入式DSP处理器(Embedded Digital Signal Processor, EDSP),推动嵌入式DSP处理器发展的因素主要是嵌入式系统的智能化。目前TI、ADI、Freescale、CEVA等半导体厂商在这一领域拥有很强的实力。嵌入式片上系统(system on chip):SoC定义的基本内容主要表现在两方面:其一是它的构成,其二是它形成过程。系统级芯片的构成可以是系统级芯片控制逻辑模块、微处理器/微控制器CPU 内核模块、数字信号处理器DSP模块、嵌入的存储器模块、和外部进行通讯的接口模块、含有ADC/DAC的模拟前端模块、电源提供和功耗管理模块,对于一个无线SoC还有射频前端模块、用户定义逻辑(它可以由FPGA 或ASIC实现)以及微电子机械模块,更重要的是一个SoC 芯片内嵌有基本软件(RDOS或COS以及其他应用软件)模块或可载入的用户软件等。系统级芯片形成或产生过程包含以下三个方面:(1) 基于单片集成系统的软硬件协同设计和验证;(2) 再利用逻辑面积技术使用和产能占有比例有效提高即开发和研究IP核生成及复用技术,特别是大容量的存储模块嵌入的重复应用等;(3) 超深亚微米(UDSM) 、纳米集成电路的设计理论和技术。3. 嵌入式操作系统图1-2 嵌入式设备网络化(1) 地址资源物联网的实现需要给每个物体分配唯一的标识或地址。最早的可寻址性想法是基于RFID标签和电子产品唯一编码来实现的。另一个来自语义网的想法是,用现有的命名协议,如统一资源标志符来访问所有物品(不仅限于电子产品,智能设备和带有RFID标签的物品)。这些物品本身不能交谈,但通过这种方式它们可以被其他节点访问,例如一个强大的中央服务器。下一代互联网将使用IPv6协议,它拥有极大数量的地址资源,使用IPv6的程序能够和几乎所有接入设备进行通信。这个系统将能够识别任何一种物品GS1/EPCglobal Information Services (EPCIS) 是这些想法的一个综合实践。 这个系统被用来标识从航天、交通到消费电子领域的物品。(2) 人工智能环境智能和自主控制并不是物联网最初概念的一部分。环境智能和自主控制也并不依赖于网络架构。但目前的研究趋势是将自主控制和物联网结合在一起,在未来物联网可能是一个非决定性的、开放的网络,其中自组织的或智能的实体和虚拟物品能够和环境交互并基于它们各自的目的自主运行。4. 网络协议栈(1)嵌入式微处理器和嵌入式操作系统为特征的嵌入式计算平台使计算进入了后PC时代。嵌入式系统的小体积、高可靠能够满足实现野战和恶劣环境下的便携虚拟仪器的需要。基于嵌入式计算平台,设计虚拟仪器系统成为构建测试系统的新思路。(2)与通用型计算机系统相比,嵌入式系统功耗低、可靠性高;功能强大、性能价格比高;实时性强,支持多任务;占用空间小,效率高;面向特定应用,可根据需要灵活定制。(3)操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用。提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。(4)嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。(5)更好的硬件适应性,也就是良好的移植性。5. 本章小结从技术的角度定义:嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。6第二章 系统硬件平台第二章 系统硬件平台1. ARM Cortex-M3处理器图2-1 Cortex-M3的一个简化示意图 CM3拥有R0R15的寄存器组,其中R13作为堆栈指针SP。SP有两个,但在同一时刻只能看到一个,这就是所谓的"banked"寄存器。1.R0R12是32位通用寄存器,用于数据操作。绝大多数16位的thumb指令只能访问R0R7,而32位的thumb指令可以访问全部寄存器。2.banked R13:两个堆栈指针 主堆栈指针(MSP):复位后默认使用进程堆栈指针(PSP):由用户的应用程序代码使用堆栈指针的最低两位永远是0,这意味着堆栈总是4字节对齐的。实际上,R13的最低两位被硬线连接到0。图2-2 Cortex-M3内部寄存器示意图2. 系统任务要求2.1 硬件方面(1)实现1个串口,1个RS232或1个Rs232和1个Rs485,通过跳线选择,串口波特率可选,最大波特率为115200bps(2)实现2个网口,网口A与网口B可以同时工作,通讯方式下实际速率至少100l(B/s)(3)双以太网口通信的实现2.2 软件方面在运行RT-Thread前,我们需要安装RealView MDK(正式版或评估版) 3.5+,它不仅是软件仿真工具,也是编译器链接器。 先从Keil官方网站下载RealView MDK评估版。会需要先填一些个人基本信息即可进行下载。下载完毕后,在Windows环境下运行它就行了。3. 开发板MB9F618简介3.1 开发板外观图2-3 MB9F618外观3.2 配置说明处理器Fujitsu MB9BF618S(ARM CortexM3 核心)主频可达144M。128K内部SRAM、1M内部Flash。多功能串口可按UART、SPI等多方式通信。双USB控制器,双以太网控制器。八通道DMA,两种看门狗定时器,12位A/D转换器等。外设资源l 1个DB9串口(UART0)l 1个SD卡插座l 1个Mini-B USB Host接口l 1个B型USB Slave接口 4个用户LEDl 1个SPI接口l 1个电源接口(5V )l 1个JTAG接口l 1个复位按键l 1个4M系统时钟晶振l 1个50M以太网控制器时钟晶振l 1个32.767K用于低功耗晶振l 2个RJ45 + DP83848 PHY4. 本章小结 ARM Cortex-M3处理器是行业领先的3位处理器,适用于具有较高确定性的实时应用,它经过专门开发,可使合作伙伴针对广泛的设备(包括微控制器、汽车车身系统、工业控制系统以及无线网络和传感器)开发高性能低成本平台。此处理器具有出色的计算性能以及对事件的优异系统响应能力,同时可应实际中对低动态和静态功率需求的挑战。此处理器配置十分灵活,从而支持广泛的实现形式(从需要内存保护和强大trace技术的实现形式,直至需要极小面积的成本敏感型设备)。10第三章 软件的设计第三章 软件的设计1. 嵌入式操作系统的选择1.1 RT-Thread操作系统的简介RT-Thread是一个开放源代码的实时操作系统,并且商业许可证非常宽松的实时操作系统。RT-Thread的变革因为Cortex-M3 而来,因为ST的STM32 使用的人太广了,当然还有非常重要的一点。RT-Thread已经开始支持Keil MDK,armcc编译器了。GNU GCC确实好,并且也由衷的推崇它,使用它,只是调试确实麻烦,阻碍了更多人使用它(ARM平台上)。当RT-Thread + Cortex-M3 + Keil MDK碰撞在一起的时候,火花因它而生,越来越多人使用RT-Thread了,当然这和RT-Thread厚积薄发是离不开的,因为这个时候,RT-Thread已经有一个稳定的内核,shell方式的调试利器nsh,DFS虚拟设备文件系统,LwIP协议栈以及自己从头开发的图形用户界面GUI。RT-Thread/GUI成型于2008年底,但为了Cortex-M3分支,这个组件停下来很多,但这种停留是值得的。在Cortex-M3这个平台上(当然也包括其他一些ARM平台),已经有多家企业开始使用RT-Thread实时操作系统作为他们的软件平台,其中也包括一家国内A股上市企业,他们把RT-Thread应用于电力,监控,RFID,数据采集等数个领域中,RT-Thread实时操作系统涵盖了实时内核,文件系统,LwIP网络协议栈,nsh shell等组件。RT-Thread/GUI因为出道时间比较晚,还处于试用期。图3-1 RT-Thread及外围组件的基本框架图RT-Thread Kernel内核部分包括了RT-Thread的核心代码,包括对象管理器,线程管理及调度,线程间通信等的微小内核实现(最小能够到达4k ROM,1k RAM体积占用)。内核库是为了保证内核能够独立运作的一套小型类似C库实现(这部分根据编译器自带C库的情况会有些不同,使用GCC编译器时,携带更多的标准C库实现)。CPU及板级支持包包含了RT-Thread支持的各个平台移植代码,通常会包含两个汇编文件,一个是系统启动初始化文件,一个是线程进行上下文切换的文件,其他的都是C源文件。1.2 虚拟文件系统RT-Thread提供的文件系统称为设备文件系统,它主要包含了一个非常轻型的虚拟文件系统。虚拟文件系统的好处就是,不管下层采用了什么文件系统,例如内存虚拟文件系统,FAT32文件系统还是YAFFS2闪存文件系统,对上层应用程序提供的接口都是统一的。1.3 shell系统RT-Thread的shell系统FinSH,提供了一套供用户在命令行操作的接口,主要用于调试、查看系统信息。由于系统程序大多数采用C语言来编写,FinSH命令行的设计被设计成类似C语言表达式的风格:它能够解析执行大部分C语言的表达式,也能够使用类似于C语言的函数调用方式(或函数指针方式)访问系统中的函数及全局变量。1.4 图形用户界面RT-Thread/GUI组件是一套完全针对嵌入式系统而进行优化的图形用户界面,它在保留通常意义的多窗口的前提下,提出了面板,工作台,视图的概念,通过一个个视图的渲染展现出图形用户界面绚丽的外观。它同样也包括了基本控件的支持、中文显示的支持、多线程的支持;针对嵌入式系统计算能力不足的特点,它会自动对界面区域进行可视区域的剪切,该重绘显示的地方进行重绘,被覆盖的地方则不进行重复绘图。1.5 支持的平台图3-2 RT-Therad支持的平台1.6 RT-Thread的内核对象模型RT-Thread的内核对象模型是一种非常有趣的面向对象实现方式。由于C语言更为面向系统底层,操作系统核心通常都是采用C语言和汇编语言混合编写而成。C语言作为一门高级计算机编程语言,一般被认为是一种面向过程的编程语言:程序员按照特定的方式把要处理事物的过程一级级分解成一个个子过程。 面向对象源于人类对世界的认知多偏向于类别模式,根据世界中不同物品的特性分门别类的组织在一起抽象并归纳,形成各个类别的自有属性。在计算机领域一般采用一门新的,具备面向对象特征的编程语言实现面向对象的设计,例如常见的编程语言C+,Java,Python等。那么RT- Thread既然有意引入对象系统,为什么不直接采用C+来实现?这个需要从C+的实现说起,用过C+的开发人员都知道,C+的对象系统中会引入很多未知的东西,例如虚拟重载表,命名粉 碎,模板展开等。面向对象有它非常优越的地方,取其精华(即面向对象思想,面向对象设计),也就是RT-Thread内核对象模型的来源。RT-Thread实时操作系统中包含一个小型的,非常紧凑的对象系统,这个对象系统完全采用C语言实现。在了解RT-Thread内部或采用RT-Thread编程时有必要先熟悉它,它是RT-Thread实现的基础。1.7 内核对象管理工作模式图3-3 RT-Thread内核对象管理工作模式RT-Thread采用内核对象管理系统来访问/管理所有内核对象。内核对象包含了内核中绝大部分设施,而这些内核对象可以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。通过内核对象系统,RT-Thread做到了不依赖于具体的内存分配方式,系统的灵活性得到极大的提高。RT-Thread内核对象包括:线程,信号量,互斥锁,事件,邮箱,消息队列和定时器,内存池,设备驱动等。对象容器中包含了每类内核对象的信息,包括对象类型,大小等。对象容器给每类内核对象分配了一个链表,所有的内核对象都被链接到该链表上。下图显示了RT-Thread中各类内核对象的派生和继承关系。对于每一种具体内核对象和对象控制块,除了基本结构外,还有自己的扩展属性(私有属性),例如,对于线程控制块,在基类对象基础上进行扩展,增加了线程状态、优先级等属性。这些属性在基类对象的操作中不会用到,只有在与具体线程相关的操作中才会使用。因此从面向对象的观点,可以认为每一种具体对象是抽象对象的派生,继承了基本对象的属性并在此基础上扩展了与自己相关的属性。图3-4 RT-Thread中各类内核对象的派生和继承关系在对象管理模块中,定义了通用的数据结构,用来保存各种对象的共同属性,各种具体对象只需要在此基础上加上自己的某些特别的属性,就可以清楚的表示自己的特征。这种设计方法的优点:(1)提高了系统的可重用性和扩展性,增加新的对象类别很容易,只需要继承通用对象的属性再加少量扩展即可。(2)提供统一的对象操作方式,简化了各种具体对象的操作,提高了系统的可靠性。 1.8 线程状态线程运行的过程中,在一个时间内只允许一个线程在处理器中运行,即线程会有多种不同的线程状态,如运行态,非运行态等。在RT-Thread实时操作系统中,线程包含四种状态,操作系统会自动根据它运行的情况而动态调整它的状态。RT-Thread中的四种线程状态:(1) RT THREAD INIT/CLOSE线程初始状态。当线程刚开始创建还没开始运行时就处于这个状态;当线程运行结束时也处于这个状态。在这个状态下,线程不参与调度。(2)RT THREAD SUSPEND挂起态。线程此时被挂起:它可能因为资源不可用而等待挂起;或主动延时一段时间而被挂起。在这个状态下,线程不参与调度。 (3)RT THREAD READY 就绪态。线程正在运行;或当前线程运行完让出处理机后,操作系统寻找最高优先级的就绪态线程运行。(4) RT THREAD RUNNING运行态。线程当前正在运行,在单核系统中,只有rt thread self()函数返回的线程处于这个状态;在多核系统中则不受这个限制。RT-Thread实时操作系统提供一系列的操作系统调用接口,使得线程的状态在这四个状态之间来回的变换。例如一个就绪态的线程由于申请一个资源(例如使用rt sem take),而有可能进入阻塞态。又如,一个外部中断发生,转入中断处理函数,中断处理函数释放了某个资源,导致了当前运行任务的切换,唤醒了另一阻塞态的任务,改变其状态为就绪态等等。线程通过调用函数rt thread create/init调用进入到初始状态(RT THREAD INIT/RT THREAD CLOSE),通过函数rt thread startup调用后进入到就绪状态(RT THREAD READY)。当这个线程调用rt thread delay,rt sem take,rt mb recv等函数时,将主动挂起或由于获取不到资源进入到挂起状态。在挂起状态的线程,如果它等待超时依然未获得资源或由于其他线程释放了资源,它将返回到就绪状态。2. LwIP协议栈2.1 LwIP协议栈简介LwIP是Light Weight (轻型)IP协议,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低