file: linux_cardread-6.2.html
16 Jul 2003
Setup: Toshiba 4000CDT notebook PC;
Dual Boot Win98 and RH Linux 6.0
(Note: also tested OK on Dell Inspiron 5000 and Dell Inspiron 8100
with RH Linux 6.2)
Note 1: An Intel PCMCIA FLASH card will be recognized on boot up.
To see what was recognized in the PCMCIA slots, do a:
cat /var/run/stab
Note 2: To avoid any confusion among cards, only install the
PCMCIA FLASH card. Leave the other PCMCIA slot empty.
*******************************************************************
PROCEDURES:
EITHER DO THESE STEPS THE FIRST TIME:
1> Put the PCMCIA card into the top slot and boot to Linux.
2> Hopefully you heard a couple of "happy" (higher pitch) beeps
as the PCMCIA cardmgr messages went by on the screen.
3> do a:
cat /var/run/stab
to see which slot the card is in; on my Toshiba and the Dells, the top slot
is 1, so I'll use 1 in the rest of this write-up;
OR
1> If Linux is already running, put the PCMCIA card into the slot
(use this same slot consistently) and listen for a couple of beeps.
If you just get an error message and no beeps, try:
cardctl insert 1
(or if you're not sure what slot the card is in, try: cardctl insert 0)
If still nothing:
Did you plug the card in???
Did you set up /etc/pcmcia/config for this type of memory card per the
new pcmcia setup info?
If you did, and it's not recognized, try rebooting as above;
And if that doesn't work, but other PCMCIA cards (modem,
ethernet, SCSI or whatever) do work (you DID try this, right?)
- I'm stuck......
Oh, well.....
*******************************************************************
ALL THE USEFUL INCANTATIONS:
Primary assumption: the card is recognized and something appears in
/var/run/stab, such as:
Socket 0: 3Com 3c589D Ethernet
0 network 3c589_cs 0 eth0
Socket 1: Intel Series 2+ 20MB Flash
1 memory memory_cs 0 mem0 126 0
1 ftl ftl_cs 0 ftl0c0 127 0
or:
Socket 0: 3Com 3c589D Ethernet
0 network 3c589_cs 0 eth0
Socket 1: Anonymous Memory
1 memory memory_cs 0 mem0 126 0
*********** IMPORTANT NOTE - IGNORE AT YOUR PERIL!!! *************
IMPORTANT NOTE: The first version of /var/run/stab above is what you
will see after a PCMCIA card is installed. The Intel FLASH card is ready
to read to a file. The second version (Anonymous Memory) is what you get
after installing a card that's not fully recognized - it's not quite ready
to rock & roll yet. In this case, you should have heard a "sad" beep
followed by a "happy" beep. OR, if the card is not recognized at all, you
probably got just a "sad beep. In either of these last cases, DO THIS NOW:
cardctl eject 1
You should have heard a "happy" beep...
NOW REMOVE THE CARD!!
and setup per the instructions in new pcmcia setup info.
On completion, re-insert the card. This time, you should have heard 2 "happy"
beeps as the card is automatically recognized; now try:
cat /var/run/stab
you should now see something like the first /var/run/stab above.
In general, once you've got Linux running, you should NOT need to manually
(i.e. with "carcctl") insert/eject to get the card fully recognized,
************* END OF VERY IMPORTANT NOTE ****************
SO:
To read a PCMCIA memory card
- just insert it into a PCMCIA slot;
(and there had better be 2 happy beeps after that insert...)
------------------------------------------------------------
To remove a PCMCIA memory card
- just eject it from the slot
(there should be a single beep as the card is removed)
------------------------------------------------------------
To see if the card is recognized in the slot:
cardctl status
------------------------------------------------------------
To see if the cardmgr recognizes the card:
cat /var/run/stab
------------------------------------------------------------
To copy the entire card to a file:
cp /dev/mem0c0c your_filename
------------------------------------------------------------
NOTE: This is the preferred way to read a FLASH card to a file!
To copy part of the card to a file, where blocksize=1024 bytes
and count=number of blocks to copy (e.g. to copy 2 MB of a 20 MB
card) and skip bypasses the first 128K reserved space in the FLASH card:
dd bs=1024 count=2048 skip=128 if=/dev/mem0c0c of=your_filename
------------------------------------------------------------
To view the binary as hex:
od -t x1 -A x your_filename | less
- Use arrow keys, page-up/down, 'q' to quit
------------------------------------------------------------
For more command info, see the man pages for:
cardctl
cardmgr
dd
od
------------------------------------------------------------
geek note:
For completeness, here's how to get at the CIS in attribute
memory (I'll assume a 4k CIS - probably way too big):
dd bs=1024 count=4 if=/dev/mem0a of=your_CIS_filename
------------------------------------------------------------