How to Use MMC/SDC

Started by tha, May 28, 2022, 09:34:51 AM

Previous topic - Next topic

tha

Cosideration on Multi-slave Configuration

ใน the SPI bus, แต่ละ slave device ถูกเลือกด้วย CS signals ที่แยกกัน, และ devices มากมายสามารถถูกแนบติดกับ an SPI bus. Generic SPI slave device เปิดใช้งาน/ปิดใช้งาน DO output ของมันโดย CS signal แบบอะซิงโครนัสเพื่อแชร์ an SPI bus. อย่างไรก็ตาม MMC/SDC เปิดใช้งาน/ปิดใช้งาน the DO output ในแบบประสานเวลากับ the SCLK. นี้หมายความว่ามีความเป็นไปได้ของ bus conflict กับ MMC/SDC และ SPI slave อื่นที่แชร์ an SPI bus. รูปขวาแสดง the MISO line drive/release timing ของ the MMC/SDC (the DO signal ถูกดึงเท่ากับ 1/2 vcc เพื่อดู the bus state). ดังนั้นเพื่อทำให้ MMC/SDC ปลดปล่อย the MISO line, the master device จำเป็นต้องส่ง a byte หลังจาก the CS signal ถูกถอนการยืนยัน.

มี an important thing จำเป็นต้องถูกพิจารณาว่า the MMC/SDC ไม่ใช่ the SPI device ดดยเริ่มต้น. บาง bus activity เพื่อเข้าถึง SPI device อื่นอาจเป็นเหตุให้ a bus conflict เนื่องจาก an accidental response of the MMC/SDC. ดังนั้น the MMC/SDC ควรถูกเริ่มต้นเพื่อกำหนดมันลงใน the SPI mode ก่อนการเข้าถึง device อื่นใดๆที่แนบติดกับ the same SPI bus.


tha

Maximum SPI Clock Frequency

MMC/SDC สามารถทำงานที่ the clock frequency สูงถึง 20/25 MHz. แน่นอนทุก native interfaces รับประกันการทำงานที่ the maximum clock frequency. อย่างไรก็ตาม generic SPI interface ที่รวมไว้ใน the microcontrollers อาจไม่ทำงานที่ high clock frequency เนื่องจาก a timing issue. รูกขวาแสดง the timing diagram of the SPI interface. ใน SPI mode 0/3, the data ถูกเรื่อยออกโดย falling edge of the SCLK และแลทช์ค้างไว้โดย rising edge ที่ตามมา. td เป็น the SCLK ถึง DO propagation หน่วงเวลาที่ the SDC, 14ns maximum. tsu คือ the minimum setup time of the MISO input บน the SPI interface. ดังนั้น the maximum allowable SCLK frequency สามารถถูกคำนวณดังนี้:

FSCLK(max) = 0.5 / (td + tsu)

บาง microcontrollers ที่ผมเคยใช้ถูกจำกัด the allowable clock frequency ประมาณ 10 MHz เป็นไปตาม the timing specs.


tha

File System

The file system ที่ใช้บน the MMC/SDC คือ FAT. The MMC/SDC specifications กำหนด the FAT type อย่าง: FAT12 สำหรับ 64MB และน้อยกว่า, FAT16 สำหรับ 128MB ถึง 2GB, FAT32 สำหรับ 4GB ถึง 32GB และ exFAT สำหรับ 64GB ถึง 2TB. เฉพาะ an FAT volume สามารถมีอยู่บน the card ที่มี FDISK partitioning และไม่มี patition table อย่าง floppy disk ไม่ถูกอนุญาต. แน่นอน the MMC/SDC ที่มี any file system และ partitioning นอกเหนือจาก the MMC/SDC specifications define สามารถถูกใช้เป็น generic storage media สำหรับ PCs. อย่างไรก็ตาม the card ดังกล่าวที่มี illigal format จะไม่ถูกยอมรับโดย DSCs, camcorders and TVs.


tha

Optimization of Write Performance

