当前位置: 首页 > news >正文

.NET Micro Framework初体验

.NET Micro Framework终于在正式命名一年之后, 于2月13日,在德国纽伦堡被发布。NETMF是针对嵌入式设备开发的.NET系统,可以运行在ARM7不带MMU的版本上,目前还没有报道,说NETMF可以运行在8位单片机或者其他的嵌入式CPU中,不过感觉这只是一个时间问题。
NETMF比Windows CE要小,而且可以完全脱离操作系统环境运行,这个非常符合嵌入式系统的要求。目前,NETMF已经被应用到微软的SmartWatch和Vista的SildShow中。可以说,NETMF是目前微软最小的.NET系统。
NETMF与.NET CF相比,.NET CF需要依赖于Windows CE的操作系统环境,而且现在还不能被移植到Windows CE之外的操作系统中(不过最近XBOX 360的XDA是支持.NET CF的)。而NETMF则不受这样的限制,可以被移植到任意的硬件平台上。不过目前NETMF公布的还只是SDK,还没有公布移植到其他平台上的指导文件,市场策略还需要进一步观察。
NETMF的移植,目前没有资料可寻,不过英飞凌等几家公司已经公布了支持NETMF的开发板。所以,我们可以相信,.NET MF的移植不会比Windows CE的移植工作还要难。
现在,我们可以在下面的连接中下载到NETMF的SDK:
http://www.microsoft.com/downloads/details.aspx?familyid=32f5df20-6c95-4fe8-a76c-0ed56a839ad2&displaylang=en
SDK安装需要有Visual Studio 2005和MSDN。安装完成之后,我们可以在C:\Program Files\Microsoft .NET Micro Framework中找到NETMF的文件,还有一些示例代码会被安装在“我的文档”的\Microsoft .NET Micro Framework\Samples目录下。
Samples中包括7个工程文件,其中Presentation工程会显示一个NETMF的UI界面,以前盛传NETMF的显示工作是由WPF/E来完成的,现在看起来似乎只是一种传闻了。
SocketClient与SocketServer是一个介绍Microsoft.SPOT.Net程序集下,Socket如何使用的例子。而SampleEmulator中包括的是NETMF模拟器的源代码,目前看起来,这个模拟器还十分简单。可见NETMF还有一段很长的路要走。
接下来,我们来看一下C:\Program Files\Microsoft .NET Micro Framework中的文件,NETMF目前的版本号是v2.0.3036,不知道是不是为了和.NET版本号一致?Assemblies目录下包括的是NETMF的程序集,Documentation是文档,Fonts中是NETMF使用的字体,扩展名为tinyfnt,可能是使用了自己的字体格式,也不知道能不能添加中文字体的支持?Tools目录下是模拟器和Debugger工具。
我们来看Assemblies目录下的文件,除了我们熟悉的dll文件外,还有pdbx和pe为扩展名的文件,其中以pe为扩展名的文件是允许开发者进行再发布时使用的。不过我现在还不太了解再发布的方式。
借助Reflector,我们可以大致了解程序集中所包括的内容。其中mscorlib.dll和System.dll是Native Dll,无法通过Reflector进行查看。
托管程序集中,Microsoft.SPOT.TinyCore显示是NETMF的核心程序集,其中包括了Microsoft.SPOT.Input,负责处理用户输入;Microsoft.SPOT.Presentation中包括的主要是窗体管理,显示区域等,下面还有Controls、Media和Shapes三个命名空间。其中在Controls下面能够看到的控件有ListBox、Text、Panel和ScrollViewer。Media下面是Colors、Pen和SolidColorBrush,.NET下的类结构依稀可见。
Microsoft.SPOT.Net下面比较简单,实现了Socket。
Microsoft.SPOT.Hardware是很重要的一个程序集,用于直接操作硬件。呃,直接操作硬件,感觉回到了DOS时代一样,不过NETMF连操作系统都不需要,难道能直接操作硬件不合理吗?现在能够看到的类有Battery、CPU、GPIO、I2C、SerialPort、TristatePort(这是什么意思?)等硬件设备。如果这样看起来,微软只是实现了最基本的一些工作,那么要实现操作更多的外设、文件系统、多媒体设备,这些工作似乎需要有人干。再出现一个新的OpenNETMF也不是没可能的:)诸位要加油了。
Microsoft.SPOT.Native中包含的类很多,有许多我还没搞清是做什么的,从名字上看,有扩展的Timer、数学库(实现了Random、Sin和Cos)、SystemTime之类。其中还有一个Cryptography的命名空间,竟然还实现了RSA加密……还有SystemID,Message等类没闹清楚做什么的,不瞎说了。
Microsoft.SPOT.Graphics程序集下,最主要的两个类是Bitmap和Font,这显然是Microsoft.SPOT.Presentation的一个辅助类。
NETMF中包括的程序集基本上就这么多,从产品本身看,NETMF无疑是具有超凡想象力的,很久前听说过Java有一个SmartCard版本,但一直无缘得见,如今NETMF确实是实现了嵌入式系统中托管代码。嵌入式领域的软件一直无法做大做强的一个很重要原因就是缺乏统一的开发平台,在不同平台间移植应用程序代价高昂。我们不能说NETMF就是济世的良药,但他至少是我们未来的选择之一。也许将来也会出现专门开发嵌入式软件的专业软件公司,而不像现在这样,软件工程师必须依赖于硬件系统工程师的工作成果。
当然NETMF是否成功,除了技术本身之外,微软的推广政策也是很重要的因素。用惯了免费系统的嵌入式工程师,如果没有明显的好处,他是不愿意付钱的,可是现在的NETMF肯定是有很长的路要走。如果让微软Open Source似乎也不太现实……不过如果微软不采取行动,出现一个Embedded Mono也不是不可能的。
写这么多废话,其实也是让大家知道,我这几天没研究刚发布的Windows Mobile 6.0,是因为什么?Windows Mobile 已经到了6.0,我也不太指望能有什么新意了,还是多看看未来吧。

