logo
한국어 Select Language
FF 포럼
포럼지기에게 한 마디
공지사항
뉴스 EZ보드 통합 메뉴얼
FA-VUS 개발환경 !강추! 타켓보드 부팅-HyperTerminal 타켓보드 부팅-Tutty 타켓보드 부팅-minicom Windows환경-타겟 Linux 구동 Linux환경-타겟 Linux 구동 개발 시스템 구축 유형 페도라 설치 CentOS 설치 크로스 컴파일러 설치 TFTP 환경 구축 NFS 파일 시스템 구축 삼바 서버 구축 부트로더 부트로더 쓰기 커널 이미지 제작 및 설치 램디스크 이미지 제작 및 설치
임베디드 제품 사용기 오늘의 영어 휴게실 Appliance
강좌 & 팁
강좌 & 팁 EZ-보드 그래픽 & 멀티미디어 네트워크 프로그래밍 디바이스 드라이버 ImJa 솔루션 임베디드 FLEX 안드로이드 iOS 개발 FAIDE 하드웨어 C/C++ go언어 GNU C 레퍼런스 메뉴얼 ARM 루아 응용 프로젝트 이클립스 지그비 개발자 노트 권장도서 FPGA
VIVADO DSP HSIO Logic Zynq
함수설명
C 라이브러리 함수 커널 API 그래픽 라이브러리 - gxLib
자료실
자료실 FALINUX SDK ARM PC-V210 S3C6410
G100-S3C6410 S100-S3C6410 C221-S3C6410 N200-S3C6410 EZ-S3C6410
S5PV210
G100-S5PV210 S100-S5PV210 N200-S5PV210 C221-S5PV210
EZ-S3C2440 EZ-PXA270 EZ-X5 EZ-S2410 Auto Package
도와주세요
FAQ 도와주세요

  • 회원가입
  • ID/PW 찾기
 
  1. FAQ

  2. 도와주세요


최근 글

  • [특판][성Y인Y용Y품][...
  • 요즘 잘 나가는,,,
  • 요즘은 vmware 말고 ...
  • [docker] buildx 를 ...
  • buildroot 사용 관련
  • GPIO 제어 방법 문의 [1]
  • 임베디드 리눅스 개발...
  • make wandboard_quad ...
  • LCD 초기화 코드 좀 ... [1]
  • 임베디드 리눅스 커널...

최근 댓글

  • 오래 전에 해결법을 터득해서 ...
  • 비트 코인으로 작업하는 것은 ...
  • 10년차 임베 엔지니어 입니다. ...
  • 임베디드쪽이라면 SOC 쪽 displ...
  • 그렇군요 제가 질문이 잘못됬었...
  • 취준생으로서 포트폴리오를 만...
  • 제가 현재 취업준비생입니다. ...
  • 에프에이리눅스 보드는 아래 링...
  • 전체
  • 일반
  • X5
  • S2410
  • ESP-NS
  • S3C2440
  • EP9312
  • 구매
  • 기타

일반 듀얼 이더넷 설치하기에서 질문 드립니다.

2004.06.10 16:17

보따리 조회 수:8671

제가 밑에 적은 글에서 개구리님께서 답글을 적어주셔서 확인을 해보았습니다.

개구리 wrote..
: CS8900을 두개 다실때 다음을 점검해 보세요
:
: nCS3 ,nCS4 타이밍 설정 관련된 메모리 컨트롤러 설정 사항
: CS8900 의 초기화를 위한 LHE 핀 처리 문제
: CS8900의 주소는 0x0300을 더한 위치에서 시작하는 문제
:
: 이 부분을 모두 검토하시기 바랍니다

1. nCS3, nCS4등의 타이밍설정은 이지부트2.2의 기본설정을 그대로 사용하였습
니다. nCS4에 달린 칩은 제대로 인식을 하고있고요, nCS2와 nCS3가 타이밍이
같기때문에 nCS2에는 이지보드 기존의 CS8900이 달려있는데 잘 동작하고 있습
니다. 그런데 제가 추가한 것중의 하나인 nCS3는 제대로 인식이 안됩니다. ㅜ.
ㅡ
2. 제가 첨부한 소스코드에서도 0x0300을 더한 위치에서 CS8900의 주소가 시작
되게 수정되어 있습니다. 즉 nCS3,nCS4에 달린 칩모두 동작코드등은 동일하
고, 주소부분등만 수정되었는데, nCS3에 붙은것만 동작이 제대로 안됩니다.

3. CS8900의 칩 처리는 이지보드의 책자에 첨부된 CS8900의 책잘를 보고 nCS
와 GPIO만을 수정한것이라서 제대로 동작할것이라 생각되는데 nCS3만 동작이
안됩니다. (nCS4는 동작이 잘됩니다.)


4. 제가 수정한 사항들입니다.

1. ezboot/include/config.h

struct SConfig에서 다음 두줄을 추가한다.
Byte Local_MacAddress1[8]; // 보드 MAC Address
[xx:xx:xx:xx:xx:xx] default { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }
Byte Local_MacAddress2[8]; // 보드 MAC Address
[xx:xx:xx:xx:xx:xx] default { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }


2. ezboot/main/config.c

TConfig Cfg 에 다음 두줄을 추가한다.

Local_MacAddress1 : {0x01, 0xD2, 0xCA,
0xF1, 0x26, 0x25 }, // 보드 MAC Address1
[xx:xx:xx:xx:xx:xx]
Local_MacAddress2 : {0x03, 0xD4, 0xCA,
0xF1, 0x26, 0x25 }, // 보드 MAC Address2
[xx:xx:xx:xx:xx:xx]


char *CfgItemStr[] =
{
" 1. MAC Address [%02x:%02x:%02x:%02x:%02x:%02x]

",
" 2. LOCAL IP [%d.%d.%d.%d]

" ,
" 3. HOST IP [%d.%d.%d.%d]

" ,
" 4. Host tftp directory [%s]

" ,
" 5. zImage file name [%s]

" ,
" 6. ram disk file name [%s]

" ,
" 7. boot loader file name [%s]

" ,
" 8. zImage address on flash [0x%08x]

" ,
" 9. ramdisk address on flash [0x%08x]

" ,
" A. zImage address on memory [0x%08x]

" ,
" B. ramdisk address on memory [0x%08x]

" ,
" C. Autoboot wait time [%d]

" ,
" D. Boot Menu Key [%c]

" ,
" E. Kernel Command Line [%s]

" ,
" F. Architecture Number [%d]

" ,
" G. RAM Disk Size MBytes [%d]

" ,
" H. MAC Address1 [%02x:%02x:%02x:%02x:%
02x:%02x]
",
" I. MAC Address2 [%02x:%02x:%02x:%02x:%
02x:%02x]
",
" P.
Apply
" ,
" S.
Save
" ,
" 0.
Exit
" ,
};



