Dot NET:嵌入式开发平台(图)
2010年08月11日
[ 来源:机电论文 | 类别:技术 | 时间:2009-5-18 10:32:12 ] [字体:大中小]
最近一次乘飞机旅行时,我与一位同行的软件工程经理谈到了寻找优秀嵌入式开发人员所面临的挑战。她告诉我她拥有一个12名开发人员的开发团队,但其中只有三名精通驱动程序、主板支持包和boot-loader的开发。其余下九人,也都是优秀的应用开发人员,但均缺乏低层代码编写经验。我问她是否听说过Microsoft .NET Micro Framework。
Microsoft的.NET Micro Framework与C#语言、加上Microsoft的Visual Studio,为工程师及编程人员的嵌入式系统设计提供了更多的选择余地。由于工程师不必编写boot-loader、驱动程序或其它低级代码,产品设计团队就可以缩短其设计时间。有了.NET Micro Framework,新接触嵌入式系统设计的工程师就可直接编写代码,无需特殊的工具或深入了解处理器及操作系统架构。
NET Micro Framework在微软研究院有较深的根源,在那里,计算机科学家们致力于简化较小、低功耗设计开发的研究。他们确信未来的电子设备将使用32位的处理器、电池、网络及新的协议,如Z-Wave及ZigBee等。为了设计更多的网络嵌入式设备,这些开发人员的数量及其工具效率都要大幅度地提高。
Microsoft研究团队从零开始,研究出.NET Micro Framework平台以解决这种问题。这种框架并不是某个旧软件或工具的简缩。不象Windows Embedded CE工其它嵌入式操作系统,.NET Micro Framework并不需要存储器管理部件(MMU)。所以开发人员可以在低功耗、低成本的ARM7处理器,及ARM9、Blackfin处理器上使用这种框架。这种框架软件只需要几百kbytes的RAM或Flash/ROM存储容量。通过比较,Windows Embedded CE的托管代码环境需要约10-12 Mbytes的存储容量。依赖于.NET应用编程接口(API)的设备之需要较少的存储容量,降低了产品成本。
.NET Micro Framework为应用编程提供了一种C#托管代码环境。C#语言学习、使用都比较容易,比C或C++更能提高编程人员的生产效率。托管代码环境意味着开发人员不必跟踪内在覆写或错误指向的指针等问题,这些问题根本就不存在。然后,C#代码中的垃圾回收以非确定的方式进行,开发人员不能创建实时的应用在.NET Micro Framework中运行。
Microsoft将.NET Micro Framework集成到其Visual Studio 2005包中,所以入熟悉该软件的编程人员可以迅速地开始一个项目。在2007年2月,Microsoft发布了.NET Micro Framework的第二版,适于基本的嵌入应用开发。Digi International、Freescale、Embedded Fusion及其它企业提供了与.NET Micro Framework兼容的硬件,开发人员可以迅速地开始有用的设计。(参见 "Get a Hardware Head Start".)
Microsoft最初在其智能个人对象技术(SPOT)数字手表中应用了.NET Micro Framework。这些采用ARM7TDMI处理器的数字手表可通过FM副载波信号接收不断更新的新闻、体育、气候及交通信息。该SPOT数字手表项目对.NET Micro Framework进行了一次实际测试,帮助了Microsoft的研究人员改进框架软件。
NET Micro Framework的架构由几部分组成(图1)。该框架从上至下为开发人员提供多种内容。尽管堆栈有许多层,Microsoft的.NET Micro Framework学习与使用起来还是比较容易的。堆栈的顶部是开发人员或用户应用及库。一般来说,嵌入式系统开发人员可编写只能在此级别与框架交互的程序。
NET Micro Framework只提供了用于标准台式PC及服务器应用的较大Microsoft的.NET Framework中的部分特性。但是这部分特性可实施最适合于嵌入式设备的功能。这种方法允许开发人员在可能的情况下使用现有的代码,不必编写大量的的嵌入式.NET Micro Framework代码。
类库层通常简称为库,包括.NET及Windows Presentation Foundation (WPF)库。包含在.NET Micro Framework中的这种类库提供了面向对象的可重用类收集,这些类可用来开发嵌入式应用。C#库还包括加密、图形、访问SPI与I2C通信端口的能力。
NET Micro Framework内的通用语言运行时(CLR)提供了所有应用程序需要的运行时环境。CLR可管理内存、线程、代码执行、垃圾及异常处理、以及其它服务等。据Microsoft介绍,CLR每秒可执行约15,000次调用,以27.6MHz的时钟频率在为ARM7处理器编写的代码中管理方法。
下一层提供了可控制硬件的程序抽象层(PAL),但在嵌入式系统中不依赖于硬件工作。PAL在托管代码接口与硬件特定的代码间提供了一个明确的中间层。在处理器与外设紧上方的最低层中,框架提供了一个硬件抽象层(HAL)或对兼容操作系统的provision接口。因此,该框架可直接与下层硬件通信,也可作为操作系统的主机,如一个为.NET Micro Framework提供硬件服务及扩展的实时操作系统(RTOS)。这可让一个应用程序在RTOS线程中运行实时任务,而另一个RTOS线程中运行整个.NET Micro Framework。
硬件厂商(如Digi和Freescale)提供这种低层驱动器及以C++语言实施的CLR。开发人员用C#编写应用程序代码,并将其代码链接到.NET Micro Framework可启动的运行时环境中。由于该框架提供了完整操作系统(OS)的部分功能,它并不需要一个综合OS来管理一个嵌入式系统。因此,开发人员将.NET MicroFramework本身作为一个可启动的运行时环境。这里,可启动的运行时环境指直接在嵌入式硬件中运行的.NET Micro Framework代码。代码提供了启动支持、中断处理、线程与进程管理、堆积管理及其它操作系统通常提供的支持功能。
一个内置的.NET Micro Framework硬件仿真器比其它开发工具提供了更多的优势。一个硬件仿真器允许软件团队立即开始开发代码,而不必等到对原型硬件设计、构建并调试后再进行。用户与厂商可以使用XML来扩展默认的仿真器,这样开发人员无需触动任何硬件,即可创建并调试应用程序。硬件厂商还提供了定制的仿真器,可对硬件、模块或处理器等进行仿真。当然,最令他们欣慰的还是能看到其应用程序在实际的硬件上运行。
迅速了解有效的代码
Connect ME模块是一个可用.NET Micro Framework进行编程的设备示例。这种嵌入式serial-to-Ethernet模块在一个紧凑的RJ-45接口封装中容纳了一个ARM7TDMI处理器(55MHz),2Mbytes的NOR闪存、8Mbytes的SDRAM,及一个以太网PHY/MAC(图2)。
一个基于Express Logic ThreadX嵌入式内核的主操作系统,支持模块中的.NET Micro Framework。该内核包括一个完整的IPv4网络堆栈,可在应用程序代码中作为套接字接口。
为.NET Micro Framework编写的应用程序可访问所有这些硬件无关的API,并可访问HAL支持的硬件类。Connect ME模块的HAL支持TCP/IP套接字、RS-232串行通信及通用I/O接口。
简单条件下试用
开发人员只需要四步骤即可创建并运行一个可读写到通用I/O端口的应用程序。以下的步骤假定在主开发PC和Connect ME模块之间有一个以太网编程连接。多数情况下,开发人员对Connect ME模块应用一个Digi Connect ME Digi JumpStart Kit或类似的基板:
步骤2.双击新创建项目中的主模块:Program.cs。在C# Main()函数中,添加以下代码:
InputPort MyInput = new
InputPort((Cpu.Pin)0,false,InputPort.ResistorMode. Disabled);
OutputPort MyOutput = new OutputPort((Cpu.Pin)1,false);
在Visual Studio 2005中,InputPort类的联机帮助信息介绍了所有的参数。第一个参数--(Cpu.Pin)0 说明了Connect ME模块上的第一个通用的I/O针脚。由Microsoft实施的第二个参数--false 调用一个杂讯滤波器可平滑输入状态变化的突波。Connect ME模块并不在HAL中使用此参数,并会忽略任何合格的值。最后的参数--InputPort.ResistorMode.Disabled 允许HAL配置输入对三种电阻模式之一进行配置;PullUp、PullDown或Disabled。Connect ME模块也会忽略此值,尽管该代码示例指定为Disabled。
constructor OutputPort 类只有两个参数:要使用的GPIO针脚--(Cpu.Pin)1 对该输出针脚的初始状态--false。
步骤3.令Connect ME模块读取输入针脚的状态,只要为其指定一个Boolean类型即可。
bool InputState = MyInput.Read();
要写到输入中,使用Write() method:
MyOutput.Write(true);
步骤4.要编译及部署应用,选择点击Start Debugging按扭。主PC通过以太网连接将代码发送到Connect ME模块中的闪存上。然后模块就会开始从SDRAM上运行代码。程序的调试输出结果通过以太网调试连接进入Visual Studio Debug Output窗口中。
此例说明了必要工作只是编写、编译、部署及调试一个简单的在一个嵌入式目标上运行.NET Micro Framework及控制GPIO针脚的的应用程序。.NET Micro Framework还提供了一个InterruptPort类,但Connect ME模块的I/O针脚并不支持此类。其它硬件可提供一个编程人员可通过InterruptPort类访问的interrupt-input针脚。
类似的类、方法及属性允许开发人员轻松地控制串行I/O端口,并创建套接字服务器与客户端。Visual Studio 2005中的帮助文档描述了如何使用命令,即使没有多少C#经验的人也可在应用中使用该工具。
为了更好地理解如何应用.NET Micro Framework,开发人员可从Microsoft网站上下载.NET Micro Framework软件开发工具包(SDK)及评估版的Visual Studio 2005,免费使用其仿真器模型。他们也可购买一个开发工具包,如Digi Connect ME JumpStart kit (商品号DC-ME-MF).
参考资料
Thompson, Daniel and Colin Miller, Microsofts .NET Micro Framework:Product Positioning and Technology Whitepaper:http://download.microsoft.com/download/ 3/1/9/319f7469-70bd-4e7c-a6cc-e5ad96939af4/NET_Micr o_Framework_Whitepaper_V_1.0.doc
Microsofts .NET Micro Framework homepage: msdn.microsoft.com/embedded/netmf
.NET Micro Framework SDK download - www.microsoft.com/downloads/details.aspx?familyid= 32f5df20-6c95-4fe8-a76c-0ed56a839ad2&displaylang=en
Trial versions of Visual Studio 2005 (The .NET Micro Framework requires the Standard, Professional, or Team version and will not work with Visual Studio Express.)www.microsoft.com/emea/msdn/visualstudio/ enxu/getthetrials/
Microsoft .NET Micro Framework 合作伙伴列表:
msdn2.microsoft.com/en-us/embedded/bb267307.aspx
Digi Connect ME:www.digiembedded.com
作者简介
John Leier是Digi International公司嵌入式软件部门的产品经理。他有15年以上的软件工程经验,包括编程数据采集及使用C、Visual Basic、Delphi、及C#等语言控制系统等。若要了解详细信息,请与Digi International联系:11001 Bren Road East, Minnetonka, MN 55343; (877) 912-3444; www.digi.com.
作者:John Leier, Digi Int
来源:[http://www.jdzj.com]机电之家.机电行业电子商务平台!
发表评论
-
GPIO
2012-01-20 02:11 723GPIO 2011年04月07日 一、什么是GPIO? ... -
VxWorks下编程的几个误区
2012-01-20 02:11 1202VxWorks下编程的几个误区 ... -
结构化异常处理
2012-01-20 02:11 544结构化异常处理 2010年0 ... -
Linux下Libpcap源码分析和包过虑机制
2012-01-20 02:11 710Linux下Libpcap源码分析和 ... -
一个词语的辨析
2012-01-19 10:01 634一个词语的辨析 2010年06月09日 很久没写 ... -
高情商的女人,就这样轻松赢得成功
2012-01-19 10:01 886高情商的女人,就这样轻松赢得成功 2011年10月20日 ... -
高情商的女人,就这样轻松赢得成功!
2012-01-19 10:01 670高情商的女人,就这样轻 ... -
山东泰安话
2012-01-19 10:01 552山东泰安话 2011年12月26日 俺那里萝卜不叫萝卜 ... -
高情商的女人,就这样轻松赢得成功!
2012-01-19 10:01 583高情商的女人,就这样轻 ... -
怎样做才能成为程序员高手
2012-01-17 02:42 570怎样做才能成为程序员 ... -
轻松编译google chrome浏览器最新稳定版源代码
2012-01-17 02:42 761轻松编译google chrome浏览器最新稳定版源代码 2 ... -
Java本地接口(JNI)编程指南和规范(第六章)
2012-01-17 02:42 710Java本地接口(JNI)编程指 ... -
编程基本
2012-01-17 02:42 594编程基本 2011年09月03日 繁 -
VS2010编译安装boost
2012-01-17 02:42 568VS2010编译安装boost 2011年01月18日 ... -
流媒体中国(liumeiti.com)专访我公司总经理
2012-01-15 22:18 526流媒体中国(liumeiti.com) ... -
MT规划__运营、策划、发展、进度------南京南立视优公司1
2012-01-15 22:18 613MT规划__运营、策划、发展、进度------南京南立视优公司 ... -
做工控的朋友,留着可能有不时之需.2011工控破解,助你一臂之力!
2012-01-15 22:17 2259做工控的朋友,留着可能有不时之需.2011工控破解,助你一臂之 ... -
本人指导07级本科毕业设计/论文的题目
2012-01-15 22:17 657本人指导07级本科毕业设计/论文的题目 2010年10月11 ...
相关推荐
控制面板,包括嵌入式 Web 服务器、PHP 和 MySQL 数据库 Git 和 Git Bash,用于源代码控制 WordPress,允许编辑静态内容。 注意:在此开发人员角色中,您可能不需要使用 WordPress 控制面板,因为静态内容主要
NET平台下开发IOC和AOP技术的框架,一定程度上解决了开发人员的难题,但是如何高效地实现IOC和AOP技术的开发,至今无人提出较好的建议。 DOTNET就是。NET, 严格说是:.Net Framework框架 .但为什么叫DOTNET(。...
基于Stm32 HAL库的Max7219点阵显示驱动库 Max7219 dot matrix display driver library based on Stm32 HAL librar 单片机设计,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以...
Eta是一个轻量级且功能强大的快速嵌入式JS模板引擎,可在Node,Deno和浏览器中运行。 它由的开发人员创建,用TypeScript编写,强调出色的性能,可配置性和较小的捆绑包大小。 :glowing_star: 特征 :package: 0个...
在硬件方面,它利用相机,小型嵌入式处理器板和Alexa Echo Dot。 该软件包括一个名为Tesseract的开源文本检测库以及Leptonica和OpenCV。 当前版本的系统只能使用英文文本。 通过使用Amazon云Web服务,部署了一套...
满足的嵌入式系统电路特性测试需求的JTAG技术 http:www.guangdongdz.com 2006-06-23 引言:EEE 1149.1边界扫描测试标准(通常称为JTAG、1149.1或"dot 1")是一种用来进行复杂IC与电路板上的特性测试的工业...
IEEE 1149.1边界扫描测试标准(通常称为JTAG、1149.1或“dot 1”)是一种用来进行复杂IC与电路板上的特性测试的工业标准方法,大多数复杂电子系统都以这种或那种方式用到了IEEE1149.1(JTAG)标准。为了更好地理解...
它符合我对嵌入式开发人员、大量 C 和一些脚本语言的需求。 它包含: 一个带有profiles的系统,我为一台计算机/系统使用一个配置文件(工作笔记本电脑、工作台式机、家用台式机......) 可定制(例如:您不想要我的...
Dear ImGui 特别适合集成到游戏引擎(用于工具)、实时 3D 应用程序、全屏应用程序、嵌入式应用程序或任何操作系统功能非标准的控制台平台上的应用程序中。用法-它是如何工作的-发布和更新日志-演示-集成 即将发生的...
所有微服务都是用Java编写的并且是嵌入式的,因此您可以轻松地将它们部署在容器中或在本地运行。 在Wiki中阅读更多内容。 沟通 电子邮件:icclab-rcb-cyclops [在] dornbirn [dot] zhaw [ch] 网站: 博客: 在...
嵌入式软件(x86、68k、z80、PIC) Linux 内核和驱动程序开发、操作系统、TCP/IP、Android Rational ClearCase、CVS、Subversion、Bazaar、Git Web 开发、LAMP、jQuery、Mysql、Sqlite、Symfony、亚马逊 AWS 移动...
IEEE1149.1边界扫描测试标准(通常称为JTAG、1149.1或"dot1")是一种用来进行复杂IC与电路板上的特性测试的工业标准方法,大多数复杂电子系统都以这种或那种方式用到了IEEE1149.1(JTAG)标准。为了更好地理解这种方法,...
IEEE 1149.1边界扫描测试标准(通常称为JTAG、1149.1或“dot 1”)是一种用来进行复杂IC与电路板上的特性测试的工业标准方法,大多数复杂电子系统都以这种或那种方式用到了IEEE1149.1(JTAG)标准。为了更好地理解...
在SciPython空间中,针对数组表达语言的选择性嵌入式JIT专门化技术有很多尚未开发的潜力和低落的果实。 正在安装 Numpile需要numpy和llvmlite (后者包括所需的LLVM库)。 您可以尝试使用OS软件包管理器来安装它们...
然后将生成可用于嵌入式设备的 c89 代码中的 NMPC 控制器。 查看更多信息。 此 repo 包含用于代码生成和文档的 C 代码。 Nmpc-codegen 框架有两种实现,一种在 Matlab 中,一种在 Python 中: github 仓库 github ...
嵌入式SQL以及DBMS与高级语言的接口 了解嵌入式SQL在PowerBuilder中的使用方法 了解SQL Server与各种开发工具的接口,包括PowerBuilder, Delphi, Visual C++, 以及ASP架构、DOT.NET架构等各种环境下对数据库的访问...
mipad
基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt)....
基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt)....
基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt)....