ARM이 외부 메모리와 인터페이스하기에 좋은 선택은 무엇입니까?


13

방금 LPC2132 칩을 사용하여 프로젝트를 완료했지만 전체 64kb의 RAM을 사용하는 데 문제가 발생했습니다.

다음 프로젝트에서는 훨씬 더 큰 외부 메모리 칩을 참조 할 수있는 무언가를 사용하고 싶습니다. 어떤 종류의 ARM이이 작업을 수행 할 수 있으며 두 장치가 통신하도록하려면 어떻게해야합니까?


1
우리는 SRAM, SDRAM, DDR, DDR2, DDR3에 대해 어떤 종류의 메모리를 이야기합니까?
Jay Atkinson

1
특별히 친절하지 않습니다. 64k보다 큰 것
samoz

답변:


10

외부 RAM 메모리에는 MMU가 필요하지 않습니다. 필요한 경우 더 많은 공간이 필요한 것과는 완전히 별개의 문제입니다. 금속에 직접 코딩했다면 실제로 MMU가없는 삶을 더 쉽게 만들 수 있습니다. 또한 MMU는 사실상 외부 구성 요소가 아니라 SoC 다이에 있습니다.

많은 제품군에서 ARM7의 외부 메모리를 허용하는 ARM SoC를 찾을 수 있습니다. 예를 들어 NXP LPC2212 시리즈 는 최고를 말하지 않고 외부 메모리 인터페이스가있는 Google에서 처음으로 나온 ARM7 SoC입니다. 많은 옵션이 있습니다. .

외부 메모리 컨트롤러가있는 SoC에서 거의 모든 것을 찾을 수 있기 때문에 ARM 제품군의 다양한 코어 기능에 더주의를 기울일 것입니다.

이제 필요한 메모리 유형과 작동 방법에 대해서는 선택한 SoC 및 외부 메모리 컨트롤러가 지원하는 메모리에 따라 다릅니다. 예를 들어 ARM7 SoC i 링크는 외부 SRAM과 플래시 및 ROM을 지원하고 최대 4 개의 16MB 뱅크를 지원하므로 외부 플래시와 SRAM을 동시에 연결할 수 있습니다.

별도의 RAM과 플래시 IC를 사용할 수 있으며 MCP (Multi Chip Package)라고하는 패키지가 있으며 1 개의 패키지에 플래시와 램을 모두 포함 할 수 있습니다. 이러한 장치를 선택하는 방법은 여러 요소에 따라 다르므로 응용 프로그램에 대해 더 구체적이어야합니다.

이것이 얼마나 쉬운 지 필요한 속도에 달려 있습니다. 대부분의 외부 메모리 컨트롤러에는 프로그래밍 가능한 클럭 속도가 있습니다. 메모리 인터페이스 클럭 속도는 최소 10MHz 이상으로 매우 높을 수 있습니다. 간단히 말해서 이와 같은 브레드 보드를 만들지 않을 것이므로 PCB를 설계하고 이러한 라인의 신호 무결성 문제에 특별한주의를 기울여야합니다.

가장 좋은 방법은 놀고 싶은 코어를 선택하고 외부 메모리가있는 많은 개발 보드 중 하나를 찾는 것입니다.


답변 마크 주셔서 감사합니다. MMU가 필요한지 아닌지 혼란 스러웠습니다. Sparkfun을 보면 실제로 외부 메모리 버스가있는 LPC 2294가 판매 중입니다. 나는 그걸로 갈 것 같아요.
samoz

4
MMU는 가상 주소 공간을 물리적 장치에 매핑하는 데 사용됩니다. 페이징, 메모리 조각화 문제 해결, 메모리 매핑 동적 하드웨어 장치 등을 위해 서로 다른 프로세스의 메모리를 분리하기 위해 운영 체제에서 사용합니다. 메모리 하위 시스템을 가상화합니다. 대부분의 경우 전체 다중 처리 기능 세트로 운영 체제를 실행하려는 경우 MMU 만 필요합니다. 예를 들어 MMU없이 실행되도록 수정 된 uClinux가 있지만 전체 Linux 커널을 실행하려면 MMU가 필요합니다.
Mark

