An Attempt to Access a Memory Card
-
Upload
dam-ngoc-kien -
Category
Documents
-
view
215 -
download
0
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