UART 콘트롤러 칩 추가..

QnA 2009. 7. 16. 04:53
안녕하세요. 디바이스 드라이버에 대해 문의를 좀 드리려고 합니다.
현재 사용하고 있는 메인 칩은 PXA270 이구요. OS는 kernel-2.6.13 버젼입니다.
원래 벌버디가 UART를 3개를 제공하는데요. 여기에 UART 컨트롤러를 추가하게 되었습니다.
EXAR 의 XR16C850 이라는 UART 컨트롤러 입니다만... 바로 붙여서 사용하려고 하니 모호한 점이 한두가지가 아닙니다.
일단은 데이터시트를 바탕으로 Intel Bus Interface를 꾸몄습니다. 데이터 7비트, 어드레스 3비트..이렇게 연결하구요.. 나머지는 레퍼런스에 충실하게 제작했습니다.
PC 모드 Interface가 따로 있기는 한데 이건 PC 단에서 꾸며야 하는 거라는 걸 확연히 알 수 있더군요.
그런데 문제는 지금 이걸 어떻게 테스트할지 입니다. 이 쪽에 디바이스 드라이버 레퍼런스도 없구요... 혹시 16C850 이나 16C550 등의 디바이스 드라이버 작업 경험 있으신 고수님들이 계신가요?
염치없지만 테스트 코드라도 부탁을 좀 드리겠습니다. ;; 그럼 좋은 하루 보내세요.

---> 2007.07.07

커널에 16C550 부터 16C850 까지 지원하는 8250.c 라는 소스가 있더군요.
이걸 이용해서 작업을 할까 하고 있습니다만.. 하드웨어적인 인터페이스는 pxa270 의 어드레스 신호 A1,A2,A3 를 16C850의 A0,A1,A2에 연결했구요, D0-D7 까지는 그대로 연결했습니다. CPLD 에서 nCS 와 Read / Write 도 연결했구요. MSC 레지스터 세팅으로 타이밍과 인터페이스를 설정해주려고 하는데 VLIO-16bit 인터페이스 설정을 하려고 합니다.
메모리 영역은 가상: 0xf1200000, 물리 : 0x12000000 로 설정했습니다.
고수님들의 조언을 구하기 위해 회로를 포함해서 보다 자세한 정보를 올립니다.
좋은 하루 보내세요.

<Read Write Strobe Signals from CPLD>
nIOR#2 : (n16c850_CS ='0' and B_nOE = '0' and nPWE = '1')
nIOW#2 : (n16c850_CS ='0' and B_nOE = '1' and nPWE = '0')

첨부 파일: 16C850_.DSN 16C850_.DSN (83 KiB(84,480 Bytes))

UART 콘트롤러 칩 추가.. | 답장: 2개(RSS) | 본문에 답장
정렬 :  

답장 익명 (2007년 07월 09일 오후 10:11)
인터럽트 사용해야하므로 exar칩의 인터럽트 핀을 CPU 의 인터럽트 가능한 핀에 연결해야합니다.

VLIO 사용하시려면 nWAIT 도 연결해야 합니다.
nWAIT 가 deassert 될 때까지 memory controller 전체가 얼어버립니다. 주의하세요.
나머지는 매뉴얼보고 그럴싸하게 레지스터 세팅하면되니 별 문제 없고...

data bus width 문제는 이미 파악하고 계신대로 그렇게 연결하시면 됩니다.
다만, 8250.c 를 그대로 사용하지는 못합니다.
소스 내에서 CONFIG_SERIAL_8250_AU1X00 로 감싸진 부분을 보시면 uart register 들의 offset 조정하는 예를 보실 수 있습니다.
그것과 비슷한 방법으로 각 offset 들을 <<1 시켜야 된다는 점을 이해하시리라 믿습니다.
cpu 의 A1 이 칩의 A0 에 물려있으니까요.

serial8250_register_port() 함수와 serial8250_unregister_port() 함수의 예제는
같은 디렉토리에 많이 있으니 별 문제 없겠고...

처음에 iomap, GPIO 설정과 irq edge 설정을 미리 해주셔야 한다는 점만 주의하시면 큰 문제 없습니다.

이건... 2.4 시절보다 좀 불편하군요.
dynamic 하게 run-time 에 add/del 이 된다뿐이지 그 외에는 영...
[ 이글에 답장 | 본문에 답장 ]

답장 etre21c (2007년 07월 10일 오후 02:08)
!!!감사합니다. 회로를 말씀처럼 수정하고 한번 테스트해 보겠습니다. 좋은 하루 보내세요..

'QnA' 카테고리의 다른 글

BTUART사용시 질문  (0) 2009.07.16
external memory interface  (0) 2009.07.16
16C554 칩(4CH UART) 포팅 관련질문입니다.  (0) 2009.07.16
level shifter??  (0) 2009.07.16
serial 통신 속도 변경에 따른 데이터 손상 현상  (0) 2009.07.13

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,