Operating manual for Elvis-Multiprogrammer
     
homepage

Ultim-8 layout

Ultim-8 User Guide

Scan of Ultim-8 Guide

Smartcard Applications

Gold card configuration

The Elvis Programmer

Elvis Operating manual

Elvis Software

Contact Page/Ordering Info

 


The Elvis-Multiprogrammer is a programmer with advanced programming capabilities made primarily to program PIC16x84 microcontrollers and serial eeprom's from Microchip. The programmer is designed around a PIC16C622A microcontroller from Microchip which has 2048 words program memory and 128 bytes of ram. The controller executes commands and data received by the on-board FIFO-buffered, RS-232C compatible comport on the programmer. The microcontroller also handles all time critical operations to guarantee safe and fast programming. Data between programmer and computer is sent with 9600bps 8N1, half duplex, with a specially designed command set to maximize performance and flexibility. The on board microcontroller executes closer to 900000 instructions per second!

The Elvis-Multiprogrammer is driven by a standard 9 Volt battery type 6F22, but it's possible to use a stabilized 9 Volt DC-Adaptor, with a standard 2.1mm DC-plug with minus in the centre. If operated with battery the battery can stay in the programmer when not in use, the battery will be disconnected by the programmer with help of the DTR signal on the comport. From the power delivered from the battery/DC-Adaptor a 5 Volt logic-voltage is created with help of a precision low-dropout voltage regulator, with built in error control and over current protection. The programming voltage is created by an advanced switched step-up regulator operating at 80kHz. This is to ensure to have a 13 Volt programming voltage which is required by Microchip in order to program their chips correctly. The programming voltage from the programmer is also over current protected according to the programming specifications from Microchip.

A unique feature of the programmer is the ability to execute software loaded in to the chips programmed by the programmer, this feature makes it possible to program eeprom's on smartcards which is not physically connected to the programmer. This function is usually called "through-pic programming" and is required by most smartcards with eeprom like the popular Goldcard but also Galaxy-2, Platinum, CBMM-2 and our own MM2 cards.

The Elvis-Multiprogrammer has a smartcard socket for ISO-7816 compatible smartcards and it has also a DIL socket for programming all microchips microcontroller chip with 18 or less which is supporting ICSP (In circuit serial programming). A special ICSP-connector can also be installed on the programmer for programming all ICSP compatible chips from Microchip.

Important! The Elvis-Multiprogrammer designed around an unprotected circuit board, it is therefore important to be careful when using the programmer. Try to avoid touching any metal part of the programmer in order to protect it from ESD (Electro Static Discharge). Make sure that the programmer is placed on a flat surface and away from any metallic foreign part. The programmer comes with 4 rubber feet.


--------------------------------------------------------------------------------

Setup

The software available for download from this site can be installed easily.

From the start menu, press Settings --> Control panel --> add/remove software --> Install. Place the disc in the computers floppy drive and press next. And follow the instructions in the software.

Connect the Elvis-multiprogrammer with the included 1.8m serial cable to a free comport on your computer. The Cable has an 9-pin d-sub connector, if there is only a 25-pin male connector on your computer you need an adapter. if you have an 25-pin female connector it can not be used since that is usually the connector for the printer (parallel port).

Connect the 9V battery or a 9V DC-adaptor, which gives regulated 9V DC output, at least 100mA, with minus in the center of the DC-plug.


--------------------------------------------------------------------------------

Programming with help of the Autodetect function (Only for PIC16x84 chips)

Connect the Elvis-programmer according to the setup above, and insert the smartcard you wish to program in the smartcard socket with the connector inwards and downwards. Start the MP6 software which should be found in the MP6 folder under the start menu.

Important #1 The Autodetect function might destroy the card! Make sure that you only use smartcards containing a PIC16C84, PIC16F84 or PIC16F84A with or without an eeprom chip.
Smartcards with a different micro controller might be destroyed when the programmer is applying 13V on the RESET/MCLR pin of the smartcard.

Important #2 The autodetect function erases the content of the PIC16x84 chip! Don't use the autodetect function if you wish to read content from the card, please use the instructions below for reading the card.

Important #3 When using the the autodetect function a small software is programmed into the card in order to detect whether it is an PIC16C84, PIC16F84 or PIC16F84A chip and if there is an 24C16 eeprom chip connected to it or not. Each time the card is programmed the life length of the memory-cells inside the micro controller is shortened, according to Microchips specifications the PIC16x84 chip can normally be programmed 1000 times, but in worst case only 100 times. It means that if you use autodetect and then program the .HEX-files you want the chip can only be programmed 50 times in worst case (normally 500 times).
To increase the life length for cards which you already know it's configuration we advise you to manually configure the programmer for your card.
However, when using the programmer with smartcards that requires through-pic programming (like the Goldcards) for the 24C16 eeprom chip it doesn't matter since same small software that is used to autodetect the cards also serves as an loader for the 24C16 eeprom. To maximize the life length of the PIC16x84 chip when only the 24C16 chip needs to be re-programmed we recommend that you use software's like our qload or Winphoenix when possible.