SPI / IIC 모드에서 작동하는 외부 eeprom을 브레드 보드하는 것이 괜찮습니까? 24c64 IC를 사용하여 MCU의 플래시 메모리를 확장 할 수 있기를 기대합니다.
0xakhil

어려울 것입니다. 좋은 브레드 보드, 매우 짧은 와이어 (예 : 1 인치) 및 매우 느린 클럭이 필요합니다 (2MHz를 초과하는 것은 피하십시오). 느리게 상승 / 하강 시간을 확보하기 위해 전선 대신 200ohm 저항을 사용합니다. 칩간에 GND도 짧아야한다는 것을 기억하십시오. 이것은 기록을 깨뜨리지는 않지만 더 나은 보드로 번역 할 수있는 개념 증명을 제공합니다.
Guillermo Prandi

5

더 큰 시리즈의 STM32 프로세서 (32 비트 Cortex-M3 코어)에는 FSMC가 있는데, 이는 유연한 정적 메모리 컨트롤러입니다. 이를 통해 플래시, RAM 및 LCD와 같은 기타 메모리 주변 장치를 연결할 수 있습니다.

tcrosley도 말했듯이 나는 STM32F103ZET6를 추천 할 수 있습니다, 당신은 $ 68 이베이에 플래시 및 SRAM을 포함하여 개발 보드를 얻을 수 있습니다 - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


경고, STM32x에 추가 한 외부 메모리는 내부 SRAM 또는 내부 플래시만큼 빠르지 않습니다. 6-9 배 느리게. 빠른 메모리가 필요한 경우 내부 메모리인지 확인하십시오. STM32에서 16MB PSRAM으로 프로젝트를 수행 중이며 범용 메모리로 사용하면 속도가 느립니다.
Mark Lakata

1
FSMC / PSRAM이 더 빨라질 수는 있지만 힙 메모리와 같은 일반적인 메모리 공간에 매핑 할 수는 없습니다. 전용 DMA 액세스를 사용해야합니다.
Mark Lakata

4

최근에 새 프로젝트와 비슷한 요구 사항이 있었으며 512K의 내부 플래시와 64K의 내부 RAM을 갖춘 STMicro STM32F103ZET6 (ARM 32 비트 Cortex-M3)을 약 10 달러에 구매했습니다. 최대 64MB의 외부 메모리 (26 개 주소 비트)를 처리 할 수있는 메모리 컨트롤러가 있습니다. 144 핀 LQFP 패키지로 제공됩니다. (프로토 타입에 BGA를 사용하는 것을 좋아하지 않습니다.) 다른 접착제없이 멀티플렉싱없이 2MB Cypress SRAM과 인터페이스 할 것입니다.


멋있는! 개발 보드를 사용하고 있습니까, 아니면 직접 만드셨습니까?
samoz

현지 STMicro 담당자가 "STM32 용 IAR KickStart 키트" iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225 를 제공했습니다. 그러나 마이크로는 64 핀 패키지이므로 FSMC 핀이 없으므로 144 핀 패키지로 보드를 얻을 수 있습니다.
tcrosley 2016 년

뭔가 빠졌습니까? 26 비트는 2 ^ 6 = 64M 위치를 직접 처리 할 수 ​​있습니다. 512MB는 8 바이트 단어를 의미합니다. 512Mb 여야합니까?
XTL

1
@ XTL : 잘 잡았습니다. 내 대답을 수정했습니다.
tcrosley

3

아마 Atmel AT91SAM9G20 ?

약간의 짐승 (217 핀 BGA 패키지)이지만 가격면에서 훌륭한 칩입니다. 좀 더 인간 친화적 인 것을 찾고 있다면 Atmel AT91M42800A를 사용해보십시오 . 적어도 Atmel의 외장 메모리 하드웨어를 갖춘 가장 작은 MCU라고 생각합니다. 144 핀 LQFP 패키지입니다.

Atmel에는 파라 메트릭 선택기가 있습니다. http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=605&OrderBy=part_no&Direction=ASC

(나는 Atmel에서 일하지 않는다고 덧붙여 야한다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.