리눅스에서 u 부트 환경에 어떻게 접근하나요?

리눅스에서 u 부트 환경에 어떻게 접근하나요?

Linux에서 u-Boot 환경 변수에 액세스하고 변경하는 방법. u 부트 디렉토리의 u-boot/tools/env 디렉토리를 사용하십시오:

u-boot$ make env 

그 안에 실행 파일이 생성됩니다 fw_printenv. /usr/sbin 및 대상 etc/fw_env.config 파일에 복사했습니다.


# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundand
# environment sector is assumed present.
# MTD device name     Device offset    Env. size    Flash sector size
/dev/mtd0          0x00000                0x20000         0x20000

target#./fw_printenv
SEGV

이 오류의 원인은 무엇입니까?

/proc/mtd

dev:    size   erasesize  name                                                  
mtd0: 00020000 00020000 "flash_uboot_env"                                       
mtd1: 002e0000 00020000 "flash_linux_image"                                     
mtd2: 00900000 00020000 "flash_jffs2"                                           
mtd3: 00900000 00020000 "flash_data"

답변1

당신의 fw_env.config것은 나와 다릅니다. 내 u-boot 환경은 0x00260000-0x00280000 범위에 있습니다. 내가 기억하는 것처럼 fw_env 파일은 매우 민감하며 일부 열을 잊어버린 경우 fw_setenv는 모든 종류의 이상한 오류를 일으킬 수 있는 일부 기본값으로 대체됩니다.

참고로 여기 내 fw_env.config가 있습니다.

root@linux:~# cat /etc/fw_env.config 
# Dev. name    offset    env. size     flash sector size    nbr. sectors
  /dev/mtd1    0x00      0x2000        0x20000              1

크로스 컴파일 strace하여 문제 해결에 사용할 수 있습니다.

관련 정보