前言
本文針對Novatek Scaler Leon2 32bit核心架構在單機模式下如何建立簡易的編譯環境,提供在外部若修改韌體時可以使用單機電腦完成編譯的動作進行所需要的除錯與對應下達軟體對策時的測試。
全新版本Cygwin 完整安裝流程
首先到如下圖Cygwin官網(https://www.cygwin.com/)中”Installing Cygwin”點選適合電腦安裝版本的安裝載點。
點選載點後會彈出如下圖下載畫面,點下儲存檔案將安裝檔儲存下來。
下載完成後,點擊下載的安裝執行檔,啟動安裝程序。
選擇”Install from Internet”由網路來源進行安裝。
接著點選”Browse”選擇或是建立Cygwin安裝後的目錄,並設定權限。
因為由網路來源安裝,再指定”SetupPackage”目錄。
設定網路連線方式,這邊選擇”Direct Connection”直接連線方式安裝。
網路設定部分最後再選擇下載來源網點,若有連線下載失敗訊息可以選擇其他載點再進行安裝測試。
若連線成功則會顯示下載安裝包進度。
安裝包下載完成後會進入Cygwin自訂需要安裝的套件與版本選擇,因為安裝包會一直更新,我們可以針對Cygwin本身相關的套件與函式庫版本以最新版本為主進行選用,若需要測試其他版本可以再進入此安裝介面進行更換。在選用設定套件可以點選”View”的下拉式功能表單選擇”Full”選項。
以cygwin32相關套件為範例,我們可以在下圖綠框"Search"欄位鍵入需要搜尋套件名稱的關鍵字,以下鍵入”cygwin32”後可以看到下方就會將名稱相關的套件列出,我們再一一將有使用到的套件選擇需要使用的版本,如紅框處按下箭頭Icon後選擇對應版本號即可完成設定,若不需要安裝的套件則設定到skip狀態。
Cygwin需要安裝的相關套件都完成設定後就可以按下一步開始準備進行安裝。
開始安裝前會提示目前要安裝與修改的套件版本列表,若有需要可以下拉進行確認動作,沒問題就按下一步進行安裝。
等待安裝進度完成,就完成了Cygwin環境安裝。
LEON2 GCC編譯工具設定
安裝好Cygwin環境後並無法符合所需編譯的需求,主要是必須要使用並設定LEON2 core編譯所需的GCC工具,本文將直接由網路下載對應版本的GCC工具導入Cygwin環境當中最後並完成編譯環境的相關設定。首先先搜尋LEON2 core所需的GCC編譯工具,本文下載網址如下圖為http://www.navspark.com.tw/downloads,點選windows版本下載sparc-elf-3.4.4 GCC編譯工具,下載檔案為sparc-elf-3.4.4-mingw.zip檔。
針對下載完成的zip檔進行解壓縮動作獲得sparc-elf-3.4.4-mingw目錄檔案如下圖紅框處。
最後在Cygwin安裝目錄下建立”opt”目錄,並將上述解壓縮的sparc-elf-3.4.4-mingw目錄複製進來。
完成複製後將目錄路徑設定到如下圖範例的Windows環境變數中。
完成以上動作即可成功安裝並設定LEON2核心所需要的編譯環境。
Cygwin 編譯環境使用
首先先開啟已經安裝設定成功的Cygwin環境,雙擊安裝目錄下的”Cygwin.bat”檔案。
執行後會進入如下圖Cygwin Console視窗。
在Cygwin Console介面中使用”cd”指令切換到所需要編譯韌體的source code目錄下,如下圖範例,切換到確定目錄後可以執行”make all”命令開始執行編譯動作。
編譯流程結束可以參考編譯完成畫面如下看到bin檔產出即完成編譯動作。
Q/A
Q:Cygwin使用方式為在Console介面下鍵入指令方式,若不熟悉相關指令使用方式是否可以有方式查詢?
A:Cywin相關指令都可以搭配”—help”參數執行後將會將該指令詳細搭配參數格式與每個參數操作說明詳細列出,可以在Offline狀況下直接進行查詢使用方法
Q:安裝完成後若要確認已經安裝套件與版本要如何獲得相關資訊?
A: 安裝完成後可以到文中說明的Cygwin目錄下啟動Cygwin Console介面,同時鍵入”cygcheck -c”指令,將會將我們設定安裝的所有套件與對應版本列出若需要確認安裝是否遺漏或是正確性,可以進行比對確認。
Q:針對已經安裝完成的套件版本若要升級或是降級使用中的版本是否需要重新安裝?
A:不需要整個環境重新安裝,套件新增或是針對已經安裝版本的套件進行升降版本別都可以參考文中安裝流程直接執行到”Select Packages”頁面步驟後在該頁面使用搜尋的方式尋找需要異動的套件名稱後,在所列出套件可以使用下拉工能表選擇”Reinstall”、”Uninstall”或是換版本等設定後進行”下一步”動作等待結束即可完成套件異動。
Q:針對編譯完成的檔案甚至其他核心bin檔資料想要一起進行打包動作可以使用甚麼套件完成?
A:Cywin安裝程式中可以選擇將p7zip套件安裝設定,設定完成後就可以在環境中使用”7z”的指令針對需要打包壓縮的目錄與其下檔案進行一次性自動化的打包動作,我們也可以將指令編輯在程式包建立一個”shell”檔案先執行”make all”命令完成編譯後再執行”7z”指令搭配”a”的參數將所需要的檔案目錄進行打包為一個檔案。
Q:執行編譯時遇到”Argument list too long fail”的報錯訊息該如何處置?
A: 這是Linux Shell指令長度限制常遇到的問題,最常碰到的案例就是所帶入的檔案目錄的參數過長所產生的錯誤,我們可以使用”getconf ARG_MAX”指令來查出目前設定,並搭配使用ulimit命令來調整擴大ARG_MAX的限制設定;若已經設定到最大值依然發生報錯訊息就必須修改Makefile的編譯程序來避免此問題,例如將不需要的目錄項移除。
評論