SPI XiP 플래시로 마이크로 컨트롤러 프로그램 메모리를 확장하는 이유 및 방법

작성자: Bill Giovino

DigiKey 북미 편집자 제공

마이크로 컨트롤러 응용 제품이 점점 더 복잡해지면서 개발자는 응용 제품 펌웨어에 더 많은 플래시 프로그램 메모리를 사용하고 있습니다. 상대적으로 복잡한 에지 컴퓨팅을 수행하기 시작한 사물 인터넷(IoT) 종단점의 경우 특히 그렇습니다. 하지만 외장형 프로그램 메모리가 필요한 정도까지 응용 제품을 확장할 수 있는 경우도 있으며, 이때 개발자는 병렬 플래시 또는 직렬 플래시 중에서 선택해야 합니다.

외장형 병렬 플래시 메모리 칩을 추가하면 I/O 라인이 연결되고, 복잡성이 증가하고, 추가 기판 공간이 소비됩니다. 이 기사에서는 SPI XiP(eXecute in Place) 인터페이스를 지원하는 Adesto Technologies의 외장형 직렬 플래시 메모리를 추가하여 마이크로 컨트롤러의 플래시 프로그램 메모리를 확장하는 방법을 설명합니다. 또한 코드가 펌웨어에 투명하게 실행되도록 XiP 플래시를 Microchip Technology의 마이크로 컨트롤러 메모리 공간에 매핑하는 방법을 설명합니다.

외장형 메모리 확장 이유

가능하면 개발자는 더 많은 메모리가 장착된 핀 호환 장치 로드맵이 있는 마이크로 컨트롤러를 선택하여 응용 제품 개발을 시작해야 합니다. 개발 중에 응용 제품 펌웨어가 대상 장치의 플래시 메모리를 초과하여 확장될 경우 개발 중에 더 많은 플래시를 탑재한 핀 호환 장치를 쉽게 대체할 수 있습니다. 그러면 다른 마이크로 컨트롤러에 맞게 PC 기판을 다시 설계할 필요 없이 응용 제품 메모리를 확장할 수 있습니다.

하지만 응용 제품에서 핀 호환 마이크로 컨트롤러 제품군에 제공되는 온칩보다 더 많은 프로그램 메모리가 필요하여 오프칩 플래시 메모리를 사용해야 할 수도 있습니다. 다음과 같은 다양한 이유로 인해 이러한 사용이 점점 보편화되고 있습니다.

  • 개발 단계 중에 시스템 범위가 초기 개념을 초과하여 확장될 수 있습니다. 이런 상황은 응용 제품의 메모리 요구 사항에 대한 잘못된 예측으로 인한 것이 아니라, 최종 단계에서의 응용 제품 변경 또는 기능 향상에 따라 발생합니다. 선택적으로 더 많은 플래시 프로그램 메모리가 탑재된 핀 호환 마이크로 컨트롤러로 업그레이드하거나 외장형 플래시 프로그램 메모리를 추가해야 합니다. 이 경우 개발이 이미 진행되었다면 프로젝트가 지연될 수 있습니다.
  • 향후에 현장에서 펌웨어를 업그레이드하려면 시스템 기판에 이미 탑재된 마이크로 컨트롤러에서 제공하는 것보다 더 많은 플래시 프로그램 메모리가 필요할 수 있습니다. 이 경우 선택 사항이 제한됩니다. 즉, 현장 시스템을 더 많은 플래시 프로그램 메모리가 탑재된 시스템으로 교체하거나 업그레이드를 취소해야 합니다.
  • 시스템 제품군 개발 과정 중에 핀 호환 마이크로 컨트롤러 제품군에서 이미 제공하는 것보다 더 많은 플래시 프로그램 메모리가 필요한 신제품이 필요할 수 있습니다. 선택적으로 새로운 마이크로 컨트롤러 제품군을 사용하여 시스템을 다시 설계하거나 외장형 플래시 프로그램 메모리를 추가해야 합니다.

개발자는 메모리 확장을 위해 현재와 미래의 시스템 요구 사항을 예측하고 계획해야 합니다. 프로젝트에 외장형 플래시 프로그램 메모리가 필요할 가능성이 있다면 개발자는 향후 PC 기판 확장에 대비해야 합니다. 플래시 메모리 칩을 기판에 채울 필요는 없지만 이 칩은 더 안전하며 이미 공간을 차지하고 있습니다.

플래시 프로그램 메모리를 확장하는 기존 방법에서는 병렬 플래시 인터페이스를 주소 및 데이터 회선과 함께 사용했습니다. 하지만 속도 저하 없이 병렬 플래시 메모리를 가장 효과적으로 사용하려면 16비트 주소, 16비트 데이터, 4개 이상의 제어 신호를 사용할 수 있습니다. 이를 위해 36개 이상의 마이크로 컨트롤러 핀이 필요합니다.

이로 인해 마이크로 컨트롤러가 리소스를 비효율적으로 사용하게 될 뿐만 아니라 선택 가능한 마이크로 컨트롤러도 마이크로 컨트롤러 핀 수를 늘려주는 외장형 버스가 있는 장치로 제한됩니다. 또한 외장형 병렬 버스는 많은 PC 기판 공간을 차지하고, 고속 주소 및 데이터 버스는 전자파 장해(EMI) 가능성을 높입니다.

SPI XiP 코드 실행

더 효과적인 방법은 SPI XiP 인터페이스를 지원하는 외장형 플래시 프로그램 메모리 장치를 사용하는 것입니다. SPI XiP 인터페이스는 핀을 6개만 사용하여 호스트 마이크로 컨트롤러에 연결할 수 있습니다. 기존 SPI 인터페이스와 달리 외장형 플래시 메모리 장치의 메모리는 SPI 펌웨어 드라이버를 통해 직접 액세스되지 않고 마이크로 컨트롤러의 프로그램 메모리에 매핑됩니다.

SPI XiP 인터페이스를 사용하여 연결하도록 설계된 직렬 플래시 메모리 장치의 좋은 예로는 Adesto Technologies의 AT25SL321-UUE-T가 있습니다(그림 1). 이 장치는 단일, 이중 및 4중 SPI 모드를 지원하는 32Mbit 플래시 메모리입니다. 또한 104MHz SPI 클록을 지원하며, 이중 SPI 모드에서 266MHz와 동등한 클록 속도를 제공하고, 4중 SPI 모드에서 532MHz와 동등한 클록 속도를 제공합니다.

Adesto의 AT25SL321 플래시 메모리 이미지

그림 1: Adesto AT25SL321은 단일, 이중 및 4중 SPI 모드를 지원하는 32Mbit 플래시 메모리입니다. 이 메모리는 8핀 SOIC, DFN8 또는 TSSOP8 패키지에서 32Mbit 플래시 메모리를 제공합니다. (이미지 출처: Adesto Technologies)

32Mbit 플래시와 함께 이 장치에는 장치를 구성하기 위한 상태 레지스터가 있습니다. 상태 레지스터를 판독하여 장치에서 쓰기 또는 지우기 작업이 진행 중인 경우 펌웨어에 알려줄 수 있습니다. 상태 레지스터에 쓰면 플래시 메모리 블록을 쓰기 금지할 수 있습니다.

또한 Adesto AT25SL321에는 고유한 일련번호와 같은 보안 정보를 저장하는 데 사용될 4Kbit 일회용 프로그래밍 가능 메모리(OTP)가 있습니다. 이 메모리는 8핀 SOIC, DFN8 또는 TSSOP8 패키지로 제공됩니다.

SPI XiP를 지원하는 모든 직렬 메모리 장치와 마찬가지로 Adesto AT25SL321은 Adesto 장치에 특정한 명령어 세트를 사용하여 구성됩니다. 명령어 세트는 호스트 마이크로 컨트롤러에서 직렬 플래시를 제어하는 데 사용되는 38개 명령으로 구성됩니다. 호스트 마이크로 컨트롤러의 SPI XiP 주변 장치는 대상 직렬 플래시의 명령어 세트로 마이크로 컨트롤러의 전원을 켤 때 초기화되는 프로그래밍 가능 상태 시스템을 포함합니다. 초기화된 후 SPI 주변 장치는 메모리 매핑 SPI XiP 지역에서 코드를 실행하는 펌웨어에 투명하게 작동합니다.