When you have inserted the smartcard press Autodetect, the software automatically searches for the programmer, select the programmer you want to use, and press ok to start the identifying process.

After a successful search, a tree-structure will appear, a description of the card with a list of the chips on the card under it. The example below shows the screen after a successful search of a Goldcard.




In order to program the detected chips with data you need to open a file (no files are included with the Elvis-programmer). The format of these files are usually of Intel-Hex format generated from your compiler or downloaded from internet. These files can be opened by selecting the description line of the smartcard as in the screenshot above. Then press Open to start the file selector, usally one file per chip should be opened, and you can open files both for PIC16F84 and 24C16 at the same time by holding down the Ctrl key while selecting the second file. The MP6 software will automatically load the correct file to each chip.

Once the correct files is read into the MP6 software, just press Program to start the programming sequence.


--------------------------------------------------------------------------------

Manual setting of the smartcard/chip.

If you want to read data from a card or avoid using the autodetect function when programming a smartcard with configuration known to you. Just press Add New Project, the following screen will then appear:



When selecting a PIC16x84 based smartcard you need to select if it's an PIC16F84/PIC16F84A or a PIC16C84 smartcard. D in the description field means DATA and C means CLOCK, Example: D7,C3 means that smartcard connector 7 is programming DATA and smartcard connector 3 is programming CLOCK.

Once the correct device is chosen it's possible to open the files to be loaded into the card or just to press Read to read the contents of the card.

Important The Elvis-programmer can only read unprotected PIC16x84 and eeproms, PIC16x84 chips which has been programmed with CodeProtect can not be read.


--------------------------------------------------------------------------------

Using the DIL-socket to program a chip.

The programmer can read and program 8 and 18-pin PIC-chips from Microchip, and also 8-pin serial eeproms. Depending of what chip you want to program/read it's very important how the chip is inserted into the socket:





Press Add New Project and select EEPROM or MicroChip depending of the type of chip you wish to program/read.


--------------------------------------------------------------------------------

Programming Atmel based smartcards like the Funcard

Elvis-Multiprogrammer 3.4 and 3.5 has support for programming a number of Atmel based smartcards like the Jupiter 1 and 2, pluto and Funcard.

This cards have one Atmel cpu chip and one External eeprom chip.

Supported Atmel cpu's are:

AT90S2323

AT90S2343

AT90S8515

AT90S8535

Supported EEPROM's are:

24C16 / 24LC16

24C64 / 24LC64

24C65 / 24LC65

Important to know is that the Atmel cpu has two different memory areas, one program memory FLASH area and one internal EEPROM area for data. In total there are 3 different memory areas for these kind of smartcards:

Atmel FLASH program memory

Atmel internal EEPROM data memory

External EEPROM memory

Run Atmelprg to program your card. Atmelprg is a msdos-program but can be run from a Window under Win-95, 98, 98-SE and ME. For running it under Win-2000 or any other operating system you need to make a msdos boot disc and copy Atmelprg and the .HEX and/or .CRD files you need to program to the disc.

Tip: Before starting atmelprg copy Atmelprg.exe and the files you wish to program to your card into the same folder, otherwise they can be difficult to find if you have a large number of folders with long names as ms-dos programs can only display the first 8 characters of the folder names.

Insert the card the card in the smartcard reader, some cards has connectors on both sides make sure that the side with the most used connectors is facing down.

Start Atmelprg, a screen like this will appear when Atmelprg finds your card:




Description of Product
The program now asks which memory areas you wish to program, check the files you wish program, a good rule is 1 file per memory area, but in some cases the data of the internal eeprom is embedded in the Atmel Flash memory file. Please read the documentation for your files to determine which files to use and which memory areas to program. If no documentation is available the most common naming of the files are:

FLASH.HEX for the program Flash memory

EE_INT.HEX for the internal EEPROM memory of the Atmel chip.

EE_EXT.HEX for the external EEPROM memory chip.

After selecting which memory areas to program the program will ask you for the first file to program, write the filename or press enter to open the file selector. The file selector only shows files that can be read into the selected memory area which makes it easier to find the file suitable for the memory area.

If you choose to program more than one memory area the software will now ask for more files, if not the programming sequense will begin.

