《嵌入式实时操纵系统与网络构件的设计.docx》由会员分享,可在线阅读,更多相关《嵌入式实时操纵系统与网络构件的设计.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式实时操纵系统与网络构件的设计近年来,嵌入式实时操纵系统接入网络后将使远程监测、远程控制、远程诊断和远程维护变得越来越轻易。从根本上讲,嵌入式设备接入网络,当前根本上所采用的网络协议是基于TCP/IP通讯协议。由于嵌入式系统是以计算机技术为根底、软硬件可裁减并对本钱、体积、功耗有严格要求的专用系统,它对TCP/IP通讯协议的支持有其自身的特点,这些特点也决定嵌入式实时操纵系统与网络构件的体系构造。本方案以LPC2210为核心元件研究了嵌入式实时操纵系统与网络构件的硬件电路,同时在C/OS-平台上编写了应用软件程序。2、嵌入式实时操纵系统与网络构件的系统整体构造嵌入式实时操纵系统与网络构件的
2、硬件原理图如图1所示。系统采用PHILIPS公司LPC2210微处理器,外扩一片FLASHSST39VF160,并接入RTL8019AS以太网芯片Webchip,再与接口连接器HR901170A相连。并将开放源代码的TCP/IP协议栈LwIP移植到C/OS-系统上。/align图1硬件构造原理图RTL8019AS以太网芯片Webchip是独立于各种微控制器的专用网络接口芯片,它通过标准的输入、输出口与MCU相连。具有16位的数据总线和24为的地址总线,并且内部集成了DMA控制器、ISA总线控制器和集成16kSRAM、网络PHY收发器,兼容NE2k标准。用户可以通过DMA方式把需要发送的数据写入
3、片内SRAM中,让芯片自动将数据发送出去;而芯片接收到数据后,用户可以通过DMA方式将其读出。HR901170A是中山市汉仁电子有限公司消费的RJ45接口连接器带网络变压器/滤波器,该连接器知足IEEE802.3和IEEE902.3ab标准,可以较好的抑制电磁干扰。通过HR901170A系统就可以连接到以太网上了。该方案设计相对简单,硬件电路中采用的LPC2210是PHILIPS公司推出的微处理器,带有16kRAM,76个通用I/O口,12个独立外部中断引脚,集成有8通道的10位A/D,可以基于芯片设计复杂的系统。固然LPC2210具有较快的访问速度,但片内没有集成FLASH,所以这里扩展一片
4、16MbitFLASHSST39VF160保存用户程序。其架构知足了C/OS-正常运行的根本要求。3、嵌入式实时操纵系统与网络构件的软件设计为使嵌入式实时操纵系统与网络构件具有交好的实时性和稳定性,在实时多任务操纵系统C/OS-平台上设计系统软件。系统中各个任务在宏观上按照一定的关系并行工作,CPU资源得到充分利用,系统可靠性得到很大的保证,方便组织开发任务。在C/OS-平台上,软件设计工作主要包括三个方面的内容:C/OS-在LPC2210上的移植和LwIP协议在C/OS-上的实现以及系统应用软件的编写。本设计的系统构造图如图2所示:图2系统构造图该系统采用源码公开的嵌入式实时操纵系统C/OS
5、-,版本号为V2.52。其特点是源码公开、可读性强、移植性好、可配置、可裁剪。它采用优先级抢占式调度方案,优先级最高的任务一旦预备停当,那么拥有CPU的所有权并开场投入运行。C/OS-的软硬件体系构造图如图3所示。应用程序建立在操纵系统之上,处于系统的顶层,每个任务在宏观上是并行运行。与CPU类型无关的代码提供了系统效劳,即内核、任务治理、内存治理等。C/OS-的移植局部用于完成与不同处理器的接口工作。C/OS-的移植必需要求处理器及其编译器知足一定的条件。图3C/OS-硬件和软件体系构造原理图C/OS-的移植工作主要集中在下面几个文中:OS_CPU.H,OS_CPU_A.ASM,OS_CPU
6、_C.C。另外,在INCLUDES.H中必须包括LPC2210文件LPC2210.H;OS_CFG.H用于系统应用C/OS-中的初始化配置。OS_CPU.H主要包括了一些与处理器和编译器相关的常量和类型定义等,而且要留意的是LPC2210的堆栈方向是由高到低,用OS_STK_GROWTH来设置堆栈的增长方向。因此将OS_STK_GROWTH设为1。OS_CPU_A.ASM中需要编写4个汇编语言函数:OS_TASK_SW,OS_IntCtxSw,OSStartHighRdy和OSTickISR。OSStartHighRdy代码如下:LDRr4,addr_OSTCBCur;获得当前任务TCB地址L
7、DRr5,addr_OSTCBHighRdy;获得优先级最高任务TCB地址;恢复CPU工作形式LDMFDsp!,r4MSRSPSR_cxsf,r4LDMFDsp!,r4MSRCPSR_cxsf,r4LDMFDsp!,r0-r12,lr,pcOS_TASK_SW函数汇编代码如下:STMFDsp!,lr;保存pcSTMFDsp!,lr;保存lrSTMFDsp!,r0r12;保存存放器和返回地址;得到当前任务TCB地址LDRr4,addr_OSTCBCurLDRr5,r4STRsp,r5;保存sp在被占先任务的TCB;得到最高优先级任务的TCB地址LDRr6,addr_OSTCBHighRdyLDR
8、r6,r6LDRsp,r6;得到新任务堆栈指针;OSTCBCurOSTCBHighRdySTRr6,r4;设置新的当前任务的TCB地址OSIntCtxSw函数汇编代码如下:LDRsp,IRQ_STACKSUBr7,sp,#4;将处理器切换到治理形式MRSr1,SPSRORRr1,r1,#0xC0MSRCPSR_cxsf,r1;完成形式切换STMFDsp!,r4;保存程序状态存放器OS_CPU_C.C需要用C语言编写6个与操纵系统相关的函数:OSTaskStkInt,OStaskCreateHooK,OStaskDelHook,OStaskSwHook,OStaskStatHook,OSTime
9、TickHook。必须编写的是OSTaskStkInt,其余5个函数必须声明但可以不编写代码。voidOSTaskStkInitvoidtaskvoidpd,voidpdata,OS_STKptos,INT16UoptOS_STKstk;opt=opt/防止编译错误stk=ptos;/装载堆栈指针stk=USER_USING_MODE|0x00;/spsr,允许IRQ,FIQ中断stk=;/关中断计数器OsEnterSumreturnstk;下来要做的就是LwIP在C/OS-上的移植,即就是把与硬件、OS、编译器相关的局部独立出来放在/src/arch目录下。LwIP在C/OS-上的实现就是修
10、改这个目录下的文件,其它文件一般不做修改。首先要修改与CPU或者编译器相关的文件,如数据长度,字的上下位顺序等要和用户实现C/OS-移植时定义的数据长度参数是一致的;然后要修改与操纵系统相关的函数与数据构造;最后是库函数的实现,如u16_thtons;u16_tntohs;u32_thtonl;u32_tntohl;intstrlen;intstrncmp;voidbcopy;voidbzero;前4个函数由用户自己实现,而ADS编译器中库里面已经有了后四个函数。用户在其它CPU上实现时应根据自己的编译器来决定。LwIP在C/OS-上的移植完毕后,剩下的工作就是编写应用程序。将系统划分成假设干
11、个任务,每个任务对应一个独立的无限循环的主程序,完成一个特定的功能。系统任务优先级的划分是根据任务的重要性而定的,当然还要考虑到系统的平安性因素。为简化设计,应用程序采用静态优先级,即应用程序在执行的经过中各个任务优先级保持不变。系统的软件架构搭建好了以后,用C编写各个任务就轻易多了。主程序中关键代码如下:#defineTASK_STK_SIZE64;声明任务堆栈OS_STKTaskStartStkTASK_STK_SIZE;开场任务堆栈OS_STKTaskWatchStkTASK_STK_SIZE;监视任务堆栈voidTaskWatchvoiddata;声明监视任务的函数原型voidmain
12、voidOSInit/初始化C/OS-/OSTaskCreateTaskStart,void0,&TaskStartStkTASK_STK_SIZE-1,0;OSStart;/开场多任务/voidTaskStartvoiddatadata=data;/防止编译器错误/将主程序和C/OS-中的系统文件放在同一工程下,进展编译即可。为了进步执行效率,可以根据实际应用修改C/OS-的局部常用代码,甚至剪切掉某些不必要的代码。4、完毕语基于嵌入式实时操纵系统与网络构件的设计方案在硬件上简洁可靠;软件可维护性好,可扩展性好,有利于系统的后续开发,降低了系统设计的复杂性。随着嵌入式产品研究的深化,网络接口芯片的研究也会快速开展,是智能化产品的设计更趋向简单、标准、成熟。可以看出,嵌入式实时操纵系统与网络将会得到更大的开展和更广阔的应用。