기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

리눅스 응용 프로그램에서 EBI를 제어를 하고 싶은데요.

현재 PPC460 CPU에서 CPLD를 제어를 할려고 합니다.


fd = open("/dev/mem", O_RDWR); 
ptr = mmap(NULL, cpld_mem_size, PROT_READ | PROT_WRITE, 
           MAP_SHARED, fd, cpld_mem_start);


위와같이 물리적인 CPLD 주소를 프로그램에서 접근할수 있게 mmap를 이용하여 주소값을 받아 옵니다.


값을 받은 후 특정 레지스터에 데이터를 쓰면 커널에서 에러 메시지가 아래와 같이 출력이 됩니다.


Machine check in kernel mode

Data Read PLB Error

Bus error


무슨 문제인지 잘 모르겠네요.

혹시 아시는 분 있으시면 답변 주시면 감사하겠습니다.

그럼 수고하세요.



고도리

2012.06.07 06:21:10
*.127.19.87

address 지정이 잘 못 되었다는 얘기인 듯 싶습니다.


보통 mmap을 이용해서 외부 디바이스 접근시 발생하는 에러인데, 실제 address mapping에 문제가 있다는 얘기인 듯 싶네요.


CPLD로 나가는 address와 Chip select pin을 logic analyzer나 아니면 scope 다채널 정도로 찍어서 신호의 움직임과 timing을 확인해 보시기 바랍니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인