周林霞 周記超 胡歡 傅亞光
(1.許繼集團有限公司 河南省許昌市 461000 2.許昌大成實業集團有限公司 河南省許昌市 461000)
隨著嵌入式設備的發展,包括智能手機以及具有物聯網功能諸如智能家具等諸多嵌入式設備產品進入人們的生活,使人們生活變得越來越智能化[1]。“智能化”,是指由現代通信與信息技術、計算機網絡技術、行業技術、智能控制技術匯集而成的針對某一個方面的應用,而這方面的研究尚處于初始的階段,從一般的意義上講,智能就是一種能夠隨外界條件的變化,確定正確行動的能力。在計算機問世后,人們開始試圖利用電子計算機去執行人類各種工作任務,或代替人們去進行有關推理和決策,完成對人類自身智能的模擬,HCM3000 板卡固件智能化下載系統就是智能化的模擬人類下載固件的一個系統。
本系統主要解決工程現場更新固件的問題,特別是國外的工程,更新現場工程板卡的固件,需要硬件開發的人員跑到現場更新,浪費出差費用和時間。HCM3000 板卡固件智能化下載系統,可以實現一鍵式、智能化下載板卡固件,操作非常簡單,現場的人員可以自己利用這個軟件下載板卡固件,不需要硬件開發的人員出差下載,可以大大地為公司省去出差費用和時間。
HCM3000 板卡固件智能化下載系統的框架結構主要包括智能下載部分和基礎運行部分,智能下載部分運行于PC 機中,基礎運行部分運行于要下載固件的HCM3000 板卡中。HCM3000 板卡固件智能化下載系統總體框架如下圖1。
智能下載部分是圖1 的上面的部分,其運行在PC 機中。職能下載部分主要分為三層,最上層是智能下載流程控制模塊,控制著HCM3000 板卡固件智能化下載系統的流程。從一鍵式下載命令下達到固件下載完成,需要調用哪個軟件、怎么調用、調用后什么時候完成下載、完成下載后怎么退出軟件,這整個過程都由這個模塊控制。中層主要根據不同的板卡類型、固件類型調用相應的模塊,因為不同的板卡類型、固件類型其下載的方法不一樣,調用的軟件也不一樣。最底層是Tftpd32.exe 軟件和Xilinx Design Tools 軟件。
基礎運行部分就是圖1 的下面的部分,其運行在被下載固件的HCM3000 板卡中,只有板卡正常啟動的情況下,才可以下載固件。VxWorks 鏡像運行在EPU20B 板卡中,EPU20B 板卡在VxWorks 鏡像下正常啟動,才可以下載BOOTROM。基礎運行運行在要下載FPGA 固件的板卡中,保證其正常啟動運行,才可以下載FPGA。

圖1
HCM3000 板卡固件智能化下載系統的流程圖如圖2,通過系統軟件界面選擇板卡類型、固件類型。固件的類型主要分為兩種:1.BOOTROM 固件;2.FPGA 固件,其中HCM3000 的所有板卡都有FPGA 固件,但是BOOTROM 固件只有EPU20B 有。
當通過系統軟件界面選擇完板卡類型、固件類型后,如果選擇的是EPU20B 板卡的BOOTROM 固件,先把BOOTROM 固件放在固定的某個路徑下,系統自動的調用串口,通過串口下達EPU20B 板卡重啟命令,EPU20B 板卡重啟后,通過串口信息保存現在的IP 地址和啟動參數,保存完成后,再次通過串口下達重啟命令,在EPU20B 板卡重啟時,重新設置EPU20B 板卡的IP 地址為192.168.10.1,并設置其他的參數信息,這些參數信息要保證VXWORK 的正常啟動,保證板卡的正常啟動。EPU20B 板卡正常啟動后,系統軟件會自動的調用Tftpd32.exe,并調用一個批處理自動的把運行系統軟件的電腦的IP 地址修改成192.168.10.250。通過串口下達燒寫BOOTROM 固件命令,開始下載BOOTROM 固件,下載完成后可以通過串口的打印信息查看是否下載成功,下載完成后,通過串口下達EPU20B 板卡重啟命令,板卡重啟后設置回原來的IP 地址及啟動參數,最后把下載是否成功的結果通過系統軟件界面顯示,整個過程都是自動化的完成。
當通過系統軟件界面選擇完板卡類型、固件類型后,如果選擇的是HCM3000 某個板卡的FPGA 固件,首先選擇某個板卡的FPGA 存放路徑,并把相應的路徑信息寫進相應板卡的批處理文件中,然后把寫完路徑信息的批處理拷貝到C:Xilinx14.7ISE_DSISEin t64下,并用C:Xilinx14.7ISE_DSISEin t64路徑下的impact 運行相應板卡的批處理的命令進行FPGA 下載,下載完成后,批處理把下載結果寫進TXT 文件中。系統軟件通過讀取這個TXT 文件來查看FPGA 是否下載成功,校驗碼是多少,并通過系統軟件界面顯示出來,整個過程都是自動化的完成。
腳本是實現HCM3000 板卡固件智能化下載系統的重要部分,腳本的優劣直接影響到系統軟件的效率和開銷。腳本語言可移植性好壞,直接影響著腳本代碼的可重用性及系統軟件的可重復性[2]。
HCM3000 板卡固件智能化下載系統主要用VC++和批處理編寫完成,VC++的優點是界面簡潔,占用資源少,操作方便[3],批處理優點就是資源利用率高和系統吞吐量大,CPU 利用率高。
4.2.1 調用串口工具
EPU20B 板卡被大量使用在工程現場控制環境中,而EPU20B板卡片內集成的串口模塊負責EPU20B 板卡控制系統與外界的數據通信[4]。通過串口向EPU20B 下達命令,通過串口打印信息顯示EPU20B 板卡狀態,這都可以通過使用MSCOMM 控件實現的,在VC++腳本中添加這個控件,再添加相應的類文件,編寫需要的代碼即可。
4.2.2 調用Tftpd32.exe 軟件
一般情況下打開Tftpd32.exe 軟件后,需要選擇BOOTROM固件存放路徑、運行Tftpd32.exe 軟件的電腦IP 地址等信息,BOOTROM 固件存放路徑第一次設置好,以后打開都是這樣,但是如果運行Tftpd32.exe 軟件的電腦IP 改變后,Tftpd32.exe 軟件里的IP 地址需要重新設置,通過把Tftpd32.exe 軟件的注冊表里的IP 地址設為固定的IP 192.168.10.250,這樣每次用批處理打開Tftpd32.exe 軟件,Tftpd32.exe 軟件里的路徑、IP 信息都是固定的。再調用批處理,把運行Tftpd32.exe 軟件的電腦IP 地址改為固定的IP 192.168.10.250,這樣就可以通過串口下達下載相應路徑下BOOTROM 固件命令,完成BOOTROM 固件下載。
4.2.3 調用Xilinx Design Tools 軟件

圖2
首先把用Xilinx Design Tools 軟件下載每類板卡的FPGA 的命令編制成BAT 批處理文件,批處理文件里面是調用Xilinx Design Tools 工具下載FPGA 固件的CMD 命令,批處理里面除了CMD 命令,還有一些信息是下載每類板卡FPGA 時選的編程方式、器件類型、數據寬度等信息,每類板卡的這些信息會不一樣。把這些寫完路徑信息的批處理拷貝到C:Xilinx14.7ISE_DSISEin t64下,并用C:Xilinx14.7ISE_DSISEin t64路徑下的impact 運行相應板卡的批處理命令文件來完成FPGA 下載。