지금 flash.c 를 수정중 입니다.
flash는 HY29LV160 입니다. AM29LV160과 비슷 합니다.
대충 소스를 작성 했는데 몇가지 의문 사항이 있어서 문의 드립니다.
용량은 2M Byte이고 섹터는 32섹터로 처리 했습니다.
bottom부분의 쪼개진것은 합쳐서 하나로 만들어 버리구요.
smdk2400.h에서 아래 선언문의 내용을 잘 모르겠습니다.
/* Address and size of Primary Environment Sector */
#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x40000)
#define CFG_ENV_SIZE 0x10000
/* Address and size of Redundant Environment Sector */
#define CFG_ENV_ADDR_REDUND (CFG_ENV_ADDR + CFG_ENV_SIZE)
#define CFG_ENV_SIZE_REDUND (CFG_ENV_SIZE)
Environment 데이터를 저장하는 공간인것 같은데 얼마로 주어야 될지 모르겠습니다.
그리고 부팅시에
*** Warning - bad CRC, using default environment
란 말이 계속 나오는데 아마 이것도 Environment 가 잘못 저장 된것이란 말같은데.
아래가 부팅 메세지 입니다.
======================================================
ASG 2400 U-BOOT PROJECT Ver 0.9
======================================================
U-Boot 1.0.0 (Feb 16 2004 - 20:01:20)
U-Boot code: 0CF00000 -> 0CF15EC0 BSS: -> 0CF19754
======================================================
DRAM Configuration:
Bank #0: 0c000000 32 MB
Flash: 2 MB
======================================================
*** Warning - bad CRC, using default environment 이말이 나오는 이유좀 분석해주세요
In: serial
Out: serial
Err: serial
======================================================
ASG2400> crc32 <font color=red>이게 뭐하는 거지요?<font>
Usage:
crc32 - checksum calculation
ASG2400> flinfo
Bank # 1: HYNIX: 1x HY29LV160 (16Mbit)
Size: 2 MB in 32 Sectors
Sector Start Addresses: 0x40000,0x50000번지대가 env영역인것 같은데.
00000000 (RO) 00010000 (RO) 00020000 00030000 00040000 (RO)
00050000 (RO) 00060000 00070000 00080000 00090000
000A0000 000B0000 000C0000 000D0000 000E0000
000F0000 00100000 00110000 00120000 00130000
00140000 00150000 00160000 00170000 00180000
00190000 001A0000 001B0000 001C0000 001D0000
001E0000 001F0000
ASG2400> saveenv 저장 합니다.
Saving Environment to Flash...
Un-Protected 1 sectors
Un-Protected 1 sectors
Erasing Flash...
Erase Flase [05-05]
Erasing sector 05 0x00050000
Erased 1 sectors
Writing to Flash...
WRITE BUFFER 00050005,0000FFFB data
WRITE BUFFER 00050000,00000004 CRC
WRITE BUFFER 00040004,00000001 flag
WRITE BUFFER 00050004,00000001 flag new??
done
Protected 1 sectors
Protected 1 sectors
ASG2400> md 0x50000
00050000: 2d1544fc 6f6f0162 6c656474 333d7961 .D.-b.ootdelay=3
00050010: 75616200 74617264 31313d65 30303235 .baudrate=115200
00050020: 68746500 72646461 3a38303d 333a3030 .ethaddr=08:00:3
00050030: 36323a65 3a61303a 69006235 64646170 e:26:0a:5b.ipadd
00050040: 39313d72 36312e32 2e302e38 73003232 r=192.168.0.22.s
00050050: 65767265 3d706972 2e323931 2e383631 erverip=192.168.
00050060: 33332e30 74656e00 6b73616d 3535323d 0.33.netmask=255
00050070: 3535322e 3535322e 7300302e 6e696474 .255.255.0.stdin
00050080: 7265733d 006c6169 6f647473 733d7475 =serial.stdout=s
00050090: 61697265 7473006c 72726564 7265733d erial.stderr=ser
000500a0: 006c6169 00000000 00000000 00000000 ial.............
000500b0: 00000000 00000000 00000000 00000000 ................
000500c0: 00000000 00000000 00000000 00000000 ................
000500d0: 00000000 00000000 00000000 00000000 ................
000500e0: 00000000 00000000 00000000 00000000 ................
000500f0: 00000000 00000000 00000000 00000000 ................
ASG2400>
======================================================
ASG 2400 U-BOOT PROJECT Ver 0.9
======================================================
U-Boot 1.0.0 (Feb 16 2004 - 20:01:20)
U-Boot code: 0CF00000 -> 0CF15EC0 BSS: -> 0CF19754
======================================================
DRAM Configuration:
Bank #0: 0c000000 32 MB
Flash: 2 MB
======================================================
*** Warning - bad CRC, using default environment재부팅시 또 CRC에러??
In: serial
Out: serial
Err: serial
======================================================
ASG2400>
혹 상위 하위가 잘못저장된것은 아닌지??
무지 헷갈리네요.
혹시 2410보드에 uboot올리신분 env 영역 덤프 한것좀 올려 주세요.
첫댓글 큰 상관이 없습니다...그냥 쓰세요...
에고 열라 추적하다가 경비 아저씨가 나가라고 그래서리.. 잉.. 왜 그러는거야,, 내일 기필고 잡고야 말겠습니다. 워드 얼라인이 맞지 않을지도 모르겠네요. 홀수 부터 시작 할때와 한바이트 쓸때 16bit로 만들어 주는 부분이 잘못된 것일수도..
제가 드린 flash.c의 570 line 쯤에 Hynix VENDMARK를 추가 하시면 되는데 이것은 /include/flash.h에 정의가 되어 있습니다. 불행히도 hynix건 define이 없네요, data sheet를 보고 맞추시거나 아님 그냥 강제로 unknown_flash 구문을 없애버리세요. 그럼 될 것 같네요
넵.. 내일 한번 해보도록 하겠습니다. 그래도 삽질하다보니 u-boot 이리저리 디버깅 코드 넣어가면서 관련 함수 찾아보니 도움은 되네요. 성공하면 알려 드릴께요. 감사 합니다.
재미있는것이 또 있네요. 저만 그러는건지 md command에서 홀수 번지를 넣으니 가버리네요. ^_^; md 0x50001 하니까 재미있는 일이 벌어지는군요.. 우찌 이런 일이...