免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2384 | 回复: 5
打印 上一主题 下一主题

[其他] ARM toolchains [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-03 17:31 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
6
酉鸡
日期:2013-11-04 15:30:02巳蛇
日期:2014-01-23 10:36:23双鱼座
日期:2014-01-23 13:08:332015亚冠之鹿岛鹿角
日期:2015-09-03 14:36:002015亚冠之武里南联
日期:2015-09-18 10:48:1315-16赛季CBA联赛之山西
日期:2016-05-05 00:05:33
2 [报告]
发表于 2015-01-03 17:55 |只看该作者
这个应该发到嵌入式版吧?

第1个没看懂

第2个
armv6, armv7, armv7s是ARM CPU的不同指令集,原则上是向下兼容的

论坛徽章:
0
3 [报告]
发表于 2015-01-03 19:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
6
酉鸡
日期:2013-11-04 15:30:02巳蛇
日期:2014-01-23 10:36:23双鱼座
日期:2014-01-23 13:08:332015亚冠之鹿岛鹿角
日期:2015-09-03 14:36:002015亚冠之武里南联
日期:2015-09-18 10:48:1315-16赛季CBA联赛之山西
日期:2016-05-05 00:05:33
4 [报告]
发表于 2015-01-03 21:11 |只看该作者
回复 3# yshihyu


    http://elinux.org/ARMCompilers  这里看看

    arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu是这个么?

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
5 [报告]
发表于 2015-01-04 16:02 |只看该作者
第二个问题:

这样arm 版本只能编译出 cortex-a9 cpu 的能执行档吗?


这个参数:--with-tune=cortex-a9
应该是默认针对cortex-a9优化的意思,实际区别也不大。所以放到其他cortex-a的处理器上是没问题的。

armv7-a 可以往下相容舊的arm arch 嗎?

这个问题比较麻烦,我已经有些忘记了,只能说个大概,楼主自己再找一下吧。

问题主要出在浮点运算上。直到64位的ARM处理器(ARMv8),ARM处理器的浮点部件才变成“必选”的。
ARMv7-a系列的处理器大概高端些的浮点部件是“必选”的,但整体情况仍然是,cortex-a的浮点部件是可能有也可能没有的。
更麻烦的是,即使有,也分为的d16和d32两种,d16的浮点寄存器少了一半。另外,ARMv7-a之前的ARM处理器
使用的浮点运算部件是VFPv2,而ARMv7-a则是VFPv3,所以硬件情况如下:

VFPv2
VFPv3-d16
VFPv3-d32
或者压根没有浮点运算部件

更麻烦的是,VFPv3还有可选的半精度浮点数支持,所以VFPv3-d16和VFPv3-d32都有可能支持/不支持半精度浮点型,还好据说这种情况很少,估计可以忽略。

为了应对没有浮点部件的情况,传递浮点参数也分成三种情况:
soft        浮点指令用整数运算模拟,用通用寄存器传递浮点参数
softfp     浮点指令用浮点运算部件计算,用通用寄存器传递浮点参数
hard       浮点指令用浮点运算部件计算,用浮点寄存器传递浮点参数

显然,soft和softfp是可以兼容的,但两者都不可以和hard兼容。
采用hard传递参数的时候,VFPv3-d16和VFPv3-d32没有区别。但如果代码编译的时候指定的是VFPv3-d32,显然也不能跑在VFPv3-d16的设备上。

那么,在采用softfp作为传参方案的情况下,编译到VFPv2的代码能不能运行在VFPv3上?
ARM的文档中这么描述的:
  1. VFPv3 is backwards compatible with VFPv2 except that VFPv3 cannot trap floating-point exceptions.
复制代码
感觉应该是不能。

而如果压根不产生浮点指令,采用soft的传参方式,应该是可以兼容的。
否则的话,不止不能和ARMv6兼容,ARMv7-a之间兼容都是问题。

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
6 [报告]
发表于 2015-01-04 16:03 |只看该作者
第二个问题:

这样arm 版本只能编译出 cortex-a9 cpu 的能执行档吗?


这个参数:--with-tune=cortex-a9
应该是默认针对cortex-a9优化的意思,实际区别也不大。所以放到其他cortex-a的处理器上是没问题的。

armv7-a 可以往下相容舊的arm arch 嗎?

这个问题比较麻烦,我已经有些忘记了,只能说个大概,楼主自己再找一下吧。

问题主要出在浮点运算上。直到64位的ARM处理器(ARMv8),ARM处理器的浮点部件才变成“必选”的。
ARMv7-a系列的处理器大概高端些的浮点部件是“必选”的,但整体情况仍然是,cortex-a的浮点部件是可能有也可能没有的。
更麻烦的是,即使有,也分为的d16和d32两种,d16的浮点寄存器少了一半。另外,ARMv7-a之前的ARM处理器
使用的浮点运算部件是VFPv2,而ARMv7-a则是VFPv3,所以硬件情况如下:

VFPv2
VFPv3-d16
VFPv3-d32
或者压根没有浮点运算部件

更麻烦的是,VFPv3还有可选的半精度浮点数支持,所以VFPv3-d16和VFPv3-d32都有可能支持/不支持半精度浮点型,还好据说这种情况很少,估计可以忽略。

为了应对没有浮点部件的情况,传递浮点参数也分成三种情况:
soft        浮点指令用整数运算模拟,用通用寄存器传递浮点参数
softfp     浮点指令用浮点运算部件计算,用通用寄存器传递浮点参数
hard       浮点指令用浮点运算部件计算,用浮点寄存器传递浮点参数

显然,soft和softfp是可以兼容的,但两者都不可以和hard兼容。
采用hard传递参数的时候,VFPv3-d16和VFPv3-d32没有区别。但如果代码编译的时候指定的是VFPv3-d32,显然也不能跑在VFPv3-d16的设备上。

那么,在采用softfp作为传参方案的情况下,编译到VFPv2的代码能不能运行在VFPv3上?
ARM的文档中这么描述的:
  1. VFPv3 is backwards compatible with VFPv2 except that VFPv3 cannot trap floating-point exceptions.
复制代码
感觉应该是不能。

而如果压根不产生浮点指令,采用soft的传参方式,应该是可以兼容的。
否则的话,不止不能和ARMv6兼容,ARMv7-a之间兼容都是问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP