IoT 프로그램 메모리 응용 분야에 적합한 플래시 메모리 기술 선택 및 사용
DigiKey 북미 편집자 제공
2018-05-23
IoT가 점점 더 강력해짐에 따라 처리 요구 사항은 Linux와 같은 전체 임베디드 운영 체제(OS)가 모든 실행 작업의 복잡성을 적절하게 관리해야 하는 수준까지 증가할 수 있습니다. 이 코드를 플래시 microSDHC 카드에 보관하면 편리하기는 하지만, 대부분의 플래시 microSDHC 카드는 OS 스토리지가 아닌 데이터 스토리지용으로만 설계되므로 판매업체는 혁신적인 솔루션 몇 가지를 고안해냈습니다.
이 기사에서는 임베디드 OS의 역할은 무엇이며 IoT 노드의 경우 microSDHC 플래시 카드에 OS 및 응용 코드를 모두 저장하는 것이 좋은 이유에 대해 설명합니다. 그런 다음 플래시 카드 저하 모드와 OS가 이 저하 현상으로 인해 특히 어떤 영향을 받을 수 있는지에 대해 설명합니다. 이어서 설계자가 효율적이고 안정적인 IoT 노드 구현을 위해 새로운 플래시 메모리 구현을 이용하여 이 저하 현상을 극복할 수 있는 방법을 보여줍니다.
임베디드 OS를 사용하는 이유
일부 IoT 응용 분야의 경우 원격 IoT 노드에서 수행될 수 있는 사전 처리가 많을수록 IoT 노드가 중앙 허브로 다시 전송해야 하는 데이터가 줄어들어 네트워크 대역폭의 여유분을 확보할 수 있습니다. 사전 테스트를 거친 임베디드 OS는 수많은 개별 작업을 효율적으로 처리함으로써 복잡한 사전 처리를 지원할 수 있으며 예측 가능한(결정론적) 방식으로 멀티태스킹을 수행할 수 있습니다. 물론 이는 더 빠른 클록 속도와, 더 중요하게는 추가적인 프로그램 메모리를 요구하며 마이크로 컨트롤러에 추가적인 요구 사항을 부여합니다.
상업용 또는 오픈 소스의 기성품 임베디드 OS도 업데이트가 거의 필요하지 않은 사전 테스트를 거친 견고한 코드를 활용할 수 있습니다. 예를 들어, 제공되는 임베디드 Linux OS는 분기별로 또는 비상 보안 패치를 위해서만 업데이트될 수 있습니다. 임베디드 OS 및 필수 응용 코드에 8GB 이상이 필요할 수 있으며 OS 업데이트가 매우 드물기 때문에 기술자에 의해 수동(물리적)으로 업데이트되는 microSDHC 플래시 메모리 카드에 OS를 보관하는 것이 더 간편할 수 있습니다. 또한 필요에 따라 기존 4GB 플래시 카드를 8GB 이상의 카드로 손쉽게 교체할 수 있으므로 이는 향후 메모리 확장을 위해 조정이 가능합니다(그림 1).

