도와주세요!!
글 수 15,339
2004.01.19 14:53:56 (*.104.18.25)
6685
상세한 답변 감사드립니다...그런데..아직도 잘 파악이 안되는 부분이 있어
서 다시 글 올립니다..
푸지 wrote..
:
: : 1. serial.c 가 인터럽트 구동방식인가, 폴링방식인가??
: : ~~ 소스가 넘 길어서 부분적으로만 분석했는데 아무래도 타이머가 돌아 가는 것을 보니까
: : 폴링방식같은데 실력이 딸려서 파악이 잘 안되네요..또 그와 더불어 인터럽트 방식이라면
: : 구조체의 irq에는 무슨 값을 넣어야 하나요? 아래처럼 IRQ_GPIO_2_80 인가요? 아니면 다른 값인가요??
: : 폴링방식이라면 irq의 값은 의미가 없는 값인가요?? 인터럽트 방식입 니다. 다만 여러 인터럽트를 하나의 핸들러를 통해 받아 들이지요..
: 타이머는 오랜시간 인터럽트가 들어오지 않을때 동작합니다. 일정의 타임아 웃이지요
: IRQ 는 하드웨어에 물린 GPIO 의 번호와 연관이 있으며 커널에 알고 있는 번 호로 설정해야 합니다.
-->> 인터럽트 방식이었군요..그럼 저는 4개의 채널의 인터럽트에 GP23, 24,
25, 26 번을 물렸는데요..그럼
include/asm/arch/irqs.h 에 나와있는것처럼 GPIO_2_80_TO_IRQ(23),
GPIO_2_80_TO_IRQ(24), GPIO_2_80_TO_IRQ(25), GPIO_2_80_TO_IRQ(26) 를 irq
멤버로 넣습니까? 아니면 4채널 모두에 IRQ_GPIO_2_80 을 넣어서 first level
로 인터럽트를 동일하게 등록하고 serial.c 소스에서 second level을 처리하는
것인가요?
: :
: : 3. io_type 부분에는 무슨 값을 넣나요?
: : ~~ SERIAL_IO_MEM32인가요? 아니면 SERIAL_IO_MEM인가요? 그와 더불어 iomem_base에는 무슨 타입을 써야 됩
: : 니까?
: : 저는 아래와 같이 u32로 하고 있는데 맞는지 확신이 안가네요.. SERIAL_IO_MEM 으로 설정하세요 8비트 버스를 사용하실테니까요..
: iomem_base 에는 칩의 베이스 주소를 넣으세요.
-->> 질문에 말씀드린것처럼 어드레스는 554의 A0, A1, A2 에 각각 CPU의
MA2, MA3, MA4를 붙였습니다..8비트로 억세스는 하지만 어드레스는 2씩 좌로
쉬프트하여 사용할 생각이었거든요...이에 맞추어 부트로더에서 해당하는 칩셀
렉 영역을 32비트로 설정했구요...커널에서는 포인터 설정을
#define TL554A_A (*((volatile u32 *) 0xf3000000)) // TL16C554A
Ach virtual addr
와 같이 하였구요.. 또한 iomem_reg_shift 멤버에는 2를 넣었습니다...이 경우
에도 SERIAL_IO_MEM로 설정을 해야 하는지요?? 혹시 제가 완전히 잘못생각하
고 있는 것인지요?? 틀렸다면...제 보드와 같은 어드레스 매핑 상황에서 맞는
설정을 알려주실수 있을까요???
:
: :
: : 4. serial.c 코드에서 뭔가 수정해야 할 부분이 있습니까?? 인터럽트와 등 록하는 부분을 수정해야 합니다.
:
:
-->> 인터럽트부분은 rs_interrupt함수부분인가요?? 또한 등록하는 부분은 인
터럽트 등록하는 부분을 말씀하시는건가요?? 그런데..제가..코드보는 능력이
무지하게 딸려서요..어딘지 잘 못찾겠어요..ㅜㅜ 자세히 알려주심 안댈까요??
그쪽 부분 샘플 소스라도 볼수 있을까여??
: 저희가 제공하는 커널에 외부 확장 시리얼포트에 대한 내용이 포함되어 있 습 니다.
: 제공하는 커널에서 include/asm/arch-pxa/serial.h 만 수정하면 됩니다.
: GPIO 번호와 베이스 주소만 변경.. (커널버젼 V03 이상) -->> 커널버전 V03 이상이 어디에 있나요?? 자료실의 EZ-X5부분의 커널부분을
다운 하면 되는 것인가요?? 찾질 못하겠네요...
(추가질문) 554칩의 INTN 핀은 제 경우에 하드웨어적으로 open 으로 했습니다
만..드라이버에서 인터럽트 인에이블 시켜주는 레지스터를 제가 따로 설정을
해야하는 것인가요? (코드 보는 능력이 딸리다보니..6000라인 넘어가는 소스
분석하기가 너무 힘이 드네요..ㅜㅜ )
서 다시 글 올립니다..
푸지 wrote..
:
: : 1. serial.c 가 인터럽트 구동방식인가, 폴링방식인가??
: : ~~ 소스가 넘 길어서 부분적으로만 분석했는데 아무래도 타이머가 돌아 가는 것을 보니까
: : 폴링방식같은데 실력이 딸려서 파악이 잘 안되네요..또 그와 더불어 인터럽트 방식이라면
: : 구조체의 irq에는 무슨 값을 넣어야 하나요? 아래처럼 IRQ_GPIO_2_80 인가요? 아니면 다른 값인가요??
: : 폴링방식이라면 irq의 값은 의미가 없는 값인가요?? 인터럽트 방식입 니다. 다만 여러 인터럽트를 하나의 핸들러를 통해 받아 들이지요..
: 타이머는 오랜시간 인터럽트가 들어오지 않을때 동작합니다. 일정의 타임아 웃이지요
: IRQ 는 하드웨어에 물린 GPIO 의 번호와 연관이 있으며 커널에 알고 있는 번 호로 설정해야 합니다.
-->> 인터럽트 방식이었군요..그럼 저는 4개의 채널의 인터럽트에 GP23, 24,
25, 26 번을 물렸는데요..그럼
include/asm/arch/irqs.h 에 나와있는것처럼 GPIO_2_80_TO_IRQ(23),
GPIO_2_80_TO_IRQ(24), GPIO_2_80_TO_IRQ(25), GPIO_2_80_TO_IRQ(26) 를 irq
멤버로 넣습니까? 아니면 4채널 모두에 IRQ_GPIO_2_80 을 넣어서 first level
로 인터럽트를 동일하게 등록하고 serial.c 소스에서 second level을 처리하는
것인가요?
: :
: : 3. io_type 부분에는 무슨 값을 넣나요?
: : ~~ SERIAL_IO_MEM32인가요? 아니면 SERIAL_IO_MEM인가요? 그와 더불어 iomem_base에는 무슨 타입을 써야 됩
: : 니까?
: : 저는 아래와 같이 u32로 하고 있는데 맞는지 확신이 안가네요.. SERIAL_IO_MEM 으로 설정하세요 8비트 버스를 사용하실테니까요..
: iomem_base 에는 칩의 베이스 주소를 넣으세요.
-->> 질문에 말씀드린것처럼 어드레스는 554의 A0, A1, A2 에 각각 CPU의
MA2, MA3, MA4를 붙였습니다..8비트로 억세스는 하지만 어드레스는 2씩 좌로
쉬프트하여 사용할 생각이었거든요...이에 맞추어 부트로더에서 해당하는 칩셀
렉 영역을 32비트로 설정했구요...커널에서는 포인터 설정을
#define TL554A_A (*((volatile u32 *) 0xf3000000)) // TL16C554A
Ach virtual addr
와 같이 하였구요.. 또한 iomem_reg_shift 멤버에는 2를 넣었습니다...이 경우
에도 SERIAL_IO_MEM로 설정을 해야 하는지요?? 혹시 제가 완전히 잘못생각하
고 있는 것인지요?? 틀렸다면...제 보드와 같은 어드레스 매핑 상황에서 맞는
설정을 알려주실수 있을까요???
:
: :
: : 4. serial.c 코드에서 뭔가 수정해야 할 부분이 있습니까?? 인터럽트와 등 록하는 부분을 수정해야 합니다.
:
:
-->> 인터럽트부분은 rs_interrupt함수부분인가요?? 또한 등록하는 부분은 인
터럽트 등록하는 부분을 말씀하시는건가요?? 그런데..제가..코드보는 능력이
무지하게 딸려서요..어딘지 잘 못찾겠어요..ㅜㅜ 자세히 알려주심 안댈까요??
그쪽 부분 샘플 소스라도 볼수 있을까여??
: 저희가 제공하는 커널에 외부 확장 시리얼포트에 대한 내용이 포함되어 있 습 니다.
: 제공하는 커널에서 include/asm/arch-pxa/serial.h 만 수정하면 됩니다.
: GPIO 번호와 베이스 주소만 변경.. (커널버젼 V03 이상) -->> 커널버전 V03 이상이 어디에 있나요?? 자료실의 EZ-X5부분의 커널부분을
다운 하면 되는 것인가요?? 찾질 못하겠네요...
(추가질문) 554칩의 INTN 핀은 제 경우에 하드웨어적으로 open 으로 했습니다
만..드라이버에서 인터럽트 인에이블 시켜주는 레지스터를 제가 따로 설정을
해야하는 것인가요? (코드 보는 능력이 딸리다보니..6000라인 넘어가는 소스
분석하기가 너무 힘이 드네요..ㅜㅜ )