s3c2440 serial(UART) 활성화 ?
안녕하세요
S3C2440 보드를 사용하고 있는 유저입니다.
리눅스 커널 2.4 버전을 사용하다가 이번에 2.6.30으로 커널 업그레이드를 하였습니다.
2.4버전에서는 시리얼 0, 1, 2 이렇게 3가지 모두 사용하였습니다.
그런데 업그레이드 하면서 1번은 사용가능한데 2번이 아무런 반응이 없습니다.
아래는 부팅시 관련 내용입니다.
s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440
아래는 부팅후 디바이스 내용입니다.
/dev # ls s3c2410_serial* -la
crw-rw---- 1 root root 204, 64 Nov 8 2009 s3c2410_serial0
crw-rw---- 1 root root 204, 65 Jan 1 00:02 s3c2410_serial1
crw-rw---- 1 root root 204, 66 Nov 8 2009 s3c2410_serial2
시리얼 2에 장치를 물리고 아래와 같이 테스트하면 아무런 반응이 없습니다.
cat /dev/s3c2410_serial2
반면 2.4 커널에서는 이와같이하면 정상 동작합니다.
어떨게 처리해야 할지 감이 안 잡히네요...
커널 소스를 건들여야 하는지... menuconfig를 수정해야 하는지...
자세한 조언 바랍니다.
IrDA 로 설정되었을 수 있습니다. smdk2440
IrDA 로 설정되었을 수 있습니다.
smdk2440 을 보니 struct s3c2410_uartcfg smdk2440_uartcfgs[] = {...} 로 platform_data 를 제공하네요.
이미 수정했습니다.
static struct s3c2410_uartcfg smdk2440_uartcfgs[] __initdata = {
[0] = {
.hwport = 0,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03,
.ufcon = 0x51,
},
[1] = {
.hwport = 1,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03,
.ufcon = 0x51,
},
[2] = {
.hwport = 2,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03,
.ufcon = 0x51,
}
};
보시면 2도 이미 수정했습니다.
GPIO 설정도 확인해보시고요. 클럭이 동작중이고,
GPIO 설정도 확인해보시고요.
클럭이 동작중이고, I/O 에 이상없다면, 하다못해 에러 인터럽트라도 발생합니다.
네 저도 그거 확인했습니다.
오실로스코프로 찍어봤는데...
정상적인 serial 0, 1은 high로 떠 있는데
비정상적인 serial 2는 0.7~ 1v로 애메하게 되어있어
신호를 주어도 인식 못하는것 같습니다.
GPIO 세팅이 뭔가 잘못된거 같은데 세팅하는 부분을 못 찾겠습니다.
어디에서 수정할 수 있나요?
serial 3개중에서 0,1 은 정상동작 2만 비정상 입니다.
CPU 매뉴얼에서 찾아보세요. 언뜻봤는데 GPIO H
CPU 매뉴얼에서 찾아보세요.
언뜻봤는데 GPIO H 에 UART 0/1/2 에 대한 핀이 모두 모여있는 걸로 보입니다.
그네들 작명센스로 미뤄보건데 GPCON H 정도의 이름으로 configuration 레지스터가 있을 것 같습니다.
댓글 달기