u-boot가 불량 블록을 표시하는 방법

u-boot가 불량 블록을 표시하는 방법

Arm 기반 보드(wb45n)의 U-boot에서는 블록을 수동으로 지운 다음 불량으로 표시합니다.

U-Boot> 낸드 지우기 0x00720000 20000

NAND 삭제: 장치 0 오프셋 0x00720000, 크기 0x20000이
0x720000에서 삭제됨 - 100% 완료.
OK
U-Boot> nand markbad 0x00720000
블록 0x00720000 성공적으로 불량으로 표시됨
U-Boot> nand 불량
>
장치 0 불량 블록:
00720000

나는 소프트웨어를 작성하고 그 과정에서 불량 블록이 건너뛰는 것을 볼 수 있습니다.

NAND 쓰기: 장치 0 오프셋 0x5e0000, 크기 0x16c0000
불량 블록 건너뛰기 0x00720000
23855104바이트 쓰기: OK

소프트웨어가 작성된 후 재부팅했더니 불량 블록이 사라졌습니다.

U-Boot> nand 불량
>
Device 0 불량 블록:
U-Boot>

자동으로 수정된 것 같습니다. 블록을 불량으로 표시하기 전에 블록을 지우지 않으면 소프트웨어를 성공적으로 작성할 수 있지만 (항상 그런 것은 아니지만 종종) 커널 부팅 중에 다음 오류가 발생합니다. (이것이 왜 생성되는지 잘 모르겠습니다. 오류 메시지, 설명 환영)

UBI 오류: scan_peb: PEB 175의 잘못된 이미지 일련 번호 1748114077, 1578922167 예상

카운터 헤더 덤프 삭제:

    magic          0x55424923
    version        1
    ec             1
    vid_hdr_offset 2048
    data_offset    4096
    image_seq      1748114077
    hdr_crc        0x285278f

커널 시작...

Linux 포장 풀기...완료, 커널 부팅.

삭제에 추가됨: PEB 0, EC 0 UBI 오류: ubi_compare_lebs: 지원되지 않는 플래시 UBI 형식
UBI 오류: ubi_attach_mtd_dev: mtd6을 연결할 수 없습니다. 오류 -22
UBI 오류: ubi_init: mtd6을 연결할 수 없습니다.
UBIFS 오류(pid 1): ubifs_mount: 사용할 수 없습니다. 'ubi0:rootfs'를 열려면 오류 -19
커널 패닉 - 비동기화: VFS: 알 수 없는 블록(0,0)에 루트 fs를 마운트할 수 없습니다.

내가 원하는 것은 마더보드를 테스트하고 실패하기 전에 얼마나 많은 불량 블록을 처리할 수 있는지 확인하는 것입니다.

불량 블록을 올바른 방법으로 표시하고 있나요?
불량 블록은 왜 사라지나요?
지속되는 불량 블록을 표시하는 방법이 있습니까?
마지막 오류는 무엇을 의미하나요?

답변1

https://community.nxp.com/thread/334536#comment-453692

이 오류는 보드 깜박임 문제와 관련이 있습니다. 즉:

  1. 실수로 새 이미지를 새로 고쳤습니다. 삭제하지 않았습니다.모두플래시

  2. 새 이미지를 플러시합니다. 작성한 지우기 블록만 삭제하고 나머지 지우기 블록은 삭제하지 않습니다.

나는 상상할 수있다

  • 당신은 당신의 nand erase또는를 생략했습니다
  • NAND에 불량으로 표시된 블록이 있는 이미지를 쓴 다음 NAND에 불량으로 표시된 N-1 블록이 있는 동일한 이미지를 씁니다. 현재 이미지가 끝나면 이전 이미지의 끝부분에 1블록이 남게 되며 덮어쓰지 않습니다.

관련 정보