예를 들어, 호스트 마이크로 컨트롤러 펌웨어가 메모리 매핑 지역에서 데이터를 읽는 경우 Adesto 명령어 세트로 구성되는 SPI XiP는 24비트 바이트 주소가 이어지는 읽기 데이터 명령어 코드를 Adesto 직렬 메모리로 전송합니다. 그러면 Adesto 직렬 메모리에서 메모리 내용을 호스트 마이크로 컨트롤러에 한 번에 하나씩 보냅니다. 펌웨어에서 볼 때 이는 메모리의 정상 읽기처럼 보입니다.

SPI 클록, 데이터 및 칩 선택 핀 외에도 Adesto AT25SL321에는 시스템 내부 기능 향상을 위한 추가 핀 두 개가 있습니다. WP\는 상태 레지스터에 대한 쓰기를 차단하여 코드 블록을 쓰기 금지하는 Low 활성 쓰기 금지 핀입니다. 마이크로 컨트롤러에서는 이 핀을 사용하여 우선순위가 낮은 작업이 무단 변경되지 않도록 보호합니다. HOLD\는 진행 중인 데이터 전송을 일시 중지하는 데 사용됩니다. 이 명령은 메모리에 대한 데이터 전송이 진행 중인 동안 마이크로 컨트롤러에서 우선순위가 높은 인터럽트 신호를 수신하기 위해 인터럽트가 처리될 때까지 데이터 전송을 일시 중지해야 하는 경우에 유용할 수 있습니다.

Adesto AT25SL321 32Mbit 플래시 장치는 4가지 작업 모드를 지원합니다.

  • 표준 SPI 작업: SPI 클록(SCLK), Low 활성 칩 선택(CS\), 직렬 입력(SI) 데이터 및 직렬 출력(SO) 데이터를 포함하는 표준 SPI 메모리 장치처럼 플래시 메모리에 액세스됩니다. 표준 SPI 버스 모드 0 및 3이 지원됩니다.
  • 이중 SPI 작업: SI 및 SO를 IO0 및 IO1이 지정된 양방향 데이터 핀으로 사용하여 표준 SPI 작업보다 2배 빠른 데이터 전송률을 제공합니다.
  • 4중 SPI 작업: 표준 SPI 작업보다 4배 더 빠른 데이터 전송률을 제공합니다. IO0 및 IO1 이외에 WP\ 및 HOLD\는 양방향 데이터 핀 IO2 및 IO3로 사용됩니다. 4중 SPI 작업에서는 WP\ 및 HOLD\ 기능을 사용할 수 없습니다.
  • QPI 작업: SPI XiP 작업에만 사용됩니다. 표준, 이중 및 4중 SPI 모드는 모두 IO0 핀만 사용하여 SPI 메모리에 명령 전송을 지원하지만, QPI 작업은 IO[0:3] 핀 4개를 사용하여 명령 전송을 지원하여 SPI XiP 성능을 획기적으로 개선합니다.

Adesto AT25SL321의 32Mbit가 충분하지 않은 경우 Adesto는 64Mbit AT25QL641-UUE-T도 제공합니다. 두 장치는 핀이 호환되므로 AT25QL641을 드롭인 교체할 수 있습니다. 더 많은 메모리를 제외하고 두 장치의 유일한 차이점은 AT25QL641의 전원을 켜면 기본적으로 QPI 작업으로 설정된다는 점입니다. 따라서 고성능 시스템에서 장치 설정 시간이 단축됩니다. 두 장치는 모두 메모리 읽기 주기 중에 5mA만 인출합니다. 두 Adesto 메모리 장치는 단일 1.7V ~ 2.0V 레일에서 작동하며 SPI XiP 인터페이스가 있는 모든 전압 호환 마이크로 컨트롤러에 연결할 수 있습니다.

