United States

Flash Center User's Manual v1.20

3 Application

3.1 Introduction

\includegraphics[clip=true]{app_connected}
Figure 5: Flash Center
Adapters have been added and the memory device has been selected. The flash center can now perform memory operations.

The main application window is divided into six major sections.

  1. The toolbar provides access to all device operations.

  2. The “Status” panel provides visual feedback of the overall progress of a programming operation.

  3. The “Device Control” panel shows the current target memory device and allows the changing of the parameters used to program the device.

  4. The “Adapters” panel shows the adapters that are currently connected and their individual status. There are also controls to change the target power for each connected adapter. The enable checkboxes allow the user to select which adapters will participate in the upcoming programming operations.

  5. The “Data” panel contains controls to manipulate the data that will be transferred to the device. A hex editor is provided for convenience.

  6. Finally, the “Transaction Log” panel displays status details for every operation.

3.2 Adapters

The connected adapters panel shows which adapters are currently in use by the Flash Center. Each adapter is numbered and has several controls associated with it.

\includegraphics[clip=true]{adapter_panel}
Figure 6: Adapters Panel
Displays attached adapters and contains controls with which to manipulate the attached adapters.

Adapter Number

Each connected adapter is numbered, starting from 1. If an adapter is removed, previously connected adapters will retain their original numbers. When a subsequent adapter is added, numbering will continue from after the highest number adapter connected.

Checkbox

The checkbox next to each adapter allows connected devices to be selected for participation in a memory operation. Adapters are checked by default when added. They can become unchecked manually by the user or automatically by the software when the selected memory device requires a communication protocol not available in a given adapter (e.g., an I2C memory device is chosen and a Cheetah adapter is present in the Adapters panel).

The All check and uncheck buttons at the bottom of the adapters panel will check and uncheck, respectively, all of the adapters, except those that do not support the selected memory device’s protocol.

Target Power

Since memory devices may be programmed in-system, the user has the option of powering a device from the adapter or externally. Turning on target power for a device indicates that the device will be powered by the Aardvark or Cheetah adapter.

The All power on and power off buttons at the bottom of the adapters panel will turn on and off, respectively, the target power of all the adapters, with the exception of those that do not support the selected memory part’s protocol.

Remove Button

The remove button appears as a red “X” (cf. Figure 6). Clicking the red “X” will disconnect the adapter and remove it from the list of connected adapters. To disconnect from all adapters at once, click the “Remove All” button.

3.3 Device Control

\includegraphics[clip=true]{device_panel}
Figure 7: Device Control Panel
Lists information about the selected target and allows the user to edit the communication bit rate, as well as the target’s slave address, when applicable.

Bit Rate

The bit rate is the speed of communications between the Cheetah or Aardvark adapter and the target memory device. The Cheetah adapter can operate at bit rates from 800 kHz to 40 MHz in increments of 1–2 kHz. It is also possible to overclock the Cheetah adapter to bit rates beyond 40 MHz. The maximum settable bit rate is 50 MHz, though this speed is beyond advised specifications.

The Aardvark adapter can operate at bit rates from 32 KHz to 663 KHz in I2C mode, and from 125KHz to 4MHz in SPI mode.

Changing the Bit Rate

The most commonly used bit rates are automatically provided in the bit rate drop-down menu. To change the bit rate, simply select a bit rate from the drop-down menu. Alternatively, it is also possible to enter any arbitrary bit rate greater than 32 kHz. Only integer values are accepted; decimal bit rate values (e.g., 1.3 MHz) will cause an error message to be displayed. Bit rates can be specified in either kilohertz (kHz) or megahertz (MHz). If no units are specified, it will be assumed that the bit rate is being set in kilohertz.

Once a bit rate is entered, the accept (check) and cancel (X) icons next to the bit rate box will become active. Conversely, many other controls in the software will become disabled until the new bit rate is either accepted or canceled. To accept the bit rate that has been entered, simply click on the green check mark. To cancel the data entry, simply click on the red “X.” When a data entry has been canceled, the previous bit rate setting will be restored.

When the accept button is clicked, the software will attempt to set the bit rate for all connected adapters. If the requested bit rate is not available, the closest available bit rate will be set. In such a case, a warning message will be inserted in the transaction log to inform the user of the actual bit rate set. The bit rate must be within both the maximum bit rate for the selected memory device, as well as the maximum bit rate supported by each programming adapter.

If the bit rate has been successfully set, a message will appear in the transaction log indicating the bit rate change.

I2C Slave Address

If the target memory device communicates over the I2C bus, and the Flash Center is connected to one or more Aardvark adapters, the I2C Slave Address text box becomes active. When the flash device is selected, the I2C Slave Address will be set to the default address, which is the address the device will respond to if all of the address lines are tied to ground (logic 0).

To change the slave address, type the new address in the textbox and press the “Enter” key. The address can be entered in decimal, octal with a leading 0 (e.g., 0100) or hexadecimal with a leading 0x (e.g., 0x50). To cancel a slave address entry press the “ESC” key.

