关闭
关闭
首页 > 嵌入式软件 > Uc/os II

引言

本文引用地址: http://embed.21ic.com/software/ucos/201710/48904.html

随着Internet的发展和应用,越来越多的嵌入式系统接入网络。然而,大部分嵌入式系统都是作为B/S模式中的应用服务器,必须随时对客户机的请求做出回应,要求具有较强的实时性。mC/OS-II是近年来发展迅速的一个开放源码实时操作系统,具有移植性好、可裁剪、可固化的优点。将mC/OS-II引入网络嵌入式系统,既可以实现系统的实时性要求,同时可以提高系统的可靠性,易于调试程序。

 

图1 系统硬件结构框图(点击图片放大)

 

图2 系统TCP/IP协议部分程序流程图(点击图片放大)

系统硬件设计

本系统设计中采用美国Cygnal公司生产的集成混合信号SoC芯片C8051F020,其内核与8051兼容。当它工作在最大系统时钟频率 25MHz 时,峰值速度可以达到 25MIPS。C8051F020除了256B的内部 RAM,还另有位于外部数据存储器地址空间的 4KB的 XRAM,以及64KB可在系统编程的 FLASH 存储器。因此,它有足够的RAM空间用于存放1500B的以太帧,以及μC/OS-II中再入函数的模拟栈。C8051F020除了有标准8051的端口( P0、P1、P2和P3)外,还附加4个端口(P4、P5、P6和P7),内部还有很多的功能器件。

系统的硬件结构框图如图1所示。网卡芯片使用台湾 Realtek 公司生产的RTL8019AS。在系统中用到的网卡地址为十六进制的0300H~0310H,因此,C8051F020的P7口采用复用方式与RTL8019AS的数据/地址线相接,网卡的SA8脚则直接与高电平相接。C8051F020的 P5.2与RTL8019AS的复位端相连,用来复位网卡。RTL8019AS则外接一个隔离LPF滤波器,通过RJ45接口接入以太网。多个单总线温度传感器DS18B20共享一条总线,由 P3.0口进行控制。

系统软件实现

TCP/IP协议实现

介质访问层主要由以太网控制器 RTL8019AS来实现,其数据通信协议采用IEEE802.3 标准,只处理接收地址与本机物理地址相符或为广播地址的以太帧,并只对ARP、IP数据报进行处理。

网络层实现IP、ARP和ICMP 协议:IP 数据报的首部保留 20 字节的基本控制信息,每个IP数据报包含一个分片;实现完整的ARP 协议;对于ICMP协议, 只实现 ICMP 中类型号为 0 ,代码为 0 的 Ping 应答协议。

传输层实现TCP协议。在系统中,TCP 协议只用于支持 HTTP 协议,由于在连接时一直处于被动服务的状态,因此在设计中省去了SYN - SENT 状态和CLOSED状态,让它一开始就处于 LISTEN 状态,来监听客户端的连接请求,避免了主动打开的操作,可更高效地服务于客户机。而当服务器发出数据报时,系统并不存储,只是记录下该数据报的状态信息。由于系统中数据传输量少,滑动窗口可设置为一个固定值(1 500 字节 )。

应用层实现HTTP 协议。现场监测设备与用户的交互式数据交换通过 HTTP 协议来实现,HTTP在端口80上使用TCP的服务。系统TCP/IP协议部分程序的流程图如图2所示。

uC/OS-II对TCP/IP协议及温度监测的实时管理

uC/OS-II在C8051F020单片机上的移植

uC/OS-II的移植,要求所用的C编译器支持混合编程,在这里选用 KEIL C51集成开发环境。由于uC/OS-II是可剥夺的实时操作系统,任务随时会被另一任务中断,一段时间后再可以运行。为了防止在任务切换过程中相应数据被破坏,mC/OS-II中使用了大量的可重入函数。在KEIL C51中,Cx51编译器为再入函数生成模拟栈,通过这个模拟栈完成参数传递和存放局部变量。根据再入函数所采用的编译模式(SMALL、COMPACT、LARGE),模拟栈可以位于片内或片外存储空间。对于本系统,模拟栈对RAM空间的要求较大,故选用LARGE模式。可直接利用芯片上集成的XRAM(4K),无须另外扩展外部数据存储器。通过配置STARTUP.A51文件进行设置:

XBPSTACK EQU 1 ; //选用LARGE模式

XBPSTACKTOP EQU 1000H ; //设置再入栈栈顶指针

在移植过程中主要完成对以下五个文件的修改:与CPU相关的文件OS_CPU_A.ASM、OS_CPU_C.C、OS_CPU.H和与应用相关的文件OS_CFG.H、INCLUDES.H。

其移植过程在这里不是重点,下面简要介绍与应用相关较紧密的部分设置。

0S-CPU.H:

