ADS 支援浮點。

2021-04-17 14:16:13 字數 648 閱讀 9002

最近在忙畢業設計,2410的相關驅動,a/d驅動操作要用到浮點操作,串列埠列印需要支援float,ads裡面c編譯器相關設定支援了浮點,可是就是用在板子上面執行的時候會遇到資料異常。為什麼呢?

看了別人的**,串列埠列印uart_printf的實現,我和他們的一樣,為什麼別人的可以。奇怪了。

最後在網上找了相關問題,好不容易找到rt_lib_init()這個函式。

"剛才看了ads_compilerguide_d.pdf p105,上面說如果要使編譯器支援除法、結構拷貝、fp運算的話,要呼叫__rt_raise()

另外,對於浮點運算,還要呼叫_fp_init(),對於軟浮點運算,還必須呼叫_rt_fp_status_addr()."

最後找到了rt_lib_init()這個函式。

網上說的只要加rt_lib_init(),可是我加 上去報錯。

最後ads裡面搜尋rt_lib_init,找到了原型,

rt_msc.h

extern __value_in_regs struct __argc_argv

__rt_lib_init(unsigned /*heapbase*/, unsigned /*heaptop*/);

只要在main函式一開始加上

「__rt_lib_init(0,0)就可以了。哈哈。

工具鏈浮點支援

mipse linux gnu gcc help mipse linux gnu gcc target help grep float 輸出結果如下 mdouble float allow hardware floating point instructions to mfp32 use 32 bi...

See Mips run 之 浮點支援

一般來說,若要支援浮點,必須支援ieee745,ieee745主要規定了 結果的捨入和精度,4種選項 什麼時候乙個結果被看作是異常 除以0或負數平方根或其他等。當乙個操作產生異常結果時採取的動作 使用者讓計算中斷並發出訊號 或者 不想讓使用者知道給出乙個規定的值。包括指數,尾數和符號位。例如,mip...

linux kernel對於浮點運算的支援

一 對於帶fpu的處理器 1 對於linux kernel來說,kernel本身編譯預設使用了 msoft float選項,預設編譯為軟浮點程式,軟浮點含義是有gcc編譯器模擬浮點運算 glibc庫提供 將 浮點運算 替換為定點運算。二 對於不帶fpu處理器 1 對於linux kernel來說,編...