2012年12月30日 星期日

Cubieboard 耗電量實測





源起,最近在玩一個板子,Cubieboard (就一塊有帶SATA 的 A10 板子),心想到效能尚可,想拿來當多媒體播放中心,大家雖然知道它應該很省電,但耗電量多少也沒有看到測試報告,好奇想知道到底如何?於是有了本文。

測試一 (使用測電計, 藍光機殼溫度計)



執行環境

使用linaro desktop with sunxi-bsp


參考這一篇:Confirming that the Linaro Desktop build for the Hackberry works on CubieBoard

git clone https://github.com/linux-sunxi/sunxi-bsp/
cd sunxi-bsp
wget http://dl.linux-sunxi.org/amery/sunxi-3.0/20121109-1024/cubieboard_hwpack.tar.xz
wget http://releases.linaro.org/12.11/ubuntu/precise-images/alip/linaro-precise-alip-20121124-519.tar.gz
./scripts/sunxi-media-create.sh /dev/YOURSDCARD YOURHWPACK YOURROOTFS

製作了一個linaro desktop 的 SDCARD,試了這個版本總算 SATA 及2D 影片(RMVB 640x480 RV40 OK)播放功能都能正常支援。

測試時,硬體連接方式

測電計 --> 5v 變壓器(iphone 附)--> cubieboard → HDMI → HDMI-to-DVI 轉接頭 → CHIMEI LCD 22”

Part 1
初始耗電功率: 2.2w  (linaro 啟動到HDMI 輸出畫面)

Part 2
GNOME MPlayer 執行三個 (352x262 FFMPEG1, FFMP2FLOAT) 電影檔案 透過 samba intranet
CPU load: 86~92.7%





啟動時間 (分鐘後)A10 溫度: ℃耗電功率
2743.8℃3.6W
4346.4℃3.6W
4647.3℃3.6W
4947.9℃3.6W
5247.7℃3.6W
5647.8℃3.6W
6147.6℃3.6W
6447.4℃3.6W
7047.3℃3.6W


Part 3
將播放程式全部停止後,只有Linaro 桌面環境時



啟動時間 (分鐘後)A10 溫度: ℃耗電功率
9040.4℃2.2W
9238.5℃2.1W
9437.4℃2.2W


結論



Cubieboard 真是個省電好物,拿來當 media center (影音播放器)很適合。
linaro 桌面待機也不過2.2W而已。

接下來,目前有一點有待解決的問題如下:
* 就是youtube 在瀏覽器播放,會lag 的問題。
* 有啟動ibus時,會讓鍵盤輸入變得很卡,就算沒有有中文輸入也一樣。

附註:目前聲音用音源線接是OK的,從HDMI 還沒試過。

(如有同好使用的話,歡迎互相交流問題,把它弄得更好用吧。)


2013﹣01﹣01 更新:
中文輸入法部分改用 gcin 輸入子系統,調整一下 Locales 相關的設定後,中英文輸入得到不錯的速度。


2013﹣01﹣02 更新:
加入 ASUS N10 USB Wireless 支援 (patch sunxi-bsp),當無線網路啟用時,觀察CPU 使用約10~20﹪(@.@)。(更完整報告整理中。)

2012年12月27日 星期四

我們可能使用更高階的語言來寫OS嗎?


今天我看在 JuluOSDev 論壇上看到 

Descent 問道:寫 os 真的只有組合語言, c/c++ 可以完成嗎?別的語言無法用來寫 os 嗎?
(本文同步回覆於論壇)

以下是我參考一些文章翻譯及一點自已小心得總和而來。

其實是也不是,對所有語言來說最終會轉換machine code (大部分會產生中間的assembly)。
換個精確一點的問法:「我們可能使用更高階的語言來寫OS嗎?」

答案不是絕對的,因人而異。

排列比較答案後,大部分想使用高階語言來寫OS,是想簡化學習的曲線,避掉一些瑣碎細節,來享受快速開發的好處。

但憑心而論,學習沒有捷徑,天道酬勤;
還是需要大量的作業系統設計的基礎(如網路通信協定、記憶體管理、執行緒、驅動程式等等),
畢竟不會使用舊的方法的問題所在;無法創造新的路出來。

從技術的觀點來看,電腦其實並不知道你使用的是C#,還是JAVA;

首先你第一個要的是一個 bootloader, 
如果略過bootloader 的部分,你可以用任何語言來寫OS,

假設所使用的語言可以編譯出機器語言(而不是byte code,但有人可能反駁說硬體有JVM chip,可能也是成立的,視環境而定)。

另一方面,從效能的觀點,OS常需要精實而高效率的,
這部分高階語言無法為你做的,很有可能你會需要自行開適合的編譯器或其他的子系統來輔助,因為在和硬體溝通的部分若沒有低階語言存取能力,事情可能變得更複雜一些。

最後,就我個人而言,也夢想有一天,自已能用 python 或 nodejs 等語言來寫出OS來。

以下是大略列出(但不限),其他語言可用來寫OS:


* Forth -- http://www.forth.org/svfig/osf.html
ref: http://en.wikipedia.org/wiki/Forth_(programming_language)

* Lisp -- Genera is a commercial operating system
ref: http://en.wikipedia.org/wiki/Genera_(operating_system)

* JAVA: JNode
ref: http://www.jnode.org/
ref: http://www.jopdesign.com/ (Java Optimized Processor)

* C#: Singularity
ref: http://research.microsoft.com/en-us/projects/singularity/

* Ada: MaRTE OS
ref: MaRTE OS: An Ada Kernel for Real-Time Embedded ... - CiteSeerX
ref: http://marte.unican.es/


參考資料:
*stackoverflow - 627095/can a whole operating system be written without using even one line of c c code

*High level Languages and IO Access in Computer Interfacing﹣ osdever.net/tutorials/pdf/high_level_io.pdf

* System Programming in a High Level Language - Andrew D Birrell ﹣ http://birrell.org/andrew/papers/thesis.pdf

* wikipedia Operating system

* stackoverflow - 3317329/what language is used to write operating systems windows
* quora.com/What programming language are operating systems written in


以上寫了一堆,希望有所幫助。