核心板: Tiny4412 | Smart210 | Tiny210 | Tiny6410 | Tiny2451 | Tiny2416 | Micro2440 | Smart4418 | Smart6818 | SOM-RK3399
卡片电脑: NanoPC-T1 | NanoPC-T2 | NanoPC-T3 | NanoPi NEO | NanoPi NEO2 | NanoPi NEO Air | NanoPi S2 | NanoPi A64| NanoPi M1 Plus | NanoPi K2| NanoPi NEO Plus2 | NanoPi Duo | NanoPi Fire2A | NanoPi Fire3| NanoPC-T3 Plus | NanoPi NEO Core | NanoPi NEO Core2
| NanoPi K1 Plus | NanoPC-T4 | Core4418 | NanoPi M4 | NanoPi M4V2 | NanoPi NEO4 | NanoPi Duo2| NanoPi R1| NanoPi R2S
| NanoPi R4S| NanoPi R2C| NanoPi R2C Plus | NanoPi R5S| NanoPi R5C| NanoPi R6S| NanoPi R6C
一体化板: Mini210s | Mini6410 | Mini2451 | Mini2440
首页 公司简介 | 各地代理 | 支持和讨论 | 下载 | 维基 | 中文论坛 | English Forum | 联系我们
 
EABI׼ arm-linux-gcc-4.3.2 with EABI
˵
ڱʱ򣬶ڸлԤӲFPA(Float Point Architecture)ûFPACPUSAMSUNG S3C2410/S3C2440ʹFPE(Float Point Emulation )ٶϾͻƣʹEABI(Embedded Application Binary
Interface)ԶԴ˸ƴARM EABI֮ͻĸĽFloat Point PerformanceʹVector Float Point(ʸ)˿Լ漰ij
һƪ¶Դϸ
Ϊĺô
linuxϵͳͳһķEABI׼Ľʹµglibc2.8ʹͬһԱ
- linuxں(linux-2.6.29)
- qtopia-2.2.0ͼϵͳ
- busybox
- vivi(Դbootloader)
- u-boot(Դbootloader)
- ܶlinuxӦó(web server, boa, madplayȳ)
߳ĸܣԲذʱ仨лͬıϡ
 
 
arm-linux-gcc-4.3.2.tgz (with EABI) 86MB
 
   
Why ARM's EABI Matters
by Andres Calderon and Nelson Castillo


It's common nowadays to hear of the new ARM EABI (embedded application binary interface) Linux port. There are many motivations to start using it, but there is one we especially like -- it's much faster for floating point operations. Since many ARM cores lack a hardware FPU (floating point unit), any software acceleration is more than welcome.

It might be hard to switch to EABI, though. For instance, for the Debian distribution, EABI is actually considered a new port.

Without EABI

The ARM EABI improves the floating point performance. This is not surprising, if you read how your processor is wasting a lot of cycles now. From the Debian ARM-EABI wiki:
The current Debian port creates hardfloat FPA instructions. FPA comes from "Floating Point Accelerator." Since the FPA floating point unit was implemented only in very few ARM cores, these days FPA instructions are emulated in kernel via Illegal instruction faults. This is of course very inefficient: about 10 times slower that -msoftfloat for a FIR test program. The FPA unit also has the peculiarity of having mixed-endian doubles, which is usually the biggest grief for ARM porters, along with structure packing issues.
So, what does this mean? It means that the compilers usually generate instructions for a piece of hardware, namely a Floating Point Unit, that is not actually there! When you make a floating point operation, such at 3.58*x, the CPU runs into an illegal instruction, and it raises an exception. The kernel catches this specific exception and performs the intended float point operation, and then resumes executing the program. And this is slow because it implies a context switch.

The benchmark

We decided to make a simple benchmark using our Open Hardware Free ECB_AT91 ARM(ARMv4t) development board, based on an Atmel AT91RM9200 processor.

    
The ECB_AT91, top and bottom

We used a simple benchmark we have used before: the dot product of two given vectors, the Euclidean distance of the vectors, and the FFT (fast Fourier transform) algorithm (complex valued, Cooley and Tukey radix-2). The source code we used is available here (GPL).

It's common to use the number of floating point operations per second (FLOPS) performed by a given program for benchmarking purposes. However, this can be misleading, because some operations (e.g. division) take more time than others (e.g. addition). To ensure uniformity, we ran the same program in both setups, with similar compiler flags.

First we tried the Old ABI using the Debian distribution (Debian Sid), and an image that we bootstrapped. Then, for the EABI test, we used the Angstrom Distribution, part of the OpenEmbedded project.

Results


EABI vx. OABI, floating point benchmark (Free_ECP_AT91_V1.5, AT92RM9200)



