기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
현재 6400을 펌웨어 형태로 개발을 진행 하고 있는데요... 하나 문제가 있어서 질문을 드립니다.
VFP사용관련 문제인데요... 타이머 인터럽트에서 연산을 위해 VFP를 사용하는데... 이 타이머 인터럽트이외에서도 VFP연산을 사용하면 연산결과가 제대로 되질 않습니다.
아무래도 두군데서 VFP레지스터를 공유하면서 생기는 문제인것 같은데요... 연산을 한 곳으로 모으면 문제가 없습니다.
이에 관련해서 해결 방안이 있는지요? 아님 제가 VFP를 잘 못 사용하고 있는 건지요?
리눅스등에서는 각 어플리케이션들이 VFP를 사용할 수 있는데 각각의 스레드에서 어떻게 이 문제들을 피해 가는지요?( 제가 의심하고 있는 부분이 맞다는 전제 하에서..)
답변 부탁 드리겠습니다.
interrupt handler안에서 vfp를 사용하기 전에 vfp관련 register를 모두 backup하고 사용한 후에 restore해 주시면 문제가 해결될 것 같습니다. interrupt handler에 진입할 때 보통 vfp관련 register는 backup하지 않습니다. ( 성능때문에 )
linux에서도 kernel space에서는 기본적으로 vfp사용이 금지되어 있었던 것으로 기억합니다. 아마도 linux의 user space에서는 context switch시에는 vfp관련 register를 보존해서 특별히 문제가 없는 것이 아닌가 추측합니다.