MMC/SDC ใช้ NAND Flash Memory เป็น a memory array. The NAND flash memory คุ้มค่าและมันสามารถอ่าน/เขียน large chunk of data อยางรวดเร็ว, แต่ในทางกลับกัน มีข้อเสียคือการเขียนส่วนเล็ก ๆ น้อย ๆ ของ data ใหม่จะไม่มีประสิทธิภาพ. โดยทั่วไป the flash memory ต้องการลบ existing data ก่อนที่จะเขียนใหม่ a new data, และ minimum unit of erase operation, ที่เรียกว่า erase block, จะใหญ่กว่า write block size. The typical NAND flash memory มี a block size of 512/16K bytes สำหรับ write/erase operation, และการ์ดล่าสุดที่มีขนาดเกิน 128MB จะใช้ large block chip (2K/128K). ซึ่งหมายความว่าจะเขียนข้อมูลทั้งหมดใน the erase block ใหม่ ถูกทำในการ์ดแม้ว่าจะเขียนเพียงเซกเตอร์ (512 ไบต์).

tha

Benchmark

ฉันตรวจสอบประสิทธิภาพการอ่าน/เขียนของ MMC/SDC บางตัวด้วย MCU 8 บิตราคาถูก (ATmega64 @9.2MHz) บนสมมติฐานว่าระบบฝังตัวที่มีขนาดหน่วยความจำจำกัด ด้วยเหตุผลของขนาดหน่วยความจำ เขียน () และ read() ถูกดำเนินการครั้งละ 2048 ไบต์ ผลลัพธ์คือ: เขียน: 77kB/วินาที อ่าน: 328kB/วินาที บน 128MB SDC เขียน: 28kB/วินาที อ่าน: 234kB/วินาที บน SDC 512MB และเขียน: 182kB/วินาที อ่าน: 312kB/วินาทีบน 128MB MMC

จากการเปรียบเทียบในภายหลัง ฉันเดาว่า MMC มีแนวโน้มที่จะเร็วกว่า SDC ในปริมาณงานการเขียน.

ดังนั้นประสิทธิภาพการเขียนของ SDC 512MB นั้นแย่มากที่ค่าหนึ่งในสามของ 128MB SDC โดยทั่วไปแล้วประสิทธิภาพการอ่าน/เขียนของอุปกรณ์จัดเก็บข้อมูลขนาดใหญ่จะเพิ่มขึ้นตามสัดส่วนของความหนาแน่นในการบันทึก สำหรับ MMC ดูเหมือนว่าจะเร็วกว่า SDC หลายเท่า แต่ก็ไม่ได้แย่นัก หลังจากนั้น ฉันได้ตรวจสอบ SDC บางตัวที่จัดหามาจากผู้ผลิตหลายราย และพบว่า SDC ของ PQI นั้นเร็วเท่ากับ MMC ของฮิตาชิ แต่ของพานาโซนิคและโตชิบานั้นประสิทธิภาพแย่มาก

tha

Erase Block Size

เพื่อวิเคราะห์รายละเอียดของ write operation, busy time (จำนวนของ polling cycles) หลังจากส่ง a write data ถูกพิมพ์ออกไปยัง console ใน the low level disk write function. หลาบตัวเลขบน a line แสดงให้เห็น data blocks และ a Stop Tran token ที่ปล่อยออกโดย a multiple block write transaction.

จากผลการวิเคราะห์พบว่ามีความแตกต่างกันของ internal process ระหว่าง 128MB SDC and 512MB SDC. The 128MB SDC เขียนใหม่ erase block ที่ end of the mutiple block write transaction. The 512MB SDC ดูเหมือนมี 4K bytes data buffer และมันเขียนใหม่ erase block ทุกๆ 4K bytes boundary. ดังนั้นจึงไม่สามารถเปรียบเทียบได้โดยตรงแต่ the processing time ของการเขียนใหม่ an erase block สามารถถูกอ่าน 3800 สำหรับ 128MB SDC และ the 512MB SDC ใช้ 30000 ที่ 8 เท่านานกว่า 128MB SDC. พิจารณาจากผลลัพธ์นี้ ดูเหมือนว่า the 128MB SDC ใช้ a small block chip และ the 512MB SDC ใช้ a large block หรือ MLC chip. แน่นอน the larger block size ลด the performance บน pertial block rewriting. ใน 512MB SDC, เฉพาะพื้นที่ที่ 512K bytes จากด้านบนของหน่วยความจำค่อนข้างเร็ว. นี้สามารถถูกอ่านจาก write time ใน close(). อาจมีการประมวลผลพิเศษใดๆ ถูกนำมาใช้ในพื้นที่นี้เพื่อการเข้าถึง FAT อย่างรวดเร็ว.

tha

Improving Write Performance