EABI/OABI speed-up, floating point benchmark (Free_ECB_AT91_V1.5, AT92RM9200)

In each context switch, both the data and instruction cache are flushed, and this hurts the Old ABI's performance. You will notice it in the graphs because the performance with the old ABI does not depend on the size (N) of the input data, whereas in EABI the impact of the cache in the performance is seen clearly. The dot-product performance only goes down when N > 4096 (When we use more than 16KB in memory); the Atmel processor we're using has a 16 Kbyte data cache.
 
ڣhttp://linuxdevices.com/articles/AT5920399313.html
         
  • Mini2440-dvd-image.iso
  • [2011-04-21] MD5:40F642A9A9F56FE7B1DA94C6FA9366F1
  • Micro2440-dvd-image.iso
  • [2010-06-09] MD5: 59F30E0322E486C90130CEEB4487FB14
  • Fedora9-i386-DVD.iso
  • Supervivi-1026
  • - [2010-08-17]最新版本的supervivi(含64M和128M版本,其中supervivi-128M支持128M/256M/512M/1GB Nand Flash)
  • Old Dvd Images(eMule Seed only)
  • mini2440
  • mini2440-20090220 [2009-02-20]:早期的光盘文件,采用Linux-2.6.13内核,应部分用户需要,特此提供下载链接.
  •  
     
  • mini2440用户手册
  • [2011-04-21]
  • micro2440用户手册
  • [2010-06-09]
     
  • ARM-Linux GCC 4.4.3 - [2010-08-17]符合EABI标准的交叉编译器, 彻底解决编译Qtopia2/Qt4时出现的"Segmentation Fault"问题
  • ARM-Linux GCC 4.3.2 - [2009-04-29]早期版本的交叉编译器
  • Linux 2.6.32.2 for mini2440/micro2440 [2011-04-21] - 内含缺省配置文件(config_mini2440开头)
  • X86 Qtopia-2.2.0 [2010-01-13] - 内含编译脚本build-all
  • ARM Qtopia-2.2.0 [2010-01-13] - 包含所有移植好并改进的源代码,和编译脚本build-all
  • ARM QtE-4.6.3 [2010-08-17] - 最新的QtE-4.6.3,包含编译脚本build和mktarget(用于把编译出的二进制提取成可以解压到目标文件系统的压缩包)
  • Rootfs-Qtopia-Qt4 [2010-08-17] - 目标文件系统压缩包,基于Busybox-1.13.3,包含Qtopia-2.2.0和QtE-4.6.3双图形系统,可以自由切换运行
  • vivi [2009-05-19] - 来自三星公板资料,友善之臂改进,可使用ARM Linux GCC 4.3.2 编译,仅支持64M Nand Flash K9F1208
  • vboot [2010-08-17] - 十分简易的Linux Bootloader源代码包,仅用于启动Linux系统
  • Linux Examples [2009-04-29] - Linux应用编程示例代码,包含串口,PWM,I2C,LED, 线程,数学库等示例,所有代码为友善之臂原创
  • mkyaffs2image tools [2009-07] - yaffs/yaffs2文件系统映像制作工具,用于把root_qtopia制作成可通过USB下载烧写的img文件
  • Linux Logo Maker [2009-04] - 图形界面的Linux Logo制作工具,基于Fedora9平台使用
  • Linux Busybox [2010-01-13] - Linux工具集,版本:1.13.3,内含缺省配置文件
  • Images [2010-09-25] - 已经编译好的二进制烧写映像文件,适用于mini2440/micro2440
  •  
  • WinCE6 BSP for mini2440/micro2440 [2011-04-21] - 堪称国内2440开发板中最齐全的BSP,100%源代码,基于WindowsCE6(R3),含中英文示例工程文件等
  • WinCE6 SDK [2010-02-04] - 如果你不打算编译内核,只需在VS2005中安装此SDK即可为开发板编写应用了
  • NBOOT [2011-04-21] - 十分简易的WinCE bootloader,上电1秒内即可显示开机画面,带进度条,10秒内可以启动整个系统,100%源代码,可使用ADS编译
  • WindowsCE StartLogo Maker [2009-07] - 制作WinCE开机画面的转换工具,支持bmp/jpg/png等格式,可自动生成StartLogo.c,以替换BSP中的同名文件。
  • WinCE6 Images(中文) [2011-04-21] - 已经编译好的烧写文件,适合各LCD型号的NK.bin,适用于mini2440/micro2440
  • WinCE6 Images(English) [2011-04-21] - 已经编译好的烧写文件,适合各LCD型号的NK.bin,适用于mini2440/micro2440
  •  
  • WinCE5 BSP for mini2440/micro2440 [2011-04-21] - 堪称国内2440开发板中最齐全的BSP,100%源代码,含中英文示例工程文件等
  • WinCE5 SDK [2010-02-02] - 如果你不打算编译内核,只需在Embedded Visual C++中安装此SDK即可为开发板编写应用了
  • NBOOT [2011-04-21] - 十分简易的WinCE bootloader,上电1秒内即可显示开机画面,带进度条,10秒内可以启动整个系统,100%源代码,可使用ADS编译
  • WindowsCE StartLogo Maker [2009-07] - 制作WinCE开机画面的转换工具,支持bmp/jpg/png等格式,可自动生成StartLogo.c,以替换BSP中的同名文件。
  • WinCE5培训视频 [2004-06] - WindowsCE5培训视频录制于2004年,由微软技术产品经理Mike Hall讲解,全程英文...
  • WinCE5 Images(中文) [2011-04-21] - 已经编译好的烧写文件,适合各LCD型号的NK.bin,适用于mini2440/micro2440
  • WinCE5 Images(English) [2010-08-17] - 已经编译好的烧写文件,适合各LCD型号的NK.bin,适用于mini2440/micro2440
  • WinCE5 Images(English) [2011-04-21] - For W35
  •  
     
  • Other
  • ActiveSync 4.1
  • [2006-08] - 微软公司的PC同步软件
     
    注意:此处提供的Android系统仅在128M或更大容量Nand Flash的mini2440 + 统宝3.5"LCD上测试通过。
  • Android kernel for mini2440 [2009-08-25] - 仅包含统宝3.5"LCD显示驱动支持
  • Android Root File System [2009-08-25] - 相应的文件系统压缩包
  • Android Images [2009-08-25] - 现成的烧写文件,包含bootloader, 内核,文件系统
  • Android简易编译安装指南
  •  
  • myled [2009-07-19] - 最简易的裸机LED点灯程序,使用ADS编译
  • 2440test [2010-06-09] - 源自三星的一个非操作系统测试程序...由友善之臂改进,可自适应64M/128M-1G Nand Flash mini2440/micro2440, 使用ADS编译
  • uCos2 for mini2440 [2010-06-09] - 由网友提供,友善之臂改进,可自适应64M/128M-1G Nand Flash mini2440/micro2440,仅供学习参考使用,使用ADS编译
  • NBOOT [2010-06-09] - 友善之臂设计制作,主要用于启动WinCE5/6,支持1秒内显示开机画面(最大1280x800分辨率),支持用户自定义进度条,和可自适应64M/128M-1G Nand Flash mini2440/micro2440,你也可以把它当作一个简单的裸机程序研究使用,使用ADS编译
  •  
  • H-JTAG 0.4.4 [2007-03-31] - 来自http://www.hjtag.com,主要用来配合开发板套件的JTAG小板进行更新烧写NOR里面的BIOS,也可以进行简易单步调试
  • H-Flasher初始化脚本 [2010-09-19] - H-Flasher初始化脚本,配合H-JTAG使用,包含S29AL016MT, SST39VF1601等型号,你也可以根据实际情况使用记事本自行编辑它。
  • DNW 0.5 [2008-06] - 来自三星公板提供的下载工具,友善之臂改进,添加了把开发板整片Nand Flash内容备份至PC的功能
  • USB Download Driver [2009-04] - 在BIOS模式下下载更新文件到开发板的PC端驱动,双击执行文件即可安装使用
  •  
  • RAM
  • MT48LC16M16A2
  • [2009-04] -
  • HY57V561620
  • [2002-12] -
  • Flash
  • K9K8G08U0A
  • [2006-06] -
  • K9F2G08
  • [2007-07] -
  • K9F1G08
  • [2005-05] -
  • SST39VF1601
  • [2003-11] -
  • Display
  • AT070TN83
  • [2007-05] - 群创7"LCD
  • TD035STED4
  • [2005-08] - TopPoly 3.5"LCD, print "T35" on the bezel.(外壳标写"T35"的为统宝 3.5"LCD)
  • NL2432HC32
  • [2006-08] - NEC 3.5"LCD
  • ACX502BMU
  • [2010-11] - Sony 3.5"LCD, print "X35" on the bezel.(外壳标写"X35"的为索尼3.5"LCD)
    (未完)
     

    版权所有:广州友善电子科技有限公司
    销售:020-85201025 技术支持:13719442657 技术支持Email: techsupport@friendlyarm.com
    地址:广州市科学城科学大道33号视联科技园A座118室
    建议使用1024×768分辨率、IE4.0以上版本浏览