網樂通核心編譯


1.建立編譯環境
網樂通使用的是 STLinux (以SH 架構發行的Linux)
官網有介紹怎麼把toolchain 安裝到ubuntu
當然看不懂英文的還有中文STLinux Cross-Compile Enviroment 至 Ubuntu

不過照上面兩個做,在安裝STLinux2.3 時絕對會卡
因為裡面的 install 被改過了,要把裡面的–force-debian 改回 –debian

另外網樂通的kernel 只能用STLinux 2.3 編譯,新版的kernel 只能用STLinux 2.4編
不用擔心,新版的編出來不相容網樂通(沒有支援網樂通的版子)
所以也就不用去花時間編了,安裝STLinux 2.3那個就可以了

安裝完STLinux-2.3 後建議採 中文說明的那個方式

nano ~/.profile
輸入
# for STLinux Cross-Compile
export PATH="$PATH:/opt/STM/STLinux-2.3/devkit/sh4/bin"

儲存後
. ~/.profile

這樣以後Cross compile 就不用下一堆參數

2.編譯網樂通核心
同樣的這個也有官方版,一樣還有中文版的
編譯網樂通專用 Kernel,
nextvod – compile kernel
Neo’s Blogger

大同小異,中文版針對網樂通而言比較詳細
但這裡有個問題點,也就是Load Address跟Execute Address
中文版對這個沒有多做說明, 官方版有只不過是在另外一篇
Creating Linux Kernel U-Boot Images

大意是說
U-Boot,kernel image 的Load Address跟Execute Address 是看板子決定的
U-Boot 的位置要對+編出來的kernel 也要符合 才可能正確載入核心開機
沒錯核心編出來的Load Address跟Execute Address也要符合網樂通的規格
官方那篇 有介紹如何看編譯出來vmlinux的Load,execute address,就不多說了

很X的就是網樂通釋出source 裡的 pdk7105_defconfig 並不符合網樂通規格
也只有下載回來 source 裡的.config 有符合

而讓load,execute address 出問題關鍵的地方就是在 下面這兩個東西

反白的地方必須是這個數值,編出來的核心才會對,要不然就只是浪費時間

參考以上這些東西,有少許編譯經驗的人應該就可以輕易編出網樂通的核心
不信邪的人(像我)
就用STLinux-2.4 +新版核心 套用以上兩個設定編出一個網樂通能吃的核心
只不過能吃不代表能用,網樂通載入核心後竟然就給我自動關機

3.最佳化網樂通核心
基本上應該是可以在make vmlinux 那邊下CFLAGS
只不過我懶得每次都下就直接改Makefile,
由於sh4-linux-gcc 版本是4.2.4,不能下4.6 才有的 -Ofast
所以我就採接近-Ofast 的參數 -O3 -ffast-math
參考指出 -m4 是SH4專有的最佳化參數(一般處理器多是-march=?)
update: 找了一下SH4設計廠的資料
網樂通用的應該是SH7780系列裡的SH7724
核心不是SH-4 而是SH-4A ,可硬解也可硬壓 MPEG4 還可以解VC1
(拿來當機上盒只供播放用有點浪費)
另外它的時脈最高應該是500MHz,只不過就跟DDR2一樣 它被廠商降頻來使用
所以說-m4 參數應該是可以改採 -m4a 進行編譯

然後再加上-pipe (加這個參數純粹只是減少編譯所花的時間)
這邊有個重點
不要在menuconfig 時選擇 Optimize for size,它會使用 -Os 跟最佳化要用的 -O3 牴觸
所以我同樣是在Makefile 修改參數,免得一段時間沒編 腦殘選下去

總結:最後是這樣 CFLAGS="-m4a -pipe -O3 -ffast-math"
註:最佳化有可能會讓程式執行錯誤,編譯後請執行穩定性測試
如果執行上有什麼問題,請優先拿掉 -ffast-math

以下是幾個我在意的東西
加上前面的圖版面占據似乎有點大 就縮起來,有興趣看的可以打開


說明:採offload bulk memory不同步的方式減少對CPU的負擔
影響的主要是在網路方面的東西(所以下面這個要跟著選)


