close
        手邊剛好有一塊凱思公司出版的 SBC2410X 開發板. 剛好可以拿來 、給之前很認真study 的 u-boo t使用~  不過 、在 u-boot 還沒設定好前 、我們先拿原本built in 在sbc2410x 開發板的 bootloader vivi 來試驗一下.

        vivi 是韓國公司mizi 所開發的產品. 不過相較於 u-boot 提供許多 monitor 的功能外 、vivi 只能以 serial port 來做為message的輸出 、就顯得陽春些. 不過也還夠用啦. 所以就拿 viv i的 source code 來 build 一下囉....


        首先可以使用 tar zxvf vivi.tgz-C /usr  的指令 、將 viv 解壓在 /usr 的目錄下. 如果解壓成功 、就可以在 /usr下 、看到一個 vivi 的目錄. 
   
        大多Linux 所建構出的程式 、內部結構都幾為相近 、不外乎有 Arch 、include 、Lib 、等類似的目錄 、當然啦 、一定會找到一個 Makefile 檔 、來告知 make 程式 、等下 compile 要 folloew 的依據.

       在 Makefile 裏面 、記載了許多路徑的設定 、關聯函式庫的來源 、也提示了prefix 的 title 、這在ARM base上來說 、一定是 arm-linux- 、除此之外 、也告知 compile前 、必須做 config 的方式. 像是 menuconfig 、或是 xconfig. 等 、或許對初學者來說 、裏面有大量的變數($XXXXX) 、會讓人一開始看時 、覺得很複雜. 但別急 、看久了就會很習慣的.

         接下來 、我們就按照步驟 、做一次....
 
         1. make distclean or 
             make clean

         這兩個方式極為相近 、主要是將之前compi;e 過的 .OBJ 檔移除 、避面LINK時 、與最後的狀況不同步. 但 make distclean則除了上述的步驟外 、也會將系統的設定檔(autoconfig後的設定) 移除 、並且將 version.h 給刪掉. 只不過 、我覺得納悶 、既然 version.h 記錄了系統的版本別 、怎又會在這樣的設定時 、將其移除呢. 先不管 、畢竟刪除這檔案 、不會影響編譯. 我選擇以 make clean 的方式執行

         2. make menuconfig

        這是一個視窗畫面 、會讓使用者依照欄內提供的選項進行設定 、我們如果沒有特別要去設定的話 、可以選裏免的 Load config 的方式 、將之前預設的檔案載入 、但別忘了 、離開前要設定 、這樣才會存在 autoconfig 中喔

         3. make

        經過前兩項的設定 、就可以執行make 了 、編譯 vivi 相當的快 、大約只要幾秒鐘就完成了. 這會在vivi 的根目錄下 、找到 vivi 、vivi-elf 等幾個檔案 . 如果有的話 、就大功告成囉..


        不過 、提醒一點 、雖然 vivi 是以 cross compile tools chain 2.95.3 來完成的 、但並非只要是 2.95.3 版的就可以用來編譯喔 、像我之前用 ARM LINUX FTP網站的版本 、就發生了些錯誤 , 看起來像是compiler 有些參數  、出了問題. 後來 、利用凱思裏面 build 好的 tools chain 、就ok了. 看來 , 從原始的 gcc 、binutils 、libc 到build 成可用的 cross compile tools chain 、是有許多地方要注意的.

        雖然編譯成功 、但怎知道系統是能正常運作呢? 我們可以動點小手腳來試一下. 步驟同上 、但我們可以在 /usr/vivi/include 目錄中 、找到 version.h 這個檔案 、然後將 version 改掉如下

        Version release " 0.1.4 " 、我們可以修正為 Version release  " 0.1.4jk "

存檔後 、執行步驟1~3 、就可以看到目錄下有幾的 viv i的檔案.

        接下來 、我們利用凱思提供的 NAND Flash 燒錄程式. 進行燒錄. 

        ROM Address 設為  0x00000000
        RAM Address 設為  0x30000000

燒錄成功後 、重新開機. 成功的話 、就可以在透過 uart  輸出到螢幕的 Hyper Terminal 中 、發現 Version release 、已經變成 Version release 0.1.4jk了 (訊息很多 、所以要注意看 、要不就一開機後 、馬上關掉、系統停止output 訊息 、就不會將過往的資訊給蓋掉了)

       雖然同為 sbc2410x 的平台 、但沒真的拿 u-boot 去試驗 、還真的不能確定是否在 u-boot 編譯後 、就可以直接燒在凱思的板子上 、但可以肯定的是 、重心 build 過的 vivi , 在重新燒錄 NAND flash 中後 、是可以讓系統正常動作的.

arrow
arrow
    全站熱搜

    jslinux 發表在 痞客邦 留言(0) 人氣()