เพื่อหลีกเลี่ยงปัญหาคอขวดนี้และเพิ่ม the write performance, จำนวนของ blocks ต่อ write transaction ต้องใหญ่สุดเท่าที่เป็นได้. แน่นอน all layers ระหว่าง the application and the media ต้องรองรับ multiple sector write feature. สำหรับ low level SDC/MMC write function, มันควรแจ้งจำนวนของ write sectors ถึง the card ก่อน the write transaction เพื่อ efficient internal write process. วิธีนี้เรียกว่า `pre-defined multiple block write'. The pre-definition command ไม่เหมือนกันระหว่าง MMC (CMD23) and SDC (ACMD23).

The memory cards ถูกแบ่งพาร์ติชั่นและถูกฟอร์แมตโดยเริ่มต้นเพื่อวางแนว the allocation unit ให้กับ the erase block boundary. เมื่อแบ่งพาร์ติชั่นใหม่หรือฟอร์แมตใหม่ the memory card ด้วย a device ที่ไม่เป็นไปตาม MMC/SDC (นี่เป็นเพียง a PC เท่านั้น) โดยไม่สนใจ, การเพิ่มประสิทธิภาพจะใช้งานไม่ได้และประสิทธิภาพการเขียนอาจหายไป. ผมพยายามฟอร์แมตใหม่ a 512MB SDC ใน FAT32 ด้วย a generic format function of the PC, the write performance ที่วัดใน file copy ถูกลดลงมามาก. ดังนั้นการฟอร์แมตใหม่ the card ควรถูกทำด้วย SD format utility หรือ SDC/MMC compliant equipments.


tha

License

MMC specification ถูกจัดให้มีโดย MMCA (Multimedia Card Association) และจากนั้นมันถูกโอนไปยัง JEDEC. Any license ไม่ถูกต้องการในการพัฒนาและขาย the MMC products. อย่างไรก็ตาม the MMC specification ไม่ถูกเปิดเผยต่อสาธารณะคุณจำเป็นต้องเข้าร่วม JEDEC เพื่อรับ the techinical documentations.

SD specification เป็นผลิตภัณฑ์ที่ได้รับการพัฒนาและให้บริการโดย SDA (SD Card Association) and SD-3C, LLC. ทุกองค์กรหรือบุคคลที่ขายผลิตภัณฑ์ใดๆ ที่มีข้อกำหนด SD จะต้องเป็นสมาชิก SDA และ HALA (โฮสต์และส่วนเสริมข้อตกลงสิทธิ์ใช้งานผลิตภัณฑ์) กับ SD-3C LLC จำเป็นสำหรับการขายผลิตภัณฑ์โฮสต์ SD ใดๆ ที่ระบุว่ารองรับการ์ด SD ไม่ว่าจะใช้อินเทอร์เฟซ โหมด SD หรือโหมด SPI ใดก็ตาม. สำหรับผลิตภัณฑ์ขั้นกลาง เช่น embedded module, จำเป็นต้องมีใบอนุญาตสำหรับอย่างใดอย่างหนึ่ง ผู้ขายโมดูลหรือผลิตภัณฑ์ขั้นสุดท้าย เฉพาะผู้ได้รับอนุญาตเท่านั้นที่สามารถใส่โลโก้ SD บนผลิตภัณฑ์ แพ็คเกจ และคู่มือได้ ค่าธรรมเนียมรายปีสำหรับสมาชิกทั่วไป SDA คือ 2,500 USD และใบอนุญาต ค่าธรรมเนียมสำหรับ HALA คือ 3,000 USD ต่อปี.

ทุกสถานะผลิตภัณฑ์รองรับการ์ด SD จำเป็นต้องได้รับใบอนุญาต กล่าวคือ ผลิตภัณฑ์ไม่ได้ระบุถึงการรองรับการ์ด SD ว่าไม่จำเป็นต้องได้รับอนุญาต แม้ว่าจะรองรับการ์ด SD จริงๆ ก็ตาม เพื่อหลีกเลี่ยงปัญหาใบอนุญาต ผู้ผลิตอุปกรณ์ที่ตระหนี่บางราย รวมถึงบริษัทใหญ่ๆ ที่ระบุว่า "รองรับ MMC", "รองรับ MMC และการ์ดที่รองรับ" หรือ "รองรับการ์ด TF" ไร้สาระ!

Links

  •  e.MMC | JEDEC
  •  SDA - SD Card Association
  •  SD Physical Layer Spec. by SDA
  •  About SPI
  •  Generic FAT file system module with sample code to control MMC/SDC