For certain I2C devices, when the capacity of the device exceeds the total number of bits supplied in its address word, the device will use the lower bits of the I2C device address to fully address the data (e.g., 0x52 and 0x53 would be reserved for a device that has a capacity of 512 bytes and only an 8-bit address word specification, when the custom address is set to 0x52). The Flash Center recognizes this automatically and reserves those extra I2C device addresses. The user is not allowed to enter in addresses that impinge on this requirement.

3.4 Data

The Data panel contains the data that will be written to a device at the next programming operation. The data can be read from a file or manually entered by the user.

\includegraphics[clip=true]{data_panel}
Figure 8: Data Panel
Displays data read from the memory device or from a file. Allows the user to manipulate the data to be programmed to the memory device.

Hex Editor

The Data panel includes a full-featured hex editor. The data can be specified in either hexadecimal or ASCII. The left side of the hex editor is the address offset of the data row. The middle section is the data represented in hexadecimal format. The right side is the data represented in ASCII format.

There are several keyboard shortcuts available while working in the hex editor.

Table 1: Hex Editor Keyboard Shortcuts

Key(s)

Function

Arrow keys

Move one space left, right, up or down

Home

Move to the beginning of the row

End

Move to the end of the row

Page Up

Move one screen up

Page Down

Move one screen down

Ctrl-Home

Move to the beginning of the message

Ctrl-End

Move to the end of the message

Shift

When holding it down, selects the text under the cursor. This can be used in conjunction with the movement keys above and the mouse.

Ctrl-A

Selects all data in the hex editor

Ctrl-Tab

Switches between Hex and ASCII mode (Linux only)

Ctrl-Left

Switches to Hex mode

Ctrl-Right

Switches to ASCII mode

Insert

Toggles between Insert mode and Overwrite mode

Ctrl-Delete

Cut

Shift-Delete

 

Ctrl-X

 

Ctrl-Insert

Copy

Ctrl-C

 

Ctrl-V

Paste

When moving around in the Hex Editor, the current location in the current mode (Hex or ASCII) is marked with the cursor. The equivalent position in the other mode is marked by green text. If the Hex Editor is in Insert mode, the cursor will be a line. If the Hex Editor is in Overwrite mode, the cursor will be a box.

The entire data buffer can be immediately cleared by clicking on the “Clear” button.

Fill

A specified number of bytes can be placed at the current cursor position by clicking the “Fill” button. When the button is clicked, a dialog box will appear where the number of bytes can be specified. The value of the bytes added is defined by a pattern of one or more bytes. The fill pattern can be specified in the Pad text box. There must be at least one byte of padding defined in the Pad field before clicking the “Fill” button.

When the “OK” button is pressed, the selected number of padding bytes will be added to Hex Editor at the cursor location. The fill pattern bytes will be repeated until the specified number of bytes has been inserted. If the Hex Editor is in Overwrite mode, then the bytes added will overwrite existing data.

\includegraphics[clip=true]{fill_dialog}
Figure 9: Fill Dialog
The number of padding bytes to be inserted at the current cursor position can be specified in this dialog window.

Pad

A string of up to 16 hexadecimal byte values can be specified in this text box. The byte sequence specified is used as the fill pattern when using the Fill option as well as for filling undefined regions when loading Hex or S-Record files.

The format of the pad value should be two hexadecimal digits for each byte of the pattern with each byte separated by a single space.

Load File

The contents of a binary, Intel Hex, or Motorola S-Record file can be read into the Data buffer. Clicking the “Load File” button will cause a file dialog to open and the user to select the file.

When loading an Hex or S-Record file, any undefined regions in the file will be filled with the byte sequence specified in the Pad text box. The data pattern will be repeated through all undefined regions of memory in the data image, aligned to the data pattern size.

There must be at least one byte of padding defined in the Pad field before loading a file.

Save File

The entire data buffer can also be saved to a binary, Intel Hex, or Motorola S-Record file by clicking on the “Save File” button. When the button is clicked, a file dialog window will appear to allow a file to be created with the contents of the data buffer.

3.5 Memory Operations

All of the memory operations are found in the toolbar (or through the menubar). Memory operations are multi-threaded, that is, an operation in progress on one device is independent of a simultaneous operation on another device.

\includegraphics[clip=true]{operation_status}
Figure 10: Operation in Progress
The large status bar at the top shows total progress, and the smaller status bars show the progress for each adapter.

All operations update the progress bar, so it is easy to tell at a glance how much time is remaining. There is a progress bar associated with each device and a main status bar which shows aggregate status (cf. Figure 10). The main status bar will reflect the status of the slowest adapter.

If there are errors during a given memory operation, the status will appear in the transaction log immediately and error dialogs will be displayed after all adapters have completed their respective operations. An operation in progress can be interrupted by clicking the “Abort” button, or pressing Ctrl-Z.

Read Device

If a target device has been selected and adapters are connected, the “Read Device” toolbar button becomes available. When the button is clicked, the contents of the selected device are read and will replace the current contents in the data buffer. If multiple devices are selected, a dialog will pop up in which the user can specify which device should be used to perform the read.