호스트 마이크로 컨트롤러의 경우 Microchip Technology에서는 120MHz Arm® Cortex®-M4F 기반 ATSAMD51J20A-UUT 마이크로 컨트롤러를 비롯하여 ATSAMD51 계열인 SPI XiP 인터페이스를 제공합니다. 이 장치에는 1Mbyte 플래시와 256Kbytes RAM이 있습니다. 아날로그 디지털 컨버터(ADC), 디지털 아날로그 컨버터(DAC), USB 포트, I2S 등 광범위한 주변 장치가 포함됩니다. 또한 보안 기능을 위한 공용 키 암호화 주변 장치와 난수 생성기(TRNG)가 있습니다.

Microchip의 ATSAMD51J20A 구성도에 전체 주변 장치가 나와 있습니다(확대하려면 클릭).

그림 2: Microchip의 ATSAMD51J20A에는 SPI XiP 직렬 인터페이스, ADC, DAC, 데이터 암호화 지원을 비롯한 전체 주변 장치가 있습니다. (이미지 출처: Microchip technology)

외장형 플래시 메모리에 연결하기 위해 개발자는 SPI XiP를 지원하는 ATSAMD51J20A의 QSPI 주변 장치를 사용할 수 있습니다. 그러면 Adesto 플래시 메모리에서 직접 코드를 실행할 수 있습니다. ATSAMD51J20A는 Adesto 플래시를 Arm의 AHB(Advanced High-Performance Bus) 프로그램 메모리 공간에 매핑합니다. 직렬 플래시에서 데이터를 보호하기 위해 ATSAMD51J20A SIP XiP는 외장형 SPI 메모리에 기록되는 데이터의 투명한 혼합화와 외장형 SPI 메모리에서 읽은 데이터의 복호화를 지원합니다. 따라서 무단 펌웨어 복사 및 시스템 불법 복제를 방지할 수 있습니다.

Microchip의 ATSAMD51J20A 32비트 마이크로 컨트롤러 구성도

그림 3: Microchip의 ATSAMD51J20A 32비트 마이크로 컨트롤러에는 SPI XiP 직렬 포트를 지원하는 QSPI 주변 장치가 있습니다. 따라서 핀 6개만 사용하여 Adesto AT25SL321 직렬 플래시에 쉽게 연결할 수 있습니다. (이미지 출처: DigiKey)

Adesto 직렬 플래시 메모리 장치에서 Microchip의 ATSAMD51J20A 사용

Microchip의 ATSAMD51J20A SPI XiP 주변 장치에는 외장형 직렬 XiP 플래시에 명령을 전송하는 데 사용되는 레지스터 3개가 있습니다. 직렬 플래시 XiP 메모리 장치는 제조업체에 따라 다른 명령 코드를 사용하므로 개발자는 사용되는 메모리 제조업체별로 레지스터를 구성해야 합니다.

  1. 명령 코드 레지스터에는 직렬 플래시에 액세스하는 데 사용되는 명령어가 포함되어 있습니다. Adesto 플래시 메모리 장치가 4중 SPI 모드에서 작동되고 펌웨어가 메모리 매핑 XiP 지역에서 코드를 실행 중인 경우 이 레지스터에는 Fast Read Quad Output 명령어 0x6B가 포함됩니다. 쓰기, 지우기 또는 상태 레지스터 작업을 수행 중인 경우 이 레지스터를 적절한 명령 코드로 변경해야 합니다.
  2. 명령 주소 레지스터에는 외장형 직렬 플래시에서 액세스되는 플래시 메모리 주소가 포함되어 있습니다. Microchip의 ATSAMD51J20A SPI XiP가 직렬 메모리 모드로 구성된 경우 SPI XiP 주변 장치는 이 주소를 AHB 메모리 공간 범위(0x0400 0000 ~ 0x0500 0000)로 매핑된 메모리에서 펌웨어가 실행하는 주소로 자동 설정합니다.
  3. 명령 프레임 레지스터는 사용 중인 외장형 메모리 장치에 특정한 명령 프레임 형식으로 SPI XiP를 구성합니다. 여기에는 24비트 또는 32비트 주소 길이 선택, 이중 데이터 전송률(DDR) 지원, 연속 읽기 모드 지원 여부, opcode 길이 등이 포함됩니다.

