임베디드 장치가 있습니다. ARM을 기반으로 하며 Linux 2.6.31을 실행하고 256MB RAM을 갖추고 있습니다.
장치 RAM의 데이터 손상을 테스트하는 가장 효과적인 방법에 대한 몇 가지 아이디어/팁을 원합니다. 누구든지 테스트/소프트웨어를 추천할 수 있나요?
노트:
지금은 멤테스터가 있어요. 나는 Ulrich Dangel(아래)의 조언에 따라 그것을 얻었습니다.
mtest
지금은 uboot에서도 설정했습니다 .
사용할 수 있는 다른 테스트/방법이 있습니까?
답변1
메모리 테스트를 위한 일반적인 솔루션은 특정 패턴을 0xFFFFFFFF
메모리에 기록한 다음 결과를 읽고 비교하는 것입니다. 문제를 발견하기 위해 패턴을 변경할 수 있고 변경해야 합니다. 일부 솔루션은 memtest86+
무작위 패턴을 생성하고 메모리에 기록되는 방향을 변경하기도 합니다. memtest86에 사용된 알고리즘에 대한 자세한 내용은 해당 항목을 확인하세요.기술 페이지. 이 문서에서 제공되는 모든 솔루션은 기본적으로 동일한 기본 아이디어를 사용합니다.
Linux에서 테스트를 실행하려면(포스트에서 Linux를 언급했습니다) 다음을 확인하세요.메모리 테스터그리고메모리 테스트 스위트둘 다 팔과 함께 작동해야 합니다. 먼저 사용해야합니다메모리 테스터기본적으로 요청한 내용을 정확하게 수행하기 때문입니다.
Linux 내에서 메모리를 테스트하는 데는 몇 가지 단점이 있습니다. 예를 들어 커널에도 메모리가 필요하기 때문에 실제로 모든 물리적 메모리를 테스트할 수는 없습니다. uboot(리눅스 커널보다 훨씬 작음)를 사용하여 메모리를 테스트하려면 통합된시험주문하다. 주소 범위, 패턴 및 반복을 지정할 수 있습니다. 그리고시험운영 체제에 의존하지 않고도 상당히 광범위한 테스트를 수행할 수 있어야 합니다. 유효한 메모리 범위를 사용하고 있는지 확인하기만 하면 됩니다. 그렇지 않으면 uboot
메모리 영역을 덮어쓸 수 있습니다.
테스트를 수행하는 경우시험이것이 충분하지 않다면 물론 uboot를 확장하고 추가 메모리 테스트 기능을 uboot에 통합할 수 있습니다.
답변2
Das U-Boot는 아마도 ARM 보드에서 가장 널리 사용되는 부트로더이며 일부 메모리 테스트 기능을 포함하고 있습니다.
흥미롭게도 그읽어보기 파일더 이식성이 뛰어나고/또는 더 효율적인 대안을 제안하십시오.
이러한 시스템에 스트레스를 주는 가장 잘 알려진 테스트 사례는 NFS를 통해 루트 파일 시스템을 마운트하여 Linux를 부팅한 다음 로컬로 더 큰 패키지를 빌드하는 것입니다(예: 시스템에서 Linux 커널 컴파일). 이로 인해 충분한 컨텍스트 전환이 발생합니다. 네트워크 트래픽(및 네트워크 컨트롤러의 DMA 전송), 다양한 RAM 사용량 등이 이 영역의 약점을 유발할 수 있습니다.
CONFIG_MEMTEST=y
Linux 커널을 빌드할 때 내장 메모리 테스트를 빌드하는 옵션에 관심이 있을 수 있습니다 . 이는 x86 아키텍처에서만 작동했지만 최근 버전은 다른 아키텍처, 어쩌면 ARM도 지원한다고 생각합니다.
이것메모리 테스터도구가 구축되어 사용 가능일부 Linux 배포판, ARM을 포함한 다양한 아키텍처에 적합합니다.
이것커널 메모리 테스트프로젝트에 관심이 있을 수도 있습니다.
어떤 도구도 실행 중인 메모리를 테스트할 수 없으며(따라서 실행 중인 운영 체제의 프로그램에는 심각한 사각지대가 있음) 기본 읽기/쓰기 테스트로는 모든 유형의 결함이나 기타 오류가 드러나지 않는다는 점을 명심하세요. 그에 따라 기대치를 설정하고 불량 메모리가 의심되는 이유가 있는 경우 몇 가지 다른 테스트 도구를 사용해 보십시오.