안녕하세요.
리눅스/임베디드/C 초보 직딩 입니다. ^^;
ez-2440 사용중입니다.
확장 보드를 제작하여 SPI를 이용하여 ADC에서 데이터를 수신하려고 합니다.
커널에서 제공된 SPI 내용도 보고 사이트도 여기 저기 찾아서 일단 감을 잡기 직전이었는데... ^^;
간단한 디바이스 드라이버를 제작해서 디버깅 중입니다만 문제는 레지스터에 값이 적용이 되지 않습니다. 검색해보니 저와 같은 경우가 있었습니다만 답변이... ㅜ.ㅜ
SPCON0, SPPIN0, SPPRE 에 값을 넣고 다시 읽어 와서 표시 해보니 전부 0x0 이더군요.
그래서 클럭이 출력이 되지 않더군요.
그리고 주소값을 출력해보니 0xc8000xxxx 이런식으로 출력되더군요.
레지스트가 위와 같은 주소를 가질수 있습니까? 보통 F로 번지 인것 같던데요...
사용방법은
volatile unsigned char *reg;
reg = ioremap(0x59000000, 0x1000);
그리고
*reg = 0xff;
이런 식로 사용했습니다.
세그먼트 에러는 나지 않습니다만 많이 수상한듯합니다. ^^;
그리고 GPIO(E13,E12,E11)는 제대로 설정된 것을 확인 했습니다.
(이것은 제대로 r/w가 잘됩니다.)
무엇이 문제일까요?
ps.
간단한 예문이면 더욱 감사드리겠습니다.
레지스터에 writing을 했는데, 동작이 안되고,
읽어도 리셋밸류가 나타난다는것은 루틴상의 문제는 아니고,
커널 버그인듯합니다.
커널 버전이 어떻게 되시나요?