最近在忙畢業設計,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來說,編...