.Net Micro Framework研究—Digi开发板初探

news/2024/6/20 17:53:33

9 18 .Net Mirco Framework 2007技术大会在北京召开(相关文章请参见:http://blog.csdn.net/yefanqiu/archive/ 2007/09/18 /1790404.aspx),张欣第一时间写了关于Digi开发板的相关文章(文章请参见:http://mobileside.cn/blogs/breakstring/archive/ 2007/10/06 /MorseCodeOnDotNETMF.aspx),写的比较基础全面,由于我们北航的研发团队先研究了Digi的开发板,所以直到今天Digi开发板才到我的手上,我的《Micro Framework研究》系列文章以后也会陆续推出,内容方面和张欣写的并不重复,应该是一个有力补充吧。

 

我的开发场景:

(图:MF071027001.JPG

张欣的笔记本由于没有串口,所以串口方面的内容并没有写,这里我优先测试的了串口部分内容,我的笔记本本身也没有串口,我是扩充了一个PCMCIA串口卡,这种方式的串口比USB转串口要好一些,特别是连接需要RTS/CTS控制的设备。

 

Digi指导作业书上关于连接串口的步骤是这样的:

1、  MFDeploy选择菜单中选择”Serial”这一项,我的当前串口是“COM 1

2、  用串口连接线连接PCMF开发板

3、  确保MFDeploy程序唯一使用COM1

4、  重启开发版

5、  单击Ping按钮

6、  如看到“ErrorNo response from device”,则继续单击Ping按钮

7、  出现“Pinging … TinyBooter”则表示通信成功

(图:MF071027000.JPG

很遗憾,我试了多次都是失败。

 

我打开超级终端程序,参数配置如下:115200,无校验,8个数据位

重启开发板,串口在5~6秒钟会收到如下信息:

(图:MF071027004.JPG

在出现“Program found at 0x 0a 070000 之前会等待3~5秒钟的时间(其实这个3~5时间就是等待接收上位机串口命令的)。

 

然后关闭该程序,重新打开MFDeploy程序,在此之前,先打开串口监控程序“PORTMON.EXE”,注意MFDeploy程序单击ping按钮的串口操作如下:

(图:MF071027005.JPG

 

这时候仍然是失败,但是请注意串口参数是:115200,偶校验,8个数据位

 

关上该程序,打开串口调试程序,参数设置为:115200,无校验,8个数据位

 

MFDeploy程序串口会发送如下四种指令(每个指令会重复发出6遍)

4D 53 70 6B 74 56 31 00 3A AA 3A 1D 94 B9 43 B7 00 00 00 00 4B 79 00 00 00 00 00 00 08 00 00 00 02 00 00 00 00 00 00 00

4D 53 70 6B 74 56 31 00 28 03 FA 0A 94 B9 43 B7 00 00 00 00 4C 79 00 00 00 00 00 00 08 00 00 00 02 00 00 00 00 00 00 00

4D 53 70 6B 74 56 31 00 2E E0 0C 0D 94 B9 43 B7 00 00 00 00 4D 79 00 00 00 00 00 00 08 00 00 00 02 00 00 00 00 00 00 00

4D 53 70 6B 74 56 31 00 24 C 5 17 05 94 B9 43 B7 00 00 00 00 4E 79 00 00 00 00 00 00 08 00 00 00 02 00 00 00 00 00 00 00

(图:MF071027006.JPG

 

在出现“Program found at 0x 0a 070000 之前,开发发送这四条指令,这时候你发送digi开发板是响应该命令的,并且等待时间被延长,上图的数据是我设置16进制/ascii交替显示的。

如果把参数修改为:115200,偶校验,8个数据位,则出现乱码,digi开发板对命令也没有什么响应了。

 

到了这里我只能得出如下结论:MFDeploy程序有问题(但看指导书上,图例是用串口通信成功了的)或digi开发板的默认串口参数可修改。

 

由于MFDeploy串口参数无法设置,我用.net反编译程序反编译MFDeploy程序,不过效果不是很好,大部分代码可以正确反编译出来,但工程无法正确编译,所以也就无法通过源码修改串口参数了。

有时间再深入研究,同时也希望这方面有研究的朋友,提出自己的看法。

 

下面该通过网口和digi开发版进行连接了,我的笔记本有wifi和普通网卡两种,如张欣的文章所说,同时连接是有问题的,所以只好关闭wifi连接了。

 

(图:MF071027002.JPG

 

多次切换到tcp/ip选项,它会自动探测digi开发版的ip地址,我探测到的ip地址为169.254.128.66,这时候如果你单击“ping”按钮,是无法连接成功的,你必须修改你ip地址为同一个网段,才能连接成功。连接成功后直接单击“plug-in”菜单中的参数配置选项,修改digi开发板的ip地址,如下图:

(图:MF071027003.JPG

 

注意:DHCP Enable要取消掉,然后在单击update按钮,修改后,记得修改你PCip地址,好与新修改的ip为同一个网段。

 

 

开始调试程序,相关配置请参见张欣的文章,我这里偷懒省略了J

 

默认的示例程序是三个灯连续亮的,我们修改为5个灯。相关代码修改如下:

BlinkingLed led0 = new BlinkingLed((Cpu.Pin)0, true);

            BlinkingLed led1 = new BlinkingLed((Cpu.Pin)1, true);

            BlinkingLed led2 = new BlinkingLed((Cpu.Pin)2, true);

            //------------

            //新加代码

            BlinkingLed led3 = new BlinkingLed((Cpu.Pin)5, true);

            BlinkingLed led4 = new BlinkingLed((Cpu.Pin)6, true);

 

 

            while (true)

            {

                led0.On = false;

                led0.Blink(200);

                Thread.Sleep(200);

                led0.StopBlink();

 

                led1.On = false;

                led1.Blink(200);

                Thread.Sleep(200);

                led1.StopBlink();

 

                led2.On = false;

                led2.Blink(200);

                Thread.Sleep(200);

                led2.StopBlink();

 

          //------------

            //新加代码

 

                led3.On = false;

                led3.Blink(200);

                Thread.Sleep(200);

                led3.StopBlink();

 

                led4.On = false;

                led4.Blink(200);

                Thread.Sleep(200);

                led4.StopBlink();

 

            }

注意,你直接编译运行,你会发现,还是三个灯交替闪烁,这是因为下面还是原先的程序,必须要单击菜单中的“部署”选项,先把程序部署下去,这时候在调试就是5个灯交替闪烁了。

不足之处:从Digi开发板来看,启动时间还是偏长,实际测试大约25秒左右(由上面可知,要5~6后TinyBooter才加载成功),从这一点上与以往单片程序相比差距甚大,希望以后性能能进一步提升。 

好,今天先写到这里,后续的文章我会陆续详细介绍串口、网口、IO入等等相关操作。

 



http://www.niftyadmin.cn/n/3655840.html

相关文章

javaScript面试题整理 --- 什么是闭包,什么是立即执行函数,它的作用是什么?简单说一下闭包的使用场景

什么是闭包,简单说一下闭包的使用场景 要理解闭包,首先必须理解Javascript特殊的变量作用域 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处: 1、函数内部可以直接读取全局变量。 2、在函数外部自然无…

JavaScript----- 链表学习

1、数组的缺点 在其他语言中 数组的长度是固定的,所以数组被填满后在添加新的元素是非常困难的。在数组中添加和删除也是很麻烦的,需要把其他元素向前或者向后平移,以反映数组刚刚进行了添加或删除操作。 在JavaScript 中数组的主要问题是&a…

JavaScript ---- 字典学习

字典是一种以键-值对形式存储数据的数据结构 JavaScript的object类就是以字典的形式设计的, function Dictionary() {this.add add;this.datastore new Array();this.find find;this.remove removethis.showAll showAllthis.count countthis.clear clear}f…

VS2005 IDE的bug?

在修改医疗程序的时候,遇到这样的一个问题,原来的程序是VS2003开发的VB.net程序,目前我转移到VS2005来,发现有些窗体界面无法打开,报出如下错误:(注,以前记得打开成功过几次&#xf…

JavaScript------散列学习

散列是一种常用的数据存储技术,散列后的数据可以快速的插入或取用。 散列使用的数据结构叫做 散列表。 在散列表上插入、删除和取用数据都非常的快,但是对于查找操作来说却效率低下,比如查找一组数据中的最大值和最小值。这些操作得求助于其…

.Net Mirco Framework 2007技术大会

.Net Mirco Framework 2007技术大会2006年在《程序员》杂志上通过看马宁的专栏文章,第一次知道了.Net MF。一年后的今天终于近距离地接触了.Net Mirco Frmaework,对MF有了一定的感性认识。最近公司很多项目都有大量嵌入式设备使用,由于WinCE系…

JavaScript ---- 集合学习

集合(set)是一种包含不同元素的数据结构。集合中的元素称为成员。集合的两个最重 要特性是: 1、集合中的成员是无序的 2、集合中不允许相同成员存在 1 集合的定义、操作和属性 1.1 集合的定义 不包含任何成员的集合称为空集,全集则是包含一切可能成员的…

火车站信息服务系统之LED大屏显示

最近比较忙,有一段时间没有更新blog了。一是忙隧道广告通信系统升级工作(两个方案同时做,linux和wince方案),二是忙北京南站的信息服务系统,由于该项目我们介入的比较晚,主要是参与型厂商&#…