while (1)
{
printf( "

" );
printf( CfgItemStr[ 0], SvCfg.Local_MacAddress[0],
SvCfg.Local_MacAddress[1], SvCfg.Local_MacAddress[2],
SvCfg.Local_MacAddress[3], SvCfg.Local_MacAddress[4],
SvCfg.Local_MacAddress[5] );
printf( CfgItemStr[ 1], (SvCfg.Local_IP>>0)&0xff,
(SvCfg.Local_IP>>8)&0xff, (SvCfg.Local_IP>>16)&0xff, (SvCfg.Local_IP>>24)
&0xff );
printf( CfgItemStr[ 2], (SvCfg.Host_IP >>0)&0xff,
(SvCfg.Host_IP >>8)&0xff, (SvCfg.Host_IP >>16)&0xff, (SvCfg.Host_IP >>24)
&0xff );
printf( CfgItemStr[ 3], SvCfg.TFTP_Directory );
printf( CfgItemStr[ 4], SvCfg.TFTP_zImageFileName );
printf( CfgItemStr[ 5], SvCfg.TFTP_RamDiskFileName );
printf( CfgItemStr[ 6], SvCfg.TFTP_LoaderFileName );
printf( CfgItemStr[ 7], SvCfg.FlashStart_Kernel );
printf( CfgItemStr[ 8], SvCfg.FlashStart_RamDisk );
printf( CfgItemStr[ 9], SvCfg.RamStart_Kernel );
printf( CfgItemStr[10], SvCfg.RamStart_RamDisk );
printf( CfgItemStr[11], SvCfg.AutoBootWaitTime );
printf( CfgItemStr[12], SvCfg.EntryBootLoaderKey );
printf( CfgItemStr[13], SvCfg.Kernel_CmdLine );
printf( CfgItemStr[14], SvCfg.Kernel_ArchNumber );
printf( CfgItemStr[15], SvCfg.Kernel_RamDiskSize >> 20 );
printf( CfgItemStr[16],
SvCfg.Local_MacAddress1[0], SvCfg.Local_MacAddress1[1],
SvCfg.Local_MacAddress1[2], SvCfg.Local_MacAddress1[3],
SvCfg.Local_MacAddress1[4], SvCfg.Local_MacAddress1[5] );
printf( CfgItemStr[17], SvCfg.Local_MacAddress2[0],
SvCfg.Local_MacAddress2[1], SvCfg.Local_MacAddress2[2],
SvCfg.Local_MacAddress2[3], SvCfg.Local_MacAddress2[4],
SvCfg.Local_MacAddress2[5] );
printf( "
" );
printf( CfgItemStr[18] );
printf( CfgItemStr[19] );
printf( CfgItemStr[20] );




switch ( rbuff[0] )
{
case '1' : GetMacAddress( CfgItemStr[0], (Byte *)&
(SvCfg.Local_MacAddress) ); break;
case '2' : GetIPAddress ( CfgItemStr[1], &
(SvCfg.Local_IP) ); break;
case '3' : GetIPAddress ( CfgItemStr[2], &
(SvCfg.Host_IP ) ); break;
case '4' : GetFileName ( CfgItemStr[3],
SvCfg.TFTP_Directory ); break;
case '5' : GetFileName ( CfgItemStr[4],
SvCfg.TFTP_zImageFileName ); break;
case '6' : GetFileName ( CfgItemStr[5],
SvCfg.TFTP_RamDiskFileName ); break;
case '7' : GetFileName ( CfgItemStr[6],
SvCfg.TFTP_LoaderFileName ); break;
case '8' : GetAddress ( CfgItemStr[ 7], &
(SvCfg.FlashStart_Kernel ) ); break;
case '9' : GetAddress ( CfgItemStr[ 8], &
(SvCfg.FlashStart_RamDisk) ); break;
case 'A' : case 'a' : GetAddress ( CfgItemStr[ 9], &
(SvCfg.RamStart_Kernel ) ); break;
case 'B' : case 'b' : GetAddress ( CfgItemStr[10], &
(SvCfg.RamStart_RamDisk ) ); break;
case 'C' : case 'c' : GetWaitTime( CfgItemStr[11], &
(SvCfg.AutoBootWaitTime ) ); break;
case 'D' : case 'd' : GetMenuKey ( CfgItemStr[12], &
(SvCfg.EntryBootLoaderKey) ); break;

case 'H' : case 'h' : GetMacAddress
( CfgItemStr[16], (Byte *)&(SvCfg.Local_MacAddress1) ); break;
case 'I' : case 'i' : GetMacAddress
( CfgItemStr[17], (Byte *)&(SvCfg.Local_MacAddress2) ); break;

case 'P' : case 'p' : // 적용한다.
memcpy( &Cfg, &SvCfg, sizeof(TConfig) );
printf( "
...Applyed" );
break;

case 'S' : case 's' : // 저장한다.
memcpy( &Cfg, &SvCfg, sizeof(TConfig) );
printf( "
" );
SaveConfig();
printf( "
...Saved" );
break;

case '0' : printf( "
" );
return 0; // exit
}


3. /ezboot/include/cs8900.h


//확장된 cs8900칩을 위해서 eth1
#define CS8900_BASE1 0x18000300 // 0x08000300
#define CS8900_RTX_DATA1 *((volatile short *)(CS8900_BASE1 +
0x00000000)) // RTx data.
#define CS8900_TXCMD1 *((volatile short *)(CS8900_BASE1 +
0x00000004)) // RTx command.
#define CS8900_TXLEN1 *((volatile short *)(CS8900_BASE1 +
0x00000006)) // transmit length.
#define CS8900_ISQ1 *((volatile short *)(CS8900_BASE1 +
0x00000008)) // interrupt.
#define CS8900_PPPTR1 *((volatile short *)(CS8900_BASE1 +
0x0000000a)) // packet page point.
#define CS8900_PPDATA1 *((volatile short *)(CS8900_BASE1 +
0x0000000c)) // packet page data.