나머지 Microchip SPI XiP 인터페이스는 Microchip의 SPI 드라이버를 사용하여 쉽게 구성할 수 있습니다.

마이크로 컨트롤러의 응용 제품 펌웨어가 SPI XiP 메모리 매핑 지역에서 코드를 실행 중이라면 마이크로 컨트롤러의 SPI XiP 주변 장치를 다시 구성할 필요가 없습니다. 또한 Adesto 플래시 메모리는 명령 코드 0x03을 사용하여 단일 SI 핀만으로 읽기 모드를 지원합니다. 이중 SPI 모드만 사용 중인 경우 명령 코드는 0x3B입니다. 이러한 코드는 응용 제품 펌웨어에 의해 명령 코드 레지스터에 기록됩니다.

명령 코드 레지스터를 변경했다면 메모리 매핑 주소 공간에 연결된 모든 캐시를 삭제하는 것이 좋습니다. 직렬 플래시 메모리 상태 레지스터에서 읽거나 쓸 때 캐시를 삭제한 다음 비활성화해야 합니다. 메모리 매핑 지역에서 플래시에 쓰는 경우에도 마찬가지입니다. 메모리 읽기 작업이 다시 시작되면 캐시를 다시 활성화해야 합니다.

포함된 고속 데이터 전송으로 인해 PC 기판에서 직렬 플래시를 마이크로 컨트롤러 SPI XiP 포트에 최대한 가깝게 배치해야 합니다. 불가능한 경우 트레이스가 120mm를 초과하지 않아야 합니다. 전파 방해를 방지하려면 다른 신호와의 클록 신호 간격이 pc 기판 트레이스 폭의 최소 3배 이상이어야 합니다. 스큐를 방지하려면 모든 IO[0:3] 양방향 데이터 신호가 서로 10mm 이내에 있어야 합니다.

결론

외장형 직렬 플래시 메모리 장치는 병렬 플래시 칩이 복잡해지지 않고 기판 공간이 지나치게 커지지 않으면서 빠르게 펌웨어 코드를 실행할 수 있습니다. 따라서 시간이 지남에 따라 프로그램 코드를 쉽게 확장할 수 있으며, 시스템 기판을 다시 설계할 필요 없이 현장에서 업데이트할 수 있습니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Bill Giovino

Bill Giovino

Bill Giovino는 시러큐스 대학(Syracuse University)에서 전자 공학 학위를 취득한 전자 엔지니어이며, 설계 엔지니어링에서 현장 애플리케이션 엔지니어링은 물론 기술 마케팅에 이르기까지 바로 투입 가능한 몇 안 되는 실력자 중 하나입니다.

Bill은 25년 이상 STMicroelectronics, Intel, Maxim Integrated를 비롯한 다양한 회사의 기술 및 비기술 담당자를 대상으로 신기술을 홍보해 왔습니다. STMicroelectronics 재직 중 Bill은 마이크로 컨트롤러 업계에서 회사의 초기 입지를 다지는 데 공헌했습니다. Infineon에서는 미국 자동차 업계에서 회사 최초로 마이크로 컨트롤러 설계를 성공으로 이끌어 내는 역할을 했습니다. Bill은 직접 설립한 CPU Technologies의 마케팅 컨설턴트로 일하면서, 많은 업체들이 실적이 저조한 제품의 실적을 개선하는 데 도움을 주고 있습니다.

Bill은 최초의 전체 TCP/IP 스택을 마이크로 컨트롤러에 배치하는 것을 비롯하여 사물 인터넷을 조기에 수용한 바 있습니다. Bill은 '교육을 통한 판매'라는 메시지와 온라인을 통한 제품 홍보에 있어 커져 가는 명확하고 분명한 의사 소통의 중요성 전달에 전념하고 있습니다. Bill은 LinkedIn의 인기 그룹인 Semiconductor Sales & Marketing Group의 중재자이며, B2E에 유창합니다.

게시자 정보

DigiKey 북미 편집자