×

Blackfin内核VDK及其文件系统的设计方案分析

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

分享资料个

Blackfin(BF)系列DSP是ADI公司和Intel公司共同开发的DSP,采用了一种新型结构MSA.BF系列中的BF537具有较块的运算速度和丰富的接口资源,长于控制和视频图像处理,且其带有符合IEEE 802.3规范的以太网控制器,如果在BF537中移植带有LwIP协议栈的VDK工程,并利用网络芯片对537进行扩展,就能便捷地实现嵌入式系统与因特网的通信。
  由于低功耗、数据非易失、存储速度快、存储密度大等优点,Nand Flash在闪存行列中脱颖而出,常被用作大容量数据的存储媒质。随着存储系统容量和存取速度的不断提升,构建嵌入式文件系统来实现存储系统中数据的管理。
  1 VDK与嵌入式文件系统
  1.1 VDK简介
  VDK(Visual DSP Kernel)是ADI公司针对Blackfin系列DSP处理器特别开发的“小而健壮”的轻量级内核,特别适合编写需要精确控制的代码,是一个提供了丰富的API函数库,同时支持轻量级IP协议栈(LwIP)的RTOS。
  VDK功能全面,具有线程、信号量、事件与事件位、消息、关键域与禁止调度域等特征。内核通过协同多任务和时间片轮转的方式来管理和协调线程,这种方式称为“调度”.VDK运用程序可分为两部分:线程域和中断域。线程域中的调度称为“软件调度”,由内核完成;中断域中的调度称为“硬件调度”,由中断控制器完成。后者的优先级高于前者,而设备驱动是两者沟通的桥梁。
  然而VDK只是一个“裸核”,不提供文件系统的支持,如果需要基于VDK实现文件系统,用户必须自己编写各种接口函数的代码。
  1.2 基于Nand Flash的嵌入式文件系统简介
  Flash文件系统主要有开源的和商业的两类。开源的Flash文件系统,有JFFS、JFFS2、YAFS等。JFFS采用高效的日志文件系统,具有掉电安全、脏块回收、磨损均衡等特性,主要用于嵌入式Linux.Red Hat公司后来在JFFS基础上进行升级,发展出JSSF2.JSSF2采用哈希表的日志节点结构,加快了节点的操作速度。YAFFS也是基于日志结构的文件系统,相比JFFS,YAFFS减少了一些功能,但降低了内存占用率,提高了访问速度。
  商业Flash文件系统主要有TrueFFS和TransactiONFFS.前者用于仿真硬盘驱动,利用冗余数据结构保证可靠的数据操作,并能均匀使用Flash.后者使用事务记录方案,运用程序可通过FAL访问文件系统。
  2 嵌入式系统的硬件平台
  基于BF537的嵌入式系统硬件平台的框图如图1所示。
  Blackfin内核VDK及其文件系统的设计方案分析
  图1 嵌入式系统硬件平台
  LAN8187用于对BF537的以太网控制器进行扩展,使其能够通过以太网络与上位机进行通信。
  BF537外挂了两片Nor Flash芯片作为其异步外存。程序Nor Flash用于存储运行程序代码,数据Flash主要用于存储文件系统运行所需的数据,例如文件目录表、地址映射表等。XC4VFX100用于处理数据流的速度、解析和转发BF537的命令,配合BF537对存储阵列进行管理。

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

评论(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:'Blackfin内核VDK及其文件系统的设计方案分析',//标题 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);