NAND 플래시 장치에서 불량 블록 목록을 검색하고 덤프할 수 있는 사용자 공간 도구가 있습니까? mtdinfo
명령줄 유틸리티를 확인 하고 검색 /proc
도 했지만 /sys
아무것도 찾을 수 없었습니다.
쉘 스크립트에서 사용하기에 적합한 것을 찾고 있습니다.
커널을 분석하여 init에서 불량 블록 정보를 인쇄할 수 있지만 dmesg
더 나은 방법이 있기를 바랍니다.
답변1
필요한 작업을 수행하는 데 필요한 사용자 공간 유틸리티를 찾을 수 없습니다. 내가 찾은 가장 가까운 nanddump
유틸리티는mtd-utils, 불량 블록을 포함한 NAND 콘텐츠를 덤프할 수 있습니다.
답변2
최근에 이 문제가 발생하여 오픈 소스 mtd-utils를 참조하여 C 코드를 작성했습니다. 핵심 부분은 다음과 같습니다.
offset = 0;
while (1) {
int rc = ioctl(fd, MEMGETBADBLOCK, &offset);
if (rc < 0) {
perror("Failed to check bad block");
close(fd);
return 1;
} else if (rc > 0) {
// Block is bad, print the block information
printf("Bad block at offset 0x%llx \n", offset);
}
offset += mtd_info.erasesize;
if (offset > mtd_info.size)
break;
}