Firmware upgrade architecture, 1 firmware upgrade architecture – Maxim Integrated 73S1217F Device Firmware Upgrade Host Driver/Application User Manual
Page 5

UG_12xxF_029
73S1215, 73S1217F DFU Host Driver/Application Development User’s Guide
Rev. 1.00
5
1 Firmware Upgrade Architecture
This document describes the Teridian USB (DFU class) Interface. Figure 1 shows the flow of this
architecture.
The firmware architecture in this document is a single-threaded C program using the API services as
detailed in the 73S12xxF Smart Card Terminal Controller Family Software User’s Guide.
USB - CCID
USB - DFU
DFU
Driver
CCID
Driver
C#
App
Boot
Loader
CCID
App
TSC
Libraries
Host Controller
73S12xxF Device
The
software is compiled and linked using the Keil
µVision3 development software. The functional areas of
the firmware and driver are divided into modules as shown below.
The Windows XP Kernel mode DFU driver was developed using Microsoft Device Driver Development Kit
(DDK) Version (3790.1830) Windows Server 2003.
The User Interface Application used for testing both the CCID and DFU driver was developed using
Microsoft Visual Studio 2008 C# programming language. The USB-DFU driver and USB-CCID have the
file names TSCDFU.sys and CCIDDFUTSC.sys respectively.
Figure 1: DFU and CCID Class Interface Architecture
The 73S12xxF Device side Boot Loader and CCID Application (or any application) are tightly coupled and
co-exist together but only one module will be executed at any time. Which module is invoked is
determined by a common ‘Check Code’. A ‘Check Code’ is a two-byte signature with the predefined
unique value of 0x875A that resides at two places within Flash program space: the lowest two bytes of
the Application Code section (0x1800 and 0x1801) and the highest two bytes of the Application Code
section (0xFFFC and 0xFFFD). At Power On, the Boot code begins with a verification of this Check
Codes. If the Check Code in the Boot Code section (0x1800) matches the Check Code in the Application
Code section (0xFFFC), it will then begin to execute the Application Code. If the Check Codes do not
have the same unique value, it will wait for a USB Reset to start the DFU Class Device enumeration and
then begin the Firmware Upgrade programming.