會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





ATSAME54P20A--Hardwware FPU use?
新會員
註冊日期:
2011/08/23 19:34
所屬群組:
註冊會員
文章: 10
等級: 2; EXP: 0
HP : 0 / 25
MP : 3 / 620
離線
想請問ATSAME54P20A關於FPU的問題。
在『MPLAB XC32 C/C++ Compiler User’s Guide for PIC32C/SAM MCUs』
這份文件裡有段敘述:
//===========================================================
For the Cortex-M based devices, such as the MEC17, CEC17, and SAM families, XC32
defaults to using the hardware Floating-Point Unit (FPU) where available. For cases
where want a specific FPU calling convention, you can specify the following
command-line options to the xc32-gcc compilation driver at both compile and link time:
• -mfloat-abi=soft -- Specifying 'soft' causes XC32 to generate output containing
library calls for floating-point operations. This setting is the default for devices that
do not feature a hardware FPU.
• -mfloat-abi=softfp -- Specifying 'softfp' allows the generation of code using hardware floating-point instructions, but still uses the soft-float calling conventions
• -mfloat-abi=hard -- Specifying 'hard' allows generation of floating-point instructions and uses FPU-specific calling conventions. This setting is the default for
devices that feature a hardware FPU.
//===========================================================
由這段內容得知ATSAME54P20A已有hardwware FPU ,所以是否就不需要經由設定『XC32-gcc』的『General』,就可以進行單精度福點數運算?

請問使用以下方式是否就可以確定已正在使用ATSAME54P20A的hardwware FPU進行浮點數運算,或者有其他更好的方式可以證明?

float a = 0;
float b = 3;
double x = 0;
double y = 3;

int main(void)
{
x = 125 / y;
a = 125 / b;
printf("double value X = %10f\r\n",x);
printf("\r\n");
printf("floating value a = %10f\r\n",a);
printf("\r\n");
}
結果:

double value X = 41.666667

floating value a = 41.666668

另外,是否需要include 『float.h』?

以上,非常感謝!

1月15日 10:02:57
轉換PDF檔 列印


Re: ATSAME54P20A--Hardwware FPU use?
管理員
註冊日期:
2017/11/22 11:20
所屬群組:
站務管理者
註冊審核
文章: 81
等級: 7; EXP: 95
HP : 0 / 173
MP : 27 / 1138
離線
如果是使用內建FPU系列的ARM core MCU時(SAMD5x/E5x,SAMV7/E7/S7), 則Harmony會自動在ResetHandler中啟用硬體FPU加速, 你可以在startup_xc32.c中找到 FPU_Enable(void) 這個function, 而這個Function會在Reset_Handler(void)中被呼叫, 前提是Compiler built option要有這個 -mfloat-abi=hard

經測試, XC32 Compiler會自動因為Core 是CM7 or CM4F 而自動啟動FPU, 無須添加-mfloat-abi=hard

1月20日 15:21:03

Libra 於 2020年01月20日 16:01:54
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project