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
이 오류는 보드 깜박임 문제와 관련이 있습니다. 즉:
실수로 새 이미지를 새로 고쳤습니다. 삭제하지 않았습니다.모두플래시
새 이미지를 플러시합니다. 작성한 지우기 블록만 삭제하고 나머지 지우기 블록은 삭제하지 않습니다.
나는 상상할 수있다
- 당신은 당신의
nand erase
또는를 생략했습니다 - NAND에 불량으로 표시된 블록이 있는 이미지를 쓴 다음 NAND에 불량으로 표시된 N-1 블록이 있는 동일한 이미지를 씁니다. 현재 이미지가 끝나면 이전 이미지의 끝부분에 1블록이 남게 되며 덮어쓰지 않습니다.