M0 코어에서 float 연산을 할 일이 생겨서 , 아무 생각없이 software floating point 연산을 하다보니 이게 제법 코드를 차지하여서 32kb 메모리에서 도저히 다른 일을 할 수가 없게 되었다.

 

혹시나 찾아보니 역시..

누군가 M0 에 최적화한  tiny 버전을 만들어 놓았다.

 

https://www.quinapalus.com/qfplib-m0-tiny.html

 

Qfplib-M0-tiny: a free ARM Cortex-M0 floating-point library in 1 kbyte

Qfplib-M0-tiny: a free ARM Cortex-M0 floating-point library in 1 kbyte See also: Qfplib-M0-full: a similar library more optimised for speed, including both single- and double-precision functions; and Qfplib-M3: a similar library optimised for speed and acc

www.quinapalus.com

 

 

qfp_fadd
qfp_fsub
qfp_fmul
qfp_fdiv
qfp_fcmp
qfp_float2int
qfp_float2fix
qfp_int2float
qfp_fix2float
qfp_float2uint
qfp_float2ufix
qfp_uint2float
qfp_ufix2float
qfp_fcos
qfp_fsin
qfp_ftan
qfp_fatan2
qfp_fexp
qfp_fln
qfp_fsqrt

 

풀로는 이렇게 지원하고, 코드 크기가 1k 안으로 만들수 있다. gcc 에서 제공하는 라이브러는 한 2-3k 차지한듯.

한바이트라도 아쉬웠는데 이제 겨우 남은 메모리로 코딩을 할 수 있을거 같다.

 

혹시 pow 가 없다고 고민하지말 것.

고등학교에서 고1 수학을 배웠다면  위 함수로 구현이 가능합니다.

a^b = e^(b*ln(a))

+ Recent posts