An Attempt to Access a Memory Card

download An Attempt to Access a Memory Card

of 16

Transcript of An Attempt to Access a Memory Card

  • 8/12/2019 An Attempt to Access a Memory Card

    1/16

    An attempt to access a memory card (MMC) usinga PIC with limited RAM (PIC16F8A)

    This is my first digital voice recorder which is made using a mid range PIC with a total RAM of

    only 256 bytes !enerally "eo"le may say that we cannot access MMC#$% card using a

    microcontroller with a RAM & 5'2 I had seen such "osts and comments in many electronics

    forums( sites etc )ut now i could comment it is also "ossible to access MMC#$% using a uC with

    limited RAM but may have much limitations com"ared to uC with enough RAM

    *ere( i used a PIC'6+,--A to access an MMC MMC is interfaced to PIC'6+,--A via $PI

    I didn.t used any file system here It writes the , bit digital data from A%C to the MMC using a

    multi"le bloc/ write command A single bloc/ consist of 5'2 bytes ( also called as a sector

    $imilarly it reads the ,bit digital data 0digital sam"les1 using a mutli"le bloc/ read command

    After reading each byte( it is sent to the PM register to generate PM signal corres"onding to

    the audio recorded Then after "assing the PM signal throuh a low "ass filter( the analog

    signal could be obtained which is then am"lified and introduced to a s"ea/er to re"roduce the

    recorded voice The audio 3uality was beyond my e4"ectation The reason for the good audio 3uality is the

    high bit rate $ince i didn.t used any file system 0+AT etc1 I could easily use multi"le bloc/ read

    and multi"le bloc/ write commands to read and write MMC and thus it could achieve the

    ma4imum bit rate

    I!"#RFACI!$ MMC to PIC%

    http://4.bp.blogspot.com/-kU_xtp0BlpI/Tp14ZhSh_nI/AAAAAAAAAGw/dCnk0_YMffc/s1600/mmc+spi.jpg
  • 8/12/2019 An Attempt to Access a Memory Card

    2/16

    MMCis interfaced to PIC via $PI 0serial "eri"heral interfacing1 Inbuilt $PI module is available

    in PIC'6+,--A The $PI mode allows , bits of data to be synchronously transmitted and received

    simultaneously *ere( PIC'6+,--A is $PI master and MMC is $PI slave To accom"lishcommunication( ty"ically three "ins are used

    $erial %ata 7ut 0$%71 8 RC5#$%7

    $erial %ata In 0$%I1 8 RC9#$%I#$%A

    $erial Cloc/ 0$C:1 8 RC;#$C:#$Cow( i thin/ is better to e4"lain the MMC command using command function in "rogram

    voidcommand(charcommand, unsigned longintfourbyte_arg, charCRCbits ) {

    spi_write(0xff) spi_write(0b0!000000"command) spi_write((unsigned char)(fourbyte_arg ## $%)) spi_write((unsigned char)(fourbyte_arg ## !&)) spi_write((unsigned char)(fourbyte_arg ## ')) spi_write((unsigned char)fourbyte_arg) spi_write(CRCbits)

    http://2.bp.blogspot.com/-70aB5xlP2xM/Tp1-Ja_860I/AAAAAAAAAG4/jqTFpooLeQg/s1600/pic+mmc+voice+recorder.jpg
  • 8/12/2019 An Attempt to Access a Memory Card

    3/16

    spi_read()

    The above function is the command function If we call the command function with 6 byte

    arguments then it will send the 6 bytes to MMC using spi*writefunction

    In MMC command( the Most significant byte is the command byte In the command byte( the 2.M$). bits are always @' The remaining 6 bits are the actual command $o( a CM%@ means this

    6 bits will be @@@@@@ and the msb 2 bits will be @' $o( the command byte for CM%@ is

    @b@'@@@@@@ ie in he4( it will be @49@ and in decimal( it will be 69 >ow( comes the 9 argument

    bytes( which carry some information to be transferred to MMC ie the information such as sector

    address( bloc/ si?e etcIt de"ends on the command whether it re3uires the 9 byte argument or

    not If it is not re3uired to certain commands 0li/e CM%@1 then @4@@ is send four times ie

    the +our,yte*argis ?ero >ow comes the CRC byte( which is not cared in the $PI mode of MMC

    $o( we send @4ff as CRC byte

    Command @ 0CM%@1 is called li/e this

    command(-.-.-/0)2

    There are different ty"es of command res"onses >ow( for getting a res"onse from MMC( @4ff is

    send and the received data will be the res"onse +or some commands( we need to wait until the

    correct res"onse is received( by continuously chec/ing for the res"onse

    There are commands for reading( writing etc very data read or data write o"eration is

    com"leted by reading or writing of a total of 5'2 bytes of data A sector is 5'2 bytes0default bloc/

    si?e1 e cannot terminate the read or write o"eration in the midway with in a bloc/

    MMC I!I"IA3I4A"I&!%

    hen an MMC is "owered 7>( we need to initiali?e the MMC and bring it to $PI mode Thisre3uires a series of commands 0will be there in MMC s"ec1 and need to chec/ the res"onse 0as

    "er the s"ec1 whether it is correct or not for the "articular command

    Actually initialization was the main problem which i faced at the beginning. It took 3 days for

    me to successfully initialize an MMC card. I used hyperterminal in PC for checking the response

    of each command. I feel it is the best testing method. Later i used a !"# LC$. %check mmc&init%'

    in my program below.'

    'A"A "RA!F#R%

    5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555

    Timing diagram of CM%'( single bloc/ read and write

  • 8/12/2019 An Attempt to Access a Memory Card

    4/16

    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

    BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

    Single Block Read:

    The argument s"ecifies the location to start to read in unit of byte or block The sector

    address s"ecified by u""er layer must be scaled "ro"erly hen a CM%'- is acce"ted( a read

    o"eration is initiated and the read data bloc/ will be sent to the host After a valid data to/en

    0+h1 is detected( the host controller receives following data field and two byte CRC The CRC

    bytes must be flushed even if it is not needed If any error occured during the read o"eration( an

    error to/en will be returned instead of data "ac/et

    Multiple Block Read:

    The Multi"le )loc/ Read command reads multi"le bloc/s in se3uence from the s"ecified

    address hen number of transfer bloc/s has not been s"ecified before this command( thetransaction will be initiated as an o"enBended multi"le bloc/ read( the read o"eration will continue

    until sto""ed with a CM%'2 The received byte immediately following CM%'2 is a stuff byte( it

    should be discarded before receiving the res"onse of the CM%'2 )efore every data "ac/et( a

    data to/en 0+h1 is sent by the card If the data to/en is not received( then it waits for the to/en

    Single Block Write:

    hen a write command is acce"ted( the host controller sends a data "ac/et to the card

    after a byte s"ace The "ac/et format is same as )loc/ Read command The CRC field can have

    any invalid value unless the CRC function is enabled hen a data "ac/et has been sent( the

    card res"onds a %ata Res"onse immediately following the data "ac/et The data res"onse trails

    a busy flag to "rocess the write o"eration Most cards cannot change write bloc/ si?e and it is

    fi4ed to 5'2 bytes )efore every data "ac/ets a data to/en is written so that the MMC#$% could

    confirm that the ne4t 5'2 bytes received after the write to/en 0+h1 is the data bloc/ to be stored

    in the $%#MMC

    In "rinci"le of the $PI mode( the C$ signal must be asserted during a transaction( however there

    is an e4ce"tion to this rule hen the card is busy( the host controller can de assert C$ to release

    $PI bus for any other $PI devices The card will drive %7 signal low again when reselect it during

    internal "rocess is in "rogress Therefore a "receding busy chec/ 0wait ready immediately before

  • 8/12/2019 An Attempt to Access a Memory Card

    5/16

    command and data "ac/et1 instead of "ost wait can eliminate waste wait time In addition the

    internal "rocess is initiated a byte after the data res"onse( this means eight cloc/s are re3uired to

    initiate internal write o"eration The state of C$ signal during the eight cloc/s is negligible so that

    it can done by bus release "rocess described below

    Multiple Block Write:

    The Multi"le )loc/ Read command writes multi"le bloc/s in se3uence from the s"ecified

    address hen number of transfer bloc/s has not been s"ecified "rior to this command( the

    transaction will be initiated as an open(ended multiple block write( the write o"eration will

    continue until it is terminated with a $to" Tran to/en0+%h1 The busy flag will a""ear on the %7

    line a byte after the $to" Tran to/en As for $%C( the multi"le bloc/ write transaction must be

    terminated with a $to" Tran to/en inde"endent of the transfer ty"e( "reBdefined or o"enBended

    A'I& &"%

    *ere( I used inbuilt PM module of the PIC as a %AC PM is really a good and chea"

    solution for %AC *ere( if i "ut an , bit data to CCPR2< register of PIC( it will generate PM

    signal corres"onding to that data If i stream the voice data to CCPR2< with a s"eed according to

    the s"ecified bitrate then a Pulse idth Modulated signal corres"onding to the voice is generated

    which could be easily converted to analog signal by using a low "ass filter This could be

    am"lified and introduced to a s"ea/er to re"roduce the voice

    PM out could be obtained from RC17CCP"in of PIC'6+,--A

    A'C%

    A%C in PIC is used to convert the analog audio signal from a condenser mic "reBam"

    PIC'6+,--A have inbuilt '@ bit A%C module I used only the ,

  • 8/12/2019 An Attempt to Access a Memory Card

    6/16

    C;FI(:3define C #C93define # #?93define "; #?13define fst cmd(:

  • 8/12/2019 An Attempt to Access a Memory Card

    7/16

    cmd(: // Fnction set (E-it interfce' 9 lines'*7Pi cler()> // Cler screen cmd(: // et entry ModeD

    voidstrin(constc5r*G)B cler()> H5ile(*G) B dt(*G++)> DDvoidistrin(nsined intG)B cmd(: dt(E8 + (G / 1::))>

    G @ 1::> dt(E8 + (G / 1:))> G @ 1:> dt(E8 + (G))> delyms(::)>D/*-----------------------!C ";------------------------*//*-----------------------J#& ?"I;--------------------*/voidsrtinit()B IC6 @ :> &&A @ :::1::11:>

    #C&A @ :11:1::::> P?# @ 1:>Dvoid4rintf(constc5r*4)B H5ile(*4) B " @ *4> H5ile(M& @@ :)> 4++> DDvoidt

  • 8/12/2019 An Attempt to Access a Memory Card

    8/16

    IC1 @ :> &9CLP1 @ :> &9CLP: @ :> P#9 @ : CCP#9! @ : &M#9; @ 1> CCP9C; @ :::::11::>Dvoid4Hmdisle()B CCP9C; @ :::::::::>Dvoid4Hmenle()B CCP9C; @ :::::11::>D/*--------------------PKM ";-------------------------*/

    /*-------------------MMC ?"I;-----------------------*/voids4iinit()B ICE @ 1> #C9 @ 1> #C= @ :> #C @ :> IC9 @ IC= @ IC @ :> PC; @ :::1:::1:> P"; @ 1> MP @ 1> CL" @ 1> CLP @ :>

    Dvoids4iHrite(nsined c5r)B P?JF @ > H5ile(?F @@ :)>Dvoids4ired()B P?JF @ : H5ile(?F @@ :)> reddt @ P?JF>D

    voidcommnd(c5rcommnd' nsined lonintforyter' c5rC#Cits)B s4iHrite(: s4iHrite(::1:::::: commnd)> s4iHrite((nsined c5r) (foryter 22 9E))> s4iHrite((nsined c5r) (foryter 22 16))> s4iHrite((nsined c5r) (foryter 22 8))> s4iHrite((nsined c5r) foryter)>

  • 8/12/2019 An Attempt to Access a Memory Card

    9/16

    s4iHrite(C#Cits)> s4ired()>Dvoidmmcinit()B C @ 1> for( @ :> . :> ++) B s4iHrite(: D C @ :> delyms(1)> commnd(:' :' : cont @ :> H5ile((reddt O@ 1) (cont . 1:::)) B s4ired()> cont++> D if(cont 2@ 1:::) B strin(QCA# "###-CM: Q)>

    H5ile(1)> D commnd(1' :' : cont @ :> H5ile((reddt O@ :) (cont . 1:::)) B commnd(1' :' : s4ired()> cont++> D if(cont 2@ 1:::) B strin(QCA# "###-CM1 Q)> H5ile(1)> D commnd(16' 19' : cont @ :> H5ile((reddt O@ :) (cont . 1:::)) B s4ired()> cont++> D if(cont 2@ 1:::) B strin(QCA# "###-CM16Q)> H5ile(1)> D strin(QMMC I;I&IA!IR"OQ)> delyms(1:::)> PC; @ PC; :111111:1>D

    voidHrite()B 4Hmdisle()> commnd(9' r' : H5ile(reddt O@ :) B s4ired()> strin(QK#I&" "###Q)> D strin(QK#I&I; MMCQ)>

  • 8/12/2019 An Attempt to Access a Memory Card

    10/16

    H5ile(1) B s4iHrite(: s4iHrite(: s4iHrite(:111111::)> for(int @ :> . 19> ++) B @ 1> H5ile()> s4iHrite(A#"!)> P#& @ SA#"!> D s4iHrite(: s4iHrite(: s4ired()> H5ile((reddt ::::11111) O@ : D H5ile(reddt O@ : D if(#": @@ 1) B s4iHrite(: s4iHrite(: s4iHrite(:111111:1)> //sto4 toen s4ired()> s4ired()> H5ile(reddt O@ : D re> D DDvoidred()B 4Hmenle()> commnd(18' (r)' : H5ile(reddt O@ :) B s4ired()> strin(Q#"A "###Q)> D strin(Q#"AI; MMCQ)> H5ile(1) B H5ile(reddt O@ : D for(int @ :> . 19> ++) B s4ired()> delys(16,)> CCP#9! @ reddt> P#& @ Sreddt> D s4iHrite(: s4iHrite(: if(#": @@ 1) B commnd(19' r' : s4ired()>

  • 8/12/2019 An Attempt to Access a Memory Card

    11/16

    H5ile(reddt O@ :) B s4ired()> D H5ile(reddt O@ : D re> D DD/*--------------------mmc end----------------------*//*-----------------AC fnctions-------------------*/voiddcinit()B IA: @ 1> AC;: @ :1::::::1> AC;1 @ :1:::111:>D/*-------------------min fnction-------------------*/min()B C @ 1> P#& @ :> ICE @ :> IC @ :> I @ :> I?9 @ :> I?1 @ :> I": @ 1> lcdinit()> dcinit()> srtinit()> s4iinit()> mmcinit()> 4Hminit()> lcdinit()> cont @ :> C @ :> r @ :> H5ile(1) B r @ :> fst> 4Hmenle()> strin(Q#"A M"Q)> delyms(1:::)>

    red()> r @ :> fst> 4Hmdisle()> strin(QK#I&" M"Q)> delyms(1:::)> Hrite()> DD

  • 8/12/2019 An Attempt to Access a Memory Card

    12/16

    9#R# I "9# CR##!9&" &F "9# :I3' and 9#; FI3#

  • 8/12/2019 An Attempt to Access a Memory Card

    13/16

    $1::1::::9=E::=E7=E9=EEN=EE=EE=E9:=E9

    $1::11:::E=EEF=EEE=EE=E::=E9=EE=EE1=EE9

    $1::19:::EE=E9:=EE=E9=E9=EEF=E9=E::=EE1

    $1::1=:::9=EE=EE1=EEE=E9:=EE=EEF=EEE=E:=

    $:E:1E:::E=E::=E:"

    $1::E"::8=19:=1=N:1:8:::C=:8=19:=1=N::C8

    $1::":::8::8=19:=1=861E?E9A8=19:=1=861:91

    $1::6":::8::8=16:=1=:1E81=:8=19:=1=NF::?9

    $1::7"::8"=:8=16:=1=NF:::8::A::1A1:1A9:17=

    $1::8"::A=:1AE:1A:1A6:1A7:18=:1:A198A11"E

    $1::N"::N:9C8=16:=1=:71=96=:N8:::=:8=19E

    $1::A":::=1=N8:::A=:8=16:=1=NN:::8::F:::1

    $1::?"::7::88=19:=1=N=::"E9A8=16:=1=1E1C8A

    $1::C"::"N9A"A9A"E9A"?9A:8:::1=::A198A11"=

    $1::"::6:9=:A198A11:=:F=::F?=:F9::F9:?8N

    $1::""::F69AF=:?F69AF?9A:8::8=16:=1=871:EC

    $1::F"::8=19:=1=N91:191::=:8=16:=1=N9::?

    $1::6:"::17=:8=19:=1=N?::191:C=:N:::8::E7

    $1::61"::FF=:8=19:=1=N=::1E9?8=16:=1=1E1CE1

    $1::69"::1N9?1A9?1E9?1?9?8=19:=1=1=:8F:::F8

    $1::6="::7::8A6:::8::8=16:=1=:7168=19:=1=:F

    $1::6E":::71871187198=16:=1=87198711:7117

    $1::6"::99=:8=19:=1=NE::NE168=16:=1=NE17F7

    $1::66"::1E178=19:=1=1E19:8::F1::8=19:=1=C

    $1::67":::61E9=:F:::F::?E99?6E::71:8F:::?A

    $1::68":::E=::=1:F::CFF=":=1E89?7::88=19=C

    $1::6N":::=1=88:::A198A11?:99:A198A1171:8F

    $1::6A"::8=19:=1=88:::A198A11?:99:A198A11CN

    $1::6?":::8::F1::8=19:=1=:611E9=:F:::F::?1E$1::6C"::669?6E::71:8F::::E=::=1:F::CFF="="

    $1::6":::=16C9?7::88=19:=1=88:::A198A11F=

    $1::6""::?:99:A198A1171:88=19:=1=88:::A19A?

    $1::6F"::8A11?:99:A198A11:8::F=::C:=::A19C1

    $1::7:"::8A116:9=:A198A11N9?7=:88E:::A199=

    $1::71"::8A11:=9::A198A11:A198A11=C9=:A199E

    $1::79"::8A11:1=:F9::79:8F=:7N9?7=:88E::C9

    $1::7=":::A198A11:=9::A198A11::=8:=1A89?"F

    $1::7E"::AN9?8C9?AA9?:8::F:::A198A11"C997N

    $1::7":::A198A11C=9?7:88E:::A198A11:=9::?

    $1::76":::A198A11:A198A11=C9=:A198A11:1=:C6$1::77"::FE::7E:8F:7C=9?7:88E:::A198A11N

    $1::78":::=9::A198A11::=8:=1C"9?CF9??99?N

    $1::7N":::9?E=::A198A118E9=:A198A11:8::?"

    $1::7A"::89=:F::=:FE::FE:??9?F:??9?88

    $1::7?"::":9?=:=::A198A116:9=:A198A11:7=:N8

    $1::7C"::F::7=:FE::FE:?"A9?F:?"A9?=:=:FC

    $1::7":::A198A116:9=:A198A11:7=:F::7=:E1

    $1::7""::FE::FE:?F89?F:?F89?=:=::A198A11A?

  • 8/12/2019 An Attempt to Access a Memory Card

    14/16

    $1::7F"::6:9=:A198A1198=::A198A116:9=:A19:=

    $1::8:"::8A1198=::A198A116:9=:A198A1198=:N"

    $1::81":::A198A116:9=:A198A11:C=::A198A11"6

    $1::89"::6:9=:A198A11:A198A11"C99:A198A11:E

    $1::8=":::A198A11"C99:A198A11:6=::A198A11E1

    $1::8E"::6:9=:A198A11:8::FA::FF=::A198A1178

    $1::8"::"99:A198A117A:8E:=8:A198A11"9999

    $1::86":::A198A1171:8F6::79:8F7::7=:8F8::7:

    $1::87"::7E:8FN::18=::=1:FN:CF8:CF7:CF6:C8C

    $1::88"::FF=":=1E99C76:8:A198A11"99:A19="

    $1::8N"::8A1171:8F6::79:8F7::7=:8F8::7E:8":

    $1::8A"::FN::1:=::=1:FN:CF8:CF7:CF6:CFF="A=

    $1::8?":::=1N9C76:8:A198A11"99:A198A11NN

    $1::8C"::71:8F6::79:8F7::7=:8F8::7E:8FN::9

    $1::8":::8=::=1:FN:CF8:CF7:CF6:CFF=":=1E

    $1::8""::7:9C76:8:A198A11"99:A198A1171:8FN

    $1::8F":::A198A11"99:A198A117:8:A198A11E8

    $1::N:"::"99:A198A11:A198A11:F9=:A198A1189

    $1::N1":::8::8=19:=1=:7188:18=16:=1=:719AN

    $1::N9"::871988:1:611861::N1E:A198A1179=1C

    $1::N=":::A198A11:A198A11?899:A198A11:A198"

    $1::NE"::8A11:99:A198A11:A198A11999=:A19=

    $1::N"::8A11:A198A11?96:A198A11:A198A11C8

    $1::N6"::FC99:A198A11:A198A1179=:A198A11=C

    $1::N7"::8=19:=1=AE:1A:1:711::=:A=::::=:8

    $1::N8"::A9::::=:A1::::=:A:::C9C::=:8=198

    $1::NN":::=1=A=::::=:A9::::=:A1::::=:A:::1

    $1::NA"::8:=::A198A116:9=:A198A11:A198A11"1

    $1::N?"::A?99:A198A11N:=::A198A11A?9=:A19EE$1::NC"::8A111A=:8=19:=1=AA::E=:AN::7"=:1=

    $1::N"::A8::A8:?F:9CAN:?F:9CAA:?F:9C:A19

    $1::N""::8A119"9:A198A11::=:8=19:=1=A=::6

    $1::NF"::::=:A9::::=:A1::::=:A:::8:=::A19AA

    $1::A:"::8A116:9=:A198A11:A198A11A799:A1967

    $1::A1"::8A117A=::A198A11A?9=:A198A111A=:F

    $1::A9"::8=19:=1=AA::E=:AN::7"=:A8::A8:?=C

    $1::A="::1"9AN:?1"9AA:?1"9:A198A11F=98F

    $1::AE":::A198A11C9CC9C:A198A11::98:A19FE

    $1::A"::8A11A?99:A198A118=19:=1=9=:8FE::NF

    $1::A6"::99:8F=::91:8F9::9::8F1::FF=:F?::F$1::A7"::7?:8F::19=::A198A119?9E:A198A11F1

    $1::A8"::E9:A198A11:F9=:A198A118=::A1966

    $1::AN"::8A11A?9=:A198A11E98=19:=1=A6:8E"

    $1::AA":::=1A9?9E89C96=::A198A11C"

    $1::A?"::A?9=:A198A116A96A9:A198A11:F9=8C

    $1::AC":::A198A116A98=19:=1=96:8F"=A:=1NN

    $1::A"::7197996E97=9FC:1F:17:88:=A6:

    $1::A""::FF::89=:7F:9:=17"9::=:7C:9:=1C9"

  • 8/12/2019 An Attempt to Access a Memory Card

    15/16

    $1::AF"::8198998E9A79A79:A198A11:F9=EN

    $1::?:":::A198A111?=:F?::F?:?8?98=19:=1=71

    $1::?1"::96:8N?::96:N88:::1=:FC:7:=18F:AF1

    $1::?9"::::=:F:77:88:=AFF::89=:7F:9:=1F9

    $1::?="::A99::=:7C:9:=1CA9A698E9A79"1

    $1::?E"::FF=::A198A11"99:A198A11FF=::A19AF

    $1::?"::8A11"99:A198A118=19:=1=:N1C?898:

    $1::?6"::?N96A99=:8FE::99:8F=::91:8F9::A=

    $1::?7"::9::8F1::FF=:F?::7?:8F:::C=::A19E

    $1::?8"::8A119?9E:A198A11:A198A11:F9=:A19?1

    $1::?N"::8A1179:A198A11:F9=:A198A1179:E

    $1::?A"::8=19:=1=A6:8:=19"919"69N8

    $1::??"::"69:A198A11:F9=:A198A11"698=19CC

    $1::?C":::=1=96:8FF=A:=1"9""9":9F991N

    $1::?"::F996A96A9:8:::A198A11A799:A1916

    $1::?""::8A118=19:=1=9=:8FE::99:8F=::91:8EC

    $1::?F"::F9::9::8F1::FF=:F?::7?:8F::1N=:F1

    $1::C:":::A198A119?9E:A198A111N9":A198A111?

    $1::C1":::F9=:A198A116"=::A198A11A?9=:A19N"

    $1::C9"::8A111N9"8=19:=1=A6:8:=11F9"9:9"C:

    $1::C=":::9"919"69=::A198A11A?9=:A198A11E"

    $1::CE"::989"FF=::A198A11"99:A198A11FF=:7E

    $1::C":::A198A11"99:A198A11FC=::A198A11=

    $1::C6"::"99:A198A11FC:1F:17:88:=AFF::86

    $1::C7"::89=:7F:9:=1E9"::=:7C:9:=1CE89"

    $1::C8"::EN9"E?9"769"769"8=19:=1=1F1EF9"C9

    $1::CN"::1F1N99"=9"EF9"E9"8=16:=1=1":8=N

    $1::CA":::A198A11"99:A198A118=16:=1=1":NF9

    $1::C?"::8=19:=1=88:::1=:FC:7:=18F:A::=:6$1::CC"::F:77:88:=AFF::89=:7F:9:=1719""9

    $1::C"::::=:7C:9:=1C7E9"79"E?9"769"FF=:A8

    $1::C"":::A198A11"99:A198A11FF=::A198A11A9

    $1::CF"::"99:A198A11:A198A11:F9=:A198A118F

    $1:::"::8"9":A198A11:F9=:A198A118"9"8=1998

    $1::1":::=1=96:81F=N:=A:=1N69"N79"889"8?

    $1::9"::NF9"NF9":A198A11:F9=:A198A11NF9"A"

    $1::="::8=19:=1=96:8FF=A:=1A69"A79"NN9":=

    $1::E":::N1CAA9"A?9"989"FF=::A198A11"998=

    $1::":::A198A11FF=::A198A11"99:A198A11=1

    $1::6"::F=::A198A11"99:A198A11:A198A119=$1::7":::F9=:A198A11:A198A11:F9=:A198A11C

    $1::8"::C"9":A198A11:F9=:A198A11C"9"8=1998

    $1::N":::=1=96:8FF=A:=19"69"C89"A9"A=

    $1::A"::A9"989"989":8::8=19:=1=:71A7:1:A

    $1::?"::=9=:97:9:=1C"E9""9""79"FN9"FN9"F=

    $1::C"::FF=::A198A11"99:A198A11:1=:F?::EC

    $1::"::7?:88=19:=1=A7:7=9=:97:9:=1CF89"N

    $1::""::FN9""79":711:7=:FC::7=:F?::F?:?C:

  • 8/12/2019 An Attempt to Access a Memory Card

    16/16

    $1::F"::F"9"FC:?F"9"::=:FE::::=:F=::::=::F

    $1::":"::F9::::=:F1::N=:F?::7?:8F::::=:N

    $1::"1":::A198A119?9E:A198A118=19:=1=AE:1?7

    $1::"9"::A:1979F:A198A11:F9=:A198A11:1=:"7

    $1::"="::8=19:=1=AE:7:=18A:A::=:A:7979F9

    $1::"E"::96:8:1=A:=1N9C9F99F=89F:==:9:9N7

    $1::""::"8=::=1N9E:9:=1C=9F=69F1N9F=89FN=

    $1::"6"::=89F:==:9:9"8=::=1N9E:9:=1CE:9FC?

    $1::"7"::E19FEA9F:1=::A198A11A?9=:A198A11:"

    $1::"8"::E89FE89FEA9F::=:FE::::=:F=::::=:76

    $1::"N"::F9::::=:F1::FF=:F?::7?:8F:::1=:"

    $1::"A":::A198A119?9E:A198A118=19:=1=AE:197

    $1::"?"::A:1819F::=:FE::::=:F=::::=:F9::6

    $1::"C"::::=:F1::FF=:F?::7?:8F:::1=::A19:E

    $1::""::8A119?9E:A198A11:A198A11:F9=:A19"

    $1::"""::8A11:1=:8=19:=1=AE:7:=18A:A::=:8

    $1::"F"::A:7819F96:8:=189FN:9F:==:9:96

    $1::F:"::"8=::=1N9E:9:=1C89F8"9F619FN:9FN9

    $1::F1"::N:9F:==:9:9"8=::=1N9E:9:=1CN89F6A

    $1::F9"::NN9FA99F19=::A198A11A?9=:A198A11NC

    $1::F="::A:9FA:9FA99F::=:FE::::=:F=:::9=:??

    $1::FE"::F9::::=:F1::FF=:F?::7?:8F::1:=:N"

    $1::F":::A198A119?9E:A198A118=19:=1=AE:176

    $1::F6"::A:1C79F:A198A11:F9=:A198A11:1=::6

    $1::F7"::8=19:=1=AE:7:=18A:A::=:A:7C79F71

    $1::F8"::96:8:=1C?9F69F:==:9:9"8=::=1N78

    $1::FN"::9E:9:=1C=9FE9F?N9F69F69F:==:E

    $1::FA"::9:9"8=::=1N9E:9:=1C"9FF9F"89F61

    $1::F?"::=E=::A198A11A?9=:A198A11"69F"69FN$1::FC"::"89F9==::A198A11A?9=:A198A111A=:9=

    $1::F"::F::E=:FC::7"=:F?::F?:?FE9FFC:??C

    $1::F""::FE9FF:?FE9F8=19:=1=1E:8F=NNE::1E

    $:9:FF":::8::"N

    $:9E::"::=A=F=7

    $:::::::1FF