\includegraphics[clip=true]{read_select_dialog}
Figure 11: Read Selection Dialog
Allows the user to select the adapter from which to read when multiple adapters have been enabled prior to device read operation.

Program + Verify

The Program + Verify cycle writes data to one or more attached memory devices and then reads back the data to verify it for correctness. If any part of the sequence fails, a status message will be placed in the transaction log immediately and an error dialog will be subsequently displayed after all adapters have finished their operations.

The Program + Verify cycle can be selected by clicking the toolbar icon, selecting Operations | Program + Verify from the menu, or pressing the shortcut sequence Ctrl+P.

If the device is an SPI Flash, an erase cycle will be performed first. The erase will cover only those sectors which will be written. Note that it is possible to erase more data than is written, if a write ends in the middle of a sector. A warning will be logged if this is the case. Also, if the data to be written is large enough to require the entire device to be erase, and the memory device has an “erase all” instruction, the software will use the “erase all” instruction. In this case, the progress bar will only be an estimate of how long the erase is taking. The entire device will be erased even if the operation is aborted in mid-course.

Programming a device requires that the Flash Center is connected to at least one adapter, a flash device has been selected, and there is data in the data buffer. One or more devices must be selected by checking the associated checkbox.

Program

The Program cycle writes data to the device, but does not perform the verification step. Requirements are the same as for Program + Verify.

If the device is an SPI Flash, an erase cycle will be performed first, with the same caveats as Program + Verify.

The Program cycle can be selected by clicking the Program button in the Operations section, selecting Operations | Program from the menu, or pressing the shortcut sequence Ctrl+G.

Program (No Erase)

The Program (No Erase) cycle is a special mode for SPI Flash devices. It writes data to the device, but does not perform an erase cycle. This is useful if multiple memory images are to be programmed to the device. (Use FF as the pad value when loading each memory image to avoid corrupting previously written data.)

Because the device may have been programmed prior to this operation, it does not perform the verification step. Requirements are the same as for Program + Verify.

The Program cycle can be selected by clicking the Program button in the Operations section, selecting Operations | Program (No Erase) from the menu, or pressing the shortcut sequence Ctrl+M.

Verify

This verifies the contents of the selected devices against the contents of the data buffer.

The Verify cycle can be selected by clicking the Verify button in the Operations section, selecting Operations | Verify from the menu, or pressing the shortcut sequence Ctrl+Y.

Erase

\includegraphics[clip=true]{erase_parameters}
Figure 12: Erase Parameters
Allows the user to erase the entire device, or specify a start address and length to erase only a portion of the device.

The erase cycle allows the user to erase the entire memory device or allows the erasure of portion of it. For partial erasure, users can specify the start addresses and length in the erase parameters dialog (cf. Figure 12) as either a decimal value or as a hexadecimal value with the 0x prefix.

If a device does not have an erase instruction, zeros are written to the specified range within the device. Otherwise, check the memory device datasheet for erase behavior.

The Erase cycle can be selected by clicking the Erase button in the Operations section, selecting Operations | Erase from the menu, or pressing the shortcut sequence Ctrl+E. The erase cycle can be selected even if there is no data in the Hex Editor.

Note: For flash devices, it is possible for the erase range to be expanded in the situation where the address range starts in the middle of a sector and/or ends in the middle of a sector. Flash devices can only be erased in sector increments. A warning will be logged if the address range is expanded to satisfy sector boundaries.

Note: If the specified length for the erase operation encompasses the entire device size, and the memory device has an “erase all” instruction, the software will use this “erase all” instruction. In this case, the progress bar will only be an estimate of how long the erase is taking. The entire device will be erased even if the operation is aborted in mid-course.

3.6 Transaction Log

The Transaction Log provides a history of all of the operations performed by the Flash Center.

\includegraphics[clip=true]{transaction_log}
Figure 13: Transaction Log
Records all transactions that are performed by the Flash Center. This log can be saved as a file for future reference.

The information is arranged in the following columns:

Severity: An indication of the severity of the message. Warnings will be flagged with a small yellow triangle with an exclamation point, and errors will be flagged with a red stop sign.

Index: Index number of the transaction. The index is a zero-based number.

Timestamp: Time of the transaction. This information is displayed in the format:

     YYYY-MMM-DD hh:mm:ss.xxx

Summary: A summary of the operation performed. Messages that are associated with specific devices will start with “Adapter(s) 1,2:” followed by the message, where the numbers indicate which adapters the message is associated with. Messages that do not start with adapter numbers are assumed to have global scope.

Clear

The “Clear” button immediately clears all entries from the Transaction Log.

Save Log

The data in the log can be exported in a comma separated values (CSV) format by clicking on the “Save...” button. You will be prompted for a filename to save the data.

The log file has a header with the following information:

     Export Time: [time of export]

After the header, all transactions are appended, one per line. The column order in the exported file is the same as the order of the columns in the transaction log.