그림 1: Swissbit Class 10 microSDHC S-140u 메모리 카드는 최대 104MB/s의 속도를 지원하므로 고속 프로그램 메모리 액세스에 적합합니다. (이미지 출처: Swissbit)
물리적으로 업데이트되는 microSDHC NAND 플래시 카드에 GB급의 임베디드 OS를 저장하면 무선 네트워크를 통해 업데이트되는 플래시 메모리에 비해 여러 이점이 있습니다. 무선 네트워크에서는 사용되는 중재 방식에 따라 4GB 이상의 임베디드 OS를 업데이트할 경우 운영상의 통신에서 무선 대역폭을 빼앗을 수 있습니다. 또한 네트워크를 통해 업데이트하려면 microSDHC 카드는 OS를 실행하는 동시에 유입되는 업데이트를 수용하기에 충분한 스토리지를 제공해야 하므로 일반 크기의 두 배여야 합니다.
또한 무선을 통한 플래시 코드 업데이트는 무선 활동과 높은 플래시 쓰기 전압 및 전력 요구 사항으로 인해 배터리 수명을 감소시킵니다.
플래시 메모리에서 실행되는 임베디드 OS도 데이터 스토리지에 비해 플래시 메모리 셀에 다양한 요구 사항을 부과합니다. 대부분의 상업용 플래시 microSDHC 카드는 제조업체에서 데이터 스토리지용으로만 설계되었습니다. 가장 일반적인 상업용 카드는 모바일 장치용 멀티미디어 스토리지입니다. 동영상, 이미지 또는 오디오 파일에 포함된 여러 비트 오류는 최종 사용자의 눈에 띄지 않고 넘어갈 수 있지만, 결정적인 임베디드 OS 파일의 단일 비트 오류는 전체적인 시스템 장애를 유발할 수 있습니다.
플래시 메모리의 수명은 무한하지 않습니다. 플래시 메모리 어레이에 대한 각 쓰기 작업은 해당 어레이의 수명을 감소시킵니다. 각 반도체 플래시 메모리 사양에는 지우기/쓰기 주기에 대한 한정된 횟수가 명시되어 있습니다. 플래시 셀이 사양의 한도에 도달하면 셀이 마모되어 새 프로그래밍 상태를 받아들이지 못할 가능성이 커집니다.
쓰기 작업으로 인한 플래시 어레이의 저하를 예방하는 일반적인 접근 방식 중 하나를 웨어 레벨링이라고 합니다. 동일한 플래시 위치에 쓰는 대신 전체 플래시 반도체 메모리 어레이에 고르게 분배하여 플래시 메모리 매트릭스에 걸쳐 쓰기 작업이 고르게 분배되도록 하는 방식입니다. 웨어 레벨링을 이용하면 마이크로 컨트롤러가 물리적 메모리의 단일 위치에 쓰는 동안 플래시 컨트롤러가 동일한 위치를 플래시 메모리 어레이의 다른 위치에 매핑할 수 있습니다.
읽기 방해 오류가 발생하는 이유
OS 파일은 데이터 파일보다 훨씬 자주 액세스되므로 파일 비트 오류가 발생할 경우 문제가 심각할 수 있습니다. 핵심 OS 파일이 지속적으로 읽히기 때문에 이로 인해 플래시 어레이에 비트 오류가 발생하는 경우도 있습니다.
플래시 메모리는 블록으로 배열되어 있으며 각 블록에는 여러 페이지가 있습니다. 블록은 지울 수 있는 메모리의 가장 작은 단위인 반면 페이지는 읽거나 프로그래밍할 수 있는 메모리의 가장 작은 단위입니다. 플래시 블록의 일반적인 크기는 256KB이며 한 블록에는 4KB 크기의 페이지가 64개 포함될 수 있습니다. 각 페이지에는 오류 수정 코드(ECC), 지운 횟수, 논리-물리 변환 정보를 위해 추가로 사용되는 64바이트도 포함됩니다.
데이터 페이지의 플래시 읽기 작업 중에는 페이지에서 단 1바이트의 데이터만 읽어야 하는 경우에도 해당 페이지가 속한 전체 블록에 소량의 읽기 전압이 적용됩니다. 플래시 프로세스 셀 기술로 인해 이는 블록의 주변 페이지에도 더 낮은 전압을 유도합니다. 이는 셀을 프로그래밍하는 것과 유사하게 셀 절연 레이어에 전자를 주입할 수 있으며 이것이 바로 '소프트 프로그래밍'이라고 하는 이유입니다. 동일한 블록에 소량의 읽기 전압이 반복적으로 가해지면 결과적으로 플래시 페이지의 프로그래밍이 읽히는 것을 방해할 수 있습니다. 시간이 지남에 따라 이는 주변 셀의 상태를 다른 값으로 변경할 수 있습니다.
대부분의 NAND 플래시 microSDHC 카드에는 셀 오류 수정을 위한 일종의 오류 수정 기능이 있지만, 소프트 프로그래밍으로 인한 오류의 수가 너무 많아 수정할 수 없는 임계 수준에 도달한다면 마이크로 컨트롤러가 비트 위치에서 다른 값을 읽게 되어 파일 손상 오류가 발생할 수 있습니다. 이러한 비트 오류를 읽기 방해 오류라고 합니다.
데이터 스토리지에 사용되는 NAND 플래시 microSDHC 카드에는 읽기 방해 오류가 발생하는 일이 거의 없습니다. 플래시 어레이에 수행되는 쓰기 작업으로 인해 웨어 레벨링 작업 후 플래시 위치가 다시 프로그래밍되므로 모든 소프트 프로그래밍 효과가 제거됩니다. 하지만 임베디드 OS에 사용되는 플래시 어레이는 거의 프로그래밍되지 않으므로 읽기 방해 오류가 현실이 될 수 있습니다.
단일 레벨 셀(SLC) 플래시 카드는 읽기 1백만 회, 다중 레벨 셀(MLC) 플래시 카드는 읽기 10만 회에 달하면 읽기 방해 오류가 발생하는 것으로 평가됩니다. 데이터 플래시의 경우 읽기 방해 오류가 매우 드문 것으로 여겨지므로 이 수치는 데이터 시트에 명시되지 않는 경우가 많습니다.
RDM을 이용하여 읽기 방해 오류 방지
읽기 방해 오류를 방지하기 위해 Swissbit에서는 읽기 방해 관리(RDM)라는 기능을 개발했습니다. Swissbit의 RDM에서는 플래시 카드 컨트롤러가 개별 플래시 블록에 대한 읽기 작업의 횟수를 지속적으로 추적합니다. 한 블록이 내부적으로 정의된 읽기 작업 수에 도달하면 컨트롤러가 데이터를 새 블록으로 옮기는 방식으로, 이는 쓰기 작업에 사용되는 웨어 레벨링과 유사합니다. 필요한 경우, 새 블록에 쓰기 작업을 수행하는 중에 SD 컨트롤러의 오류 수정 코드(ECC)가 손상된 모든 데이터를 수정합니다.
RDM은 Swissbit의 SFSD8192N1BM1MT-I-QG-221-STD 8GB S-450u UHS-I Class 10 microSDHC 플래시 카드에서 구현되었습니다. 임베디드 OS를 이용하는 산업 응용 분야를 위해 특별히 설계된 S-450u에는 임베디드 Linux OS 및 여러 복잡한 IoT 노드의 응용 코드를 위한 충분한 공간이 마련되어 있습니다. S-104u는 SDR104 모드에서 최대 104MB/s의 데이터 액세스를 지원할 수 있습니다.
프로그램 메모리 실행을 위해 microSDHC 카드 사용
앞에서 설명한 바와 같이 microSDHC 카드는 보통 데이터 메모리용으로만 사용되므로 대부분의 하버드 아키텍처 마이크로 컨트롤러의 주변 소자는 데이터 메모리인 microSDHC 카드에 액세스하는 것만 지원합니다. 이는 사용 가능한 옵션을 제한합니다.
기존 솔루션은 microSDHC 카드를 읽고 프로그램 메모리를 RAM에 로드한 다음 RAM에서 실행합니다. RAM 칩이 기판에 추가 비용을 더할 뿐만 아니라, 프로그램 확장도 PC 기판에서 사용 가능한 온보드 RAM의 양에 따라 제한됩니다.
MicroSDHC 카드는 SD 모드 또는 SPI 모드에서 접속할 수 있습니다.
마이크로 컨트롤러를 프로그램 메모리로서의 S-450u microSDHC 카드에 인터페이싱할 수 있으려면 선택된 마이크로 컨트롤러가 두 가지 microSDHC 버스 프로토콜 중 하나를 지원해야 합니다.
- 프로그램 메모리에 매핑된 SDHC 카드 SD 모드 컨트롤러 주변 소자입니다(그림 2). 이는 외부 주변 소자이거나 내부 마이크로 컨트롤러 주변 소자일 수 있습니다. 인터페이스는 네 개의 데이터 비트(DAT[0-3]), 한 개의 클록(CLK), 양방향 명령/응답 신호(CMD)를 포함한 총 여섯 개의 신호로 구성됩니다. 데이터는 한 번에 네 개의 비트로 전송되며 가장 빠른 프로그램 실행 속도를 제공합니다. 호스트 컨트롤러 또는 마이크로 컨트롤러는 클록을 microSDHC 카드에 제공합니다.
- XIP(eXecute In Place) 지원을 제공하는 구성 가능한 SPI 인터페이스. 이는 SPI 모드의 microSDHC 카드에 액세스해 카드에서 코드를 실행할 수 있으므로 데이터를 빠르게 전송할 수 있지만 SDHC 카드 모드만큼 빠르지는 않습니다. XIP 메모리는 카드 메모리를 마이크로 컨트롤러의 프로그램 메모리 공간에 매핑하여 microSDHC 카드에 대한 액세스를 호스트 펌웨어에서 볼 수 있도록 합니다.