#define OS_CRITICAL_ METHOD 1 //中断方式1

#if OS_CRITICAL_METHOD == 1

#define OS_ENTER_ CRITICAL() EA=0

//关中断

#define OS_EXIT_CRITICAL() EA=1 //开中断

#endif

OS_CFG.H:

OSTimeDlyHMSM()函数使应用程序无需知道延时时间对应的时钟节拍数,直接按小时、分、秒、毫秒来定义时间,方便对任务运行时间进行管理。

#define OS_TIME_DLY_ HMSM_EN 1

//允许使用函数OSTimeDly HMSM()。

由于每个嵌入式监测系统可以同时与多个PC机连接,向不同用户提供信息,因此可在OS_CFG.H头文件中定义一个包含各种连接信息的结构变量。当TCP报文到时,使用连接状态信息检查是否与已存在的连接相符,如果不存在则建立新的连接。这种处理可以使嵌入式监测系统同时处理来自同一或不同PC机的连接。

typedef struct

{

INT32U ipaddr;

INT16U port;

INT8U timer;

INT8U inactivity;

INT8U state;

char query[20];

} CONNECTION;

在ARP协议部分,嵌入式系统将收到的IP数据报的物理地址存放在一结构变量中。如果是向同一PC机发送数据报,不需要再次发送ARP请求就可得到目的主机的物理地址,减少了建立连接的时间。

typedef struct

{

INT32U ipaddr;

INT8U hwaddr[6];

} ARP_CACHE;

在其中设置每个嵌入式系统的MAC地址、IP地址、子网掩码和网关地址。

uC/OS-II中任务创建及优先级设置

C8051F020的XRAM做输入/输出数据的内部缓冲区,RTL8019AS内部的16K SRAM做单片机的外部数据缓冲区,存储输入/输出以太帧队列。这样C8051020就可以采用查询方式读取以太帧,并有充足的时间处理数据。由于输入帧的大小不定,同时在ARP数据报发送或接收时,输出帧必须存在输出缓冲区中,因此,输入/输出数据缓冲区在C8051F020的XRAM中使用动态分配,由KEIL C51 提供的malloc()和free()函数完成。网页存储于单片机的FLASH存储器中。当嵌入式系统向PC机发送网页时,先将网页从FLASH存储器中取出放入XRAM,再根据用户请求进行整理后放入RTL8019AS的SRAM,并发送到以太网上。

换一批

延伸阅读

[新鲜事] 苹果三星力劝运营商用e-SIM技术 弃用实体SIM卡

苹果三星力劝运营商用e-SIM技术 弃用实体SIM卡

据《金融时报》报道,苹果与三星正在积极劝说运营商以配合研发和使用全新SIM卡标准。此类新型SIM卡将采用嵌入式技术(后称e-SIM),能让移动设备更方便地在不同运营商网络间进行切换。e-SIM在出厂时会被预装在设备里,由于本身并不锁定于某个......

关键字:运营商 金融时报 三星 嵌入式 技术

[真心话] IT开发的岔路口:究竟是JAVA好还是嵌入式好?

IT开发的岔路口:究竟是JAVA好还是嵌入式好?

一份工作在一个人的生活中占据重要地位,对于一个人的生活质量占据决定性作用,可以说工作决定一个人一生,对于选择工作当然是要选择新兴产业且有发展前途的行业......

关键字:嵌入式 JAVA

[真心话] 物联网时代如何做嵌入式

物联网时代如何做嵌入式

随着物联网时代的来临,数据的流通、收集、分析显得越来越重要。在IdoSarig看来,主要做的事情在于保障数据在物联网里的双向流通,不仅是将底层的数据采集、传输至云端处理并分析,同样还需要将处理指令反馈至终端设......

关键字:物联网 嵌入式

[猎聘集] 优秀嵌入式DSP工程师是怎样炼成的?

优秀嵌入式DSP工程师是怎样炼成的?

1、工作多年,总结您的经验和工作经历,您最想与想要或已经从事嵌入式电子行业新人说的话是什么?我当初进入DSP领域,是一个师兄的带领下进入的,但是我初学不久,他就离开学校,开始工作,因此我的DSP学习也暂时结束......

关键字:DSP工程师 嵌入式

[猎聘集] 硬件路漫漫,想成为高级嵌入式硬件工程师,你还欠缺什么?

硬件路漫漫,想成为高级嵌入式硬件工程师,你还欠缺什么?

有很多朋友经常会问,成为高级嵌入式系统硬件工程师,需要做到哪些呢?那么,我们就先从嵌入式硬件工程师是个什么概念入手。......

关键字:嵌入式 硬件工程师

[新鲜事] 这5个窍门,是每一个嵌入式开发者设计前都应该了解的!

这5个窍门,是每一个嵌入式开发者设计前都应该了解的!

