도와주세요!!
아는게 없어서 아직은 배우고만 있습니다. 조그만 도움이라도 부탁드립니다.
U-BOOT에 LAN91C111 이더넷 드라이버를 추가하여 PXA255 보드에서 동작시킬려고 합니다.
진행사항
1. includ/configs/pxa_test.h (u-boot 소스 트리) 헤어 파일 추가사항
=========================================================================
#define CONFIG_DRIVER_SMC91111 1
#define CONFIG_SMC91111_BASE 0x04000300 ( MSC1 address는 0x4000000 임 )
#define CONFIG_SMC_USE_32_BIT 1
#define CONFIG_CMD_PING 1
=========================================================================
2. GPIO 설정( LAN91C111 관련)
=========================================================================
AEN <--> GPIO_15/nCS1_ETH
nRD <--> nOE
nWR <--> GPIO_49/nPWE
RESET <--> GPIO_5/ETH_RESET
=> 아래와 같이 설정 하였습니다.
AEN : GPDR(OUT설정) , GPCR(LOW로 출력),GAFR(설정해줌)
nWR : GPDR(OUT설정), GPSR(HIGH로 출력), GAFR(설정해줌)
RESET : GPDR(OUT설정) , GPSR(HIGH로 출력) 로 했다가 GPCR(LOW로 출력)으로 해줌.
=========================================================================
3. printenv 라고 치면 아래와 같이 설정되어 있구요
=========================================================================
bootargs=root=/dev/mtdblock2 rootfstype=cramfs console=ttyS0,115200
bootcmd=bootm=0x100000
bootdelay=2
baudrate=115200
ipaddr=192.168.100.10
serverip=192.168.100.50
netmask=255.255.255.0
ethaddr=08:00:3e:26:0a:5b
stdin=serial
stdout=serial
stderr=serial
Environment size: 254/16380 bytes
=========================================================================
4. 이렇게 해주고 "ping 192.168.100.50" 이렇게 ping test를 하였는데 아래와 같이 에러가 납니다.
=========================================================================
testlinux$ ping 192.168.100.50
SMC91111: smc_close
LAN91C111: smc_shutdown
SMC91111: smc_open
SMC91111: smc_reset
SMC91111: smc_enable
SMC91111: smc_program_phy()
smc_write_phy_register(): phyaddr=0,phyreg=0,phydata=8000
BIT#:01234567890123456789012345678901234567890123456789012345678901234
MDOE:11111111111111111111111111111111111111111111110011111111111111110
MDO :11111111111111111111111111111111010100000000000010000000000000000
MDI :00000000000000000000000000000000000000000000000000000000000000000
smc_read_phy_register(): phyaddr=0,phyreg=0,phydata=0
BIT#:0123456789012345678901234567890123456789012345678901234567890123
MDOE:1111111111111111111111111111111111111111111111000000000000000000
MDO :1111111111111111111111111111111101100000000000000000000000000000
MDI :0000000000000000000000000000000000000000000000000000000000000000
smc_write_phy_register(): phyaddr=0,phyreg=13,phydata=ffff
BIT#:01234567890123456789012345678901234567890123456789012345678901234
MDOE:11111111111111111111111111111111111111111111110011111111111111110
MDO :11111111111111111111111111111111010100000100110011111111111111110
MDI :00000000000000000000000000000000000000000000000000000000000000000
smc_read_phy_register(): phyaddr=0,phyreg=1,phydata=0
BIT#:0123456789012345678901234567890123456789012345678901234567890123
MDOE:1111111111111111111111111111111111111111111111000000000000000000
MDO :1111111111111111111111111111111101100000000001000000000000000000
MDI :0000000000000000000000000000000000000000000000000000000000000000
==================== 중략 ====================
smc_read_phy_register(): phyaddr=0,phyreg=1,phydata=0
BIT#:0123456789012345678901234567890123456789012345678901234567890123
MDOE:1111111111111111111111111111111111111111111111000000000000000000
MDO :1111111111111111111111111111111101100000000001000000000000000000
MDI :0000000000000000000000000000000000000000000000000000000000000000
SMC91111: PHY auto-negotiate timed out
Warning: MAC addresses don't match:
HW MAC address: 50:00:01:00:50:3A
"ethaddr" value: 08:00:3E:26:0A:5B
Using MAC Address 08:00:3E:26:0A:5B
SMC91111: smc_hardware_send_packet
SMC91111: memory allocation, try 1 failed ...
SMC91111: memory allocation, try 2 failed ...
SMC91111: memory allocation, try 3 failed ...
SMC91111: memory allocation, try 4 failed ...
SMC91111: memory allocation, try 5 failed ...
SMC91111: smc_rcv
RCV: STATUS a LENGTH 0
Reading 16383 dwords (and 0 bytes)
=========================================================================
위의 빨간 에러 내용을 소스를 찾아봐도 잘 모르겠네요.
도움좀 부탁드립니다.
아~ 추가로 질문 하나만 더 드릴게요. 염치없네요..
Host PC 즉 윈도우 XP상에서 tftp 서버 프로그램을 구동시켰습니다.
이때 시작->설정->네트워크 연결에서 해당 이더넷 카드의 tcp/ip 속성에서 Serverip와 넷마스크를 설정하였는데요 gateway는
설정을 꼭 해야되나요? 아니면 안해도 되는지요?
이상입니다. 좋은 하루되세요.
말씀해주신대로 GPIO_49/nPWE 핀은 얼터펑션 nPWE로 설정하였고 VLIO로 설정을 하였습니다. 버스폭도 32bit로 하였구요.
RDY 핀은 회로도면 중에 아래와 같이 되어 있습니다.
그런데 위 본문의 SMSC91111 회로도랑 RDY(GPIO18) 핀이 어떻게 연결되는지 모르겠네요. 그냥 볼때는 연결이 안되어
있는것 같습니다.. 아무튼 RDY 핀은 지금 현재 Full-up 상황으로 되어 있습니다. 잘못생각하고 있다면 지적 부탁드립니다.
저도 이지부트를 사용하고 싶은데 현재 U-boot를 해야되는 상황이라서요..
사용해보진 않았지만 소스와 주석이 명확해서 좋은것 같습니다. 부트로더 볼때 많이 참고하고 있습니다.
감사합니다. 좋은 하루 되세요.
GPIO_49/nPWE 핀은 얼터네이트 펑션으로 설정하셔야 합니다.
GPIO49 의 얼터평션중 nPWE 로 설정하세요
RDY 핀도 GPIO 이니까 이것도 RDY 로 동작하도록 설정하세요
그리고 SMSC91111 이 연결된 nCS? 를 VLIO 로 설정하셔야 합니다.
그리고 버스폭도 32비트로 설정하시구요
하실게 많네요
이지부트사용하시면 될텐데 저희 부트로더가 부족한점이 있다면 지적해 주세요 ^^