도와주세요!!
안녕하십니까? 아직도 날씨가 쌀쌀하네요 감기 조심하시길 바랍니다.
U-boot의 LAN91C111 디바이스를 사용하기 위한 작업을 하고 있는데요 궁금한게 있습니다.
이 질문은 LAN91C111 디바이스가 아닌 다른 Periphral 디바이스를 제어할때 마다 느끼는 점입니다.
예를들어 보통 ARM 프로세서에 디바이스를 연결하여 사용하기 위해서 중간에 GPIO핀을 사용하는 경우가 많은것 같습니다.
이번에 작업하고 있는 보드의 LAN91C111 디바이스도 마찬가지로 아래와 같이 GPIO 선이 연결되어 있었습니다.
==================================
AEN <--> GPIO_15/nCS1_ETH
nWR <--> GPIO_49/nPWE
RESET <--> GPIO_5/ETH_RESET
==================================
그리고 PXA255 프로세서 기준으로 볼때 GPIO는 아래와 같이 설정을 할수 있습니다.
==================================
GPDR : IN/OUT ( 입출력방향 설정 )
GPSR : HIGH ( 출력을 HIGH로 설정 )
GPCR : LOW ( 출력을 LOW로 설정 )
==================================
여기서 궁금한게 있습니다.!!
해당 프로세서의 GPIO 핀이 어떤 디바이스를 사용하기 위해 핀이 할당이 되었다면
GPIO핀의 입출력 방향 설정,출력의 HIGH/LOW 설정을 해주어야 하는데 이 때 입력으로 할지 출력으로 할지,
그리고 출력을 HIGH로 할지 LOW로 할지 어떤것을 참고로 하여 설정을 해주어야 되는지요?
지금까지는 레퍼런스 펌웨어 소스가 있어서 그것을 사용했지만 만약에 레퍼런스 펌웨어 소스가 없을 경우에는 어떤것을
참고로 해야되는지요? 해당 디바이스의 chip 메뉴얼인지? 아니면 해당 보드의 회로도에서 확인할 수 있는지요?
아니면 다르게 확인을 해야되는지..
우선 첨부된 LAN91C111 chip메뉴얼에서 "Chapter 5 Descript of Pin Functions" 부분을 참조하면 될거 같은데 시원스럽게
감이 안오네요. 드바이스를 사용하면서 GPIO를 설정할 때마다 부담감을 느끼네요..
어떻게해야 되는지 가이드 좀 부탁드립니다.
그럼 좋은 하루 되십시오.
ps. 혹시 참고용으로 LAN91C111 chip 메뉴얼과 해당 디바이스 보드 회로도를 올려봅니다.
딱히 가이드라고 말하기는 애매합니다.
데이타버스와 어드레스신호선이 있는 하드웨어 기준으로 (보통 이런것들을 로컬버스라고 말합니다) 보면
MCU 가 우선 master 또는 host 가 됩니다. 그리고 핀들의 이름도 MCU 기준으로 정의됩니다.
아래는 intel 방식의 버스 신호선을 예를 들었습니다.
- RE# ( or OE#) : 읽기 신호선 (출력)
- WE# ( or WR#) : 쓰기 신호선 (출력)
- CS# : 칩선택 신호선 (출력)
- AEN# : 어드레스 활성화 (출력)
- RDY ( or BUSY#) : 버스 엑세스 진행여부 (입력)
- INT : 인터럽트 신호선 (입력)
- BE0# ( DQM0#) : 8비트 버스 유요화 신호선 (출력)
이외에도 몇개의 신호선이 있습니다. 사용하고자 하는 Device 칩의 메뉴얼을 보고 필요한 선을 pull-up/pull-down
하시거나 적절히 GPIO 로 제어 하셔야 합니다.
motorola 버스 방식은 위와는 약간 상이한 핀들이 있습니다만 여기까지만 설명드리죠 ^^