//확장된 cs8900칩을 위해서 eth2
#define CS8900_BASE2 0x40000300 // 0x08000300
#define CS8900_RTX_DATA2 *((volatile short *)(CS8900_BASE2 +
0x00000000)) // RTx data.
#define CS8900_TXCMD2 *((volatile short *)(CS8900_BASE2 +
0x00000004)) // RTx command.
#define CS8900_TXLEN2 *((volatile short *)(CS8900_BASE2 +
0x00000006)) // transmit length.
#define CS8900_ISQ2 *((volatile short *)(CS8900_BASE2 +
0x00000008)) // interrupt.
#define CS8900_PPPTR2 *((volatile short *)(CS8900_BASE2 +
0x0000000a)) // packet page point.
#define CS8900_PPDATA2 *((volatile short *)(CS8900_BASE2 +
0x0000000c)) // packet page data.


4. /ezboot/main/cs8900.c

코드 길이가 많아서 위에서 제가 첨부한 코드를 봐주세요.


5. /ezboot/main/main.c

추가 코드
// CS8900을 초기화 한다.
CS8900_Init();

// CS8900 extend1를 초기화 한다.
CS8900_Init1();

// CS8900 extend2를 초기화 한다.
CS8900_Init2();

이렇게 수정하였습니다.
실제로 제대로 값이 나오지 않는 부분은 제가 수정해준 파일인
/ezboot/main/cs8900에서 추가한 부분인 BOOL CS8900_Init1( void )함수에서
DectectID = CS8900_PPPTR1;부분이 값이 제대로 들어가지가 않습니다.
다른 메모리 주소들은 모두 정확히 들어가는데 여기에서는 이상하게 잘 들어가
지 않네요.
제가 써준 코드들은 메모리 주소부분 말고는 nCS3와 nCS4가 모두 동일한데
nCS3만 동작을 안하니 정말 답답합니다. 고수님들 제가 하면서 뭐가 틀린것같
은지 혹은 의심가시는 부분있으시면 가차없이 적어주세요... 정말 부탁 드립니
다.
이 게시물을
  • Twitter
  • Facebook
  • Delicious
