×

TS201嵌入式系统怎样进行软件远程更新

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

分享资料个

基于DSP的远程程序更新方法很多[12],但在烧写的时候均要求系统不能断电,否则将造成整个系统软件崩溃,只能人工通过JTAG口调试烧写才能恢复。如何有效提高系统维护的可靠性成为一个重要的问题。本文创新地提出基于多DSP的程序分片、数据分段的高可靠性远程更新软件设计,并列举了多个增强可靠性的应用方法。本文以某型号无线远程监控系统为例,具体描述该设计的实际应用。
  1 系统结构
  本系统处理数据多,计算量大,又有很强的实时性要求,选用ADI公司的高速处理芯片TigerSharc201s。Flash选用JS28F128,容量为256 Mb。系统设计采用两片ADSP并行的模式。系统结构如图1所示,TS201A为主DSP,TS201B为从DSP。主DSP经Flash采用EPROM加载方式,再通过Link口引导加载从DSP。本处理系统支持多种工作模式,监控中心通过内部协议远程管控处理系统。从DSP实现信号处理计算,把处理计算结果传递给主DSP;主DSP实现管控模块,通过外围芯片FPGA的串口协议发送给无线传输设备,通过CDMA模块用无线网络的形式,发送到监控中心软件。监控中心通过协议对其可实现远程管理,包括数据库文件更新、程序更新和状态模式转换。
  
  图1 系统结构
  2 远程更新原理及实现
  2.1 设计原理
  Flash内部分为256个block,可以擦写任意位置的block段,没有擦写的block数据不会丢失。根据这一特性,把两片DSP软件程序和分段的数据库的烧写位置分开。Flash空间地址分配如图2所示。
  TS201嵌入式系统怎样进行软件远程更新
  图2 Flash空间地址分配示意图
  监控中心按照内部协议把数据库或程序文件分包,通过无线网络下发到以TS201为核心的信号处理机。处理机接收完数据后,通过自身的烧写功能,把新数据自动写入Flash中。重新启动后,DSP重载实现远程分片更新程序的功能。程序的初始化设置中,每次会自动读回Flash中的数据,完成更新数据库参数的功能。
  为了增加远程更新的可靠性,把两片DSP程序分开位置烧写。由于主DSP只涉及管理控制功能,所以把主DSP程序作为整个系统的“壳”,一般不作更新。用从DSP实现其主要的性能计算,它的加载通过主DSP的Link口引导。这样,大部分的在线维护和算法程序升级通过更新从DSP就能完成。在更新的过程中,主DSP程序不会受影响,增强了系统的可靠性,也不必担心突然掉电会导致系统软件的崩溃。
  2.2 基于TS201的远程更新过程
  本系统制定内部协议,实现远程更新的指令交互。信号处理机接收指令,按照协议决定远程更新的内容,分为软件更新或者数据库更新。若为软件更新再区分主、从DSP软件更新;若为数据库更新,根据数据库信息决定更新的位置和段数。
  本系统的数据库文件为30K×4字节,分为6段。根据无线传输设备的发送能力,把数据按照每包198字节分包,每包包括报头、总包数、包号和校验位等信息,数据协议具体格式如下:
  TS201嵌入式系统怎样进行软件远程更新
  报头:SOH;
  报文长度:本包数据的长度,包括报头,固定为198;
  总包数:此次程序或者数据库文件分成的总包数;
  包号:本包的编号;
  数据:需要更新的数据;
  校验位:占3个字节,包括1个字节的奇偶校验位、2个字节的CRC校验位。
  发送更新文件时,系统采用握手协议。信号处理机每接收到1包数据,将发回馈信息给监控中心,监控中心接收到成功回馈信息后,再发下1包数据。否则将进入等待模式,10 s后自动重发此包数据。若连续重发3次仍然不成功,才放弃此次更新。信号处理机软件机制和监控中心一样,发送回馈后进入等待模式,10 s后自动重新发送回馈信息,最多重发3次,才放弃更新,重新回到工作状态,直到接收到新的下发指令。

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

评论(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.lene-v.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:'TS201嵌入式系统怎样进行软件远程更新',//标题 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.lene-v.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);