Symbian3/PDK/Source/GUID-114A23CF-BF8B-54F5-8AF6-FEF007891884.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 11 Jun 2010 15:24:34 +0100
changeset 9 59758314f811
parent 5 f345bda72bc4
child 12 80ef3a206772
permissions -rw-r--r--
Week 23 contribution of PDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-114A23CF-BF8B-54F5-8AF6-FEF007891884" xml:lang="en"><title>SD Controller </title><shortdesc>Describes the Secure Digital (SD) controller supported on the Symbian
platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>The SD controller provided by the Symbian platform is based on the <xref href="http://www.sdcard.org/developers/tech/sdcard/pls/Simplified_Physical_Layer_Spec.pdf" scope="external">Physical Layer Simplified Specification Version 2.00</xref> from
the SD Card Association. </p>
<section id="GUID-8A734E8C-CB18-48C8-9C8F-71AA6693B782"><title>Introduction</title> <p>The
Secure Digital (SD) card protocol is implemented as a super–set of multimedia
cards on the Symbian platform. The Multi Media Card (MMC) controller also
supports the SD cards. The SD card controller functionality is very similar
to the MMC controller and hence the SD card controller is provided by a set
of SD card classes which are derived from the MMC controller classes. </p> </section>
<section id="GUID-D41588EF-12DA-5E50-8FF4-FCE13CA81409"><title>SD Card</title> <p>The
SD cards are flash based memory cards used in high capacity data storage in
handheld devices like digital cameras, mobile phones and PDAs. The SD cards
contain 9 pins and support a 4-bit data bus. SD cards are forward compatible
with MMC and hence a device with SD card support will also support MMC cards.
SD cards use star topology with dedicated command and data signals. </p> <p>There
are two versions of SD cards: the standard capacity SD card which has a memory
capacity of up to 2GB; and high capacity SD cards which have a maximum memory
capacity of up to 32GB. The SD card functionality is provided by a layered
architecture. The 3 layers are: </p> <ul>
<li id="GUID-86ED75DF-68C4-5D0A-B11F-C9B52CEEC6ED"><p>File System Layer provides
high level file operations </p> </li>
<li id="GUID-3741FA6C-6324-59CB-B460-5BF38C87C260"><p>Media Driver layer provides
an interface to the file system and enables low level file operations like
read and write to a storage area </p> </li>
<li id="GUID-2F9CA759-FCE0-57FB-B7C4-5B93D94CAEF3"><p>SD controller provides
the low level data operations </p> </li>
</ul> <p>The SD card stack is responsible for sending the command sequences
to enable the communication between the SD card and file system of the Symbian
platform. </p> </section>
<section id="GUID-D53D0828-5579-4A4B-A611-395A3CBB34E4"><title>SD Card Controller</title> <p>The <xref href="GUID-F3BD37EC-0CCB-5859-908F-215E22C9FC20.dita">File Server</xref> uses the <xref href="GUID-2F114BC9-9B5D-5989-9CF3-37A43377DC58.dita">Media Driver</xref> to access
user data from the SD cards. The Multi Media Card (MMC) Media Driver supports
the SD cards on the Symbian platform. The MMC media drivers are implemented
in <filepath>MEDMMC.PDD</filepath>. The Media Driver uses the services of
the SD controller. The SD controller is implemented as a peripheral bus controller
in <filepath>EPBUSSD.DLL </filepath> to support SD cards. The difference between
the MMC controller and the SD controller is the default partition information
and the initialization sequence used. The main functions of an SD controller
are : </p> <ul>
<li id="GUID-9F6B9620-8F40-532E-88AD-DEDDC1BD1A03"><p>Support the SD memory
card initialization protocol. </p> </li>
<li id="GUID-EAD5FB6D-8DBB-53E2-A895-13539C73F002"><p>Reading and writing
one or more blocks from/to an SD memory card. </p> </li>
<li id="GUID-022E3749-1739-58ED-B875-343B7048E4BA"><p>Support for 4-bit wide
data bus option </p> </li>
<li id="GUID-D30CAD38-3897-5899-8761-A1DEB3DBDB92"><p>Support for Erase commands
on SD cards </p> </li>
</ul> <p>The SD controller first detects the card present in the card port.
There can be more than one card port available in a device. When more than
one card is present, the controller switches between the ports to identify
them. When it detects an SD card, the SD card initialization protocol is loaded.
The initialization protocol is a sequence of commands as described in the <xref href="http://www.sdcard.org/developers/tech/sdcard/pls/Simplified_Physical_Layer_Spec.pdf" scope="external">SD Association</xref> specification. </p> </section>
<section id="GUID-0EA05AC0-557D-573F-B907-41752445DC60"><title>SD controller
classes</title> <fig id="GUID-F044A820-5E7E-5A99-83D5-7CA47EBABBC8">
<title>              SD controller classes            </title>
<image href="GUID-58A5C008-88B6-5C91-8BE5-E98CA5E5A438_d0e400148_href.png" placement="inline"/>
</fig> </section>
<section id="GUID-25A29720-A91E-49FA-8E60-3060F25536EA"><title>SD Stack </title><p>The SD controller is implemented through
a set of classes derived from the MMC controller. The <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>DMMCStack</apiname></xref> maintains
a state machine and is responsible for detecting the new cards and initializing
the necessary stack. The <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>DSDStack</apiname></xref> is
initialised when the controller detects a new SD card. The <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>DSDStack</apiname></xref> sends
the commands to acquire the cards as described in the SD topology. <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>DSDStack::InitialiseMemoryCardSM()</apiname></xref> is used to
initialize the SD cards and <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>DSDStack::ConfigureMemoryCardSM()</apiname></xref> is
used to configure the card. </p></section>
<section id="GUID-23D87A40-614C-4F4D-A35E-B02216097C1A"><title>TSDCard</title><p>The <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>TSDCard</apiname></xref> class
provides the functions to read and write information about the card. The <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>PreferredWriteGroupLength</apiname></xref> returns the Erase Sector
size of the SD card. Clients of the SD controller should use <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>DMMCStack::CardP()</apiname></xref> to
get a pointer to the card object.<xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname> TSDCard::IsCard()</apiname></xref> function
is used to detect a SD card. </p></section>
<section id="GUID-9D9AE44F-1E6F-4D09-9B3E-76AB3BFC42F2"><title>Omissions</title> <p>The
Symbian platform does not support SPI mode in SD cards. </p> </section>
<section id="GUID-8B7FCAA7-3A62-4CEA-917E-27CC571E6FAF"><title>Session</title><p>The <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>DSDSession</apiname></xref> class
provides the session related functions for the SD cards. The <xref href="GUID-3DC34D4F-E693-3BF0-B5D6-DF22FCE37340.dita"><apiname>DSDSession</apiname></xref> class
creates the descriptors with command data. These commands are then sent to
the SD cards by the controller. </p></section>
</conbody><related-links>
<link href="GUID-0E5A241A-19F5-5754-B454-45747A8D80E1.dita"><linktext>SD Card Overview</linktext>
</link>
<link href="GUID-E194A923-99E7-5DC1-BB78-D050A4793A60.dita"><linktext>SD Controller
PSL Implementation</linktext></link>
</related-links></concept>