수정 삭제 목록

댓글 0

목록
번호 제목 글쓴이 날짜 조회 수
공지 포럼의 메뉴가 보이지 않아요! 장길석 2014.02.06 957649
공지 [중요 공지]제품 사용 및 기술 문의는 전화 상담을 받지 않습니다. 장길석 2012.11.09 1408540
공지 답글에 대한 공지 사항. falinux 2006.11.20 2424031
10801 [특판][성Y인Y용Y품][비아][시알][여성흥분제] 전부 1+1 vv8282.top 지금 확인해보세요~! dde33 2026.10.15 2
10800 요즘 잘 나가는,,, dde33 2026.09.12 843
10799 buildroot 사용 관련 로즈마리 2021.02.01 38166
10798 GPIO 제어 방법 문의 [1] 단순최고 2021.01.25 51084
10797 임베디드 리눅스 개발 보드 추천 nam 2019.12.06 48863
10796 make wandboard_quad 실행시 문제 gasi 2019.08.27 47084
10795 LCD 초기화 코드 좀 봐주세요 [1] 김용수 2019.07.12 63136
10794 임베디드 리눅스 커널 소스에 관해 질문드립니다 ! ekthatkxkd 2019.06.28 43727
10793 numpy,scipy 를 arm-linux-XXXX 로 크로스컴파일 하여 올릴수 있나요? 초보자 2019.06.24 49287
10792 I2C - deal with arbitration loss 오류가 궁금합니다. [1] S1eepingBeauty 2018.12.10 56771
10791 구형 EM-PXA270 보드 혹시 보유하시분 연락 주시면 감사드릴께요. file 존 2018.11.24 42753
10790 리눅스 GPIO 관련 센서의 단선 또는 고장유무 판별법이 궁금합니다. [2] S1eepingBeauty 2018.11.12 55126
10789 임베디드 리눅스에서 c 언어 디버깅 궁금합니다. [1] 존 2018.09.14 47072
10788 부팅 시간 문의 [1] nam 2018.06.29 45793
10787 fork()의 thread 멈추는 현상 [4] HwangRoy 2018.05.09 58615
10786 실행중 symbol not found 를 발생시키는 u-boot 본적 있으신가요 ? sayyouandme 2017.12.17 57348
10785 NOR Flash 질문! [1] Chanmini 2017.12.11 67069
10784 소스 해석 도와주세요 ... 남바완 2017.10.31 55610
10783 리눅스 드라이버 IRS에 관한 질문드립니다 [1] 김현수 2017.05.07 32388
10782 N200-S5PV210에 리눅스 커널 4.4.52 부팅이 안되네요.. 도와주세요.. [1] 성정기 2017.03.14 29209
첫 페이지 1 2 3 4 5 6 7 8 9 10 끝 페이지
쓰기
태그
부탁드립니다. ^^
  • 글을 작성하시려면 회원으로 가입하시고 로그인 하셔야 합니다.
  • 회원 가입은 주민등록번호가 필요 없으며, 메일 주소만 있으면 간단하게 가입하실 수 있습니다.
  • 본 포럼에 등록된 모든 글의 저작권은 작성하신 분께 있으며, 저작자의 허락 없이 다른 곳에 펌이나 도용하시면 안 됩니다.
  • 또한, 전자우편 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 이메일 주소 및 자료 수집되는 것을 거부하며,
  • 이를 위반 시 정보통신망 법에 의해 형사 처벌됨을 유념하시기 바랍니다.
  • FF 포럼
  • 강좌 & 팁
  • 함수설명
  • 자료실
  • 도와주세요