EABI
为什么要使用with EABI的交叉工具链,在友善之臂的网站有说明:交叉编译器在编译的时候,对于浮点运行会预设硬浮点运算FPA(Float Point Architecture),而没有FPA的CPU,比如SAMSUNG S3C2410/S3C2440,会使用FPE(Float Point Emulation 即软浮点),这样在速度上就会遇到极大的限制,使用EABI(Embedded Application Binary Interface)则可以对此改善处理,ARM EABI有许多革新之处,其中最突出的改进就是Float Point Performance,它使用Vector Float Point(矢量浮点),因此可以极大提高涉及到浮点运算的程序。但是要注意的是,在编译内核的时候也必须勾选上”Use the ARM EABI to compile the kernel“的选项。
最近用AT91SAM9261EK這塊開發板執行影像處理的程式,發現所耗費的時間實在是有點沒辦法接受,僅僅對512x512的圖片執行和測邊,就花了將近25秒,更不用說人臉辨識了= =
gcc cross-compiler在compile program的時候,對於浮點數運算會預設使用硬體浮點運算FPA(Float Point Architecture),而沒有FPA的CPU,會使用FPE(Float Point Emulation),而使用FPE速度上會受到極大的限制,所以就由EABI(Embedded Application Binary Interface),來做處理。
ARM EABI有許多的革新方式,但是改變最大的應該就是Float Point Performance,它使用Vector Float Point(其實我不太懂,只知道這樣比FPE快很多),而Linux Kernel從2.6.16版開始支援了EABI(Kernel Feature),ARM EABI Cross-compiler可以在下載,速度上也真的增快許多,同樣的程式可以在一秒內跑完,相關performance比較請參考文章
Why ARM's EABI matters。链接--》
雖然速度上已經提高許多,但執行人臉辨識程式,還是需要花費3秒以上,解決辦法,應該是要換更快的CPU(AT91SAM9261只有200Mhz)或是換有FPA的CPU,而最省錢卻最費力的方法,就是將程式改成Fixed Point.
arm-linux-gcc编译linux用的
arm-gcc-tools编译uclinux,uboot等的
阅读(1818) | 评论(0) | 转发(0) |