5、自動進入USBISP
在前面的章節(jié),我們解釋了在USBISP模式下,PC更新設備固件的過程。當固件未編程,或者拉低一個引腳(在LPC134x系列是PIO0.1腳),設備復位/上電,NXPLPC1300微控制器默認為ISP模式。有時,ISP模式下更新固件、連接設備,用戶不想去按一下按鈕。這樣的話,我們可以設計出允許ISP模式下編程的固件。
在LPC1300片上ROM中,通過In-ApplicationProgrammingAPI請求,可以實現(xiàn)ISP模式下編程。固件更新之后,用戶需要重啟設備以使新的固件生效。下載新固件之后,新固件可以預設置看門狗定時器來重新設置LPC1300。下面的流程圖顯示了設備自動化ISP過程。名為“autoisp”的軟件實例演示了這一技術(shù)。
圖5
6軟件例子
為了盡早建立用戶界面友好的固件更新工具,NXP發(fā)布了三個實例(一個ISP下載程序并提供了源代碼)。提供一個基于C#的應用程序窗體,可運行于WindowsXP、WindowsVista和Windows7。使用MicrosoftVisualStudioC#Express2010,可以讓Windows的應用得到擴展。一個用C語言編寫的命令行工具可以在Mac上使用。這個工具在AppleXcode中得到加強,可以運行在OS-X10.5或更高的版本上。最后,UbuntuLinux也有一個程序化的腳本,已在Ubuntu10.04通過測試,并可以運行在具有相同udev文件系統(tǒng)和工具的不同版本的Linux上。
所有工具都是開放的、沒有限制,可重復使用,除了Windows應用[取決于iTuner(http://ituner.codeplex.com/)計劃的USB磁盤設備等級]。這是一個在開源許可下,要求公開源代碼的衍生著作。
應用手冊中還包括一個實現(xiàn)代碼讀保護的blinky的程序。這個程序用在theLPCXpressoIDE,在theLPCXpresso板上讓LED閃爍,在嵌入式板上讓七段數(shù)碼管顯示屏計數(shù)。有九種程序編譯版本,所以,設備可以反復的編程(使用不同的CRP模式和LED閃爍/計數(shù)速率)。還有一個叫“autoisp”的程序。這個例子演示了如何在程序控制下進入ISP模式。在LED閃爍十秒鐘之后,進入ISP模式。如果設備連接到PC上,它將順序輸出,固件開始閃動。這期間,LPC1343進入ISP模式,看門狗定時器繼續(xù)工作。時間到了之后,LPC1343復位并再次運行固件。
最后,還有一個叫“padto”的小命令行程序。這個程序用來從開發(fā)工具獲得二進制輸出,并填補成0xFF字節(jié),直到與LPC上的flash大小相匹配。這種匹配有助于PC主機上的ISP下載程序,確保固件適用于連接到USB上的特定的LPC134X。
WindowsNXPISP實用工具
這程序是基于Microsoft.NET,當setup.exe程序運行時啟動,附帶的VisualStudioInstaller將檢查電腦和下載NET的最新版本(如果還未安裝)。因此,當你第一次運行setup.exe程序時,請確認你已經(jīng)通過寬帶連接到互聯(lián)網(wǎng)上。在Windows.NET子系統(tǒng)更新完之后,NXPISP程序?qū)⒆詣影惭b并運行。NXPISP運行時,點擊“SelectFirmware.”一個文件選擇對話框?qū)棾觯屇氵x擇一個.bin文件。這個.bin文件將用“CriterionforValidUserCode”核對,即向量表的前8個32位字總和為0。如果bin文件符合要求,“SelectFirmware”按鈕的那個綠色的檢查標志將顯示正確,否則。顯示一個紅色的X。
實際燒寫一個設備,單擊“UpdateFirmware.”,“UpdateFirmware.”按鈕工作起來像一個觸發(fā)器,而且當單擊時能停留在壓低或再一次單擊時釋放,當按鍵被按下,電腦將掃描NXPISP設備,如果有一個被發(fā)現(xiàn),它的固件將被更新,而且“UpdateFirmware”按鈕的綠色檢查標志顯示正確并且按鈕將釋放,如果沒有設備被找到,“UpdateFirmware”按鈕將停留在壓低而且工具將等待設備被連接。設備被找到和更新后,綠色檢查標志將顯示而且“UpdateFirmware”按鈕將彈起,如果實用工具等待設備連接(“UpdateFirmware”按鈕仍然壓低)它將通過再一次單擊“UpdateFirmware”按鈕取消而且導致彈起。安全彈出USBISP設備以確保新固件已經(jīng)寫入(WindowsNXPISP工具不會卸載設備)。通過Windows硬件彈出圖標和Windows瀏覽器彈出選項來安全彈出設備。這個步驟失敗將導致固件惡化。
評論