一个嵌入式应用软件都会在某些时候访问最底层的固件和进行一些硬件控制。驱动的设计和实施是确保一个系统能够满足其实时性要求的关键。以下5个窍门是每一个开发者在设计驱动程序时应该考虑的,下面就随我们一起来了解一下相关内容吧。......

关键字:嵌入式

[真心话] 过来人给嵌入式工程师的十个建议

过来人给嵌入式工程师的十个建议

不知什么时候开始,整个业界开始习惯用开源软件来开发应用程序(Apps),产业专家也鼓励嵌入式工程师们走出舒适圈、学习新技能,才能与时俱进。......

关键字:嵌入式工程师 软硬件技术

[真心话] 扩展坞ORICO ADS5:再现苹果经典“垃圾桶”外观

扩展坞ORICO ADS5:再现苹果经典“垃圾桶”外观

苹果Mac Pro垃圾桶外观的设计的确是个性十足,很多人也对这款造型奇特的台式电脑兴趣十足,不过价格成为了绝大多数人的拦路虎,不过为了弥补大家的遗憾,近日又有一款垃圾桶外观的设备问世。这款垃圾桶外观的设备你......

关键字:ORICO ADS5 扩展坞

[疯狂史] 一路走来,我的电子信息工程和嵌入式之路

一路走来,我的电子信息工程和嵌入式之路

一路走来,我的电子信息工程和嵌入式之路,嵌入式该怎么学,嵌入式从何学起,嵌入式入门需不需要报培训机构,哪个培训机构好点?.还有一些是咨询电子信息工程专业的情况等等?......

关键字:电子信息工程 嵌入式

[猎聘集] 嵌入式应用愈发广泛 就业前景可观

嵌入式应用愈发广泛 就业前景可观

近年来,智能硬件铺天盖地的出现,让人们彻底改变了过去对嵌入式系统应用的认识。嵌入式人才的就业方向,前景尤为可观。......

关键字:嵌入式 就业前景 可观

[新鲜事] 应届生就业,考研,培训该何去何从?

应届生就业,考研,培训该何去何从?

数据显示,今年全国高校毕业生人数近750万,比被称为史上“最难就业季”的2014年又增加了22万人,在这样竞争激烈的就业形势下,不少应届生都表示无可奈何。对于大三大四的学生来说,毕业以后是该马上找工......

关键字:应届生 考研 嵌入式

[新鲜事] 嵌入式工程师明年遭遇的最大技术挑战是什么?

嵌入式工程师明年遭遇的最大技术挑战是什么?

嵌入式工程师开发者们一直关注着其开发团队的技术水平的提高,以改善项目交期。最近,最新一期嵌入式市场研究对1704名工程师就其工作环境、应用、处理方法、操作系统和芯片使用等进行深入调查。2012年调查表明42%的工......

关键字:嵌入式工程师

[行业资讯] 一见倾“芯”,贸泽电子将亮相第六届深圳国际嵌入式系统展

一见倾“芯”,贸泽电子将亮相第六届深圳国际嵌入式系统展

半导体与电子元器件业顶尖工程设计资源与授权分销商贸泽电子(Mouser Electronics) 宣布携手ADI, Cinch, Maxim, TE与TI于本月21-23日参加“第六届深圳国际嵌入式系统展”,现邀请广大观众莅临贸泽电子展位(......

关键字:贸泽电子 物联网 嵌入式技术
条评论

我 要 评 论

网友评论

大家都爱看

  • 华为的优势,就是自家的各种自研芯片

    CPU即中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

    2017-08-16
  • 你不知道Ryzen芯片有多火?来看看AMD的股票吧

    据外媒报道,美银美林认为,AMD最新的Ryzen芯片可能会引发一波销售浪潮,进而推动该股继续上涨。它认为AMD股票还有40%以上的上涨空间。

    2017-08-16
  • 国产芯片:厚积薄发,强势崛起

    关于国产芯片,是近几年才有崛起的势头,可是在几年之前,国产芯片还处于“沉睡”的状态,尤其是手机芯片,几乎大部分都依赖进口,而且国外的市场几乎被高通和联发科所垄断,也就展讯还在市场边…

    2017-08-16
  • 为了数据安全 大疆无人机增加隐私飞行功能

    大疆周一表示,在美国陆军因为“网络缺陷”而要求其成员停用大疆无人机后,这家中国无人机制造商将加强无人机的数据安全性。 大疆政策和法务副总裁布伦丹&middot…

    2017-08-15
  • Intel代工 展讯发布14nm SC9853I手机SoC

    SC9853I采用的Intel的14nm FinFET制程,架构为8核64位Airmont架构,主频1.8GHz,GPU为Mali-T820 MP2,号称面向799~1299元档次的手机。…

    2017-08-15