도와주세요!!
글 수 15,339
2005.03.31 03:50:13 (*.79.161.97)
6667
안녕하세요.
외부 이더넷 모듈을 달려고 하는데 잘 안되네요.
지금 보드는 x5(v1.2) + pi + pcmcia를 사용하고 있습니다.
저희가 하려는 건 smsc lan91c111 모듈을 두개 붙이는 겁니다.
칩셀렉트는 각각 nCS4, 5를 사용하구요.
비어있는 gpio가 없어 고생했는데, 인터럽트 핀은 x5보드에서 led에 할당된 gpio3, 5번을 사용했습
니다. (led쪽 저항만 제거했습니다.)
인터럽트 핀은 active일때 high입니다.
ez_x5.c, ez_x5_init_irq()에서 다음과 같이 설정했습니다.
set_GPIO_IRQ_edge(3, GPIO_RISING_EDGE);
set_GPIO_IRQ_edge(5, GPIO_RISING_EDGE);
드라이버는 cvs.arm.linux.org.uk에 있는 smcether트리를 가지고 왔습니다.
소스 내에 버젼 2.1로 되어 있고 smc91111_cfg.h라는 파일을 통해 환경설정이 가능하게 되어 있습니
다.
그 소스에서 다음과 같이 설정했습니다.
#elif CONFIG_ARCH_PXA_EZ_X5
#define NETWORK_INTERFACE0_PHYS_DATA_ADDR (PXA_CS4_PHYS + 0x300 + DATA_REG)
#define NETWORK_INTERFACE0_INTERRUPT IRQ_GPIO(3)
#define NETWORK_INTERFACE0_USE_32_BIT 1
#define NETWORK_INTERFACE0_REGISTER_BASE_ADDRESS (0xf4000000 + 0x300)
#define NETWORK_INTERFACE1_PHYS_DATA_ADDR (PXA_CS5_PHYS + 0x300 + DATA_REG)
#define NETWORK_INTERFACE1_INTERRUPT IRQ_GPIO(5)
#define NETWORK_INTERFACE1_USE_32_BIT 1
#define NETWORK_INTERFACE1_REGISTER_BASE_ADDRESS (0xf5000000 + 0x300)
이 외에 드라이버 소스에서 아직 건드린 부분은 없습니다.
일단 커널 모듈로 먼저 테스트 하기 위해 커널에서 모듈로 포함시켜놓고,
make modules하면 일단 컴파일은 이상없이 잘 됩니다.
완성된 모듈을 타겟으로 옮기고
[root@ez-x5 /app]$ insmod ./smc91111.o io=0xf4000300 irq=26 nowait=1
Using ./smc91111.o
insmod: init_module: smc91111: No such device
이렇게 에러가 뜹니다.
회로는 이 모듈이 달려있는 다른 보드의 회로도를 참고했기에 이상은 없어 보입니다.
인터럽트 핀만 다르게 연결되어 있구요.
여기저기 다 건드려봐도 어디가 문제인지 모르겠습니다. ㅜㅜ
도움 부탁드립니다.
외부 이더넷 모듈을 달려고 하는데 잘 안되네요.
지금 보드는 x5(v1.2) + pi + pcmcia를 사용하고 있습니다.
저희가 하려는 건 smsc lan91c111 모듈을 두개 붙이는 겁니다.
칩셀렉트는 각각 nCS4, 5를 사용하구요.
비어있는 gpio가 없어 고생했는데, 인터럽트 핀은 x5보드에서 led에 할당된 gpio3, 5번을 사용했습
니다. (led쪽 저항만 제거했습니다.)
인터럽트 핀은 active일때 high입니다.
ez_x5.c, ez_x5_init_irq()에서 다음과 같이 설정했습니다.
set_GPIO_IRQ_edge(3, GPIO_RISING_EDGE);
set_GPIO_IRQ_edge(5, GPIO_RISING_EDGE);
드라이버는 cvs.arm.linux.org.uk에 있는 smcether트리를 가지고 왔습니다.
소스 내에 버젼 2.1로 되어 있고 smc91111_cfg.h라는 파일을 통해 환경설정이 가능하게 되어 있습니
다.
그 소스에서 다음과 같이 설정했습니다.
#elif CONFIG_ARCH_PXA_EZ_X5
#define NETWORK_INTERFACE0_PHYS_DATA_ADDR (PXA_CS4_PHYS + 0x300 + DATA_REG)
#define NETWORK_INTERFACE0_INTERRUPT IRQ_GPIO(3)
#define NETWORK_INTERFACE0_USE_32_BIT 1
#define NETWORK_INTERFACE0_REGISTER_BASE_ADDRESS (0xf4000000 + 0x300)
#define NETWORK_INTERFACE1_PHYS_DATA_ADDR (PXA_CS5_PHYS + 0x300 + DATA_REG)
#define NETWORK_INTERFACE1_INTERRUPT IRQ_GPIO(5)
#define NETWORK_INTERFACE1_USE_32_BIT 1
#define NETWORK_INTERFACE1_REGISTER_BASE_ADDRESS (0xf5000000 + 0x300)
이 외에 드라이버 소스에서 아직 건드린 부분은 없습니다.
일단 커널 모듈로 먼저 테스트 하기 위해 커널에서 모듈로 포함시켜놓고,
make modules하면 일단 컴파일은 이상없이 잘 됩니다.
완성된 모듈을 타겟으로 옮기고
[root@ez-x5 /app]$ insmod ./smc91111.o io=0xf4000300 irq=26 nowait=1
Using ./smc91111.o
insmod: init_module: smc91111: No such device
이렇게 에러가 뜹니다.
회로는 이 모듈이 달려있는 다른 보드의 회로도를 참고했기에 이상은 없어 보입니다.
인터럽트 핀만 다르게 연결되어 있구요.
여기저기 다 건드려봐도 어디가 문제인지 모르겠습니다. ㅜㅜ
도움 부탁드립니다.