안녕하세요.

임베디드 개발을 하다 막히는 부분이 있어 도움을 바라며 질문을 드립니다.

질문)
Ezboard 회로도(ezboard, ide, ps/2, lcd, touchpad)와 Assabet
pcmcia 회로도, 인터넷을 이용 SA1110 에 연결 가능한 USB Host
Contoller 'SL811HS' 를 연결해

CS0 : FLash0
CS1 : USB
CS2 : Ethernet 1
CS3 : Ethernet 2
CS4 : PS/2
CS4 : TouchPAD
CS5 : IDE

(USB 연결)
SA1110 +--+ SL811HS Host Controller+--+ Cypress USB Mouse

(PCMCIA 연결)
SA1110 +--+ PCMCIA socket +--+ Linksys 10M 무선랜


CS 0 ~ 5 까지 기본 하나의 디바이스를 연결할 수 있고, 74HC138을 이용
하나의 CS 에 추가로 여러 장치를 연결할 수 있다고 알 고 있고, CS4 에
PS/2, TouchPAD 를 연결해 둘 다 인식을 시켜 보았습니다.

(주소지정 : linux-2.4.18/arch/arm/mach-sa1100/ezboard.c)
--------------------------------------------------------------
/* virtual physical length */
{ 0xe8000000, 0x00000000, 0x01000000 } // CS0 Flash 0
{ 0xe9000000, 0x08000000, 0x01000000 } // CS1 USB
{ 0xea000000, 0x10000000, 0x00100000 } // CS2 Crystal 1
{ 0xeb000000, 0x18000000, 0x00100000 } // CS3 Crystal 2
{ 0xf0000000, 0x40000000, 0x00100000 } // CS4 PS2
{ 0xf0100000, 0x40007000, 0x00100000 } // CS4 TouchPad
{ 0xf0300000, 0x48000000, 0x00100000 } // CS5 IDE


PCMCIA 의 경우는 pcmcia-cs, linux-wlan-ng 의 두 파일을 받아
크로스 컴파일 하여 생성된 모듈을 ramdisk.gz 안에 넣고 pcmcia 파일을 넣
었습니다.

디바이스 가상 메모리 설정은 ezboard.c 와 ezboard.c 에 설정된 가상주소
에 맞추어 각 디바이스의 메모리 영역값을 맞추어 주었습니다.

위 설정으로, 커널을 컴파일하고, pcmcia_cs, linux-wlan-ng 를 크로스 컴
파일하여 ramdisk.gz 에 넣어 보드에 전원을 인가하니

CS 0 : Flash0 <-- 인식
CS 1 : USB <-- USB 마우스를 끼울 때 인식 되었다 안되었다. 불안정
CS 2 : eth0 <-- 인식
CS 3 : eth1 <-- 인식
CS 4 : PS/2 <-- 인식
CS 4 : MK712(TouchPAD) <-- 인식
cS 5 : IDE <-- 인식

pcmcia 경우 /etc/rc.d/init.d/pcmcia 구문을 보드에서 수동으로 실행
하영 Linksys 무선랜을 인식하여 노트북과의 무선통신이 되었습니다.

하지만, pcmcia 무선랜의 모듈이 올라가자, PS/2 가 동작을 멈추고 PS/2
키보드를 누르고, # cat /proc/interrupts 로 확인을 해보아도 전혀
keyboard 의 카운트가 늘지 않는 것을 확인했고, pcmcia 모듈을 올림으로
어떤 충돌로 인해 멈춘 것으로 생각이 됩니다.

pcmcia 모듈을 올리기 전에는 pcmcia 를 제외한 다른 장치들은 정상 동작합
니다.

보통 장치간 IRQ, I/O, DMA 충돌로 인해서 디바이스가 제대로 인식을 하지
않아 IRQ, I/O 를 주로 변경시켜 충돌을 해결하곤 해서, IRQ, I/O
Address 를 중심으로 충돌 부분을 확인해 보았으나, GPIO(IRQ) 부분은
각각 독립되어 있고, I/O Address 는 ezboard.c 나 각 장치의 디바이스
의 기본 address 도 확인을 해보았으나 충돌이 되는 부분은 없었습니다.

pcmcia 모듈을 올리기전에는 충돌없이 동작하다 pcmcia 모듈을 올리자
PS/2 부분이 충돌이 일어 나므로 pcmcia 와 PS/2 의 동작 메모리 영역을
소스를 기준으로 메모리 사용 영역을 표로 만들어 충돌이 나는지 다시 확인
하고 있습니다.

그리고, ezboard 에 USB Host Controller - SL811HS 를 붙여 USB 마우
스 Cypress 를 인식을 시켰는데 이것이 인식이 되었다 안되었다 합니다.
납땜 부분이 혹시 냉땜인가해서 띠었다 다시 붙이고 확인을 했고 다시 USB 마
우스를 꽂아 인식이 되는 것을 확인했습니다. 하지만 전원을 내리고 다시 전
원을 올리고 USB 마우스를 꽂으면 어떤 때는 인식을 하고 어떤때는 인식을 하
지 않아서 무슨 원인으로 불안정하게 인식이 되는지 궁금합니다.
(USB Host Controller linux driver : www.cypress.com 에서 드라이버
를 받아 커널에 추가시키고 커널 컴파일 후, zImage 생성)

USB 문제쪽은 전원, 동작 클록, 사용 메모리 충돌 등을 생각하고 있습니다.

최대한 충돌을 해결하기 위한 노력으로 '제이닷디앤티' 의 PDF 설명문서와
SA1110, PCMCIA, USB Host Controller 문서를 중심으로 Timing, I/O 영
역을 중심으로 문제를 해결하려고 합니다. 도움을 바라며 이만 줄이겠습니다.

(참고 자료)
1.USB Host Controller, SL811HS : http://www.cypress.com/
2.PCMCIA 무선랜, pcmcia_cs, linux-wlan-ng : pcmcia 무선랜 인식에
필요한 문서들.
3.SA1110 메모리 맵
4.LCD, TouchPAD, PS/2, IDE '제이닷디앤티'문서