본문 바로가기

Programming/Linux_Kernel

[U-BOOT] U-BOOT 환경변수 설정을 위한 setenv, printenv 및 fw_setenv, fw_printenv


U-BOOT(the Universal Boot Loader, http://www.denx.de/wiki/U-Boot)의 경우 Kernel 및 User Application에서 상호 참조를 위한 공통의 데이터를 Flash Device에 저장하는 도구를 지원합니다.

이는 부트로더와 Kernel, Application이 상호 참조하여 동작하는 루틴이 필요할 경우 사용가능하며, 종류는 아래와 같습니다.

부트로더 자체에서 사용되는 커맨드인 setenv, saveenv, prientenv와 Tool로 사용할 수 있는 fw_printenv, fw_setenv가 바로 그것이며 오늘은 이들 중 fw_setenv, fw_printenv의 사용법을 알아보겠습니다.

해당 소스는 U-BOOT소스트리 내의 tool/env 디렉토리에 존재하며, tool 디렉토리의 Makefile에 env를 tool에 추가함으로서 U-BOOT과 함께 빌드할 수 있습니다.

기본적인 사용방법은 cmd인 setenv, saveenv, printenv와 동일하며 setenv+saveenv인 fw_setenv로 한번에 추가 및 저장이 가능합니다.

기본적으로 MTD를 이용하여 저장이 되도록 구현되어있지만 원하는 Device에 저장하려면 fw_printenv를 직접 수정하거나, fw_config 라는 설정파일을 /etc 아래 위치시켜서 동적으로 원하는 Device의 특정 위치에 저장할 수 있도록 수정해서 사용할 수 있습니다.

빌드 후 생성되는 fw_printenv를 fw_setenv라는 이름으로 링크한 뒤(즉, 사실은 fw_printenv로 빌드된 binary에 fw_setenv까지 수행할 수 있도록 되어있습니다.) 사용하실 수 있습니다.