New for AtmelProg 1.1:

If you have choosen to program the external eeprom memory (24C64 or 24C65) on a FunCard or Jupiter-2 card a loader internal to the Atmelprog software will be programmed to the Atmel chip, in order to program the external eeprom memory. The loader will always be used except when you select option 5 (to only program the external eeprom and not the Atmel chip).

If you selected option 5, the programmer will reset your card, supply it with an 3.58MHz clock signal. if the software that has been programmed into the Atmel chip is working correctly it will now respond with an reset message (ATR - Answer to Reset). The programmer will now send programming commands to the Atmel chip and the software that you have previously loaded into the Atmel chip. If this software does not support standard programming commands a error message will appear like "Input timeout". In this case you cannot program the external eeprom unless you let Atmel prog to use it's internal loader.

Note: Some cards has C4 and C8 smartcard connectors connected to the external EEPROM, Atmelprg will automatically detect it and program the external eeprom directly without using the loader or the software loaded into Atmel chip.


--------------------------------------------------------------------------------

Software for the Multiprogrammer

The latest Windows software is MP 6.0.17 but there is also a beta version out called MP 7 beta.


--------------------------------------------------------------------------------

Using the DOS programs

Most features of the programmer can be used by the Windows software, but there are some functions that haven't been added to the Windows software yet.

Running DOS software under windows, can be done but read this first:

Windows 95, Windows 98
Windows 98SE If ACPI installed run acpi.reg and restart your computer
If this doesn't help, remove your comport from your device manager and restart you computer again.

Windows ME If ACPI installed run acpi.reg and restart your computer
Windows NT, 2000, XP Direct I/O access is blocked by XP, but you can open this block by installing the UserPort software made by Tomas Franzon.
If this doesn't help, ACPI is probably activeded, there is no known way to remove ACPI as we know.


All our dos-software uses direct addressing of the com-port and requires a FIFO-buffered com-port (a com-port chip in your computer which is compatible with the 16C550 chip). Our dos software can generally be run under Windows 95, 98 and ME (but not NT and 2000). All our dos software's searches for the programmer at start up, if it fails to find the programmer it will respond by these error messages:

Not installed Has not been detected by your computers BIOS during startup. It can still exist under windows since it can be an virtual port or an oddly configured com-port that the BIOS failed to find.
Modem Control Register (MCR) error bit 5,6,7 must be 0 This error occurs when the dos software identifies serial port and detects that bit 5,6 and 7 of the MCR is not set to zero.
The reason for this is usally that ACPI (Advanced Configuration and Power Interface) is used by windows.

ACPI blocks all direct access to the com-ports which is necessary for the dos software to work. ACPI set's all known devices which are not used to it's power down state. The best way around this problem is to disable power management on your comport. It is done by changing a key in your registry.

Windows 98SE and ME users:

Click here to disable power management, then re-start your computer to make changes take effect.

Ludipipo programmer found! The software has detected an Ludipipo style programmer, the DosProg software is capable of handling a special kind of through-pic ludipipo programmer which was previosly sold by AD-Teknik.
Not found An available com-port was detected but no programmer was found on this port.
Unsupported type of comport / Used by Windows The comport has a 16C450 comport which is missing the FIFO-buffer.
All our dos-software requires an 16C550 FIFO comport chip.

It's also possible that the comport is used by Windows or one if it's drivers. Or you are using Windows 2000 or NT.

busy, used by other software Comport is used by another software
Not found, modem connected? A modem has been detected or an Multiprogrammer version 1.0 or 3.3. Or a non functioning version 3.4 or 3.5.

If you have trouble using the dos software under windows, you can always try to start your computer without Windows, easiest way to do this is to make an boot-disc and then to copy the software's to the disc together with any other files that you need (for example .HEX-files that you wish to program)


--------------------------------------------------------------------------------

MPset 0.6

This Dos software is used to set your programmer into Phoenix or Smartmouse emulation mode running at 3.58MHz. With help of this software the programmer will act as an phoenix/smartmouse interface until the power supply is removed from the programmer. Once set to this mode the programmer will not enter the power down state so don't forget to remove the battery when you are done to reset the programmer. You can see that the programmer is active because the LED indicator will be on, and it will blink whenever data is transmitted through the interface

No software for using the phoenix/smartmouse interface feature of the programmer is included. But these are freely available around the internet.

If you run this software under Windows, it's important to close the window were you have run MPset, otherwise Windows will block the comport of the programmer for other programs even when the MPset software itself is terminated.

