在系統編程技術(In-System Programming,簡稱ISP技術)是Lattice半導體公司首先提出的一種使產品在設計、制造過程中的每個環節,甚至在賣給最終用戶以后,具有對其器件、電路板或整個電子系統的邏輯和功能隨時進行組態或重組能力的最新技術。ISP技術消除了傳統技術的某些限制和連接弊病,有利于在板設計、制造與編程。ISP硬件靈活且易于軟件修改,便于設計開發。由于ISP器件可以像任何其他器件一樣,在印刷電路板PCB上處理,因此編程ISP器件不需要專門編程器和較復雜的流程。在實際應用中,有許多產品需要大批量的生產及現場維護升級,利用嵌入系統開發的ISP應用程序可以方便用戶進行批量生產和系統升級。本文以對Phlilips LPC213x系列MCU進行軟件升級為例,研究如何利用ISP技術與Internet結合,解決從串口進行軟件升級的問題。 1 LPC213x Flash Bootloader介紹 LPC213x Bootloader(啟動裝載程序)控制復位后的初始化操作,并提供Flash ISP編程接口。它駐留在Flash的上8KB,只能讀不能寫。由于Philips公司并沒有提供Boot ROM內部是如何實現ISP功能的,因此必須根據Philips公司提供的流程和協議來編寫上位機程序。 1.1 通信協議 所有的ISP命令都由上位機通過串口以單個ASCII字符串的形式發送。字符串應當以回車(CR)和/或換行(LF)控制字符作為結束,多余的將被忽略。所有ISP的響應都以“”結束的字符串形式發送。數據以UU編碼(將3字節的二進制數據轉換成4字節可打印的ASCII字符集)的格式發送和接收。發送器發送20個UU編碼行之后發進校驗和,任何UU編碼行的長度都不應超過61字節。接收器將該校驗和與接收數據的校驗和相比較,若匹配,則接收器響應“0K”,并等待下一次發送;若不匹配,則接收器響應“RESEND”,發送器應當將字節重新發送。 1.2 ISP命令 ISP命令處理程序所接受的常用命令如表1所列。 每個命令有具體的狀態代碼,只有當接收到的命令執行完畢后,處理程序才通過串口發送CMD_SUCCESS;這時上位機才能發送新的ISP命令,但“設置波特率”、“寫RAM”、“讀存儲器”和“運行”命令除外。上位機就是通過串口發送這些相關的ISP命令以及程序的UU編碼,完成程序的下載。 2 上位機軟件實現 2.1 應用程序的網上下載 要實現軟件自動升級,首先必須將MCU應用程序從網上下載到PC機,然后再利用ISP通過串口把程序下載到MCU中。程序的下載可以采用HTTP方式,也可以采用FTP方式。在此是利用:MFC提供的FTP應用程序接口實現程序下載,并把程序保存在指定位置。為避免每次升級程序時,都要從網上下載,引入了計數器計算下載次數;只在第~次升級時,才從網上下載保存。 2.2 ISP的實現 LPC213x要調用Boot ROM中的ISP應用程序接口,必須進入ISP模式。這要求在系統復位時,PO.14引腳為低電平。實際應用中可以采用兩種方法使系統進入ISP模式:一是通過開關控制P0.14引腳為低電平;二是通過串口的控制引腳控制晶體管的導通和截止,從而設置PO.14為低電平。第二種方法具有通用性,有些MCU進入ISP模式要求的可能是引腳的不同脈沖序列,即必須滿足一定的脈沖時序要求(如MSP430系列的MCU)。在此采用的是第二種方法:把串口的DTR引腳連接到P0.14,串口的RTS引腳連接到LPC213x的復位引腳;通過在系統運行時控制RTS引腳發出復位脈沖,DTR的引腳設置為低電平,控制晶體管的導通和截止,使系統強制進入ISP模式;進入ISP模式后,根據上位機傳來的ISP命令,調用Boot ROM固件中相應的子程序自動完成必要的操作。圖l描述了LPC2132從復位進入ISP模式的流程。 具體上位機要實現該程序下載,須完成如下工作: ①將從網上下載的Intel HEX格式的應用程序打開,從文件中解析出要下載的程序文件,并把它轉換為二進制格式。 ②向下位機發送同步驗證字符“?”(0x3F),供自動確定波特率,并等待響應。自動波特率程序根據自身頻率測量接收到的同步字符的位時間,并對串口波特率發生器進行編程;它還向下位機發送一個ASCII字符串(Synchro-nized)。作為響應,下位機應發送接收到的ASCII字符串(Synchrtmized);上位機通過觀察接收到的字符來驗證是否同步。如果同步驗證沒有通過,則上位機重新發送同步驗證字符“?”,再一次進行同步驗證。通過驗證后,向下位機發送“OK”;下位機通過發送正在運行部分的晶振頻率(單位為kHz)作為響應;在接收到晶振頻率后再向下位機發送“OK”,最終完成同步驗證。 ③向下位機發送讀器件ID命令“J”,接收響應信息,并提取出芯片的ID編號;根據芯片的ID,設置相關數據(Flash和RAM大小)。 ④向下位機發送擦除命令將Flash ROM分段擦除。 ⑤向下位機發送寫命令“W”。 ⑥對轉換后的二進制程序進行UU編碼,并計算校驗和,每發送20行發送一次校驗和;然后向下位機發送準備寫操作扇區的命令“P”和“C”命令,下位機接收到命令后進行程序的寫入。 ⑦關閉串口,釋放系統資源,以便進行下一次系統升級。 結語 通過本設計構成的阿絡在線下載系統,已在人民幣防偽鑒別儀的生產和售后維護中得到了實際應用。只需一臺能夠上網的電腦和一條下載線,就能對目標板里單片機的程序進行修改,大大方便了工程技術人員,提高了工作效率,降低了成本。 |