ETC 21824

Using a PCMCIA Card as a Boot ROM
on an ÉlanTM SC300 Microcontroller Design
Application Note
The ÉlanTMSC300 microcontroller system can provide jumpers that allow BIOS/system firmware to
load and run from a linear memory card in a PCMCIA socket instead of from the on-board boot
ROM. On systems with soldered-down boot ROMS, these jumper provisions are useful for boot
ROM development or any situation where the boot ROM may be corrupted. This application note
describes the issues involved in using this boot-from-PCMCIA feature on an ÉlanSC300
microcontroller design.
BACKGROUND
On reset, the Élan TM SC300 microcontroller begins
fetching code by asserting ROMCS and MEMR and
putting the 24-bit address FFFFF0 on the system
address lines SA23–SA0. The fetch address will
remain in the top 64-Kbyte of the 24-bit address space
(FFxxxx) until a far jump loads the code segment
register. At that time, if the microcontroller is in
protected mode, it could jump anywhere in the 24-bit
address space, but if the microcontroller is in real mode
at the time of the far jump, the target will be in the
lowest 1 Mbyte (0xxxxx). On reset, addresses in the
range FF0000–FFFFFF (FFxxxx) and 0F0000–
0FFFFF (0Fxxxx) always assert ROMCS and are
default 8-bit accesses.
Note that on most ÉlanSC300 microcontroller systems
based on an AT-compatible BIOS, the boot code does
a far jump in real mode to an address in the 0Fxxxx
range, and the boot ROM is a 64- or 128-Kbyte device
that only looks at the low 16 or 17 address bits. On
such systems, FFxxxx and 0Fxxxx in ROMCS space
will map to the same ROM device.
A PCMCIA memory card can have two 64-Kbyte
address spaces addressed (attribute and common
memory) using 26 address lines and a REG line, which
selects one of the two address spaces. Data widths of
either 16 or 8 bits are supported using low and high
byte select (CEL and CEH). Either an OE line is
asserted to indicate a read, or a WE line is asserted to
indicate a write.
On the ÉlanSC300 microcontroller, the PCMCIA
address lines A23–A0 are the same as the system
address lines SA23–SA0, while PCMCIA address lines
A25 and A24, which are controlled by CA24–CA25
control registers 1–3 (indexes B5h–B7h), are unique to
PCMCIA. The PCMCIA data lines, D15–D0, are the
same as system data lines SD15–SD0. For PCMCIA
OE and WE, the ÉlanSC300 microcontroller can be
programmed using bit 4 in the Miscellaneous 3
Register (Index BAh) to assert either MEMR and
MEMW on PCMCIA accesses or to assert PCMCOE
and PCMCWE. (PCMCOE and PCMCWE take over
pins 84 and 89 that are normally part of the parallel port
interface. They are useful in systems that need to
distinguish between PCMCIA accesses and ISA
accesses and do not use the parallel port.)
On ÉlanSC300 microcontroller designs that use
buffered PCMCIA slots, the ICDIR pin can be used to
tell the buffer whether it should accept data or drive
data. Unbuffered PCMCIA designs do not use the
ICDIR signal. At reset, the ICDIR pin from the
ÉlanSC300 microcontroller is driven High, indicating
that the buffers should accept data rather than drive
data. ICDIR then remains High at all times unless the
microcontroller is doing a PCMCIA read.
JUMPERS TO ENABLE BOOT FROM PCMCIA
Chip Select
Because ROMCS will be asserted at boot time, there
must be a jumper that breaks the path of ROMCS from
the microcontroller to the CS of the boot ROM, and the
path of MCEL_A from the microcontroller to CEL of the
PCMCIA socket. Then, the jumper must route ROMCS
from the microcontroller to CEL of the PCMCIA socket.
This will tell the PCMCIA card to place the addressed
byte, whether from an even or odd address, on D7–D0,
just as in an 8-bit ROM access. An example is shown
in Figure 1. Jumper Configurations. For normal
operation, there are jumpers from 1 to 2 and from 3 to
4. For boot from PCMCIA operation, there is a jumper
from 2 to 3.
This document contains information on a product under development at Advanced Micro Devices. The information
is intended to help you evaluate this product. AMD reserves the right to change or discontinue work on this proposed
product without notice.
Publication# 21824 Rev: A Amendment/0
Issue Date: July 1997
CS to Boot ROM
1
ROMCS from Élan
Processor, Pin 44
2
Boot
PCMCIA
3
CEL to PCMCIA
MCEL_A from Élan
Processor, Pin 129
Figure 1.
Normal
4
Jumper Configurations
While jumpered for PCMCIA boot, the PCMCIA socket
cannot be used for PCMCIA accesses. The jumper
could be moved back after boot, assuming any
required ROMCS memory has been shadowed to
DRAM. In a design with two PCMCIA sockets, the
second socket can still be used for PCMCIA accesses.
PCMCIA Output Enable
Because the default for index register BAh, bit 4, is 0 at
reset, only MEMR will be asserted at boot time, and so
therefore either the PCMCIA socket must be designed
to use MEMR (rather than PCMCOE) or a jumper must
route MEMR to OE.
Buffered PCMCIA designs must also address the
ICDIR issue. ICDIR is High during the ROMCS cycles
that occur at boot time, High indicating that the buffer
should accept data rather than drive data. For PCMCIA
boot, the buffer must drive data whenever ROMCS and
MEMR are both asserted. Thus, there must be a
jumper that determines whether buffer ICDIR comes
from the ÉlanSC300 microcontroller ICDIR (normal
mode), or whether buffer ICDIR comes from a logical
OR of ROMCS and MEMR (boot from PCMCIA mode).
PCMCIA Address Lines
At boot time, CA25 and CA24 are 0, REG is deasserted
(indicating common memory), and SA23–SA0 are
generally either FFxxxx or 0Fxxxx as described in the
Background section. The PCMCIA card determines
whether any address lines need to be jumpered to
support boot-from-PCMCIA mode. It is optional
whether a PCMCIA card fully decodes the 26-bit
address it receives, or only decodes the address lines
that correspond to memory actually on the card. For
example, a 2-Mbyte memory card could ignore A21–
A25 without affecting performance.
Because addresses in the 16-Mbyte range and the
1-Mbyte range will be driven, a memory card of a size
less than 16 Mbyte that fully decodes the address must
ensure that all PCMCIA address lines up to A23,
greater than the size of the memory card, are jumpered
2
to ground. If the memory card is a type that ignores
High address lines, then no such jumpering is required.
Note that the extra PCMCIA address lines must be
grounded and not merely disconnected. Disconnected
address lines may work with some memory cards and
not with others.
PUTTING THE ROM IMAGE ON THE
MEMORY CARD
This section assumes that you have a binary image of
the boot ROM contents.
Generally, the PCMCIA card has a larger memory size
than the boot ROM device it is replacing. This, and the
fact that accesses to addresses between FFxxxx and
0Fxxxx will assert ROMCS, means that care must be
taken in placing the ROM image on the memory card.
For example, assume a 64-Kbyte boot ROM image and
a 4-Mbyte memory card. The 64-Kbyte boot ROM only
uses the low 16 address bits, and so maps FFxxxx and
0Fxxxx to the same 64-Kbyte address block. However,
the 4-Mbyte memory card uses the low 22 address bits
(addresses up to 3FFFFF), and so the 64-Kbyte binary
image must be placed at both 3F0000 and 0F0000.
The only code that must reside in 3Fxxxx is any code
that occurs before the first far jump occurs. After the
first far jump, the high-order address lines are not
asserted by the CPU and access will be below
1 Mbyte. The 3F0000 block will satisfy accesses in the
FFxxxx range, and the 0F0000 block will satisfy
accesses in the 0F xxxx range. For additional
information on this subject refer to the application note
entitled Using 16-Bit ROMCS Designs in ÉlanTMSC300
and ÉlanSC310 Microcontrollers, order #21825.
Finally, you must use a utility program to write the binary
ROM image to the necessary blocks on the memory
card. AMD has a utility that works for the simple case of
an SRAM memory card. Contact AMD for a copy of the
utility (see the back page of this application note for
information on how to contact AMD). This utility could be
extended to support Flash memory cards with the
addition of a Flash memory programming algorithm.
ÉlanSC300 DEMONSTRATION BOARD
IMPLEMENTATION
The ÉlanSC300 microcontroller demonstration board
uses a ROMCS to CEL jumper as described in the Chip
Select section. The demonstration board uses MEMR
for PCMCIA reads. The demonstration board uses
unbuffered PCMCIA sockets, and so ICDIR is not an
issue. On the ÉlanSC300 microcontroller
demonstration board, address lines A23–A20 are
disconnected for PCMCIA boot. This works with any
memory card of 1 Mbyte or greater, whether it fully
decodes the address or not. This also allows a single
copy of the ROM image to be placed on the memory
card at 0F0000.
Using a PCMCIA Card as a Boot ROM on an ÉlanTMSC300 Microcontroller Design
REFERENCE MATERIAL
■ ÉlanTMSC300 Microcontroller Data Sheet,
order #18514
■ Élan TMSC300 Programmer’s Reference Manual,
order #18470
■ Using 16-Bit ROMCS Designs in ÉlanTMSC300 and
ÉlanTMSC310 Microcontrollers Application Note ,
order #21825
Trademarks
AMD, the AMD logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc.
Élan is a trademark of Advanced Micro Devices, Inc.
Product names used in this publication are for identification purposes only and may be trademarks of their respective companies.
Using a PCMCIA Card as a Boot ROM on an ÉlanTMSC300 Microcontroller Design
3