×

嵌入式GIS软件低功耗措施资料下载

消耗积分:2 | 格式:pdf | 大小:269.15KB | 2021-04-20

王兰

分享资料个

  引 言   嵌入式计算机技术的快速发展和社会需求的推动使得G1S技术逐渐应用于嵌入式系统中,构成嵌入式GIS。嵌入式GIS成了当前GIS发展的一个热门和重要研究方向。它具有数据采集、地图浏览、信息检索、路径分析和地形分析等功能,目前已经在城市智能交通系统(ITS)、物流配送系统、车辆导航及监控系统和数字化武器装备等系统中得到广泛应用。嵌入式GIS系统设计除要求体积小、质量轻和性能好外,低功耗也成为重要指标,尤其是采用电池供电系统的便携式产品,低功耗设计还起到节能环保作用。低功耗设计一般包括硬件低功耗设计和软件低功耗设计两大方面。硬件低功耗设计一般选用满足性能指标要求的低功耗芯片及其威廉希尔官方网站 模块,并支持单源、低电压和分区电源供电方案。除硬件低功耗设计外,软件运行控制在一定程度上对系统功耗起着至关重要的作用。下面基于嵌入式GIS系统自身特性,采用全动态切换处理工作模式、数据调度、处理坐标数据、绘制地图符号和优化关键算法等软件方法,描述如何降低嵌入式GIS系统运行功耗,以指导类似系统的低功耗设计。   1 软件低功耗措施   1.1 全动态切换处理器的工作模式   嵌入式处理器是硬件系统的核心,运行功耗占系统功耗的大部分。目前,嵌入式处理器一般采用RISC体系结构,通过简化指令设计、引人流水线技术、指令预取、大量寄存器操作和高速缓存等技术提高运行效率,并采用低电压工作模式以降低运行功耗。嵌入式处理器一般为应用开发提供了三种工作模式:运行模式(Run)、空闲模式(Idle)和休眠模式(Standby)。运行模式即正常工作模式,CPU全速运行;空闲模式时CPU是静态的,但LCD刷新威廉希尔官方网站 和晶振都工作;休眠模式时CPU的I/O端口禁止,但外部晶振工作。在不同运行模式下,处理器工作时功耗数值差别较大。以CiⅡus I。0gic公司EP721l(ARM7核)嵌人式处理器为例,开发手册中写到,在18 MHz工作频率下,运行时消耗电流是20 mA,空闲时消耗电流是6 mA,而休眠时消耗电流3OOμA。   全动态切换处理器工作模式的目的是在不影响系统正常工作时,通过软件控制策略尽最大可能使嵌入式处理器工作在空闲或者休眠模式来降低系统功耗。用户使用产品过程中,人机交互时间较短,cPu需要全速运行时间较少,大部分时间是不需要工作的。基于产品使用模式,人机交互或者有外部中断事件需要处理时,控制嵌入式处理器处于运行模式;在其他状况下,控制嵌入式处理器处于空闲模式或者休眠模式。   嵌入式GIs系统采用消息驱动机制:系统有消息分发表明有任务需要处理器完成,嵌入式处理器工作于运行模式;一旦在一定时间间隔(如2 s)系统未能获得任何新消息,且其他任务已经完成,则通过软件编程控制处理器从运行模式切换到空闲模式;如果时问更长(如5 s),还可以进一步切换到休眠模式;在空闲或休眠模式,一旦系统通过外部事件被唤醒,则转入运行模式。如此反复,构成如图1所示的处理器工作模式切换图。      1.2 合理调度数据   嵌入式GIS系统中程序代码和数据存放在存储器中,存储器访问也是嵌入式系统功耗的一大部分。有资料统计表明,内存传输是迄今为止CPU完成的操作中代价最高的——一次内存传输消耗的能量是一次加法运算的33倍,因此降低系统能量消耗的最主要工作在于,合理组织存储器中的数据和指令代码,尽量做到寄存器访问和缓存访问,减少CPU访问外部存储器。随着理论的发展和工艺水平的提高,现在存储器体系结构一般都是三级,而且支持虚拟存储技术,如图2所示。      从图2可以看出,当处理器访问数据时,离CPU越近的地方,数据存取速度越快,功耗越低。基于这种特性,应该启用高速缓存,并将嵌入式GIS系统频繁访问的代码和数据在系统启动后读入内存并常驻,具体安排如下:   ①嵌入式处理器支持MMU(Memory ManagementUnit)功能,设置启动代码时将相应的寄存器开关C打开,使系统高速缓存Cache处于有效状态;   ②系统初始化后,将系统运行频繁访问的关键数据一次性地从外存读人内存并驻留内存,如中断服务程序、地图符号库资源、点阵字体资源等,以后相关的操作直接从内存取用;   ③当读写Flash存储介质时,需要照顾到Flash写操作时间长和功耗高的特点,尽量降低直接写Flash的次数。如果需要保存运行轨迹,可事先在内存中开辟1片缓存区,周期性地(如每隔30 s)写FIash,而不是每次新增位置数据都执行1次写F1ash操作。   1.3 坐标数据处理   空间坐标数据是GIS数据的基本组成部分,数据量大且计算负荷重。有效减少坐标记录个数是提高系统运行效率的有效措施,因此嵌入式GIS系统中需要对采集到的曲线和面边界坐标集合进行压缩处理,即在一定精度范围内通过坐标压缩算法减少坐标存储个数。目前,道格拉斯一普克算法和“滤点压缩”法是减小曲线坐标数据的有效方法,应用范围较广。坐标数据压缩可以在生成嵌入式GIS系统数据时在台式PC机上调用实现。   计算机系统中浮点数采用阶数加尾数的表示方法,计算过程需要对阶和规格化处理,浮点型计算时间远大于整型;同时一般嵌入式处理器不带有浮点协处理器,浮点计算能力差,耗时长,因此嵌入式GIS系统应尽量避免浮点计算。然而直接采集的空间坐标数据是经纬度格式浮点数据类型,不适宜直接用于嵌入式平台。空间坐标可以采用定点代替浮点来运算。基本方式是基于图幅顶点经纬度坐标,将图幅内地理坐标从浮点坐标(fx,fy)转换成整型坐标(ix,iy)处理。   嵌入式GIS空间坐标数据通过坐标压缩和采用定点运算规则,提高系统运行效率,降低运行功耗。   1.4 快速地图符号绘制算法   地图符号是地图的语言,是表达地图内容的基本手段,根据几何特征可以分为点状符号、线状符号和面状符号,如图3所示。根据直观分析和实验数据统计,绘制地图符号是地图显示过程中最耗时的一项工作,运行功耗较高。目前,多数嵌入式GIS系统直接使用WinCE和Vx—works等提供的绘图程序,其优点是通用性好和编程方便,但系统调用层次多,资源耗费量大。下面针对嵌入式系统硬件资源有限的特点和地图符号特性,提出使用资源模板法快速绘制地图符号的方法。      资源模板算法基于对地图符号图元的深人分析,建立在“几乎所有地图要素的图形表现都是以一定的周期持续不断的复制自我”这样一个事实的基础上,将被重复复制的一段作为样本存储在资源库列表中。当需要绘制该图元时,将样本从资源库中取出,按照该样本的特征进行复制,最终达到快速绘制图元的目的。资源模板法支持直接访问绘图底层驱动单元,实现了地图符号绘制与图形底层实现相融合。算法实现时将复杂三角运算变为查表定点运算,并通过图像映射和递归处理大大提高了地图符号的绘制速度。通过资源模板法也可以快速实现多边形图案填充算法。   采用资源模板法能够快速绘制地图符号,提高地图显示速度,并可降低系统运行功耗。   1.5 优化关键算法   求解同一个问题,软件编程实现时有许多不同的算法。查找线性表有顺序查找、二分查找和分块查找等算法。评价一个算法好坏的常用参数是算法时间复杂度和空间复杂度等。算法时间复杂度定义为算法的时间耗费,即所求解问题规模(求解问题的输入量)的函数。在空间复杂度允许条件下讨论系统功耗问题更关注算法时间复杂度,因为时间复杂度越小,执行效率越高,执行时间越短,软件运行功耗越低。嵌入式GIS系统中关键算法与具体功能实现有关,如路径分析算法、信息检索算法和导航滤波算法等等。   路径分析是在电子地图上求一条从起点到终点的最佳(时间最短、费用最少、里程最短)路径,基本算法是图论中的迪杰斯特拉(Dijkstra)算法,时间复杂度是T(n2),计算量大。针对嵌入式GIS路网拓扑特性,一些学者进行了算法研究与改进。文献提出,利用先验知识库减去不可能的搜索路径从而提高路径寻优效率。信息检索算法一般需要事先建立关键字索引表,如基于拼音字母排序查找单位名称,基于电话号码排序查找服务机构等,建立关键字索引表并采用二分检索算法能够实现快速定位地理实体本体数据。导航滤波算法一般用卡尔曼滤波求解位置、时间、航向和姿态等信息。在卡尔曼最优估计理论中,设m为量测维数,n为状态维数,则滤波算法矩阵求逆阶数与n2+n2成正比。采用集中式卡尔曼滤波算法时,n值一般较大,导致计算量大、计算时间长和运行功耗大。此时可将集中式卡尔曼滤波通过分解降低耦合性得到解耦后的时钟平面滤波方程和高程滤波方程,状态维数被减少,滤波实时性得到提高,运行功耗也得到降低。   2 小结   嵌入式GIS系统目前在多个行业得到广泛应用,低功耗是其性能指标之一。基于功能实现设计硬件平台后,低功耗实现主要从软件方面来解决。本文基于嵌入式GIS系统特征及其功能实现,采用全动态切换处理器工作模式和降低处理器运行时间两方面来实现软件低功耗。一般来讲嵌入式系统低功耗设计是系统概念,应该在系统规划时充分考虑;如果可能,应建立模型进行低功耗评估,以确保设计出的电子系统满足功耗要求。 (mbbeetchina)

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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//m.obk20.com/www/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:'嵌入式GIS软件低功耗措施资料下载',//标题 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:"https://www.elecfans.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);