×

基于μC/OS-II的网络监控系统设计方案

消耗积分:1 | 格式:rar | 大小:0.6 MB | 2017-10-30

分享资料个

随着信息时代的到来,特别是互联网的迅速普及,人们开始越来越多地接触到一个新概念——嵌入式产品。将嵌入式系统接入Internet,不仅实现了设备的远程控制、维护和升级,而且可实现资源共享。通过网络对设备进行监控,一个外部界面是必不可少的,利用Web浏览器可使用户通过网络对远程系统实现管理和更新,大大简化了人机界面的设计。若在系统中嵌入实时操作系统,将使系统具有极强的可移植性,另外,硬件设备的添加与裁剪也具有极大的灵活性。采用DHCP协议动态获得IP相关信息,使TCP/IP软件不再依赖于存储在芯片中的固定IP地址,这将为大型系统的安装提供方便条件。
  本设计的关键是如何在内存资源有限的单片机系统上,利用实时内核μC/OS-II把信息变成可以在互联网上传输的IP数据包,以便通过IE浏览器监控远程设备的状态。
  1 网络监控系统概述
  本设计采用Internet监控远程设备,整个系统相当于一个网络服务器。客户端通过IE浏览器对该服务器进行访问,实时地获得设备的状态信息,以便对设备进行控制和维护。这样,就要求服务器提供WWW服务,即实现HTTP协议。它应被所有浏览器支持,以保证任何地方的用户都可通过浏览器下达命令。在网络接口上,本系统选择以太网为其运行的网络环境。图1所示为HTTP设计模型。首先,客户端的浏览器与Web服务器使用一个或多个TCP连接,通过80号端口进行通信,浏览器通过HTTP协议浏览事先存储在EEROM中的控制网页,通过该网页传递控制命令到网络服务器,然后服务器对命令进行解析,调用相应的函数以控制外部I/O设备。
  基于μC/OS-II的网络监控系统设计方案
  整个网络监控系统包括硬件和软件两部分。在硬件部分嵌入了TCP/IP协议栈。因系统资源有限,在保持协议分层体系结构的前提下,应尽量精简协议内容。根据网络监控系统的原理,本系统实现了以下协议:DHCP、HTTP、TCP、IP、ICMP、ARP。
  2 硬件平台设计
  本设计采用以太网作为网络的运行环境,在硬件上需要有网络控制芯片。目前市面上有许多以太网络控制芯片,但其大多数都耗电量高、功能复杂,不适合用于价格低廉的嵌入式系统中。在这里选用RTL8019AS[1],其好处是NE2000兼容、软件移植性好、接口简单、不需转换芯片如PCI-ISA桥等。而单片机选择89C55,它有20K的ROM,内部结构简单,只要代码能够移植于它,就能较轻松地移植于其它架构的CPU,比如ARM等。图2为硬件原理框图。24C64用来存储物理地址及设备的相关信息等;外部RAM为数据处理提供缓存。系统提供了RS232接口用来进行测试,提供了RJ45接口以便连接到以太网。
  基于μC/OS-II的网络监控系统设计方案
  3 操作系统的选择
  根据监控系统的特点,系统必须满足实时性和并发性的要求,以便更好地支持TCP/IP运行时的调度,所以应用软件应该基于嵌入式实时操作系统。适合于片上的实时操作系统比较多,但是代码公开且适合移植于51系列单片机的却很少,主要有μC/OS-II、RTX51、Small RTOS51等。实时内核μC/OS-II是专门为单片机嵌入式应用而设计的,图3为嵌入式实时操作系统的内部结构图。它主要采用标准的ANSI C语言写成,与硬件有关的部分使用汇编语言编写,以使操作系统能很方便地移植到其它的处理器。可见,使用嵌入式操作系统时,应用软件只与上层的代码有关而与处理器无关,在进行软件移植时仅需对与硬件相关的底层函数进行修改,因此这样的应用软件具有良好的可移植性和稳定的可靠性。在μC/OS-II下编写TCP/IP协议,比传统的前后台系统要方便很多;用它分配内存缓冲区,使用前申请,使用后释放,可有效地利用系统资源。在程序设计时将TCP/IP协议栈做成任务,而用户程序在另外的任务中运行。这样,单片机可在完成原来控制系统功能的前提下,实现网络通信。从代码长度上看, 实现基本功能的TCP/IP协议栈比Linux等其它操作系统优势更大。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'基于μC/OS-II的网络监控系统设计方案',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);