빌드에 반영된 베어 메탈 코드를 변경하는 방법은 무엇입니까?

빌드에 반영된 베어 메탈 코드를 변경하는 방법은 무엇입니까?

문제: 부트로더 소스 코드에서 autoboot_timeout 매개변수를 줄입니다.

강화 보드 ---> phyBoard-Segin i.MX6UL/ULL

현재 부팅 시간은 약 14초이며 자동 시작 시간 초과로 인해 3초가 추가됩니다. 제한 시간을 1로 줄여야 합니다.

방법 1:

@부트로더:

CD /env/nv

엘에스

barebox@Phytec phyCORE-i.MX6 Ultra Lite SOM(NAND 포함): /env/nv ls
. ..allow_color
autoboot_timeout
bootchooser.state_prefix bootchooser.system0.boot
bootchooser.system1.boot bootchooser.targets
dev.eth0.ipaddr dev.eth0.linux.devname
dev.eth0.mode dev.eth0.netmask
dev.eth0.serverip dhcp.vendor_id
linux.bootargs.base linux.bootargs.rootfs
net.gateway 사용자
barebox@Phytec phyCORE-i.MX6 Ultra Lite SOM(NAND 포함): /env/nv

autoboot_timeout을 1로 수정했습니다.

환경을 저장합니다.

이 방법은 효과가 있으며 확인했습니다. 이제 베어메탈 소스 코드에서 동일한 변경을 수행하고 이를 반영하고 싶습니다. [프로젝트 요구 사항에 따라 동일한 변경은 여기가 아니라 소스 코드에서 이루어져야 합니다.]

여기에서 변경한 모든 내용을 되돌립니다.

방법 2:

bitbake barebox -c devshell

CD defaultenv/defaultenv-2-base/bin/

초기화 파일을 편집하고 자동 시작 시간 초과 매개변수를 1로 변경했습니다.

단편:

root@hp15t:~/yocto/build/tmp/work/phyboard_segin_imx6ul_2-phytec-linux-gnueabi/barebox/2019.01.0-phy7-r7.0/git/defaultenv/defaultenv-2-base/bin# cat init #! /bin/sh

내보내기 경로=/env/bin

전역 호스트 이름 전역 사용자 전역 autoboot_timeout 전역 autoboot_abort_key 전역 boot.default 전역 linux.bootargs.base 전역 linux.bootargs.console #linux.bootargs.dyn.* 시작이 시작되면 지워집니다. 전역 linux.bootargs.dyn.ip 전역 linux. bootargs.dyn.root 전역 editcmd

[ -z "${global.hostname}" ] && global.hostname=generic [ -z "${global.user}" ] && global.user=none Magicvar -a global.user "사용자 이름(네트워크 파일 이름에서) ) " [ -z "${global.autoboot_timeout}" ] &&에 사용됨global.autoboot_timeout=1 Magicvar -a global.autoboot_timeout "자동 시작 전 시간 초과(초)" [ -z "${global.autoboot_abort_key}" ] && global.autoboot_abort_key=any Magicvar -a global.autoboot_abort_key "자동 시작을 중단하는 키(유효한 옵션: any , ctrl-c)" [ -z "${global.boot.default}" ] && global.boot.default=net [ -z "${global.editcmd}" ] && global.editcmd=sedit

[ -e /env/config-board ] && /env/config-board /env/config

변경 사항을 저장한 후(변경한 매개변수 강조 표시) 다음 명령을 실행합니다.

bitbake barebox -c 컴파일 --force

bitbake barebox -c 배포

bitbake <이미지 이름>

확인해보니 변경사항이 반영되지 않았습니다.

원하는 시나리오 - 시간 제한이 1이어야 하고 보드가 부팅되어야 합니다.

장면을 얻었습니다. 여전히 3초가 걸리고 시작됩니다.

답변1

많은 고민과 검색 끝에 이것을 발견했습니다. 변경 사항을 반영하기 위해 부트로더에서 환경을 업데이트하는 것을 잊었습니다.

defaultenv/defaultenv-2-base/bin/init 경로의 파일을 위와 같이 변경합니다.

변경 사항을 저장하다.

자식 상태

git add <경로의 각 파일 이름>

git commit -m "[커밋에 대한 올바른 메시지 삽입]"

git show 또는 git status [변경 사항이 있는지 확인하기 위한 것입니다.]

출구

bitbake barebox -c compile --force && bitbake barebox && bitbake barebox -c 전개

bitbake <이미지 이름>

SD 카드 이미지를 새로 고칩니다.

yocto에서 다음 경로를 따르세요.

CD /배포/이미지/[버전]/

cp barebox.bin /home/<이름>/boot

@부트로더:

barebox_update -t ​​및 barebox.bin

/dev/nand0.barebox-environment.bb를 닦아냅니다. [기존 환경을 지워야 합니다.]

환경을 저장하다

초기화

이제 변경 사항이 반영됩니다.

부트로더에서 교차 확인할 수 있습니다.

CD /환경/빈/

cat init [autoboot_timeout을 확인하세요. 기본값은 3, 1로 변경되었습니다.]

관련 정보