2012年2月17日 星期五

armel,這是啥?

因為老是在玩模擬的話感覺有點無聊,所以就買了個beagleboard mx,接著想要開始爬文怎樣把我想要的系統放上去,因為beagleboard xm本身硬體算是蠻強悍的,所以跟我本來預設的貴的多跟強悍的多,我本來預期有個64MB ram、cpu 400MHz就可以玩玩了,想不到是一個1G MHz的cpu加上一個800MHz的DSP。其實講了那麼多,我主要是看上了USB-OTG跟DVI output,很可惜沒有wifi的interface。
講了那麼多竟然還沒提到armel 囧,armel是我開始想要編譯自己的kernel跟rootfs的時候發現的,已經有人port ubuntu到這個平台上,而其中就有用到armel,就google一下,armel到底是何方神聖,跟著就得到了解釋
============

ABI
ABI,application binary interface,應用程式和作業系統的"low-level interface"。意思是,ABI有一套規則,如果遵循這個規則產生出的object,就能在相對應的系統上正確的運作。這個規則包括了data type的size,alignment,calling convention,function參數傳遞與回傳值,system call的調用等。很明顯的,這跟平台很有關係。比如說,不管用哪一個compiler,只要能生出符合ELF格式的binary,就可以在Linux上 跑,或呼叫其library。
而EABI,embedded-application binary interface則規定了embedded software program的規則。跟一般的作業系統的主要差異為: 應用程式可以使用privileged instruction,dynamic linking不是required,更簡潔的stack frame用以省下memory。

ARM EABI
而arm 的EABI有些改進,特別是floating point的運算。現在的arm應該都有實作FPA(Floating Point Accelerator),但如果compiler使用了FPU來做floting的運算,且CPU沒有FPU時,就會產生exception。其 panelty會是將指令轉為software的floating運算,當然系統也就變慢了。所以支援EABI的kernel與Cross- compiler,加上支援有實作FPA的arm,performance就會好很多。

armel
在lenny之後,就多了armel這個字,其與以前的arm差別就在於EABI這個interface。如前述,這個interface與硬體(CPU)的設計是很有關係的,對於arm不同的版本就會產生限制,因此EABI都常是建議在armv4t以後的版本。

============
ABI目前感覺好像還沒有很流行,聽說intel跳下去弄過一下,我想要弄到兩大巨頭arm跟intel同一格式恐怕有很大的難度(不是技術難度,應該是商業難度)

題外話,我很希望哪天嵌入式系統可以像是樂高積木玩具一樣,有眾多便宜的硬體元件可以整合再一起,像是現在一個beagleboard wifi的板子竟然要50USD以上,真的有貴到

beaglebone的價格就還不錯,很可惜的是硬體介面缺很大,勉強算是"堪用",我想除非很熟悉,不然就是特別的應用,不然beaglebone真的是只能"玩玩",不類似beagleboard xm可以玩很大XD

沒有留言:

張貼留言