網樂通用的SH4,是支援CPU scaling 就跟AMD,intel 的CPU 一樣可以依據負載情況調整 時脈
網樂通可變動的時脈在450MHz~115MHz 範圍之內
至於調整時脈有三種方式,其中我是比較喜歡conservative 這個
可惜找不到cpufreq(也編不出來)
不過網樂通時脈有低(效能也低),功耗上的差異應該不會像PC那樣大
就算了以後有機會再試試看

這就是硬碟的那個 先進格式,我手上沒有有用這個的硬碟 就不選了
如果要用2TB以上的硬碟,多半都需要這個

I/O 排程器, 據說明中間那個Deadline 最快
其他還有一些有的沒的,等有空再提吧

11 則迴響 (+add yours?)

  1. 訪客
    三月 09, 2013 @ 01:06:38

    1. CPU 型號, 之前網友有拆開, 看來是 STMicroelectronics ST-9150BUC http://www.st.com/web/catalog/mmc/FM128/SC1401/PF250067 (資料來源:http://www.osslab.com.tw/Hardware/Open_Embedded_System/NextVOD_unit_Hacking_-_%25e7%25b6%25b2%25e6%25a8%2582%25e9%2580%259a%25e6%2594%25b9%25e6%25a9%259f)

    2. 另外, Physical Memory Size 可以再乘以兩倍, 就是 256MB ram

    回覆

    • orange
      三月 09, 2013 @ 02:42:09

      1.我提的SH7724是晶片名稱,ST-9150是封裝上印的名稱
      就像買intel 的CPU你絕對看不到封裝上面印著晶片名稱,如 Sandybridge
      看到的只會是i3 i5 i7 之類的東西 後面再接個編號
      只不過詭異的是,SuperH 是STMicroelectronics 2004年賣給Renesas
      在賣之前 STMicroelectronics跟日立已經有弄出SH-4
      在賣之後 Renesas 就弄出高時脈管線深的 SH-4A 只不過他又回頭讓STMicroelectronics 生產
      (據傳Renesas太注重開發F AB產率不佳)

      SH-4A 裡符合網樂通規格的晶片只有這一個SH7724 (SH-4A+DDR2+AVC decoder)
      但STMicroelectronics生產的產品 以SH7724為核心的的則有很多種
      STi7105,STx7105,ST-9050… 都是SH7724

      2.那張圖只是貼出原廠的設定,不過還是謝謝你的好心提醒

      回覆

  2. 訪客
    三月 09, 2013 @ 09:29:03

    我採用的 kernel config 如附 http://paste.ubuntu.com/5597624/, make CFLAGS="-m4a -pipe -O3 -ffast-math" 會失敗, 訊息如附 http://paste.ubuntu.com/5597625/ 不知道你可以貼出你的 kernel config & make command 供比對嗎? 將 -m4a 改回 -m4 就成功.

    回覆

  3. 訪客
    三月 11, 2013 @ 07:32:32

    我使用類似你的 .config 再試一次, 還是出現類似的問題.(不使用你的 Makefile). 你可以試一下不改 Makefile, 直接將 CFLAGS 下在 make command 嗎? 我猜可能是某些 driver 真的用的 floating point 的 反而 compile 不過.

    回覆

  4. orange
    三月 12, 2013 @ 01:59:54

    我把CFLAGS 下在 make command ()編譯會直接中斷
    錯誤是
    arch/sh/kernel/cpu/sh4/softfloat.c:93: 對不起,尚未實作:呼叫 「mul64To128」 時內聯失敗:function body not available
    跟你的不太相同

    即便只下 -m4 也是這樣

    回覆

  5. NINJA
    七月 17, 2013 @ 14:10:31

    請問編譯後可以硬解MPEG4直接撥放影片嗎?謝謝解答

    回覆

  6. XEEMAN
    九月 10, 2013 @ 10:04:06

    我想在網樂通上面執行FlexGet,
    https://aur.archlinux.org/packages/flexget/

    好像沒有已經編譯過的package, 所以想自己 compile 試試看,
    請問我需要準備什麼環境?

    回覆

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: