我的開發場景:
<a href="http://blog.51cto.com/attachment/201005/163013126.jpg" target="_blank"></a>
(圖:MF071027001.JPG)
張欣的筆記本由于沒有序列槽,是以序列槽方面的内容并沒有寫,這裡我優先測試的了序列槽部分内容,我的筆記本本身也沒有序列槽,我是擴充了一個PCMCIA序列槽卡,這種方式的序列槽比USB轉序列槽要好一些,特别是連接配接需要RTS/CTS控制的裝置。
Digi指導作業書上關于連接配接序列槽的步驟是這樣的:
1、 MFDeploy選擇菜單中選擇”Serial”這一項,我的目前序列槽是“COM1”
2、 用序列槽連接配接線連接配接PC和MF開發闆
3、 確定MFDeploy程式唯一使用COM1口
4、 重新開機開發版
5、 單擊Ping按鈕
6、 如看到“Error:No response from device”,則繼續單擊Ping按鈕
7、 出現“Pinging … TinyBooter”則表示通信成功
<a href="http://blog.51cto.com/attachment/201005/163021389.jpg" target="_blank"></a>
(圖:MF071027000.JPG)
很遺憾,我試了多次都是失敗。
我打開超級終端程式,參數配置如下:115200,無校驗,8個資料位
重新開機開發闆,序列槽在5~6秒鐘會收到如下資訊:
<a href="http://blog.51cto.com/attachment/201005/163028609.jpg" target="_blank"></a>
(圖:MF071027004.JPG)
在出現“Program found at 0x0a070000”之前會等待3~5秒鐘的時間(其實這個3~5時間就是等待接收上位機序列槽指令的)。
然後關閉該程式,重新打開MFDeploy程式,在此之前,先打開序列槽監控程式“PORTMON.EXE”,注意MFDeploy程式單擊ping按鈕的序列槽操作如下:
<a href="http://blog.51cto.com/attachment/201005/163036845.jpg" target="_blank"></a>
(圖: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 C5 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
<a href="http://blog.51cto.com/attachment/201005/163046299.jpg" target="_blank"></a>
(圖:MF071027006.JPG)
在出現“Program found at 0x0a070000”之前,開發發送這四條指令,這時候你發送digi開發闆是響應該指令的,并且等待時間被延長,上圖的資料是我設定16進制/ascii交替顯示的。
如果把參數修改為:115200,偶校驗,8個資料位,則出現亂碼,digi開發闆對指令也沒有什麼響應了。
到了這裡我隻能得出如下結論:MFDeploy程式有問題(但看指導書上,圖例是用序列槽通信成功了的)或digi開發闆的預設序列槽參數可修改。
由于MFDeploy序列槽參數無法設定,我用.net反編譯程式反編譯MFDeploy程式,不過效果不是很好,大部分代碼可以正确反編譯出來,但工程無法正确編譯,是以也就無法通過源碼修改序列槽參數了。
有時間再深入研究,同時也希望這方面有研究的朋友,提出自己的看法。
下面該通過網口和digi開發版進行連接配接了,我的筆記本有wifi和普通網卡兩種,如張欣的文章所說,同時連接配接是有問題的,是以隻好關閉wifi連接配接了。
<a href="http://blog.51cto.com/attachment/201005/163056719.jpg" target="_blank"></a>
(圖:MF071027002.JPG)
多次切換到tcp/ip選項,它會自動探測digi開發版的ip位址,我探測到的ip位址為169.254.128.66,這時候如果你單擊“ping”按鈕,是無法連接配接成功的,你必須修改你ip位址為同一個網段,才能連接配接成功。連接配接成功後直接單擊“plug-in”菜單中的參數配置選項,修改digi開發闆的ip位址,如下圖:
<a href="http://blog.51cto.com/attachment/201005/163103821.jpg" target="_blank"></a>
(圖:MF071027003.JPG)
注意:DHCP 的Enable要取消掉,然後在單擊update按鈕,修改後,記得修改你PC的ip位址,好與新修改的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);
led1.StopBlink();
led2.On = false;
led2.Blink(200);
led2.StopBlink();
//------------
led3.On = false;
led3.Blink(200);
led3.StopBlink();
led4.On = false;
led4.Blink(200);
led4.StopBlink();
}
注意,你直接編譯運作,你會發現,還是三個燈交替閃爍,這是因為下面還是原先的程式,必須要單擊菜單中的“部署”選項,先把程式部署下去,這時候在調試就是5個燈交替閃爍了。
不足之處:從Digi開發闆來看,啟動時間還是偏長,實際測試大約25秒左右(由上面可知,要5~6後TinyBooter才加載成功),從這一點上與以往單片程式相比差距甚大,希望以後性能能進一步提升。
好,今天先寫到這裡,後續的文章我會陸續詳細介紹序列槽、網口、IO入等等相關操作。
本文轉自yefanqiu51CTO部落格,原文連結:http://blog.51cto.com/yfsoft/323413,如需轉載請自行聯系原作者