WG7310芯片是Ti推出的一款芯片,集成了WLAN、Bluetooth、FM等功能(最近又推出了四合一的芯片,把GPS功能也集成了进去),由于以前在.Net MF上的一些工作是基于Ti DM335开发板上的,所以开发.Net MF系统的WiFi功能就选用了WG7310芯片。
芯片的技术指标如下:
功能规格:WLAN + Bluetooth+FM Combo 无线模块
主芯片厂牌:TI (Texas Instrument)
主芯片编号:WL1271 One Chip
支持协议:IEEE 802.11 b/g/n, Bluetooth 2.0/2.1+ EDR,FM
支持频道: 2.4 GHz
支持频宽:11Mbps (11b), 54Mbps (11g), 150Mbps(11n),4Mbps (BT)
连结接口:SDIO (WLAN), UART (BT)
操作系统:Windows CE /6.0, Linux 2.4/2.6,Android;
由于前期一直在做MSN Direct相关的工作,介入Wifi开发相对比较晚,前期SDIO、Wifi底层驱动的移植工作已由同事基本完成,后续工作主要为AP扫描、AP连接(无密码、WEP、WAP1、WAP2)及.Net MF库接口开发,此外还需完成一个相对完整的示例程序。
下面一一简单介绍一下WG7310如何在.Net MF中使用的。
WG7310芯片开发板与DM3...

>> 阅读全文

一、简介
Microsoft .NET Micro Framework 将 .NET 的可靠性和效率与 Visual Studio的高生产率结合起来,以针对价格较低、资源受限的小型设备开发应用程序,可帮助人们使用熟悉的 Visual Studio 工具来构建托管的嵌入式应用程序。
1.哪些领域可以采用.NET Micro Framework技术?
.NET Micro Framework技术可以应用到:Sideshow、远程控制、智能家电、医疗电子、零售终端以及汽车电子等行业应用场景;此外由于开发简单、调试方便,在教育类机器人方面也有大的应用场景。
2.NET Micro Framework与Window CE和Windows XP Embedded的区别?
.NET Micro Framework对存储器和处理器的要求更低。开发人员可以在低功耗、低成本的ARM7、ARM9、Blackfin和Cortex-M3处理器上使用该框架(不需要MMU支持),所开发出来的软件仅需要几百Kbytes的RAM或Flash/ROM存储空间。而Windows Embedded CE的托管代码环境需要约10~12Mbytes的存储空间,基于.NET的应用编程设备只需要较少的存储空间,降低了产品成本。
3.NET Micro Framework与其他.NET平台的区别?
作为.NET家族的一员,.Net Micro Framework是微软专门...

>> 阅读全文