그림 2: SD 모드를 사용하여 microSDHC 카드에 인터페이싱하는 방식은 가장 빠른 메모리 액세스를 제공하기 위해 단순한 6신호 인터페이스를 사용합니다. (이미지 출처: DigiKey)
microSDHC 카드는 SD 카드 모드에서 전원이 켜집니다. 단일 비트 SPI 모드를 선택하려면 전원이 켜진 후 처음 여섯 개의 클록에서 DAT3 신호가 VDD로 풀업되어야 하며, 동시에 CMD를 VSS로 풀다운하여 RESET 명령(000000b)이 카드에 전송되도록 해야 합니다. 그 이후에는 전원이 꺼질 때까지 카드가 SPI 모드로 유지됩니다.
Maxim Integrated의 MAX32652 Arm® Cortex®-M4F 마이크로 컨트롤러는 IoT 노드용으로 설계된 저전력 마이크로 컨트롤러입니다. 여기에는 올바르게 구성될 경우 microSDHC 카드에서 코드를 실행할 수 있는 온칩 QSPI XIP 인터페이스가 탑재되어 있습니다.
MAX32652에도 주로 데이터 메모리 스토리지를 위한 전체 SDHC 인터페이스가 탑재되어 있습니다.
마이크로 컨트롤러에 대한 이러한 인터페이스는 프로그램 메모리 인터페이스여야 합니다. 사용되는 버스 프로토콜이나 인터페이스와 관계없이, 마이크로 컨트롤러는 microSDHC 카드에 대한 인터페이스를 초기화할 수 있도록 일부 온칩 플래시 부트 코드를 포함해야 할 수 있습니다.
소켓 안전성
산업용 microSDHC 카드용 소켓은 간과되는 경우가 많습니다. 척박한 응용 분야의 경우 주석 또는 유사한 접접 재료는 시간이 지남에 따라 인장 강도가 약화되거나 상실될 수 있습니다. 가격이 좀 더 비싸기는 하지만 금 접점은 시간이 지나도 인장 강도를 유지하는 견고한 접점 연결을 제공하므로 비용을 투자할 가치가 있습니다.
Amphenol ICC의 10101704J6#2A 범용 플래시 스토리지(UFS) 및 microSDHC 커넥터/소켓은 모든 microSDHC 호환 카드에 대해 견고한 연결을 제공합니다(그림 3). 이 소켓에는 메모리 카드를 넣고 빼는 과정에서 걸림을 방지하는 스터빙 방지 접점이 있습니다.

