M0 코어에서 float 연산을 할 일이 생겨서 , 아무 생각없이 software floating point 연산을 하다보니 이게 제법 코드를 차지하여서 32kb 메모리에서 도저히 다른 일을 할 수가 없게 되었다.
혹시나 찾아보니 역시..
누군가 M0 에 최적화한 tiny 버전을 만들어 놓았다.
https://www.quinapalus.com/qfplib-m0-tiny.html
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))
'임베디드' 카테고리의 다른 글
MP-3B 알콜 센서 (0) | 2024.08.10 |
---|---|
HDLC 10Mbps (RS-485 200m 고속 동작 시키기) (2) | 2023.10.21 |
마이컴으로 HDLC 고속 프로토콜 처리 (2) | 2023.10.21 |
C코드 속도 최적화(MCU) #1 (0) | 2023.10.04 |
17년전 프로그램 다시보기 (0) | 2023.05.10 |