相关文章:

  • linux修改时间授权,Linux定时任务crontab 和sudo授权管理
  • .NET Micro Framework初体验(二)
  • linux中的驱动文件的内容,Linux内核驱动中对文件的读写
  • Yale cas服务器端/客户端环境配置以及其在tomcat服务器下SSL安全协议得部署之完全实现篇...
  • linux程序文件上锁,Linux下对文件的某一记录进行上锁
  • Linux中通过缓存DNS的解析来提高上网的响应速度!
  • 在linux安装java环境变量配置,在linux安装java环境变量配置
  • linux centos7服务器时间,centos7.2_x64搭建ntp时间服务器
  • 利用ubint安装Linux到u盘,Ubuntu12.04安装到U盘里
  • 大年三神
  • rtl8723BS网卡linux,关于 RTL8723BS 与此同时开启 STA/AP 模式
  • 我为什么选用转码的方式调整码率
  • yunos运行linux程序,YunOS开放平台
  • linux xtrabackup备份恢复,xtrabackup 备份和恢复docker容器内的mysql
  • Free Mind 06年2月 SourceForge 推荐项目
  • .pyc 想到的一些问题
  • Angular 响应式表单 基础例子
  • egg(89)--egg之redis的发布和订阅
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • flutter的key在widget list的作用以及必要性
  • HTML5新特性总结
  • JAVA 学习IO流
  • Linux快速复制或删除大量小文件
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 阿里云购买磁盘后挂载
  • 从伪并行的 Python 多线程说起
  • 服务器从安装到部署全过程(二)
  • 工作中总结前端开发流程--vue项目
  • 基于 Babel 的 npm 包最小化设置
  • 技术:超级实用的电脑小技巧
  • 深度学习中的信息论知识详解
  • 项目管理碎碎念系列之一:干系人管理
  • 2017年360最后一道编程题
  • Python 之网络式编程
  • # 数据结构
  • ###项目技术发展史
  • #14vue3生成表单并跳转到外部地址的方式
  • %@ page import=%的用法
  • (04)odoo视图操作
  • (c语言)strcpy函数用法
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)hibernate配置管理
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (南京观海微电子)——COF介绍
  • (排序详解之 堆排序)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET微信公众号开发-2.0创建自定义菜单
  • // an array of int
  • @拔赤:Web前端开发十日谈
  • @基于大模型的旅游路线推荐方案