E.3 adjusting your cardservices set-up – Campbell Scientific PC208 Datalogger Support Software User Manual

Page 124

Advertising
background image

APPENDIX E. PCMCIA DRIVER SOFTWARE NOTES

E-2

E.3 ADJUSTING YOUR CARDSERVICES

SET-UP

CardServices has the ability to map a region of
PCMCIA card to a region of PC memory in the
high-memory area. This is the same area of
memory used by programs loaded high with
DEVICEHIGH or LOADHIGH. If all the high
memory is allocated then CardServices will not
be able to map regions of SRAM cards and
SMCRead will fail with an error ‘lack of
resources’. The following information explains
what to do if you have this problem.

Card Services does not use the actual memory
in the high memory area, but it does use that
address space. The memory in that address
space is never used. If you have EMM386
loaded (which you will have if you load things
into high memory) you must exclude an area of
memory for card service.

The line in your CONFIG.SYS which sets up
EMM.386 will look something like:

DEVICE=C:\DOS\HIMEM.SYS

DEVICE=C:\DOS\EMM386.EXE NOEMS

If, after studying other memory requirements
and memory use (such as the address space
used by your video card) you decide that the
memory area D0000 to DFFFF may be used by
CardServices, then change your lines as shown
below.

DEVICE=C:\DOS\HIMEM.SYS

DEVICE=C:\DOS\EMM386.EXE NOEMS /X=D000-
DFFF

NOTE: that there is one 0 and one F
missing out from the memory address you
enter in CONFIG.SYS. This is because
EMM386 expects a segment address. Each
segment contains 16 bytes, 0-15 (0-F), and
so the beginning address in the segment
D000 is D0000 and the ending address of
the segment DFFF is DFFFF.

Some high performance graphics cards require
memory to be excluded in the same way. More
than one region of memory may be excluded by
repeated use of the /X= option.

Windows Users:

In your SYSTEM.INI file there should be a line
which looks something like

EMM386Exclude=D000-DFFF

representing your ‘exclude’ range.

E.3.1 HOW TO CHOOSE WHICH AREA OF

MEMORY TO ALLOCATE TO
CARDSERVICES

The address range used by CardServices can
be from A0000 to FFFFF. However not all
machines are able to let CardServices use
these addresses. Many machines cannot use
addresses below

C8000

or above

E8000

for

Card Services. If you are just extending the
region of memory allocated to card services, it
may be best to leave the start of the region
where it is, as you know your machine is
capable of using memory from that address.

Excluding a region of memory for use by other
programs does not mean that card services will
be aware of it and be able to use it. The various
implementations of CardServices come with
their own .INI files, which specify the regions of
memory which Card Services will use. Many
implementations of card services also have
utility programs which automatically detect the
free memory and automatically create the .INI
file accordingly. This may not be the case with
your implementation, or it may be that Card
Services will try and use a region which was
excluded for use by some other device such as
a high performance graphics card. Details are
given here for expressly specifying to Card
Services which region it is to use.

If your system is already set up as described
below and SMCRead still fails due to lack of
resources, then you may need to increase the
size of your memory range. A range of 64K
(example: D0000-DFFFF) should be plenty.
Unless you have many other specialized
PCMCIA drivers you will not need to increase
the size of this range.

Advertising