ARM 에서 double 형 연산 문제
글쓴이: churli / 작성시간: 수, 2009/12/23 - 12:32오후
임베디드 환경에서 타이머로 시간 측정을 하는 함수를 구현 하는데 아래와 같은 문제가 있습니다.
CPU : OMAP2420(ARM1136 core)
COMPILER : CodeSourcery G++ Lite (EABI) ARM Cross Compiler
int main()
{
double val;
val = get_time(); <<== val 값이 항상 0.0 이 들어 옵니다.
return 0;
}
double get_time(void)
{
unsigned long long nMsec;
nMsec = (unsigned long long) (*((volatile unsigned long*)(0x50000000))); <== 타이머 카운트값 읽기
nMsec *= 1000ULL;
return (double)(nMsec / 32768ULL);
}
왜 리턴 값이 항상 0.0 으로 리턴 되는지를 모르겠습니다.
조언 부탁 드립니다. 꾸벅
Forums:
nMsec 값을 32768ULL로
nMsec 값을 32768ULL로 나눈 후에 double 캐스팅하지 마시고,
nMsec 값을 double 형으로 먼저 캐스팅한 후에 나누세요.
도움 감사합니다.
도움 감사합니다.
미련하게 컴파일러 탓만 하고 있었던 제가 정말 한심하네요.
C 다시 공부해야 할거 같습니다. 도움 정말 감사 드립니다.
댓글 달기