If you use the Phoenix/Smartmouse feature a lot it might be a good idea to buy an AC/DC adaptor for your programmer instead of using a battery, but make sure that the adaptor supplies 9 Volt regulated DC with minus in the center of the 2.1mm DC-plug. If polarity is reversed the programmer will not work, but it will not be damaged since it has an built in diode for protecting it.


--------------------------------------------------------------------------------

Dosprog 2.6

This software is used for programming smartcards based on the PIC16C84, PIC16F84 or PIC16F84A chip from microchip, it's also capable of programming 24C16 both directly and through the PIC16x84 chip, which is required for the Goldcards.

A number of other pic-based smartcards can also be programmed:

PIC16C622 + 24C64 or 24C65 eeprom

PIC16F628 + 24C64 or 24C65 eeprom

PIC16F876 + 24C32, 24C64 or 24C65 eeprom

Single chip programming in the DIL-socket of:

PIC12C508

PIC12C509

PIC16C622

PIC16F628

Dosprog has 4 internal loaders for various pic-cards for very easy single operation programming of the most common pic-based smartcards on the market:

PIC16C84/PIC16F84/PIC16F84A and 24C16, Goldcards, Platinum, standard MM2 cards etc.

PIC16C84/PIC16F84 and 24C16 Smartcard with built in through-pic ludipipo programmer.

PIC16F84/PIC16F84A and 24C64/24C65, Bluecard

PIC16F628 and 24C64/24C65

PIC16F876 and 24C32

PIC16F876 and 24C64/24C65

The software also has an built in Autodetect feature which can identify almost any PIC16x84 based smartcard with or without an 24C16 serial eeprom.

Please Note: Don't try to autodetect or program a card which don't have an PIC16x84, since it will most likely damage the card.

This software can be used with AD-Teknik's Multiprogrammer version 3.4 or 3.5, it can also be used for AD-Teknik's smartcard with built in ludipipo though-pic programmer.
Features:

Programs PIC16C84, PIC16F84, PIC16F84A and 24C16 through-pic or though smartcard connector C4 and C8.
Ultrafast autodetect, (Fastest on the market?)
Goldcards on 4.5 seconds!
2-pic cards on 1.5 seconds!
MM2 cards with C4 and C8 connected to 24C16, less than 1 second!
Fast programming of Goldcards, less than 20 seconds after autodetect! (Fastest on the market?)
Automatic or manual settings of card type.
Automatically searches for the programmer at startup.
Built in file selector which only shows files which is vaild for the chip. (Just press enter on the empty line to start the file selector when the software asks for the file)
Support for 8 and 16 bit HEX-files and BIN and CRD files for the serial eeprom.

--------------------------------------------------------------------------------

EEprog 0.1

This Dos software is made for programming serial eeprom chips in the DIL-socket. It has support for the following chips:

24C00
24C01
24C02
24C04
24C08
24C16
24C32
24C64
24C65
24C128
24C256
Please note the special way the serial eeprom should be placed into the DIL-socket for programming, see the picture above on this page.

This software works with Multiprogrammer 3.4 (firmware 0.3 and newer) and Multiprogrammer 3.5


--------------------------------------------------------------------------------

Atmelprog 1.4 or Atmelprog 1.5 beta 6

DOS-program for programming smartcards with Atmel chip.
Support for the following Atmel cards:

FUNCARD - Atmel smartcard with AT90S8515A and 24C64 or 24C65
JUPITER or YUPITER - Atmel smartcard with AT90S2323 or AT90S2343 and 24C16
Support for the following Atmel-chips:

AT90S2323
AT90S2343
AT90S8515
AT90S8535
For more information about the Atmel chips: www.atmel.com

For more information about serial eeprom memories (like 24C16, 24C64/24C65): www.microchip.com

Smartcard with Atmel chip and external serial eeprom can be programmed in the following way:

24C16 - via C4/C8 and "through-atmel"
24C64 - "Through-Atmel"
24C65 - "Through-Atmel"
Through-Atmel = Means that the programming of the serial eeprom is done through the Atmel chip. For AT90S8515 and AT90S8535 based smartcards there is a built in loader inside Atmelprog for other types of smartcard it's required that the files loaded into the Atmel chip has a built in loader unless the serial eeprom is directly connected to C4/C8. No other loaders are inlcuded than the one internal to Atmelprog!

If you program a Atmel card with AT90S2323 or AT90S2343 or select option 5 to only program the serial eeprom, the program loaded into the Atmel chip must accept standard ISO-7816 commands for programming the external eeprom, as described below:

Atmelprog uses standard commands for programming the serial eeprom, both inverted and direct communication using the T=0 protocol is suported by our software.

Write command:

Class=CAh, Ins=20h, P1=High address, P2=Low address P3=Number of bytes (always 16).