在远程文件查看器里,我们可以很方便地访问设备的文件,但是有一点,双击其中的pe文件并不能直接执行,下面我们将为.Net MF添加这个功能。
默认情况下,.Net MF的用户程序是放在Flash中的BLOCKTYPE_DEPLOYMENT区(参见《Flash远程读写》),只能通过VS2008进行部署。TinyCLR启动后,直接从Flash的BLOCKTYPE_DEPLOYMENT区的加载应用程序,由于这样的设计,所以在Flash上仅能存放一个用户程序。
.Net MF已经支持了文件系统,并且我们实现了远程文件查看器,理论上只要空间足够,我们能放若干个用户程序,这样问题就来了,我们能否任意执行文件系统中的pe文件?
.Net MF系统中的可执行文件或模块,其扩展名并不是exe或dll,统一为pe,唯一不同是,可执行的pe文件中含有启动入口标识。pe文件是exe和dll经过MetaDataProcessor.exe文件再加工而来。
实现思路其实很简单:第一、分别把不同的用户程序,放到不同目录中去;第二、在根目录建立一个config.ini纯文本文件,里面有一条记录:Startup=\xxx,标识启动项;第三、修改TinyCLR代码,让其从config.ini中的指定目录处加载用户程序。
TinyCLR中的Code修改如下(CLRStar...

>> 阅读全文

前篇文章,我们实现了远程文件查看器,现在我们趁热打铁为.Net MF实现远程屏幕截图程序(类似VS2008远程工具中的远程放大程序)。
实现远程屏幕截图的思路很简单,就是直接获取设备的显存数据,由PC再现画面。由于我们已经实现了Custom信道,所以我们在原有程序基础上,增添一个Custom_Command_Screenshots命令,就可以完成数据的获取。但是比较麻烦的是,对不同的LCD设备,同样显示画面,显存数据有可能不同,对嵌入式设备,常见的LCD显示是16位色(也有1位或8位色的,但比较少见),简便起见,我们仅考虑16色显示画面的截图。
16位色图根据RGB的分量数值,一般有如下几种模式:1555,565,555,第一种最高位含有透明度,我们把它和555归为一类,第二种和第三种比较常见。
对565和555来说,中间一定是G(绿色),其分量值或5位或6位,没有什么分歧。麻烦的是,低5位(或高5位)有可能是红色,也可能是蓝色,如果混淆,则显示的画面会出现偏色,所以必须要准确获取该配置信息。
获取数据和配置后,我们完全可以把获取的数据一个点一个点地画出来,但是这样做,不仅导致画面显示慢,还会使我们失去一次深入探究C#位图呈现技术...

>> 阅读全文

虽说目前.Net Micro Framework已经支持文件系统(FAT16/FAT32),但在远程还无法直接访问,从某种意义上讲,无法和PC交互的存储介质显得有些鸡肋。我做SideShow相关开发的时候,为了向该文件系统拷贝文件,实现了UsbMassStorage功能,把设备当优盘来用,但这样做,等于独占了USB口,并且设备和PC的连接也必须为USB,对仅拥有串口或网口的设备是无效的。做过WinCE或Windows Mobile开发的人都知道,VS2008开发工具提供了些远程工具,诸如远程文件查看器、远程注册表编辑器、远程堆查看器和远程放大等等。受此启发,所以才有了MF的远程文件查看器。
该远程文件查看器,仍然作为MFDeploy的插件存在(如何做插件?请参见《玩转.Net MF–01》),最终的操作主界面如下:
该功能的实现要比《让PC成为MF的鼠标键盘》还要复杂,需要修改和添加的代码较多,下面我们一一进行讲解。
实现思路:考虑到MFDeploy已经实现了读写Flash的功能,所以最初的思路是想在PC端实现FAT文件系统(我曾实现过基于硬盘的FAT16系统),但是要支持FAT16/FAT32两种模式,还是非常复杂的,并且效率也很难保证;FTP是一种远程访问文件系统的常用办法,但这是基于TCP/IP上...

>> 阅读全文

考虑一个应用场景,你设计了一个多功能带LCD显示的仪器,假设为了节省成本,没有安装触摸屏和扩展外接鼠标键盘的接口,仪表上仅有几个外置按钮,但是由于功能相对复杂,需要配置很多参数,如果单单依靠外置按钮,输入不仅慢,还得为此设计一套输入规则,想想看如果能通过仪表调试口,通过扩展让我们的PC成为它的鼠标键盘,则输入工作将变的异常简单(其实这样的仪表并不是我凭空瞎想,以前开发ICU输液系统时,国外生产的输液装置就是这样的仪表,比如要输入药名、输液速度和输液压力等一系列相关参数)。
通过扩展我以前为.Net MF开发的WinForm库(参见我以前的文章《开源System.Windows.Forms库,让.Net Micro Framework界面开发和上位机一样简单》),增加一个输入代理层,就可以实现虚拟鼠标和键盘输入。
先看看最终的成果(如下图),然后我们再细说是如何实现的。
(虚拟鼠标输入,设备上的鼠标将和PC上的鼠标同步移动)
(虚拟键盘输入,千万不要以为上面的字符为软键盘所输入,细心的读者会发现,软键盘上根本没有 @#¥%等按键)
要实现这个功能还真不那么简单,需要做如下四步工作:一、为MFDeploy开发一...

>> 阅读全文

目前在PC远程访问设备Flash,也就是部署TinyCLR和下载应用程序。在以前写的《NandFlash驱动开发》文章,我们知道Flash被分为六个区,典型的结构如下(以Sam9261_ek开发板为例):
const BlockRange g_K9F2G_8_BlockStatus[] =
{
{ BlockRange::BLOCKTYPE_BOOTSTRAP , 0, 1 },
{ BlockRange::BLOCKTYPE_CONFIG , 2, 2 },
{ BlockRange::BLOCKTYPE_CODE , 3, 24 },
{ BlockRange::BLOCKTYPE_DEPLOYMENT, 25, 29 },
{ BlockRange::BLOCKTYPE_DEPLOYMENT, 30, 34 },
{ BlockRange::BLOCKTYPE_DEPLOYMENT, 35, 39 },
{ BlockRange::BLOCKTYPE_DEPLOYMENT, 40, 48 },
{ BlockRange::BLOCKTYPE_STORAGE_A , 49, 49 },
{ BlockRange::BLOCKTYPE_STORAGE_B , 50, 50 },
{BlockRange::BLOCKTYPE_FILESYSTEM, 51, FLASH_BLOCK_COUNT - 1 }
};
我们能否直接读写该Flash上的所有区呢?
实现这个功能的好处是易见的,我们再也没有必要为了下载一个应用程序而启动相对庞大的VS2008,再也不受必须打开MF工程才能...

>> 阅读全文

从元旦开始,便利用业余时间从事基于Cortex-M3内核上的.Net Micro Framework的移植工作。虽然到现在算起来有一个多月的时间,但是我平日的正常工作时间大部分都花在和同事一起做WiFi驱动的开发上了,除去写这一系列文章的用时,真正在Cortex-M3内核上移植时间最多也就十几天。这并不说明我在嵌入式方面的功底多么深厚,虽说我PC平台上的软件开发时间有十几年的历史,但是做真正嵌入式的开发才是最近一两年的时间(以前虽说开发过PLC程序和WinCE平台上的组态软件,但充其量仅仅算是嵌入式应用开发),这也并不代表我对.Net Micro Framework有多了解,虽然进微软的工作主要就是做.Net Micro Framework开发,但一年多的时间里,有近半年的时间是做MSN Direct的相关工作(主要和SQL和Web服务打交道),唯一可说明的是移植.Net Micro Framework系统其实是件并不那么难的事,特别是针对那些真正的嵌入式开发高手来说。
为什么选择了基于Cortex-M3内核的芯片?一是因为这是ARM公司最新的技术结晶,代表了ARM公司的未来技术走向,二是通过了解发现,Cortex-M3从结构上颠覆了以前ARM7、ARM9、ARM11设计,不仅性能优异,开发简单,更是对不同公司出品的基于Cortex-M3核的...

>> 阅读全文