ARM技术william hill官网
直播中

贾飞世

7年用户 1803经验值
私信 关注
[问答]

ARM Cortex-M支持AC6的话应该要修改哪几个地方

最近玩了一下AC6,rt-thread要基本支持AC6的话,以cortex-m为例,应该要修改以下几个地方:
cpuports.c:
修改USE_FPU宏定义,改为:

if / ARMCC / ( (defined ( CC_ARM ) && defined ( TARGET_FPU_VFP ))
/* ARMCLANG / || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && defined (__ARM_PCS_VFP))
/
IAR / || (defined ( ICCARM ) && defined ( ARMVFP ))
/
GNU */ || (defined ( GNUC ) && defined ( VFP_FP ) && !defined(SOFTFP)) )
define USE_FPU 1
else
define USE_FPU 0
endif
__rt_ffs部分增加:

elif defined (ARMCC_VERSION) && (ARMCC_VERSION >= 6010050)
int rt_ffs(int value)
{
return value == 0 ? value : builtin_clz(__builtin_arm_rbit(value)) + 1;
}

rtdef.h:
/ Compiler Related Definitions /

ifdef __CC_ARM / ARM Compiler /
改为:

if defined(CC_ARM) || (defined (ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
rtlib.h和libc_signal.h里面也要修改,不过目前没用到,所以暂时没去动(主要是对AC6还不算了解,不知道这么简单的修改是不是全部都可以)。

至少编译是可以通过的。待进一步测试。

回帖(2)

糖栗子

2022-7-12 15:18:59
这个可以先行尝试下。
__builtin_clz,这个是AC6本身的扩展,还是说加了—gnu后才出现?如果是后者,那还是不会考虑这么修改。
对于编译器的支持,会考虑最low的一点,最保守,不加参数就可以支持的方式。因为这样的兼容性会最好
举报

哔哔哔-

2022-7-12 15:19:08
builtin_clz跟builtin_arm_rbit是参考最新的cmsis_armclang.h加的,应该新的AC6都支持。当然直接用__ASM volatile来写汇编兼容性大点。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分