ตัวเลือกที่ดีสำหรับ ARM ในการเชื่อมต่อกับหน่วยความจำภายนอกคืออะไร?


13

ฉันเพิ่งเสร็จสิ้นโครงการโดยใช้ชิป LPC2132 แต่พบปัญหาในการใช้ RAM ทั้งหมด 64kb

สำหรับโครงการต่อไปของฉันฉันต้องการใช้สิ่งที่สามารถอ้างอิงชิปหน่วยความจำภายนอกที่มีขนาดใหญ่กว่ามาก ARM ประเภทใดที่สามารถทำสิ่งนี้และฉันต้องทำอย่างไรเพื่อให้อุปกรณ์ทั้งสองพูดคุยกันได้


1
หน่วยความจำแบบไหนที่เราพูดถึง SRAM, SDRAM, DDR, DDR2, DDR3
Jay Atkinson

1
โดยเฉพาะอย่างยิ่งไม่มีชนิด บางสิ่งบางอย่างที่ใหญ่กว่า 64k ...
samoz

คำตอบ:


10

คุณไม่จำเป็นต้องใช้ MMU สำหรับหน่วยความจำ RAM ภายนอกปัจจัยที่กำหนดหากคุณจำเป็นต้องใช้มันเป็นปัญหาที่แยกจากกันโดยสิ้นเชิงเพียงต้องการพื้นที่เพิ่ม หากคุณได้รับการเข้ารหัสโดยตรงกับโลหะมันอาจทำให้ชีวิตของคุณง่ายขึ้นโดยไม่ต้องมี MMU ฉันยังต้องการที่จะทราบว่า MMU นั้นไม่เคยเป็นองค์ประกอบภายนอก แต่อยู่บน SoC ตาย

คุณสามารถค้นหา ARM SoCs ในหลายตระกูลที่อนุญาตให้หน่วยความจำภายนอกจาก ARM7 ขึ้นไปตัวอย่างเช่นNXP LPC2212 ซีรีส์ที่ไม่ได้บอกว่าดีที่สุดเพียง ARM7 SoC ตัวแรกที่เกิดขึ้นใน google พร้อมอินเตอร์เฟสหน่วยความจำภายนอกมีตัวเลือกมากมาย .

ฉันให้ความสำคัญกับคุณสมบัติของคอร์ต่างๆในตระกูล ARM เนื่องจากคุณสามารถค้นหาได้เกือบทั้งหมดใน SoC ด้วยตัวควบคุมหน่วยความจำภายนอก

ตอนนี้คุณต้องการหน่วยความจำประเภทใดและวิธีการใช้งานนั้นขึ้นอยู่กับ SoC ที่คุณเลือกและหน่วยความจำที่คอนโทรลเลอร์หน่วยความจำภายนอกรองรับ ตัวอย่างเช่น ARM7 SoC i ที่เชื่อมโยงรองรับ SRAM ภายนอกรวมถึงแฟลชและรอมและสนับสนุนธนาคารขนาด 16MB สูงสุด 4MB ดังนั้นคุณสามารถเชื่อมต่อแฟลชภายนอกและ SRAM กับมันได้ในเวลาเดียวกัน

คุณสามารถใช้แรมแยกต่างหากและแฟลช IC นอกจากนี้ยังมีแพ็คเกจที่เรียกว่า MCP (แพ็คเกจชิปแบบหลายชิป) ที่สามารถรวมทั้งแฟลชและแรมในแพ็คเกจเดียว วิธีที่คุณเลือกอุปกรณ์เหล่านี้ขึ้นอยู่กับปัจจัยหลายอย่างคุณจะต้องเจาะจงเกี่ยวกับแอปพลิเคชันของคุณมากขึ้น

วิธีนี้ง่ายในการขอขึ้นอยู่กับความเร็วที่คุณต้องการ คอนโทรลเลอร์หน่วยความจำภายนอกส่วนใหญ่มีอัตรานาฬิกาที่ตั้งโปรแกรมได้ อัตรานาฬิกาอินเตอร์เฟสของหน่วยความจำอาจสูงมากอย่างน้อย 10MHz และสูงกว่ามาก ในระยะสั้นมีแนวโน้มมากที่จะไม่ทำอะไรแบบนี้คุณต้องออกแบบ PCB และให้ความสนใจเป็นพิเศษกับปัญหาความสมบูรณ์ของสัญญาณสำหรับสายเหล่านี้

ทางออกที่ดีที่สุดของคุณคือเลือกแกนที่คุณต้องการเล่นและค้นหาหนึ่งในบอร์ดพัฒนาจำนวนมากที่มีหน่วยความจำภายนอกอยู่


ขอบคุณสำหรับคำตอบมาร์ค ฉันสับสนถ้า MMU นั้นจำเป็นหรือไม่ เมื่อมองไปที่ Sparkfun พวกเขามี LPC 2294 วางขายอยู่ในขณะนี้ซึ่งมีบัสหน่วยความจำภายนอก ฉันคิดว่าฉันจะไปด้วย
samoz

4
MMU ใช้เพื่อแมปพื้นที่ที่อยู่เสมือนกับอุปกรณ์ทางกายภาพ มันใช้โดยระบบปฏิบัติการเพื่อแยกหน่วยความจำของกระบวนการที่แตกต่างกันสำหรับเพจจิ้งแก้ไขปัญหาการกระจายตัวของหน่วยความจำการทำแผนที่หน่วยความจำอุปกรณ์ฮาร์ดแวร์แบบไดนามิก ฯลฯ มันเสมือนระบบย่อยหน่วยความจำเสมือน ในกรณีส่วนใหญ่คุณจะต้องใช้ MMU เฉพาะในกรณีที่คุณต้องการเรียกใช้ระบบปฏิบัติการที่มีฟีเจอร์การประมวลผลหลายชุดเต็ม ตัวอย่างเช่นคุณจะต้องมี MMU เพื่อเรียกใช้เคอร์เนล linux เต็มรูปแบบแม้ว่าจะมี uClinux ที่ได้รับการแก้ไขให้ทำงานโดยไม่มี MMU
Mark

