×

英利Linux工控主板应用程序编程手册详细资料免费下载

消耗积分:0 | 格式:pdf | 大小:1.58 MB | 2018-11-21

piczero

分享资料个

  英利 EM9x60 系列工控主板包括若干个型号,为便于读者了解和使用英利产品,本手册中一些部分会以 EM9160 为例进行讲解;然而,本手册完全适用于这些产品。

  英利 EM9x60 工控主板是面向工业自动化领域的高性价比嵌入式工控主板,其硬件核心为 ATMEL 的工业级 32 位 ARM9 芯片。EM9x60 预装嵌入式 Linux-2.6 实时多任务操作系统,并针对板载的各个接口,提供了完整的接口底层驱动以及丰富的应用程序范例。用户可在此基础上,利用熟悉的各种软件工具直接开发自己的应用程序,以方便、快速地构成各种高性能工控产品。

  Linux 操作系统是当前嵌入式系统中使用最为广泛的操作系统。一般来讲,要开发一款基于 Linux 的嵌入式产品,需要完成以下工作:

 

  1、熟悉了解在 Linux 主机中开发的基本方法,这些方法通常以命令行方式为特征

  2、从 Linux 社区下载与目标硬件相关的 Linux 代码,进行 Linux 平台移植工作

  3、搭建合适的交叉编译工具链,完成应用程序的开发。包括以命令行方式,首先编写 Makefile 文件,然后通过执行 make 来调用 GCC 来实现各个 C 文件模块的编译以及最后的链接

  要完成以上工作,企业不仅需要配备较高水平的软硬件工程师,而且开发周期通常会持续两年甚至更长的时间,这使得众多面对激烈市场竞争的中小企业,由于产品的开发周期以及相应风险的限制,不得不放弃 Linux 这样优秀的操作系统。

  针对 Linux 应用中的这些问题,英利公司推出了预装嵌入式 Linux 操作系统的系列工控主板。作为一种高效、低成本的 Linux 产品解决方案,以 EM9x60 为核心的 Linux 应用平台是通过以下技术手段来满足客户需求的:

  EM9x60 的硬件接口非常丰富,包括以太网、串口、GPIO、USB、精简 ISA 扩展总线等资源。200MHz / 400MHz 主频的 32 位 ARM9 CPU 的处理能力,可轻松满足大多数嵌入式设备的功能需求,加之 EM9x60 低廉的价格,使其产品具有极高的性价比,确保基于 EM9x60 的智能产品在市场上的竞争力。

  EM9x60上已经移植安装了Linux-2.6.30操作系统,包括所有接口的完整驱动程序,从而省去了客户为移植 Linux 平台所必需花费的大量人力物力,节约了开发时间,从而降低了开发风险。

  为了让客户能把宝贵的时间花在自有产品的核心价值方面,我们选择并推荐客户采用 eclipse 来开发自己的 Linux 应用程序。eclipse 是一套完整的针对 Linux 运行平台的 C/C++开发工具,其一个很大优点是可直接安装在 Windows 环境下。用户可在自己熟悉的 Windows 窗口环境下编写 Linux 的应用程序,然后通过 eclipse 构造的交叉编译工具链,直接生成可在嵌入式 Linux 环境下(这里为 EM9x60 的环境)运行的应用程序。这样客户原则上只需要学习 Linux 的应用程序的编程方法(对嵌入式应用来说,以多线程编程为特点),而无需学习常规 Linux 编程中复杂的命令行工具,就可完成自己的应用程序开发。

  在嵌入式应用程序的编程中,可分为仅采用 C 开发或 C/C++开发两种风格。一般说来,对实现相同的功能,仅采用 C 编程对程序员的要求更高;而 C/C++编程,由于 C++提供了很好的面向对象设计的机制,使得应用程序设计变得更加简单,同时也更加安全。eclipse 对 C++有完备的支持,这意味采用 C++来设计应用程序会以更短的时间开发出更加高效安全的代码,所以我们强烈建议客户采用 C++来设计自己的应用程序。

  众所周知,在嵌入式产品的开发中,应用程序的开发是最为重要的部分,同时也是客户产品的核心价值所在。本手册的主要目的,是为那些采用 EM9x60 作为产品核心平台,并在 Windows 环境中直接开发 Linux 应用程序的客户提供一份详细的循序渐进的编程指南。因为我们认定采用此方法进行 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.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:'英利Linux工控主板应用程序编程手册详细资料免费下载',//标题 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);