그림 3: 10101704J6#2A UFS 및 microSDHC 카드 커넥터/소켓은 기존 microSDHC 카드와 더불어 데이터 전송 속도가 최대 6GB/s에 달하는 차세대 UFS 카드도 지원합니다. (이미지 출처: Amphenol)
이 Amphenol 소켓도 microSDHC와 유사한 폼 팩터지만 접촉 실장 면적의 크기가 다른 새로운 범용 플래시 스토리지(UFS)와 호환되므로 향후 확장성을 지원합니다(그림 4). UFS 카드는 다른 양방향 데이터 전송 방식으로 microSDHC보다 두 배 빠른 속도를 지원합니다.

그림 4: 왼쪽은 microSDHC 카드, 오른쪽은 새로운 UFS 카드입니다. UFS 카드는 다른 양방향 데이터 전송 방식으로 microSDHC보다 두 배 빠른 속도를 지원합니다. (이미지 출처: DigiKey)
네트워크화된 IoT 노드 중 일부는 Wi-Fi를 사용할 수 없거나 실행할 수 없는 원격 위치에 있을 수도 있습니다. 이러한 경우 네트워킹은 무선 셀룰러 데이터 연결을 통해 수행될 수 있습니다. 그럴려면 가입자 SIM 카드를 사용해야 하며 이 카드도 소켓 연결되어야 합니다.
기판 공간을 절약하는 간단한 방법은 Molex의 1041681620 듀얼 SIM 카드 및 microSDHC 카드 소켓와 같은 microSDHC 및 SIM 카드 소켓 조합을 이용하는 것입니다(그림 5). 이 소켓에도 열악한 환경에서의 견고한 연결을 위한 금 접점과 스터빙 방지 접점이 제공됩니다.

그림 5: 1041681620 SIM 카드 및 microSDHC 카드 소켓 조합은 기판 공간을 현저히 줄여주며, 삽입 및 꺼내기 오류를 방지하는 스터빙 방지 접점을 제공합니다. (이미지 출처: Molex)
결론
플래시 microSDHC 카드는 데이터 스토리지에 사용되어왔지만 이제 임베디드 OS를 위한 공간으로 프로그램 메모리 실행의 특별한 요구 사항을 지원하도록 개선되고 있습니다. 이러한 진화의 일부로 지속적인 읽기 요청을 지원할 수 있는 더욱 빠른 플래시 메모리의 개발이 포함됩니다. 또한 마이크로 컨트롤러는 플래시 오류를 줄이거나 없애는 한편, 외부 microSDHC 카드에서 안정적으로 코드를 실행할 수 있는 새로운 메모리 인터페이스를 지원하도록 진화되고 있습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