Read command:

Class=CAh, Ins=21h, P1=High address, P2=Low address P3=Number of bytes (always 16).

Atmelprog supports Intel-HEX8, Intel-HEX16, Intel-HEX32, BIN and 5 types of CRD file format. (BIN and CRD only for serial eeprom).

This software works only for Multiprogrammer 3.4 and 3.5 with firmware 0.8 and newer.


--------------------------------------------------------------------------------

Siminfo 0.0

This software reads the phonebook from your GSM sim-card and displays it on the screen, this software is just written as a preeview of the capabilities of this programmer, soon there will be an Windows software for reading and editing information on sim-cards.




--------------------------------------------------------------------------------

CashCard 0.3

This software extracts the transaction data from a Cashcard (a smartcard payment system used in Sweden).

It displays how much money left on the card and the latest transactions done with the card.




--------------------------------------------------------------------------------

DTRlow 0.0

This software can be used on Windows-ME to prevent the programmer from starting when starting Windows-ME.

Windows-ME leaves the DTR signal active on all comports during startup, this causes the programmer to be activated, it will not damage the programmer but will discharge the battery after some time. To prevent this from happening, disconnect your programmer from the computer or add this software to the start up menu.

Install procedure:

Download this software and save the exe file on your desktop
Drag the icon of this program to your "start" button, and then to program and then to start-up.
Edit the properties for the dtrlow software and enable the "close when exit"
Done.

--------------------------------------------------------------------------------

Qload 0.1

This is a loader program for programming external serial eeproms on already programmed cards. The smartcard must support ISO7816 standard command Class=CAh Instruction=20h for programming.

This software supports serial eeproms of the following sizes:

2048 byte (24C16)
4096 byte (24C32)
8192 byte (24C64 or 24C65)

Works for Multiprogrammer 3.4 and 3.5 with firmware 0.8 or newer.


--------------------------------------------------------------------------------

Elvis Control Centre Version 1.3.0.186

This software is written by Panda and can easily be used to switch of the power to the programmer at startup of the computer or to set the programmer into phoenix or smartmouse emulation mode.


--------------------------------------------------------------------------------

How to program an PIC12C508 chip with help of MP 6.0.17 software

We get many questions about programming the PIC12C508 chip, since many people have trouble with opening the .HEX files for this chip, error messages like this can easily appear:



I will try to explain why this happens, most files available on the internet for the PIC12C508 chip are not coming directly from the compiler but they are read from another chip. This is why they contain memory information that should normally not be programmed to a new chip. Both PIC12C508 and PIC12C509 has a internal calibration value which is pre-programmed at factory for optimal calibration of the internal RC-oscillator. This address must not be re-programmed by the programmer, that is why the MP 6.0.17 software does not accept data on this address. However, there are some cases when the RC-oscillator calibration value needs to be programmed: When you have an UV-erasable device, the PIC12C508/JW has an glass-window for UV-erase of the memory. When you erase such device the calibration value is also erased, it's therefore important to save the calibration data before erasing such chip.

At this time it is not possible in the MP 6.0.17 software to read the calibration value from the PIC12C509 chip, but there is a way to read the value of an PIC12C508 chip:

Start MP 6.0.17, and go to file-menu --> Mode and set it to "Normal".
Open a new project by clicking on "Add new project", Select the Microchip tab, and choose PIC12C509
Gently insert the PIC12C508 chip in the socket as described above.
Click on "read", to read the content of the chip, (chip must not have been previously programmed with CodeProtect in order to read it)
Click on the "+" before "Memory maps" to open it.
Select "Program (0h-3FEh)"
Press "View" to look at the data, Locate the memory address, 1FFh
The value stored at this address is the RC-calibration data for the PIC12C508 chip. Write it down and store it in a safe place.
How to program a PIC12C508 with an hex-file containing calibration data:

Follow the instructions above on how to read the calibration value from the chip.
Open the .HEX-file you wish to program.
Go to Memory maps --> Program (0h-3FEh) and press "View", and change the value on the 1FFh address since it's most likely different from what you previously read and saved from the chip.
While you are looking at the memory maps, take the opportunity to verify the configuration flags, because if configuration flags are programmed incorrectly the chip will not work.
Program the chip by pressing "Program" button.
Another option is to use the DosProg software (version 2.1 or later) to program the PIC12C508 or PIC12C509 chip, it will allow you to use .HEX-files which contains RC calibration data, but it will only program the RC-calibration data if the calibration data address is empty (for UV-erased chips). If you use DosProg to program an UV-erased (/JW) device, please make sure that the .HEX-file contains the correct calibration data for your chip.