มันจะดีไหมถ้าเบร็ดบอร์ด eeprom ภายนอกทำงานในโหมด SPI / IIC ฉันรอคอยที่จะขยายหน่วยความจำแฟลชของ MCU โดยใช้ 24c64 IC
0xakhil

มันคงเป็นเรื่องยาก คุณต้องมีเขียงหั่นขนมที่ดีสายสั้นมาก (เช่น 1 นิ้ว) และนาฬิกาที่ช้ามาก (หลีกเลี่ยงอะไรเกิน 2 MHz ฉันจะบอกว่า) ฉันจะใช้ตัวต้านทาน 200 โอห์มแทนสายในกรณีเพื่อให้เวลาเพิ่มขึ้น / ลดลงช้าลง โปรดจำไว้ว่า GND ควรสั้นระหว่างชิปเช่นกัน สิ่งนี้จะไม่ทำลายสถิติใด ๆ แต่จะให้หลักฐานพิสูจน์แนวคิดที่คุณสามารถแปลเป็นบอร์ดที่ดีกว่า
Guillermo Prandi

5

ซีรีย์ที่ใหญ่กว่าของโปรเซสเซอร์ STM32 (คอร์เท็กซ์แบบ 32 บิต) มี FSMC ซึ่งเป็นคอนโทรลเลอร์หน่วยความจำแบบสแตติกแบบยืดหยุ่น ด้วยวิธีนี้คุณสามารถเชื่อมต่อแฟลช RAM และอุปกรณ์ต่อพ่วงหน่วยความจำอื่น ๆ เช่น LCD และอื่น ๆ

ฉันสามารถแนะนำ STM32F103ZET6 ตามที่ tcrosley กล่าวไว้และคุณสามารถรับบอร์ดพัฒนารวมถึง flash และ sram บน ebay ในราคา $ 68 - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


คำเตือนหน่วยความจำภายนอกที่คุณเพิ่มใน STM32x จะไม่เร็วเท่ากับ SRAM ภายในหรือแฟลชภายใน เช่น 6-9X ช้าลง หากคุณต้องการหน่วยความจำเร็วต้องแน่ใจว่ามันอยู่ภายใน ฉันทำโครงการที่มี 16MB PSRAM บน STM32 และมันค่อนข้างช้าถ้าคุณใช้มันเป็นหน่วยความจำทั่วไป
Mark Lakata

1
คุณสามารถทำให้ FSMC / PSRAM ทำงานได้เร็วขึ้น แต่คุณไม่สามารถแมปกับพื้นที่หน่วยความจำปกติได้เช่นหน่วยความจำฮีป คุณจะต้องใช้การเข้าถึง DMA เฉพาะ
Mark Lakata

4

เมื่อเร็ว ๆ นี้ฉันมีข้อกำหนดที่คล้ายกันสำหรับโครงการใหม่และเลือก STMicro STM32F103ZET6 (ARM 32 บิต Cortex-M3) พร้อมแฟลชภายใน 512K และ RAM ภายใน 64K ราคาประมาณ $ 10 มันมีตัวควบคุมหน่วยความจำซึ่งสามารถอยู่ถึง 64MB หน่วยความจำภายนอก (26 บิตที่อยู่) มีให้ในแพ็คเกจ LQFP 144 พิน (ฉันไม่ชอบใช้ BGA สำหรับต้นแบบ) ฉันจะเชื่อมต่อกับ Cypress SRAM 2MB โดยไม่ต้องใช้กาวอื่น ๆ (ไม่ต้องมัลติเพล็กซ์)


เย็น! คุณกำลังใช้บอร์ดพัฒนาหรือทำด้วยตัวเอง?
samoz

ตัวแทน STMicro ในพื้นที่ของฉันให้ฉัน "IAR KickStart Kit สำหรับ STM32" iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225 เพื่อเล่นกับ; อย่างไรก็ตาม micro เป็นเพียงแพ็คเกจ 64-pin ดังนั้นจึงไม่มีพิน FSMC ดังนั้นฉันอาจได้รับบอร์ดที่มีแพ็คเกจ 144 พิน
tcrosley

ฉันพลาดอะไรไปรึเปล่า? 26 บิตสามารถระบุตำแหน่งได้โดยตรง 2 ^ 6 = 64 M 512MB ด้วยนั้นจะหมายถึงคำ 8 ไบต์ ควรเป็น 512Mb หรือไม่
XTL

1
@XTL: จับได้ดีฉันแก้ไขคำตอบของฉัน
tcrosley

3

อาจเป็นAtmel AT91SAM9G20หรือ

มันเป็นสัตว์เดรัจฉาน (แพ็คเกจ BGA 217 พิน) แต่มันเป็นชิปที่ยอดเยี่ยมสำหรับราคา หากคุณกำลังมองหาบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ มากขึ้นเป็นมิตรกับมนุษย์อาจจะลองAtmel AT91M42800A ฉันคิดว่าเป็น MCU ที่เล็กที่สุดที่มีฮาร์ดแวร์หน่วยความจำภายนอกอย่างน้อยก็จาก Atmel มันเป็นแพ็คเกจ LQFP 144 พิน

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.