도와주세요!!
글 수 15,339
2013.04.15 16:50:44 (*.72.201.220)
16208
이번에 N200-s3c6410 보드를 구입하여 LAN에 대해서 테스트 중 의문사항이 생겨서 질문 드립니다.
동봉된 시디에 있는 파일 sib-n200-v11.pdf 에서는 Lan의 SA0~SA5,FIFO_SEL 부분이 LB_A0이 아니라 A1부터 시작을 하고있습니다. 소스내용에서는 아래부분인거 같은데
Ax88796b.h
#define EI_SHIFT(x) ((x) << 1)
#define E8390_CMD EI_SHIFT(0x00) /* The command register (for all pages) */
/* Page 0 register offsets. */
#define EN0_CLDALO EI_SHIFT(0x01) /* Low byte of current local dma addr RD */
...
#define EN0_RESET EI_SHIFT(0X1f) /* Issue a read to reset, a write to clear. */
// [FALINUX]
#define EN0_DATA_ADDR 0x40 // A6
//#define EN0_DATA_ADDR 0x0800 // A11
datasheet [NET] ax88796b.pdf 파일 및 인터넷의 다른 소스 내용을 봐도 #define EI_SHIFT(x) ((x) << 0) 인데
N200-s3c6120은 EI_SHIFT를 1씩 shift를 했는데 왜 shift를 해야하는건지 이유를 알고 싶습니다.
안녕하세요.
일반적으로 하드웨어 연결은 다음과 같이,
A0 - A0
A1 - A1
A2 - A2
위과 같이 연결이 되어 shift를 해줄 필요가 없습니다.
하지만, N200-S3c6410 과 같은 경우에는
A1 - A0
A2 - A1
A3 - A2
위와 같이 연결이 되어 있기 때문에 소프트웨어 적으로 그것을 보안하려고 1씩 shift 연산을 한것 입니다!
쉬프트(shift) 연산에 관하여 한번 읽어 보세요.
좋은 글을 링크해 놓겠습니다.^^ ( 쉬프트 연산자 )