생성된 UBI 바이너리를 사용하여 NAND 프로그래밍

생성된 UBI 바이너리를 사용하여 NAND 프로그래밍

우리 시스템은 처음 부팅할 때 NAND에 생성되는 UBI 파티션을 생성합니다. 시스템은 그곳에서 파일을 읽고 쓸 수 있습니다. 저는 NAND "깡패" 프로그래머가 사용할 수 있는 바이너리를 생성하여 일부 파일로 파티션을 미리 프로그래밍할 수 있도록 노력하고 있습니다.

폴더/화재 구조를 만들고 다음 두 명령을 사용합니다.

mkfs.ubifs -r ./files -m 2048 -e 126976 -c 2047 -o ubifs.img 
ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 ubinize.cfg

ubinize.cfg: 
[files] 
mode=ubi 
vol_id=0 
vol_type=dynamic 
vol_name=fs 
vol_flags=autoresize 
image=ubifs.img

내 파일을 테스트하기 위해 uboot를 사용하여 올바른 오프셋에 ubi.img를 작성하고 시스템을 부팅했습니다. 시스템이 유효한 파일이 포함된 새로운 UBIFS 파티션을 발견했습니다! 응!

문제: 파티션의 내용을 변경하거나 새 파일을 터치하고 재부팅하는 경우 파티션이 마운트되지 않고 수많은 ECC 오류가 발생한다고 주장합니다.

$ log | grep UBI
05:00:59 PM  [    INFO] [        kernel] UBIFS: background thread "ubifs_bgt1_0" started, PID 306
05:00:59 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:00:59 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM  [   ERROR] [        kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM  [   ERROR] [        kernel] UBIFS error (pid 304): ubifs_scan: bad node
05:01:00 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM  [   ERROR] [        kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:01 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:01 PM  [ WARNING] [        kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:02 PM  [   ERROR] [        kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:00:00 PM  [   ERROR] [        kernel] UBIFS error (pid 304): ubifs_recover_master_node: failed to recover master node
05:00:00 PM  [   ERROR] [        kernel] UBIFS error (pid 304): ubifs_recover_master_node: dumping first master node
05:00:00 PM  [    INFO] [        kernel] UBIFS: background thread "ubifs_bgt1_0" stops

  [스크린샷]

UBI 이미지를 만들 때 내가 망친 아이디어가 있나요?

답변1

실시간 FM! -F 매개변수는 위에 나열된 오류를 수정했습니다.

http://www.linux-mtd.infradead.org/faq/ubifs.html#L_free_space_fixup

또한, ubi_reader 도구는 mkfs 및 ubinize의 다양한 매개변수를 이해하는 데에도 매우 도움이 됩니다.

https://github.com/jrspruitt/ubi_reader

관련 정보