許多公司有不少不一樣的ARM SoC的研發產品,ARM核心可能有Cortex-A8/A9/A15,核心數可能有單核雙核和四核.如今,幾乎每出一款手機,網絡上立刻就有人對其評測.對比和評測不一樣ARM SoC 芯片以及嵌入式系統是很是有必要的;經過不一樣的SoC和其運行的OS對比,能夠幫助咱們瞭解咱們產品的性能,並根據測試得知系統的瓶頸、找出須要改善的方面。php
嵌入式產品的硬件通常都是由處理器、主存、存儲器、顯示設備、以及其餘外設組成。嵌入式產品的軟件方面,通常都選用嵌入式系統,如小的RTOS,如VxWorks、μC/OS-III、RTT、DJYOS、FreeRTOSLinux,或者是更復雜的Linux、Android、WinCE。評測和對比的內容通常也主要由軟件和硬件這兩個方面組成。html
若是隻是對Andorid系統或者是WinCE相關係統評測,那麼咱們徹底能夠下載一些應用(安裝)運行便可評測。而若是要評測的嵌入式系統是基於Linux本身定製的甚至沒有GUI的,則極可能須要咱們下載源代碼編譯。所以對基礎的編譯知識的瞭解必不可少①。編譯配置又與ARM SoC構架相關,因此須要瞭解一下與ARM構架以及有關的交叉編譯的選項,比較ARM SoC種類較少,因此這類問題變得很簡單了,通常咱們須要根據須要配置-mfpu
和-march
以及-mfloat-abi
,以及編譯優化選項。linux
評測工具備不少,在這個網頁列出了幾十個工具。單單系統性評測工具就有7個。那什麼是系統性的BenchMark(引用自unixbench):git
Do be aware that this is a system benchmark, not a CPU, RAM or disk benchmark. The results will depend not only on your hardware, but on your operating system, libraries, and even compiler.github
系統測試網絡
用得比較廣的系統性測試工具:架構
這兩個BenchMark軟件,自己是給PC上的Linux上用的,爲了給嵌入式開發板子使用,須要交叉編譯。和其餘嵌入式程序編譯同樣,通常Makefile要改的只有兩個地方:工具
一些單項測試工具:性能
將系統測試裏面的每一個測試項拆開就成了單項測試,通常分爲計算性能③,內存性能,圖形顯示。測試
有一點須要說明的是:在linux啓動過程當中會打印BogoMIPS不必定準確。這方面能夠參考ARM官方的說明,使用Dhrystone,固然如今在計算能力測試方面,如今你們可能更承認CoreMark和CPU2006,而不是Dhrystone。
一些外設的測試:
SD/eMMC可使用dd命令來測試,例如一個讀寫的測試命令示例:
Read: sync && date && dd if=/dev/block/mmcblk0 of=/dev/null bs=4094 count=40960 && sync && date Write:sync && date && dd of=/dev/block/mmcblk0 if=/dev/zero bs=4094 count=40960 && sync && date
使用date只能精確到秒,可是使用time命令能夠精確到0.01S,因此用time更好,可是time只接受一個process做爲參數。所以,須要將dd與sync整條命令放入到腳本中,再用time來運行這個腳本。
若是就拿單單一個光禿禿的數據來看,會顯得有些空白,因此通常用不一樣的板子數據進行對比來看。在lmbench
中,就能夠將測試結果拷貝到result中的對應OS目錄中,再用make see
,產生summary.out文件。其餘的測試軟件也有相似的功能,對於測試結果,咱們須要作的是經過分析測試結果找到系統中性能與理論相差太大的不正常項目,而後去分析可能的緣由並尋求解決之道。
①能夠看AnTuTu and Intel這篇文章,裏面提到了安兔兔對ICC編譯器對Intel處理器的優化,ARM這邊卻連neon也沒有使用。同時另外一篇文章說到了安兔兔在版本變高後,評分降低的issue。
②關於編譯選項,能夠man gcc,搜索對應的選項來查看詳細內容。給出一個CLFAGS示例: 其中這些參數能夠在kernel啓動後使用
cat /proc/cpuinfo
查看Arch架構。
③關於計算方面的測試,有一個不錯的文檔ARM Cortex-A8 vs. Intel Atom:,裏面介紹了4中測試Integer和Float的工具,並用這些工具對Atom和Beagle Bone板子進行的測試比較和說明。另外Keil的這個網頁上對這些測試程序和Item也有一些介紹。
④編譯與運行能夠參考這個網頁的文章,須要根據直接的板子SoC更改CFLAGS。
http://bbs.51testing.com/thread-1163336-1-1.html
在新項目須要選擇一個全新的基於ARM嵌入式處理器平臺的時候,不免會須要對新平臺的性能進行評估,這時候有
幾種思路能夠進行參考,
一是ARM芯片廠家發佈的性能指標,不過大多數是基於理論狀況;
二是購買一樣平臺的開
發板移植應用進行實測,效果最直接可是可能須要花費較大精力和時間;
那麼這個時候也能夠考慮使用針對性的benchmark軟件在目標平臺上面進行性能測試,算是一個折衷的方法,其結果有必定參考意義但因爲影響benchm ark軟件結果的因素不只僅是硬件自己,還有不一樣的BSP以及軟件設定等,所以在這些設定一致性越大的前提下其結果的參考意義才越大,不然極可能結果不是預期想要的甚至南轅北轍. 基於上面思路,本文統一採用Toradex工業產品等級 ARM計算機模塊以及其官方發佈的最新版Linux BSPV2.5Beta 3最爲測試基準平臺,同時將對結果影響比較大的CPU主頻和顯示輸出分辨率儘量保持一致來進行測試,測試樣 本分別是基於NVIDIA Tegra2的Colibri T20 512M, 基於NXP i.MX6DL 的Colibri i.MX6DL 512M以及基於NXP Vybrid 的Colibri VF61 256M;其中前兩個均爲雙核Cortex-A9 ARM核心,第三個爲Cortex-A5和M4異構雙核核心,不過這裏 只測試A5. 1). 本文涉及的硬件平臺測試項目及工具以下 a). 硬件平臺 上述三種接口兼容的Colibri ARM 計算機模塊以及一塊Colibri Eva Board b). 測試項目及對應工具 - CPU測試: nbench - Memory測試: stream - Storage測試: dd, hdparm - Ethernet測試: iperf - CPU壓力測試: stress - GPU壓力測試: glmark2