fw_printenv는 uboot에 포함된 tool이다
uboot/tool/env 에 존재하는 녀석인데
ethaddr을 값을 변경하려고 하니 에러가 발생하였다.
fw_setenv()의 리턴값은 30인데 아마도 EROFS가 30인듯 하다(errno.h에서는 발견하지 못한 변수이다.)
눈에 들어온 부분은 아래의 strcmp() 이다.
아무튼, uboot에서 기본적으로 ethaddr과 serial#을 지원하고
이값들은, 한번만 write되고 수정되서는 안되기 때문에 제약사항으로 묶어놓은 듯 하다.
uboot/tool/env 에 존재하는 녀석인데
ethaddr을 값을 변경하려고 하니 에러가 발생하였다.
fw_setenv()의 리턴값은 30인데 아마도 EROFS가 30인듯 하다(errno.h에서는 발견하지 못한 변수이다.)
눈에 들어온 부분은 아래의 strcmp() 이다.
01 | /* |
02 | * Delete any existing definition |
03 | */ |
04 | if (oldval) { |
05 | /* |
06 | * Ethernet Address and serial# can be set only once |
07 | */ |
08 | if (( strcmp (name, "ethaddr" ) == 0) || |
09 | ( strcmp (name, "serial#" ) == 0)) { |
10 | fprintf (stderr, "Can't overwrite \"%s\"\n" , name); |
11 | return (EROFS); |
12 | } |
13 |
14 | if (*++nxt == '\0' ) { |
15 | *env = '\0' ; |
16 | } else { |
17 | for (;;) { |
18 | *env = *nxt++; |
19 | if ((*env == '\0' ) && (*nxt == '\0' )) |
20 | break ; |
21 | ++env; |
22 | } |
23 | } |
24 | *++env = '\0' ; |
25 | } |
아무튼, uboot에서 기본적으로 ethaddr과 serial#을 지원하고
이값들은, 한번만 write되고 수정되서는 안되기 때문에 제약사항으로 묶어놓은 듯 하다.
'프로그램 사용 > u-boot' 카테고리의 다른 글
uboot tftp 부팅시 decompress 에러 (0) | 2010.01.22 |
---|---|
uboot bootargs 에 kernel argument 넘기기 (0) | 2009.12.30 |
ifup / ifdown + busybox (0) | 2009.08.17 |
U-Boot 환경변수 읽어오기 (u-boot environment variable) (0) | 2009.07.18 |
u-boot의 환경변수 읽어 오기 (0) | 2009.03.25 |