NAND FLASH Programming User s Guide
|
|
|
- Johnathan Bryan
- 10 years ago
- Views:
Transcription
1 NAND FLASH Programming User s Guide TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... FLASH Programming... NAND FLASH Programming User's Guide... 1 Introduction... 4 How This Manual is Organized 4 Related Documents 5 Contacting Support 5 List of Abbreviations... 7 Background Information... 7 What is a NAND Flash Device? 7 About Blocks, Pages, Main Area, and Spare Area 8 About Bad Block Markers 9 About NAND Flash Controllers 10 Standard Approach Identifying and Running Scripts for NAND Flash Programming 11 If There Is No Script 13 Scripts for NAND Flash Programming Establishing Communication between Debugger and Target CPU 16 Configuring the NAND Flash Controller 17 Resetting Default Values 19 Identifying the Type of NAND Flash Controller 20 Informing TRACE32 about the NAND Flash Register Addresses 22 Informing TRACE32 about the NAND Flash Programming Algorithm 24 Identifying the Correct Driver Binary File for a NAND Flash Device 26 File Name Convention for NAND Flash Drivers 27 Finding the <nandflash_code> of a NAND Flash Device 28 Examples for Generic NFCs 30 Example for CPU-Specific NFCs 32 Checking the Identification from the NAND Flash Device 33 Erasing the NAND Flash Device 34 Programming the NAND Flash Device 35 Programming the Main Area 36 Verifying the Main Area 37 NAND FLASH Programming User s Guide 1
2 Other Useful Commands (NAND) 38 Writing Other File Formats to the Main Area 38 Modifying the Main Area 38 Copying the Main Area 40 Programming the Spare Area 42 Programming the ECC Code to the Spare Area 45 Reading/Saving the NAND Flash Device 46 Reading the Main/Spare Area 46 Full Examples: Generic NAND Flash Programming 50 Example 1 50 Example 2 52 Full Example: CPU-Specific NAND Flash Programming 54 About OneNAND Flash Devices Scripts for OneNAND Flash Devices Establishing Communication between Debugger and Target CPU 58 Configuring the OneNAND Flash Bus 58 Resetting Default Values 59 Informing TRACE32 about the OneNAND Flash Address 59 Informing TRACE32 about the OneNAND Flash Programming Algorithm 60 Identifying the Correct OneNAND Flash Driver for a OneNAND Device 62 Naming Convention for OneNAND Flash Drivers 62 Checking the Identification from the OneNAND Flash Device 64 Erasing the OneNAND Flash Device 65 Programming the OneNAND Flash Device 66 Programming the Main Area (OneNAND) 66 Verifying the Main Area (OneNAND) 67 Other Useful Commands (OneNAND) 68 Copying the Main Area (OneNAND) 68 Modifying the Main Area (OneNAND) 70 Programming the Spare Area (OneNAND) 71 Reading/Saving the OneNAND Flash Device 74 Reading the Main/Spare Area (OneNAND) 74 Saving the Main Area (OneNAND) 75 Saving the Spare Area (OneNAND) 76 Full Example 78 Appendix A: ECC (Error Correction Code) How to Generate ECC and to Detect Error 79 3bytes per 256bytes ECC codes 81 3bytes per 512bytes ECC Codes 82 Appendix B: Spare Area Schemes Linux MTD NAND Driver Default Spare Area Schemes 83 SAMSUNG Standard Spare Area Schemes 85 NAND FLASH Programming User s Guide 2
3 NAND FLASH Programming User s Guide 3
4 NAND FLASH Programming User s Guide Version 06-Nov Feb-15 Added section Finding the <nandflash_code> of a NAND Flash Device. Introduction This manual describes the basic concept of NAND and OneNAND Flash programming. There are many similarities between NAND Flash programming and OneNAND Flash programming, but also important differences. For reasons of clarity and user-friendliness, this manual covers NAND Flash programming and OneNAND Flash programming in separate chapters. How This Manual is Organized Background Information: Provides information about important terms in NAND Flash programming, including the different types of NAND Flash controllers (NFC). Standard Approach: Describes the fastest way to get started with NAND Flash programming. All you need to do is to identify and run the correct script. Demo scripts for NAND Flash programming are provided on the TRACE32 software CD: demo/<architecture>/flash/<cpu_name>-<nand_flash_code>.cmm e.g. omap3430-nand.cmm, imx31-nand2g08.cmm Scripts for NAND Flash Programming: Describes how you can create a script if there is no demo script for the NFC type you are using. About OneNAND Flash Devices: Explains the difference between OneNAND Flash and NAND Flash. Scripts for OneNAND Flash Devices: Describes how you can create scripts for OneNAND Flash programming based on the template script provided by Lauterbach. Appendix A and B: Provide information about ECC (error correction code) and spare area schemes. NAND FLASH Programming User s Guide 4 Introduction
5 Related Documents A complete description of all NAND Flash programming commands can be found in chapter FLASHFILE in General Commands Reference Guide F (general_ref_f.pdf). The manual List of Supported FLASH Devices (flashlist.pdf) provides the following information: A list of the supported NAND and OneNAND Flash devices. A list of the supported on-chip NAND Flash controllers. The Lauterbach home page provides an up-to-date list of Supported NAND and OneNAND Flash devices under: Supported on-chip NAND Flash controllers under: Contacting Support LAUTERBACH GmbH Altlaufstrasse Hoehenkirchen-Siegertsbrunn Germany Phone (+49) Fax (+49) Internet or Here you ll find local and special support addresses. [email protected] General support address where your request will be answered within a short time if it is a basic support request or redirected to the appropriate address. Be sure to include detailed system information about your TRACE32 configuration. 1. To generate a system information report, choose TRACE32 > Help > Support > Systeminfo. NAND FLASH Programming User s Guide 5 Introduction
6 NOTE: Please help to speed up processing of your support request. By filling out the system information form completely and with correct data, you minimize the number of additional questions and clarification request s we need to resolve your problem. 2. Preferred: click Save to File, and send the system information as an attachment to your Click Save to Clipboard, and then paste the system information into your . NOTE: In case of missing script files (*.cmm), please proceed as requested in If There is No Script. NAND FLASH Programming User s Guide 6 Introduction
7 List of Abbreviations ALE CLE CS ECC NFC SP Address latch enable Command latch enable Chip selection Error correction code NAND Flash controller Spare area Background Information This chapter of the manual is aimed at users who are new to NAND Flash programming; it does not address experts with many years of expertise in this area. This chapter gives you a brief overview of important terms in NAND Flash programming, such as NAND Flash device, block, page, main area, spare area, bad block marker, generic NFC, CPU-specific NFC. What is a NAND Flash Device? A NAND Flash device (short: NAND Flash) is a non-volatile storage chip that can be electrically erased and reprogrammed. It is used in data-storage applications such as cell phones and multi-media devices. Reasons why NAND Flash devices have become widespread include: Smaller interface pins than NOR Flash High density at low-cost per bit Faster than NOR Flash NAND FLASH Programming User s Guide 7 List of Abbreviations
8 About Blocks, Pages, Main Area, and Spare Area A NAND Flash consists of blocks. Each block is subdivided into 32, 64, or 128 pages, and each page has a main and a spare area; see example diagram below. Main Area Block 1 Page 1... Spare Area Main Area NAND Flash... Block n Page 128* Spare Area *) 32, 64 or 128 pages Block Page A block is the minimum size unit for erasing. A page is the minimum size unit for reading and writing. There are two types of pages: Small pages Large pages Type Main Area* Spare Area* Total* Small Page Large Page *) in Bytes Main area Spare area The main area of each page can have a size of 512, 2048, or 4096 Bytes and contains the real code or data. The spare area of each page can have a size of 16, 32, 64, or 128 Bytes and contains the following: Bad block marker for a bad block (mandatory) ECC codes (optional) User-specific metadata (optional) NAND FLASH Programming User s Guide 8 Background Information
9 About Bad Block Markers If a block is bad, then data cannot be erased or read from or written to the bad block. To flag a bad block, one or two bad block markers are used: The 1st marker is located in the spare area of the 1st page. The 2nd marker is located in the spare area of the 2nd page. Bad block markers are stored in different byte positions, depending on the type of page (large or small): Large page NAND: The bad block marker is stored in the 1st byte. Small page NAND: The bad block marker is stored in the 6th byte. The figure below shows the 64-byte spare areas of the first two pages of a large page NAND. The FLASHFILE.DUMP window visualizes the individual pages using alternating colors for pages - white and gray. A B D 1st page 2nd page C A Spare area of a large page NAND B ECC code C, D FF = The block that these first two pages (white and gray) belong to is intact. If (C) or (D) or both do not read FF, as shown above, then the system considers the block to be bad. Byte position of a 1st bad block marker in the 1st page = (D). Byte position of a 2nd bad block marker in the 2nd page = (C). NOTE: The /EraseBadBlocks option of the FLASHFILE.Erase command can only erase faked bad blocks, but not real bad blocks. A faked bad block is a block where the user has modified an FF value to a non-ff value in the byte position (C) or (D) or in both byte positions. NAND FLASH Programming User s Guide 9 Background Information
10 About NAND Flash Controllers Access to the NAND Flash is performed by an on-chip NAND Flash controller. There are two types of NAND Flash controllers (NFC): Generic NAND Flash controllers These NFC types are typically manufactured by Samsung Semiconductor, Atmel Corporation, STMicroelectronics, Marvell, Inc., and Texas Instruments. CPU-specific NAND Flash controllers These NFC types are typically manufactured by Qualcomm, Freescale Semiconductor, NVIDIA Corporation, and Renesas Technology, Corp. The architecture of systems featuring generic NFCs is shown in the block diagram below. Processor/ Chip Core NFC Command Latch Enable Address Latch Enable Data I/O NAND Flash Memory Figure: System with a Generic NAND Flash Controller (NFC) The architectures of systems featuring CPU-specific NFCs may vary considerably. The following block diagram illustrates an example of a typical architecture. Data from/to the NAND Flash is buffered in a data buffer. Processor/ Chip Core NFC Data Buffer Command Latch Enable Address Latch Enable Data I/O NAND Flash Memory Figure: Example of a System with a CPU-specific NAND Flash Controller (NFC) NAND FLASH Programming User s Guide 10 Background Information
11 Standard Approach The chapter Standard Approach provides a compact description of the steps required to program NAND Flash memory. This description is intentionally restricted to standard use cases. Overview of the Standard Approach: Identify and run the required script for NAND Flash programming based on information on our website. What to do if there is no script for NAND Flash programming. The following step-by-step procedures describe the standard approach in detail. A detailed description of the NAND Flash programming concepts is given in Scripts for NAND Flash Programming. Identifying and Running Scripts for NAND Flash Programming Demo scripts (*.cmm) for NAND Flash programming are provided by Lauterbach. They can be found in the TRACE32 installation directory, which contains scripts developed for generic and CPU-specific NFC types. Path and file name convention of scripts for generic and CPU-specific NFC types: <TRACE32_installation_directory>/ demo/<architecture>/flash/<cpu_name>-<nand_flash_code>.cmm To identify and run the required script: 1. Make a note of the <cpu_name> printed on the CPU; for example, at91sam9xe 2. For information about supported Flash devices, access the Lauterbach website. 3. Click the + drill-down button next to Tool Chain, and then click Supported Flash Devices ( 4. On the Supported Flash Devices page, select the required company from the drop-down list. NAND FLASH Programming User s Guide 11 Standard Approach
12 5. Use the type printed on the Flash device to retrieve the <nand_flash_code> from the web page. For example, NAND Flash type = MT29F2G08 // Result: <nand_flash_code> = nand2g08 6. Put the <cpu_name> and the <nand_flash_code> together to form the script name: at91sam9xe-nand2g08.cmm The script file resides in this folder: ~~/demo/arm/flash/at91sam9xe-nand2g08.cmm Whereas ~~ is expanded to the <TRACE32_installation_directory>, which is c:/t32 by default. If the folder does not contain the script you are looking for, see If There Is No Script on page Run the script in TRACE32 by doing one of the following: - Choose File > Run Batch File <script name> - In the command line, type DO <path and script name> NOTE: Each script (*.cmm) includes a reference to the required NAND Flash programming algorithm (*.bin). You do not need to program or select the algorithm. Example ; <code_range> <data_range> <algorithm file> FLASHFILE.TARGET 0x x3fff 0x8000C000++0x4FFF ~~/demo/arm/flash/byte/nand2g08_imx.bin NAND FLASH Programming User s Guide 12 Standard Approach
13 If There Is No Script If there is no script for your device in this directory (<TRACE32_installation_directory>/demo/ <architecture>/flash/), then please send a request to [email protected] using the template below. Template: Chip name: Name of NAND Flash device: Provide the CPU datasheet for us: Lend the target board to us by sending it to the address given in Contacting Support : <SystemInformation> Be sure to include detailed system information about your TRACE32 configuration. For information about how to create a system information report, see Contacting Support. Normally we can provide support for a new device in two weeks. If our support cannot provide you with a script, you will have to create your own script (*.cmm). For more information, see Scripts for NAND Flash Programming on page 14. NAND FLASH Programming User s Guide 13 Standard Approach
14 Scripts for NAND Flash Programming This chapter describes how you can create your own scripts for chips that are equipped with generic or CPU-specific NAND Flash controllers. The steps and the framework (see below) provide an overview of the process. Both, steps and framework, are described in detail in the following sections. The following steps are necessary to create a new script: 1. Establishing Communication between Debugger and Target CPU, page Configuring the NAND Flash Controller, page Resetting Default Values, page Identifying the Type of NAND Flash Controller, page Informing TRACE32 about the NAND Flash Register Addresses, page Informing TRACE32 about the NAND Flash Programming Algorithm, page Checking the Identification from the NAND Flash Device, page Erasing the NAND Flash Device, page Programming the NAND Flash Device, page 35 NAND FLASH Programming User s Guide 14 Scripts for NAND Flash Programming
15 The following framework can be used as base for NAND Flash programming: ; Establish the communication ; between the target CPU and the ; TRACE32 debugger. ; Configure the NAND Flash ; controller. FLASHFILE.RESet FLASHFILE.CONFIG FLASHFILE.TARGET FLASHFILE.GETID FLASHFILE.Erase FLASHFILE.LOAD <main_file> ; Reset the NAND Flash environment ; in TRACE32 to its default values. ; Inform TRACE32 about the ; NAND Flash register addresses. ; Specify the NAND Flash ; programming algorithm and where ; it runs in the target RAM. ; Get the ID values of the NAND ; Flash device. ; Erase the NAND Flash. ; Program the file to the NAND ; Flash (main area). An ellipsis ( ) in the framework indicates that command parameters have been omitted here for space economy. NOTE: The parametrization of FLASHFILE.CONFIG and FLASHFILE.TARGET requires expert knowledge. NAND FLASH Programming User s Guide 15 Scripts for NAND Flash Programming
16 Establishing Communication between Debugger and Target CPU NAND Flash programming with TRACE32 requires that the communication between the debugger and the target CPU is established. The following commands are available to set up this communication: SYStem.CPU <cpu> SYStem.Up Specify your target CPU. Establish the communication between the debugger and the target CPU. SYStem.CPU OMAP3430 SYStem.Up ; Select OMAP3430 as the target CPU. ; Establish the communication between the ; debugger and the target CPU. NAND FLASH Programming User s Guide 16 Scripts for NAND Flash Programming
17 Configuring the NAND Flash Controller Programming a NAND Flash device requires a proper initialization of the NAND Flash controller. The following settings might be necessary: Enable the NAND Flash controller or bus. Configure the communication signals (clock, timing, etc.). Inform the NAND Flash controller about the NAND Flash device (large/small page, ECC, spare, etc.). Configure the NAND Flash pins if they are muxed with other functions of the CPU. Disable the write protection for the NAND Flash. Use the PER.view command to check the settings for the NAND Flash controller. NAND FLASH Programming User s Guide 17 Scripts for NAND Flash Programming
18 Example: NAND Flash controller configuration for the OMAP3430. PER.Set SD:0x6E0000A8 %LE %Long 0x870 PER.Set SD:0x6E %LE %Long 0x60401 PER.Set SD:0x6E00009C %LE %Long 0x PER.Set SD:0x6E %LE %Long 0x0800 PER.Set SD:0x6E %LE %Long 0x10 ; Enable CS1 and define ; the base address of ; CS1(NAND Flash). ; LE = little endian ; Define the NAND Flash ; access timing. ; Define CS1 for 8 bit ; NAND Flash. ; Disable the write ; protection of the NAND ; Flash device. NAND FLASH Programming User s Guide 18 Scripts for NAND Flash Programming
19 Resetting Default Values o The following command is used to reset the NAND Flash environment in TRACE32 to its default values. FLASHFILE.RESet Reset the NAND Flash environment in TRACE32 to its default values. NAND FLASH Programming User s Guide 19 Scripts for NAND Flash Programming
20 Identifying the Type of NAND Flash Controller You need to know which NFC type you are dealing with because NAND Flash programming differs depending on the NFC type: Generic NAND Flash controllers CPU-specific NAND Flash controllers To identify the type of controller: 1. Access the Lauterbach website. 2. Click the + drill-down button next to Tool Chain, and then click Supported NAND/Serial Flash Controller. 3. Select the required company from the drop-down list. 4. Locate the desired CPU. The Controller column indicates whether the NFC type is generic or CPU-specific or a hybrid. The following three examples cover all possible options. Example 1: CPU = OMAP3530 The entry in the Controller column reads generic, and the entry in the Comment column reads NAND. That means that this CPU is equipped with a generic NAND Flash controller. NAND FLASH Programming User s Guide 20 Scripts for NAND Flash Programming
21 Example 2: CPU = AT91SAM3U4 The entry in the Controller column reads generic (cortexm3), and the entry in the Comment column reads NAND, Thumb2. That means that this CPU is equipped with a generic NAND Flash controller, too. The term in parentheses tells you the architecture of the processor core, here (cortexm3). This processor core requires that the NAND Flash driver binary file is compiled using a special instruction set, herethumb2. Example 3: CPU = I.MX31 The entry in the Controller column contains the controller name (imx), and the entry in the Comment column reads NAND. That means that this CPU is equipped with a CPU-specific NAND Flash controller. NAND FLASH Programming User s Guide 21 Scripts for NAND Flash Programming
22 Informing TRACE32 about the NAND Flash Register Addresses The parametrization of FLASHFILE.CONFIG differs for generic and CPU-specific NFCs. In the case of generic NAND Flash controllers: The NAND Flash device can be programmed by operating the command, address, and I/O registers. As a result: 1. A generic NAND Flash programming driver can be used. 2. The command FLASHFILE.CONFIG always requires the parameters <cmd_reg> <addr_reg> <io_reg> FLASHFILE.CONFIG <cmd_reg> <addr_reg> <io_reg> Inform TRACE32 about the NAND Flash register addresses. Parameters for FLASHFILE.CONFIG command generic NAND Flash programming <cmd_reg> <addr_reg> <io_reg> Register address of the command register Register address of the address register Register address of the data I/O register For information about the register addresses of the command, address, and data I/O register, refer to the manufacturer s processor manual. Example 1 ; Register addresses of the generic NAND Flash controller in the OMAP3530 FLASHFILE.CONFIG 0x6E00007C 0x6E x6E Example 2 ; Register addresses of the generic NAND Flash controller in the OMAP3430 FLASHFILE.CONFIG 0x6E0000AC 0x6E0000B0 0x6E0000B4 In the case of CPU-specific NAND Flash controllers: FLASHFILE.CONFIG <NFC_base_address>,, Specify the start address of the NAND Flash base register., represents don t-care parameters. For information about the NAND Flash base register, refer to the manufacturer s processor manual. NAND FLASH Programming User s Guide 22 Scripts for NAND Flash Programming
23 Example ; NFC base address of the CPU-specific NAND Flash controller ; in the i.mx31. FLASHFILE.CONFIG 0xB ,, NAND FLASH Programming User s Guide 23 Scripts for NAND Flash Programming
24 Informing TRACE32 about the NAND Flash Programming Algorithm The following command is available to inform TRACE32 about the NAND Flash programming algorithm (*.bin): FLASHFILE.TARGET <code_range> <data_range> <file> Specify the NAND Flash programming algorithm and where it runs in the target RAM. Parameters <code_range> Define an address range in the target s RAM to which the NAND Flash programming algorithm is loaded. Flash algorithm 32 byte Figure: Memory mapping for the <code_range> Required size for the code is size_of(<file>) + 32 byte <data_range> Define the address range in the target s RAM where the programming data is buffered for the programming algorithm. 64 byte argument buffer buffer for programming data 256 byte stack Figure: Memory mapping for the <data_range> The argument buffer used for the communication between the TRACE32 software and the programming algorithm is located at the first 64 bytes of <data_range>. The 256 byte stack is located at the end of <data_range>. <buffer_size> = size_of(<data_range>) - 64 byte argument buffer byte stack <buffer_size> is the maximum number of bytes that are transferred from the TRACE32 software to the NAND Flash programming algorithm in one call. NAND FLASH Programming User s Guide 24 Scripts for NAND Flash Programming
25 <file> Lauterbach provides ready-to-run driver binary files for NAND Flash programming. They are located in the TRACE32 installation directory: ~~/demo/<architecture>/flash/<bus_width>/ Whereas ~~ is expanded to the <TRACE32_installation_directory>, which is c:/t32 by default. For detailed information about how to determine the <file> parameter, see Identifying the Correct Driver Binary File for a NAND Flash Device on page 26. NAND FLASH Programming User s Guide 25 Scripts for NAND Flash Programming
26 Identifying the Correct Driver Binary File for a NAND Flash Device There are two ways to find the correct *.bin file: You can identify the *.bin file via our website, as described in this section. Alternatively, run a PRACTICE script (*.cmm), as described in Finding the <nandflash_code> of a NAND Flash Device, page 28. To identify the correct *.bin file: 1. For information about supported Flash devices, access the Lauterbach website. 2. Click the + drill-down button next to Tool Chain, and then click Supported NAND/Serial Flash Controller ( 3. Open Supported Flash Devices in a separate window or tab ( 4. On the Supported Flash Devices page, select the required company from the drop-down list. 5. Locate the desired Flash device. You need the name of the Flash device to be able to identify the correct driver binary file. 6. Identify the correct *.bin file based on the name of the Flash device. The following examples illustrate how to do this. - Examples for Generic NFCs - Example for CPU-Specific NFCs - The file name convention for driver binary files (*.bin) is explained below. NAND FLASH Programming User s Guide 26 Scripts for NAND Flash Programming
27 File Name Convention for NAND Flash Drivers The NAND Flash drivers for the various NFC types use the following file name convention: Page Size (bytes) Block Size Device Size Bus Width File Name Main area Spare area pages <= 2048 blocks 8 Nand5608.bin 16 Nand5616.bin pages > 2048 blocks 8 Nand1208.bin 16 Nand1216.bin pages <= 1024 blocks 8 Nand1g08.bin 16 Nand1g16.bin pages > 1024 blocks 8 Nand2g08.bin 16 Nand2g16.bin pages > 1024 blocks 8 NandLAg08.bin pages > 1024 blocks 8 Nand8g08.bin Nand8g08xs.bin pages > 1024 blocks 8 NandLBg08.bin NandLBg08xs.bin xs = extra spare area NAND FLASH Programming User s Guide 27 Scripts for NAND Flash Programming
28 Finding the <nandflash_code> of a NAND Flash Device The following step-by-step procedure helps you find the <nandflash_code> of your NAND Flash device. Based on the <nandflash_code>, you can then identify the correct *.bin file. To find the <nandflash_code>: 1. Run the following PRACTICE script file (*.cmm) from the TRACE32 demo folder: CD.DO ~~\demo\etc\flash\find_nanddef.cmm ;The path prefix ~~ expands to the system directory of TRACE32, ;by default C:\t32. If this demo script is missing, you can download it from The Find nandflash code dialog opens. 2. Under Nandflash parameters, make your settings. - You can find the required information in the NAND Flash data sheet of the manufacturer. - The values selected in the screenshot are based on the Illustration of a NAND Flash Array Organization. 3. Click Find. - The code box displays the <nandflash_code> of your NAND flash device. - If the code box displays unknown, then proceed as described in If There is No Script. 4. Make a note of the displayed <nandflash_code>; for example, nand2g Click End to close the Find nandflash code dialog. 6. Identify the correct *.bin file based on the <nandflash_code>. The following examples illustrate how to do this. - Examples for Generic NFCs - Example for CPU-Specific NFCs NAND FLASH Programming User s Guide 28 Scripts for NAND Flash Programming
29 Illustration of a NAND Flash Array Organization The terms highlighted in bold correspond to the drop-down lists and radio options of the Find nandflash code dialog box (below). You can find the required information in the NAND Flash data sheet of the manufacturer. I/O [7] Bus Width I/O [0] PageSize Main bytes 1 page = (2K + 64 bytes) PageSize Spare 2048 blocks per device 1 block (64 pages) = (2K+64) bytes x 64 pages = (128K + 4K) bytes PageNum per Block cycle Row cycle cycle I/O7 I/O6 I/O5 I/O4 I/O3 I/O2 I/O1 I/O0 1st CA7 CA6 CA5 CA4 CA3 CA2 CA1 CA0 2nd LOW LOW LOW LOW CA11 CA10 CA9 CA8 3rd RA19 RA18 RA17 RA16 RA15 RA14 RA13 RA12 4th RA27 RA26 RA25 RA24 RA23 RA22 RA21 RA20 5th LOW LOW LOW LOW LOW LOW LOW RA28 CA = Column address RA = Row address COL Num ROW Num Find nandflash code Dialog Box A. Once you have entered the information found in the NAND Flash data sheet of the manufacturer, click Find. A B B. The type box displays the <nandflash_code> of your NAND Flash device. NAND FLASH Programming User s Guide 29 Scripts for NAND Flash Programming
30 Examples for Generic NFCs The names of the required NAND Flash driver binary files consist of information from the Controller and/or Code columns. The following example illustrate how you can combine this information from the Lauterbach website to form the correct file name. Example 1 target: CPU S3C6410 with a generic NFC NAND Flash device MT29F2G16 The Code column identifies the name of the NAND Flash driver binary file: nand2g16.bin. Note that the information in the Controller column is not part of the file name in this case. The number 16 in the file name indicates the bus width and the folder where the file resides, i.e. in the word folder. The binary file resides in this folder: ~~/demo/arm/flash/word Whereas ~~ is expanded to the <TRACE32_installation_directory>, which is c:/t32 by default. NAND FLASH Programming User s Guide 30 Scripts for NAND Flash Programming
31 Example 2 target: CPU AT91SAM3U4 with a generic (cortexm3) NFC. Remember that NFCs flagged like this in the Controller column generic (name) require binary files that are compiled with a special instruction set, here Thumb2; see figure below. NAND Flash device MT29F2G08 Taken together, the Code column and the Controller column make up the file name of this particular NAND Flash driver binary file: nand2g08_cortexm3.bin The number 8 in the file name indicates the bus width and the folder where the file resides, i.e. in the word folder. The binary file resides in this folder: ~~/demo/arm/flash/byte Whereas ~~ is expanded to the <TRACE32_installation_directory>, which is c:/t32 by default. This results in the following command line: ; Specify the NAND Flash programming algorithm and where it runs in ; the target RAM. <code_range> <data_range> <file> FLASHFILE.TARGET 0x x1fff 0x x1fff ~~/demo/arm/flash/byte/nand2g08_cortexm3.bin NAND FLASH Programming User s Guide 31 Scripts for NAND Flash Programming
32 Example for CPU-Specific NFCs Target: CPU i.mx31 with a CPU-specific controller NAND Flash device MT29F2G16 Taken together, the Code column and the Controller column make up the file name of the NAND Flash driver binary file: nand2g16_imx.bin The number 16 indicates the bus width and the folder where the file resides, i.e. in the word folder. The file resides in this folder: ~~/demo/arm/flash/word Whereas ~~ is expanded to the <TRACE32_installation_directory>, which is c:/t32 by default. NAND FLASH Programming User s Guide 32 Scripts for NAND Flash Programming
33 Checking the Identification from the NAND Flash Device The following command can be used to check if TRACE32 can access the NAND Flash device: FLASHFILE.GETID Get the ID values, page size, block size, and the NAND Flash code from the NAND Flash device. ; Open the TRACE32 AREA window. AREA.view ; Get the ID values, page size, block size, and the NAND Flash code ; from the NAND Flash device. FLASHFILE.GETID NAND FLASH Programming User s Guide 33 Scripts for NAND Flash Programming
34 Erasing the NAND Flash Device The following commands are available to erase NAND Flash devices: FLASHFILE.Erase <range> FLASHFILE.Erase <range> /EraseBadBlocks Erase NAND Flash except bad blocks. Erase NAND Flash including bad blocks. Example 1 ; Erase 1MB starting from 0x0 except bad blocks. FLASHFILE.Erase 0x0--0xFFFFF Example 2 ; Erase 1MB starting from 0x0 including bad blocks. ; Afterwards all bad block data is erased. FLASHFILE.Erase 0x0--0xFFFFF /EraseBadBlocks Result (1) Result (2) MAIN SP MAIN SP MAIN SP MAIN SP Bad 4 Bad 4 Bad 5 5 N N FLASHFILE.Erase FLASHFILE.Erase /EraseBadBlocks NAND FLASH Programming User s Guide 34 Scripts for NAND Flash Programming
35 Programming the NAND Flash Device In a NAND Flash device, each page consists of two areas: The main area contains the data which is accessed by the CPU. The spare area contains the bad block information and the ECC data. For background information about ECC, see Appendix: ECC (Error Correction Code) on page 79. The main and spare area are programmed independently. All CPU-specific NAND Flash controllers generate the ECC data automatically when data is programmed to the main area. Therefore, the spare area does not need to be programmed explicitly. NAND FLASH Programming User s Guide 35 Scripts for NAND Flash Programming
36 Programming the Main Area The following commands are available to program the NAND Flash main area: FLASHFILE.LOAD <file> [<address> <range>] FLASHFILE.LOAD <file> [<address> <range>] /WriteBadBlocks Program NAND Flash except bad blocks. Program NAND Flash including bad blocks. The data from <file> is written to the address range specified by <range>. If no <range> or <address> is specified, programming starts at address 0x0. Currently only binary files can be programmed. Example 1 ; Program contents of my_file.bin to NAND Flash main area starting at ; address 0x0. ; If a block is bad, the data is programmed to the next valid block. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF Example 2 ; Program contents of my_file.bin to NAND Flash main area starting ; at address 0x0. ; Even if a block is bad, data will be programmed. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF /WriteBadBlock Result (1) Result (2) My_file NAND My_file NAND Main SP Main SP Bad 4 4 Bad N N-1 N N FLASHFILE.LOAD FLASHFILE.LOAD /WriteBadBlock NAND FLASH Programming User s Guide 36 Scripts for NAND Flash Programming
37 Verifying the Main Area The following command is used to compare the NAND Flash main area with the specified target file: FLASHFILE.LOAD <file> [<address> <range>] /ComPare The data from <file> is compared to the address range specified by <range>. If no <range> or <address> is specified, comparing starts at address 0x0. Example 1 ; Verify the contents of my_file.bin against the NAND Flash main area, ; starting at address 0x0. ; If a block is bad, then the data in the file is verified against ; the next valid block up to the end of the specified range. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF /ComPare Example 2 ; Verify the contents of my_file.bin against NAND Flash main area, ; starting at address 0x0. ; Even if a block is bad, the data will be verified against the bad block ; data. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF /WriteBadBlock /ComPare NAND FLASH Programming User s Guide 37 Scripts for NAND Flash Programming
38 Other Useful Commands (NAND) Writing Other File Formats to the Main Area The following commands are available to load IntelHex and S-Record files: FLASHFILE.LOAD.IntelHex <file> Program an intelhex file to the NAND Flash. FLASHFILE.LOAD.S1record <file> FLASHFILE.LOAD.S2record <file> FLASHFILE.LOAD.S3record <file> Program an S-record file to the NAND Flash. Modifying the Main Area The following command is available to modify the contents of the NAND Flash memory. The maximum range that one FLASHFILE.Set command can modify is only one block of the Flash memory. If you want to modify three blocks, you need three FLASHFILE.Set commands, etc. See below for an example. FLASHFILE.Set [<address> <range>] %<format> <data> Modify the contents of the NAND Flash. Example 1 ; Write 4 bytes of data 0x to the address 0x ; LE = little endian FLASHFILE.Set 0x %LE %Long 0x Result (1) Example 2 ; Write data 0x0 to the address range 0x xFFF. FLASHFILE.Set 0x xFFF %Byte 0x0 NAND FLASH Programming User s Guide 38 Scripts for NAND Flash Programming
39 Result (2) Example 3 ; A NAND Flash has 128KB per block (0x20000). ; Write data 0x0 from 0x to 0x15FFFF in the NAND Flash. FLASHFILE.Set 0x x1ffff %Byte 0x0 FLASHFILE.Set 0x x1ffff %Byte 0x0 FLASHFILE.Set 0x x1ffff %Byte 0x0 NAND FLASH Programming User s Guide 39 Scripts for NAND Flash Programming
40 Copying the Main Area The following command is available to copy: Any data from any CPU memory area to the NAND Flash, or Any data from one address range of the NAND Flash to another address range within the same NAND Flash; for example, for backup purposes. FLASHFILE.COPY <source range> <target addr> FLASHFILE.COPY <source range> <target addr> /ComPare Copy data from the source range to the defined address of the NAND Flash. Verify the source range data against the target range data. Example 1 ; Copy the 2MB virtual memory data at 0x0 to the NAND Flash address ; at 0x ; Bad blocks are skipped, data is written to the next valid block. ; VM: The virtual memory of the TRACE32 software. FLASHFILE.COPY VM:0x0--0x1FFFFF 0x Result (1) Data is copied from the CPU to the NAND Flash Example 2 ; Verify the data between virtual memory and NAND Flash. FLASHFILE.COPY VM:0x0--0x1FFFFF 0x /ComPare NAND FLASH Programming User s Guide 40 Scripts for NAND Flash Programming
41 Example 3 ; Copy the 4MB NAND Flash data at 0x0 to the NAND Flash ; at 0x ; Bad blocks are skipped, data is written to the next valid block. FLASHFILE.COPY 0x0--0x3FFFFF 0x ; Verify the 4MB NAND Flash data between 0x0 and 0x FLASHFILE.COPY 0x0--0x3FFFFF 0x /ComPare NAND FLASH Programming User s Guide 41 Scripts for NAND Flash Programming
42 Programming the Spare Area The following commands are available to write a bad block marker, ECC codes, and special customer data to the NAND Flash spare area: Program the NAND Flash spare area except bad blocks. FLASHFILE.LOADSPARE <file> [<address> <range>] Program the NAND Flash spare area including bad blocks. FLASHFILE.LOADSPARE <file> [<address> <range>] /WriteBadBlocks Compare the NAND Flash spare area except bad blocks. FLASHFILE.LOADSPARE <file> [<address> <range>] /ComPare Compare the NAND Flash spare area including bad blocks. FLASHFILE.LOADSPARE <file> [<address> <range>] /WriteBadBlocks /ComPare The data from <file> is written to the address range specified by <range>. If no <range> or <address> is specified, programming starts at address 0x0. Currently only binary files can be programmed. NOTE: You need a third-party tool to create the spare file (<file>). Be careful when you specify <range>: You should input <range> in the spare area address format, not in the main area format (see figure below). Main Area Addr 2 5 Spare Area Addr Main Area Addr 2 5 Spare Area Addr 0x0--0x1FF 0x200--0x3FF 0x400--0x5FF 0x600--0x7FF 0x800--0x9FF 0xA00--0xBFF 0xC00--0xDFF 0x0--0xF 0x10--0x1F 0x20--0x2F 0x30--0x3F 0x40--0x4F 0x50--0x5F 0x60--0x6F 0x0--0x7FF 0x800--0xFFF 0x x17FF 0x x1FFF 0x x27FF 0x x2FFF 0x x37FF 0x0--0x3F 0x40--0x7F 0x80--0xBF 0xC0--0xFF 0x100--0x13F 0x140--0x17F 0x180--0x1BF N--(N+0x1FF) N>>5--(N>>5)+0xF N--(N+0x7FF) N>>5--(N>>5)+0x3F Small Page NAND Large Page NAND NAND FLASH Programming User s Guide 42 Scripts for NAND Flash Programming
43 Example 1 ; Write my_spare.bin to the NAND Flash spare area. ; Start at the address 0x0 of the spare area. ; The bad blocks of my_spare.bin are excluded. FLASHFILE.LOADSPARE my_spare.bin 0x0 Example 2: When specifying the address range, remember to use the address format of the spare area. ; Write 32KB of my_spare.bin to the specified address range ; of the spare area. ; The bad blocks of my_spare.bin are excluded. FLASHFILE.LOADSPARE my_spare.bin 0x0--0x7FFF Example 3 ; Write my_spare.bin to the spare area. ; Start at the address 0x0 of the spare area. ; Include the bad blocks of my_spare.bin. FLASHFILE.LOADSPARE my_spare.bin 0x0 /WriteBadBlock Example 4 ; Write 32KB of my_spare.bin to the spare area. ; Start at the address 0x0 of the spare area. ; Include the bad blocks of my_spare.bin. FLASHFILE.LOADSPARE my_spare.bin 0x0--0x7FFF /WriteBadBlock Result (1 and 2) Result (3 and 4) My_Spare NAND Main SP My_Spare NAND Main SP Bad 4 4 Bad N N-1 FLASHFILE.LOADSPARE N FLASHFILE.LOADSPARE /WriteBadBlock N NAND FLASH Programming User s Guide 43 Scripts for NAND Flash Programming
44 Example 5 ; Verify the entire file my_spare.bin against the spare area. ; Start at the address 0x0 of the spare area. FLASHFILE.LOADSPARE my_spare.bin 0x0 /ComPare NAND FLASH Programming User s Guide 44 Scripts for NAND Flash Programming
45 Programming the ECC Code to the Spare Area The following commands are available to generate ECC code file from the NAND Flash main area: FLASHFILE.SAVEECC.BCH FLASHFILE.SAVEECC.hamming FLASHFILE.SAVEECC.ReedSolomon Save error correction code (ECC) with BCH algorithm Save ECC with Hamming algorithm Save ECC with Reed-Solomon algorithm The following command is available to program the generated ECC code file to the NAND Flash spare area: FLASHFILE.LOADECC <file> Load ECC file to spare area NAND FLASH Programming User s Guide 45 Scripts for NAND Flash Programming
46 Reading/Saving the NAND Flash Device The CPU cannot read NAND Flash devices directly. But TRACE32 provides special commands for reading NAND Flash memories. The contents of the NAND Flash are displayed in a window. Reading the Main/Spare Area The following commands are provided to read the NAND Flash areas. FLASHFILE.DUMP [<address>] [/<format>] FLASHFILE.DUMP [<address> /SPARE [/Track] Display a hex-dump of the NAND Flash main area. Display a hex-dump of the NAND Flash spare area. Example 1 ; Display a hex-dump of the NAND Flash main area starting at 0x1000. ; Display the information in a 32-bit format (Long option). FLASHFILE.DUMP 0x1000 /Long Example 2 ; Display a hex-dump of the NAND Flash spare area. ; The cursor in the spare area display follows the cursor movements in ; the main area display (Track option). FLASHFILE.DUMP /SPARE /Track Result (1) Result (2) NAND FLASH Programming User s Guide 46 Scripts for NAND Flash Programming
47 Saving the Main Area The following commands are available to save the contents of the NAND Flash main area to a file. FLASHFILE.SAVE <file> <range> FLASHFILE.SAVE <file> <range> /SkipBadBlocks Save the contents of the NAND Flash main area into <file>, bad blocks are saved. Save the contents of the NAND Flash main area into <file>, bad blocks are skipped. Example 1 ; Save 1MB of the NAND Flash main area starting at 0x0 to the file ; my_dump.bin. ; The contents of bad block are also saved. FLASHFILE.SAVE my_dump.bin 0x0--0xFFFFF Example 2 ; Save 1MB of the NAND Flash main area starting at 0x0 to the file ; my_dump.bin. ; The contents of bad block are skipped. FLASHFILE.SAVE my_dump.bin 0x0--0xFFFFF /SkipBadBlocks Result (1) Result (2) NAND Main SP my_dump.bin NAND Main SP my_dump.bin Bad 4 Bad 4 Bad 4 N N N N-1 FLASHFILE.SAVE FLASHFILE.SAVE /SkipBadBlocks NAND FLASH Programming User s Guide 47 Scripts for NAND Flash Programming
48 Saving the Spare Area The following commands are available to save the contents of the NAND Flash spare area to a file. FLASHFILE.SAVESPARE <file> <range> FLASHFILE.SAVESPARE <file> <range> /SkipBadBlocks Save the contents of the NAND Flash spare area into <file>, bad blocks are saved. Save the contents of the NAND Flash spare area into <file>, bad blocks are skipped. Please be careful when you specify <range>: You should input <range> in the spare area address format, not in the main area format (see figure below). Main Area Addr 2 5 Spare Area Addr Main Area Addr 2 5 Spare Area Addr 0x0--0x1FF 0x0--0xF 0x0--0x7FF 0x0--0x3F 0x200--0x3FF 0x10--0x1F 0x800--0xFFF 0x40--0x7F 0x400--0x5FF 0x20--0x2F 0x x17FF 0x80--0xBF N--(N+0x1FF) N>>5--(N>>5)+0xF N--(N+0x7FF) N>>5--(N>>5)+0x3F Small Page NAND Large Page NAND Example 1 ; Save 32KB of the NAND Flash spare area starting at 0x0 to the file ; my_dump_spare.bin. ; The contents of bad block are also saved. FLASHFILE.SAVESPARE my_dump_spare.bin 0x0--0x7FFF Example 2 ; Save 32KB of the NAND Flash spare area starting at 0x0 to the file ; my_dump_spare.bin. ; The contents of bad block are skipped. FLASHFILE.SAVESPARE my_dump_spare.bin 0x0--0x7FFF /SkipBadBlocks NAND FLASH Programming User s Guide 48 Scripts for NAND Flash Programming
49 Result (1) Result (2) NAND Main SP my_dump_spare.bin NAND Main SP my_dump_spare.bin Bad Bad Bad N-1 N N N FLASHFILE.SAVESPARE FLASHFILE.SAVESPARE /SkipBadBlocks NAND FLASH Programming User s Guide 49 Scripts for NAND Flash Programming
50 Full Examples: Generic NAND Flash Programming Example 1 CPU: OMAP3430 (Texas Instruments) based on an ARM11 core. NAND Flash: MT29F1G08ABA (Micron) NAND FLASH connected to the CS1 (Chip Selection 1) pin Internal SRAM: 0x <cmd_reg>: 0x6E0000AC <addr_reg>: 0x6E0000B0 <io_reg>: 0x6E0000B4 ; Select OMAP3430 as target CPU. SYStem.CPU OMAP3430 ; Establish the communication between the debugger and the target CPU. SYStem.Up ; Disable watchdog. DO disable_watchdog.cmm ; Enable CS1 and define the base address of CS1(NAND Flash). ; LE = little endian PER.Set SD:0x6E0000A8 %LE %Long 0x870 ; Define the NAND Flash access timing. PER.Set SD:0x6E %LE %Long 0x60401 PER.Set SD:0x6E00009C %LE %Long 0x ; Define CS1 for 8 bit NAND Flash. PER.Set SD:0x6E %LE %Long 0x0800 ; GPMC_CONFIG1_1 ; Disable write protection for the NAND Flash device. PER.Set SD:0x6E %LE %Long 0x10 ; GPMC_CONFIG ; Reset the Flash declaration within TRACE32. FLASHFILE.RESet ; Inform TRACE32 about the NAND Flash register addresses. FLASHFILE.Config 0x6E0000AC 0x6E0000B0 0x6E0000B4 ; Specify the NAND Flash programming algorithm and where it runs in the ; target RAM. FLASHFILE.TARGET 0x x3fff 0x x3fff ~~/demo/arm/flash/byte/nand1g08.bin ; Check NAND Flash ID value. FLASHFILE.GETID NAND FLASH Programming User s Guide 50 Scripts for NAND Flash Programming
51 ; Erase NAND Flash including bad block. FLASHFILE.Erase 0x0--0xFFFFF /EraseBadBlocks ; Program my_file.bin to NAND Flash main area. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF ENDDO NAND FLASH Programming User s Guide 51 Scripts for NAND Flash Programming
52 Example 2 CPU: The STM32F103 is based on a Cortex-M3 core, which only runs Thumb-2 code. For this reason, a NAND Flash programming driver in thumb code is required. NAND Flash: Numonyx NAND512W3A2C (512 bytes per page), lock supported NAND Flash connect to FSMC_NCE2, NAND Flash I/O <cmd_reg>: 0x <addr_reg>: 0x <io_reg>: 0x Target RAM: 20 KB SRAM at 0x NAND FLASH Programming User s Guide 52 Scripts for NAND Flash Programming
53 ; Select STM32F103 as target CPU. SYStem.CPU STM32F103ZE ; Establish the communication between the debugger and the target CPU. SYStem.Up ; Clock enable to use FSMC and GPIO group related with NAND Flash. PER.Set SD:0x %Long 0x114 ; FSCM clock enable PER.Set SD:0x %Long E0 ; GPIOD, GPIOE, GPIOF, GPIOG enable ; GPIO configuration CLE, ALE, D0->D3, NOE, NWE and NCE2 ; (Output 50Mhz AF_PP), NWAIT((input pull-up) NAND pin configuration PER.Set SD:0x %Long 0xB8BB44BB ; GPIOD_CRL PER.Set SD:0x %Long 0xBB4BB444 ; GPIOD_CRH PER.Set SD:0x C %Long 0x ; GPIOD_ODR pin6 ; D4->D7 NAND pin configuration (output 50Mhz AF_PP) PER.Set SD:0x %Long 0xB ; GPIOE PER.Set SD:0x %Long 0x44444BBB ; GPIOE ; INT2 NAND pin configuration (input pull-up) PER.Set SD:0x %Long 0x ; GPIOG pin6 PER.Set SD:0x C %Long 0x ; GPIOG_ODR pin6 ; memory timing register PER.Set SD:0xA %Long 0x ; FSMC_PMEM2 PER.Set SD:0xA000006C %Long 0x ; FSMC_PATT2 ; Define & enable NAND Flash, 512 byte per page, ECC enable, ; 8 bit data width. PER.Set SD:0xA %Long 0x E ;FSMC_PCR2 ; Declarations for NAND Flash programming FLASHFILE.RESet FLASHFILE.CONFIG 0x x x FLASHFILE.TARGET 0x x1fff 0x x1fff ~~/demo/arm/flash/byte/nand1208_cortexm3.bin ; Unlock, erase and program. FLASHFILE.GETID FLASHFILE.UNLOCK 0x xFFFFFF FLASHFILE.Erase 0x xFFFFFF /EraseBadBlocks FLASHFILE.LOAD my_main_file.bin ENDDO NAND FLASH Programming User s Guide 53 Scripts for NAND Flash Programming
54 Full Example: CPU-Specific NAND Flash Programming CPU: i.mx31 (Freescale) NAND Flash: MT29F1G08 (Micron) NAND Flash connected to the NFCE (Flash Chip Enable) pin <base_address>: 0xB Target RAM: 16KB SRAM at 0x1FFFC000 ; Select i.mx31 as target CPU and establish communication between ; debugger and i.mx31. SYStem.RESet SYStem.CPU MCIMX31 SYStem.Option ResBreak OFF SYStem.JtagClock RTCK SYStem.Up ; Declare the NAND Flash Controller. &nand_ctrl_base_addr=0xb FLASHFILE.RESet FLASHFILE.CONFIG &nand_ctrl_base_addr,, FLASHFILE.TARGET 0x1FFFC000++0x1FFF 0x1FFFE000++0x1FFF ~~/demo/arm/flash/byte/nand1g08_imx.bin ; Erase and program. FLASHFILE.GETID FLASHFILE.Erase 0x0++0xFFFFF /EraseBadBlocks FLASHFILE.LOAD C:\T32\my_file.bin 0x0++0xFFFFF ENDDO NAND FLASH Programming User s Guide 54 Scripts for NAND Flash Programming
55 About OneNAND Flash Devices A OneNAND Flash is a special NAND Flash type: A OneNAND Flash has a NOR Flash programming interface between the CPU and the OneNAND. The NAND Flash controller logic is part of the OneNAND Flash, so the target CPU does not need an integrated NAND Flash controller. Buffer RAM Boot RAM State Machine Bus Interface Data RAM Internal Registers (Address/Command /Configuration/Status Registers) Error Correction Logic NAND FLASH Array Figure: OneNAND Flash Block Diagram NAND FLASH Programming User s Guide 55 About OneNAND Flash Devices
56 Scripts for OneNAND Flash Devices This chapter describes how to create scripts for OneNAND Flash programming. The steps and the framework (see below) provide an overview of the process. They are described in detail in the following sections. The following steps are necessary to create a new script: 1. Establish communication between debugger and target CPU. 2. Configure the OneNAND Flash bus. 3. Reset the NAND Flash environment in TRACE32 to its default values. 4. Inform TRACE32 about the OneNAND Flash address (Flash declaration). 5. Inform TRACE32 about the OneNAND Flash programming algorithm. 6. Check the identification from the OneNAND Flash device. 7. Erase the OneNAND Flash device. 8. Program the OneNAND Flash device. NAND FLASH Programming User s Guide 56 Scripts for OneNAND Flash Devices
57 The following framework can be used as base for OneNAND Flash programming: ; Establish the communication ; between the CPU and the TRACE32 ; debugger. ; Configure the OneNAND Flash ; controller. FLASHFILE.RESet FLASHFILE.CONFIG FLASHFILE.TARGET FLASHFILE.GETID FLASHFILE.Erase FLASHFILE.LOAD <main_file> ; Reset the OneNAND Flash ; declaration within TRACE32. ; Inform TRACE32 about the ; OneNAND Flash register addresses. ; Specify the OneNAND Flash ; programming algorithm and where ; it runs in target RAM. ; Get the ID values of the OneNAND ; Flash. ; Erase the OneNAND Flash. ; Program the file to the OneNAND ; Flash (main area). An ellipsis ( ) in the framework indicates that command parameters have been omitted here for space economy. NOTE: The parametrization of FLASHFILE.CONFIG and FLASHFILE.TARGET requires expert knowledge. A template script (*.cmm) for OneNAND Flash programming is provided by Lauterbach. It can be found in the TRACE32 installation directory. <TRACE32_installation_directory>/demo/<architecture>/flash/onenand.cmm Whereas ~~ is expanded to the <TRACE32_installation_directory>, which is c:/t32 by default. NAND FLASH Programming User s Guide 57 Scripts for OneNAND Flash Devices
58 Establishing Communication between Debugger and Target CPU OneNAND Flash programming with TRACE32 requires that the communication between the debugger and the target CPU is established. The following commands are available to set up this communication: SYStem.CPU <cpu> SYStem.Up Specify your target CPU. Establish the communication between the debugger and the target CPU. SYStem.CPU OMAP3430 SYStem.Up ; Select OMAP3430 as target CPU. ; Establish the communication between the ; debugger and the target CPU. Configuring the OneNAND Flash Bus Programming an off-chip OneNAND Flash devices requires a proper initialization of the external bus interface. The following settings in the bus configuration might be necessary: Definition of the base address of the OneNAND Flash devices Definition of the size of the OneNAND Flash devices Definition of the data bus width that is used to access the OneNAND Flash devices Definition of the timing (number of wait states for the access to the OneNAND Flash devices) Definition of the bus type of the OneNAND Flash devices (for example, muxed mode) Example: Define the bus configuration registers for the OneNAND Flash device. PER.Set SD:0x6E0000D8 %Long 0x PER.Set SD:0x6E0000C0 %Long 0x1200 ; Enable chip selection and define ; 128MB OneNAND Flash size and the ; base address is 0x ; Define chip selection for 16 bit ; muxed (address & data) for ; OneNAND Flash. NAND FLASH Programming User s Guide 58 Scripts for OneNAND Flash Devices
59 Resetting Default Values The following command is used to reset the OneNAND Flash environment in TRACE32 to its default values. FLASHFILE.RESet Reset the OneNAND Flash environment in TRACE32 to its default values. Informing TRACE32 about the OneNAND Flash Address The following command is available to inform TRACE32 about the start address of the OneNAND Flash base register. FLASHFILE.CONFIG <base_address>,, Inform TRACE32 about the start address of the OneNAND Flash base register., represents don t-care parameters. For information about the OneNAND Flash base register, refer to the manufacturer s processor manual. Example: base address of the OneNAND Flash controller in the OMAP3430 as target CPU: ; Inform TRACE32 about the start address of the OneNAND Flash ; base register. FLASHFILE.Config 0x ,, NAND FLASH Programming User s Guide 59 Scripts for OneNAND Flash Devices
60 Informing TRACE32 about the OneNAND Flash Programming Algorithm The following command is available to inform TRACE32 about the OneNAND Flash device to be programmed: FLASHFILE.TARGET <code_range> <data_range> <file> Specify the OneNAND Flash programming algorithm and where it runs in the target RAM. Parameters <code_range> Define an address range in the target s RAM to which the OneNAND Flash programming algorithm is loaded. Flash algorithm 32 byte Figure: Memory mapping for the <code_range> Required size for the code is size_of(<file>) + 32 byte NAND FLASH Programming User s Guide 60 Scripts for OneNAND Flash Devices
61 <data_range> Define the address range in the target s RAM where the programming data is buffered for the programming algorithm. 64 byte argument buffer buffer for programming data 256 byte stack Figure: Memory mapping for the <data_range> The argument buffer used for the communication between the TRACE32 software and the programming algorithm is located at the first 64 bytes of <data_range>. The 256 byte stack is located at the end of <data_range>. <buffer_size> = size_of(<data_range>) - 64 byte argument buffer byte stack <buffer_size> is the maximum number of bytes that are transferred from the TRACE32 software to the OneNAND programming algorithm in one call. <file> Lauterbach provides ready-to-run driver binary files for OneNAND Flash programming. They are located in the TRACE32 installation directory: They are located in the TRACE32 installation directory: ~~/demo/<architecture>/flash/<bus_width>/ Whereas ~~ is expanded to the <TRACE32_installation_directory>, which is c:/t32 by default. The manual List of Supported FLASH Devices (flashlist.pdf) provides a list of the supported OneNAND Flash devices and the appropriate programming driver name. The Lauterbach home page provides the same information and is updated more often: For detailed information about how to determine the <file> parameter, see Identifying the Correct OneNAND Flash Driver for a OneNAND Device on page 62. NAND FLASH Programming User s Guide 61 Scripts for OneNAND Flash Devices
62 Identifying the Correct OneNAND Flash Driver for a OneNAND Device 1. For information about supported Flash devices, access the Lauterbach website: 2. Click the + drill-down button next to Tool Chain, and then click Supported Flash Devices. 3. Scroll through the list to locate the desired OneNAND Flash device. Based on the name of the Flash device, you can identify the correct OneNAND Flash driver binary file. The Code column identifies the OneNAND Flash driver binary file. The file onenand2g16.bin resides in this folder ~~/T32/demo/arm/flash/word Whereas ~~ is expanded to the <TRACE32_installation_directory>, which is c:/t32 by default. The number 16 indicates the bus width and the folder where the file resides, i.e. in the word folder. Naming Convention for OneNAND Flash Drivers The name of the OneNAND programming driver depends on: 1. The bus width between the CPU and the OneNAND Flash device. 2. The die, which describes the internal organization of the OneNAND Flash device A 2 GByte OneNAND Flash, for example, can consist of a single 2 GByte die or of two 1 GByte dies. Please refer to the datasheet of your OneNAND Flash device to get this information. Naming examples are given in the table below: OneNAND Flash Bus Width Die Driver KFG1G GByte onenand1g16.bin KFH2G GByte onenand1g16.bin KFM1G GByte onenand1g16.bin NAND FLASH Programming User s Guide 62 Scripts for OneNAND Flash Devices
63 OneNAND Flash Bus Width Die Driver KFN2G GByte onenand1g16.bin KFG2G GByte onenand2g16.bin KFH4G GByte onenand2g16.bin KFM2G GByte onenand2g16.bin KFN4G GByte onenand2g16.bin NAND FLASH Programming User s Guide 63 Scripts for OneNAND Flash Devices
64 Checking the Identification from the OneNAND Flash Device The following command can be used to check if TRACE32 can access the OneNAND Flash device: FLASHFILE.GETID Get the ID values for OneNAND Flash. Example ; Open the TRACE32 AREA window. AREA.view ; Check the access to the OneNAND Flash device ; by getting the manufacturer ID and the device ID. FLASHFILE.GETID Manufacturer ID: Device ID: Samsung KFM2G162M NAND FLASH Programming User s Guide 64 Scripts for OneNAND Flash Devices
65 Erasing the OneNAND Flash Device The following command is used to erase OneNAND Flash devices: FLASHFILE.Erase <range> FLASHFILE.Erase <range> /EraseBadBlocks Erase OneNAND Flash except bad blocks. Erase OneNAND Flash including bad blocks. Example 1 ; Erase 1MB starting from 0x0 except bad blocks. FLASHFILE.Erase 0x0--0xFFFFF Example 2 ; Erase 1MB starting from 0x0 including bad blocks. ; Afterwards all bad block information is erased. FLASHFILE.Erase 0x0--0xFFFFF /EraseBadBlocks Result (1) Result (2) MAIN SP MAIN SP MAIN SP MAIN SP Bad 4 Bad 4 Bad 5 5 N N FLASHFILE.Erase FLASHFILE.Erase /EraseBadBlocks NAND FLASH Programming User s Guide 65 Scripts for OneNAND Flash Devices
66 Programming the OneNAND Flash Device OneNAND Flash devices consist of two areas: The main area contains the data which is accessed by the CPU. The spare area contains the bad block information and the ECC data. For background information about ECC, see Appendix: ECC (Error Correction Code) on page 79. The FLASHFILE commands allow to program the main and spare area independently. Programming the Main Area (OneNAND) The following commands are available to program the OneNAND Flash main area: FLASHFILE.LOAD <file> [<address> <range>] FLASHFILE.LOAD <file> [<address> <range>] /WriteBadBlocks Program OneNAND Flash except bad blocks. Program OneNAND Flash including bad blocks. The data from <file> is written to the address range specified by <range>. If no <range> or <address> is specified, programming starts at address 0x0. Currently only binary files can be programmed. Example 1 ; Program contents of my_file.bin to the OneNAND Flash main area starting ; at address 0x0. ; If a block is bad, the data is programmed to the next valid block. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF NAND FLASH Programming User s Guide 66 Scripts for OneNAND Flash Devices
67 Example 2 ; Program the contents of my_file.bin to OneNAND Flash main area starting ; at address 0x0. ; Even if a block is bad, data will be programmed. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF /WriteBadBlock Result (1) Result (2) My_file OneNAND My_file OneNAND Bad Bad N N-1 N N FLASHFILE.LOAD FLASHFILE.LOAD /WriteBadBlock Verifying the Main Area (OneNAND) The following command is used to compare the OneNAND Flash main area with the specified target file: FLASHFILE.LOAD <file> [<address> <range>] /ComPare The data from <file> is compared to the address range specified by <range>. If no <range> or <address> is specified, comparing starts at address 0x0. Example 1 ; Verify the contents of my_file.bin against the NAND Flash main area, ; starting at address 0x0. ; If a block is bad, then the data in the file is verified against ; The next valid block up to the end of the range specified. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF /ComPare Example 2 ; Verify the contents of my_file.bin against NAND Flash main area, ; starting at address 0x0. ; Even if a block is bad, the data will be verified against the bad block ; data. FLASHFILE.LOAD my_file.bin 0x0--0xFFFFF /WriteBadBlock /ComPare NAND FLASH Programming User s Guide 67 Scripts for OneNAND Flash Devices
68 Other Useful Commands (OneNAND) Copying the Main Area (OneNAND) The following command is available to copy: Any data from any CPU memory area to the OneNAND Flash, or Any data from one address range of the OneNAND Flash to another address range within the same OneNAND Flash; for example, for backup purposes. FLASHFILE.COPY <source range> <target addr> FLASHFILE.COPY <source range> <target addr> /ComPare Copy data from the source range to the defined address of the OneNAND Flash. Verify the source range data against the target range data. Example 1 ; Copy the 2MB virtual memory data at 0x0 to the OneNAND Flash address ; at 0x ; Bad blocks are skipped, data is written to the next valid block. ; VM: stands for virtual memory. FLASHFILE.COPY VM:0x0--0x1FFFFF 0x Result (1): Data is copied from the CPU to the OneNAND Flash NAND FLASH Programming User s Guide 68 Scripts for OneNAND Flash Devices
69 Example 2 ; Verify the data between virtual memory and OneNAND Flash. FLASHFILE.COPY VM:0x0--0x1FFFFF 0x /ComPare Example 3 ; Copy the 4MB OneNAND Flash data at 0x0 to the OneNAND Flash ; at 0x ; Bad blocks are skipped, data is written to the next valid block. FLASHFILE.COPY 0x0--0x3FFFFF 0x ; Verify the 4MB OneNAND Flash data between 0x0 and 0x FLASHFILE.COPY 0x0--0x3FFFFF 0x /ComPare NAND FLASH Programming User s Guide 69 Scripts for OneNAND Flash Devices
70 Modifying the Main Area (OneNAND) The following command is available to modify the contents of the OneNAND Flash. The maximum range that one FLASHFILE.Set command can modify is only one block of the Flash memory. If you want to modify three blocks, you need three FLASHFILE.Set commands, etc. FLASHFILE.Set [<address> <range>] %<format> <data> Modify the contents of the OneNAND Flash. Example 1 ; Write 4 bytes of data (= 0x ) to the address 0x ; LE = little endian FLASHFILE.Set 0x %LE %Long 0x Example 2 ; Write data 0x0 to the address range 0x xFFF. FLASHFILE.Set 0x xFFF %Byte 0x0 Example 3 ; A OneNAND Flash has 128KB per block (0x20000). ; Write data 0x0 from 0x to 0x15FFFF in the OneNAND Flash. FLASHFILE.Set 0x x1ffff %Byte 0x0 FLASHFILE.Set 0x x1ffff %Byte 0x0 FLASHFILE.Set 0x x1ffff %Byte 0x0 Result (1) Result (2) NAND FLASH Programming User s Guide 70 Scripts for OneNAND Flash Devices
71 Programming the Spare Area (OneNAND) The following commands are available to program the OneNAND Flash spare area: Program the OneNAND Flash spare area except bad blocks. FLASHFILE.LOADSPARE <file> [<address> <range>] Program the OneNAND Flash spare area including bad blocks. FLASHFILE.LOADSPARE <file> [<address> <range>] /WriteBadBlocks Compare the OneNAND Flash spare area except bad blocks. FLASHFILE.LOADSPARE <file> [<address> <range>] /ComPare Compare the OneNAND Flash spare area including bad blocks. FLASHFILE.LOADSPARE <file> [<address> <range>] /WriteBadBlocks /ComPare The data from <file> is written to the address range specified by <range>. If no <range> or <address> is specified, programming starts at address 0x0. Currently only binary files can be programmed. NOTE: You need a third-party tool to create the spare file (<file>). Be careful when you specify <range>: You should input <range> in the spare area address format, not in the main area format (see figure below). Main Area Addr 2 5 Spare Area Addr Main Area Addr 2 5 Spare Area Addr 0x0--0x1FF 0x200--0x3FF 0x400--0x5FF 0x600--0x7FF 0x800--0x9FF 0xA00--0xBFF 0xC00--0xDFF 0x0--0xF 0x10--0x1F 0x20--0x2F 0x30--0x3F 0x40--0x4F 0x50--0x5F 0x60--0x6F 0x0--0x7FF 0x800--0xFFF 0x x17FF 0x x1FFF 0x x27FF 0x x2FFF 0x x37FF 0x0--0x3F 0x40--0x7F 0x80--0xBF 0xC0--0xFF 0x100--0x13F 0x140--0x17F 0x180--0x1BF N--(N+0x1FF) N>>5--(N>>5)+0xF N--(N+0x7FF) N>>5--(N>>5)+0x3F Small Page OneNAND Large Page OneNAND NAND FLASH Programming User s Guide 71 Scripts for OneNAND Flash Devices
72 Example 1 ; Write my_spare.bin to the OneNAND Flash spare area. ; Start at the address 0x0 of the spare area. ; The bad blocks of my_spare.bin are excluded. FLASHFILE.LOADSPARE my_spare.bin 0x0 Example 2 When specifying the address range, remember to use the address format of the spare area. ; Write 32KB of my_spare.bin to the specified address range ; of the spare area. ; The bad blocks of my_spare.bin are excluded. FLASHFILE.LOADSPARE my_spare.bin 0x0--0x7FFF Example 3 ; Write my_spare.bin to the spare area. ; Start at the address 0x0 of the spare area. ; Include the bad blocks of my_spare.bin. FLASHFILE.LOADSPARE my_spare.bin 0x0 /WriteBadBlock Example 4 ; Write 32KB of my_spare.bin to the spare area. ; Start at the address 0x0 of the spare area. ; Include the bad blocks of my_spare.bin. FLASHFILE.LOADSPARE my_spare.bin 0x0--0x7FFF /WriteBadBlock NAND FLASH Programming User s Guide 72 Scripts for OneNAND Flash Devices
73 Result (1 and 2) Result (3 and 4) My_Spare OneNAND Main SP My_Spare OneNAND Main SP Bad 4 4 Bad N N-1 FLASHFILE.LOADSPARE N FLASHFILE.LOADSPARE /WriteBadBlock N Example 5 ; Compare the entire file my_spare.bin with the spare area. ; Start at the address 0x0 of the spare area. FLASHFILE.LOADSPARE my_spare.bin 0x0 /ComPare NOTE: OneNAND Flash controllers generate the ECC data automatically when data is programmed to the main area, so the ECC codes in the spare area do not need to be programmed. NAND FLASH Programming User s Guide 73 Scripts for OneNAND Flash Devices
74 Reading/Saving the OneNAND Flash Device The CPU cannot read OneNAND Flash devices directly. But TRACE32 provides special commands for reading OneNAND Flash devices. The contents of the OneNAND Flash are displayed in a window. Reading the Main/Spare Area (OneNAND) The following commands are available to read the OneNAND Flash areas. FLASHFILE.DUMP [<address>] [/<format>] FLASHFILE.DUMP [<address> /SPARE [/Track] Display a hex-dump of the OneNAND Flash main area. Display a hex-dump of the OneNAND Flash spare area. Example 1 ; Display a hex-dump of the OneNAND Flash main area starting at 0x1000. ; Display the information in a 32-bit format (Long option). FLASHFILE.DUMP 0x1000 /Long Example 2 ; Display a hex-dump of the OneNAND Flash spare area. ; The cursor in the spare area display follows the cursor movements in ; the main area display (Track option). FLASHFILE.DUMP /SPARE /Track Result (1) Result (2) NAND FLASH Programming User s Guide 74 Scripts for OneNAND Flash Devices
75 Saving the Main Area (OneNAND) The following commands are available to save the contents of the OneNAND Flash main area to a file. FLASHFILE.SAVE <file> <range> FLASHFILE.SAVE <file> <range> /SkipBadBlocks Save the contents of the OneNAND Flash main area into <file>, bad blocks are saved. Save the contents of the OneNAND Flash main area into <file>, bad blocks are skipped. Example 1 ; Save 1MB of the OneNAND Flash main area starting at 0x0 to the file ; my_dump.bin. ; The contents of bad blocks are also saved. FLASHFILE.SAVE my_dump.bin 0x0--0xFFFFF Example 2 ; Save 1MB of the OneNAND Flash main area starting at 0x0 to the file ; my_dump.bin. ; The contents of bad blocks are skipped. FLASHFILE.SAVE my_dump.bin 0x0--0xFFFFF /SkipBadBlocks Result (1) Result (2) OneNAND Main SP my_dump.bin OneNAND Main SP my_dump.bin Bad Bad Bad N-1 N N N FLASHFILE.SAVE FLASHFILE.SAVE /SkipBadBlocks NAND FLASH Programming User s Guide 75 Scripts for OneNAND Flash Devices
76 Saving the Spare Area (OneNAND) The following commands are available to save the contents of the OneNAND Flash spare area to a file. FLASHFILE.SAVESPARE <file> <range> FLASHFILE.SAVESPARE <file> <range> /SkipBadBlocks Save the contents of the OneNAND Flash spare area into <file>, bad blocks are saved. Save the contents of the OneNAND Flash spare area into <file>, bad blocks are skipped. Please be careful when you specify <range>: You should input <range> in the spare area address format, not in the main area format (see figure below). Main Area Addr 2 5 Spare Area Addr Main Area Addr 2 5 Spare Area Addr 0x0--0x1FF 0x0--0xF 0x0--0x7FF 0x0--0x3F 0x200--0x3FF 0x10--0x1F 0x800--0xFFF 0x40--0x7F 0x400--0x5FF 0x20--0x2F 0x x17FF 0x80--0xBF N--(N+0x1FF) N>>5--(N>>5)+0xF N--(N+0x7FF) N>>5--(N>>5)+0x3F Small Page OneNAND Large Page OneNAND Example 1 ; Save 32KB of the OneNAND Flash spare area starting at 0x0 to the file ; my_dump_spare.bin. ; The contents of bad blocks are also saved. FLASHFILE.SAVESPARE my_dump_spare.bin 0x0--0x7FFF Example 2 ; Save 32KB of the OneNAND Flash spare area starting at 0x0 to the file ; my_dump_spare.bin. ; The contents of bad blocks are skipped. FLASHFILE.SAVESPARE my_dump_spare.bin 0x0--0x7FFF /SkipBadBlocks NAND FLASH Programming User s Guide 76 Scripts for OneNAND Flash Devices
77 Result (1) Result (2) OneNAND Main SP my_dump_spare.bin OneNAND Main SP my_dump_spare.bin Bad Bad Bad N-1 N N N FLASHFILE.SAVESPARE FLASHFILE.SAVESPARE /SkipBadBlocks NAND FLASH Programming User s Guide 77 Scripts for OneNAND Flash Devices
78 Full Example CPU: OneNAND Flash: Bus width: Die: OMAP3430 KFM2G162M(SAMSUNG) 16-bit muxed 2 GByte ; Select OMAP3430 as target CPU. SYStem.CPU OMAP3430 ; Establish the communication between the debugger and the target CPU. SYStem.Up ; Define CS2 for 16 bit muxed (address & data) OneNAND Flash. PER.Set SD:0x6E0000C0 %l 0x1200 ; GPMC_CONFIG1_2 ; Enable CS2 and define 128 MB size and the base address is 0x PER.Set SD:0x6E0000D8 %l 0x848 ; GPMC_GPMC_CONFIG7_2 ; Reset the Flash declaration. FLASHFILE.RESet ; Specify the OneNAND Flash base address. FLASHFILE.Config 0x ,, ; Specify the OneNAND Flash programming algorithm and where it runs ; in the target RAM. FLASHFILE.TARGET 0x x1fff 0x x1fff ~~/demo/arm/flash/word/onenand2g16.bin ; Check OneNAND Flash ID value. FLASHFILE.GETID ; Erase OneNAND Flash including bad blocks. FLASHFILE.Erase 0x0--0xfffff /EraseBadBlocks ; Program my_file.bin to OneNAND Flash main area. FLASHFILE.LOAD my_file.bin 0x0--0xfffff ENDDO OneNAND Flash controllers generate the ECC data automatically when data is programmed to the main area, so the spare area does not need to be programmed. NAND FLASH Programming User s Guide 78 Scripts for OneNAND Flash Devices
79 Appendix A: ECC (Error Correction Code) The NAND Flash devices are arranged as an array of pages. Each page consists of 256/512/ 2048 byte data and 8/16/64 byte spare (out of band) area. The spare area is used to store ECC (error correction code), bad block information, and file system dependent data. The ECC location in the spare area is flexible, depending on the customer s flash file system. Techniques used to detect and correct error bits include the Hamming, BCH, and Reed Solomon codes. Hamming codes are most widely used for error detection and correction. According to the Hamming ECC principle, the ECC codes consist of 3 bytes per 256 Kbyte or 3 bytes per 512 Kbyte. ECC codes allow the NAND Flash controller to verify the data and in some cases to correct corrupted data. How to Generate ECC and to Detect Error The Hamming ECC can be applied to data sizes of 1 byte, 8 bytes 16 bytes, and so on. The following paragraph shows a simple example for 1 byte (8 bit). ECC Generation Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P4 P4 P2 P2 P2 P2 P1 P1 P1 P1 P1 P1 P1 P1 (+) : XOR P4=Bit7(+)Bit6(+)Bit5(+)Bit4 P2=Bit7(+)Bit6(+)Bit3(+)Bit2 P1=Bit7(+)Bit5(+)Bit3(+)Bit1 P4 =Bit3(+)Bit2(+)Bit1(+)Bit0 P2 =Bit5(+)Bit4(+)Bit1(+)Bit0 P1 =Bit6(+)Bit4(+)Bit2(+)Bit0 NAND FLASH Programming User s Guide 79 Appendix A: ECC (Error Correction Code)
80 Error Detection with ECC Original Data: Changed Data: P4 P4 P2 P2 P1 P XOR P4 P4 P2 P2 P1 P P4 P4 P2 P2 P1 P Half bits (3/6) are different -> the error is correctable All bits are 0 -> no error So, the error location is at the P4, P2, P1 values ( = Bit4 ) P4, P2, P1 = column parity and the error bit position P2048, P1024,..., P8 = line parity and the error byte position For example, if you get an ECC result like this (P1024, P512,..., P2, P1) in the 256byte ECC generation, it means that the error is located in the 6th bit of the 76th Byte. NAND FLASH Programming User s Guide 80 Appendix A: ECC (Error Correction Code)
81 3bytes per 256bytes ECC codes P8=bit7(+)bit6(+)bit5(+)bit4(+)bit3(+)bit2(+)bit1(+)bit0(+)P8 P1024=bit7(+)bit6(+)bit5(+)bit4(+)bit3(+)bit2(+)bit1(+)bit0(+)P1024 (+) : XOR 22bit ECC Code = 16bit line parity + 6 bit column parity ECC0 I/O7 I/O6 I/O5 I/O4 I/O3 I/O2 I/O1 I/O0 ECC0 ECC1 ECC2 ECC0 ~P64 ~P64 ~P32 ~P32 ~P16 ~P16 ~P8 ~P8 ~P1024 ECC0 ~P1024 ~P512 ~P512 ~P256 ~P256 ~P128 ~P128 ECC0 ~P4 ~P4 ~P2 ~P2 ~P1 ~P bit ECC Code Assignment Table NAND FLASH Programming User s Guide 81 Appendix A: ECC (Error Correction Code)
82 3bytes per 512bytes ECC Codes 24bit ECC Code = 18bit line parity + 6bit column parity ECC0 I/O7 I/O6 I/O5 I/O4 I/O3 I/O2 I/O1 I/O0 ECC0 ECC1 ECC2 ECC0 ~P64 ~P64 ~P32 ~P32 ~P16 ~P16 ~P8 ~P8 ~P1024 ECC0 ~P1024 ~P512 ~P512 ~P256 ~P256 ~P128 ~P128 ECC0 ~P4 ~P4 ~P2 ~P2 ~P1 ~P1 ~P2048 ~P bit ECC Code Assignment Table NAND FLASH Programming User s Guide 82 Appendix A: ECC (Error Correction Code)
83 Appendix B: Spare Area Schemes Linux MTD NAND Driver Default Spare Area Schemes 256 Byte Page Size Offset Content Comment 0x0 ECC Byte 0 Error correction code byte 0 0x1 ECC Byte 1 Error correction code byte 1 0x2 ECC Byte 2 Error correction code byte 2 0x3 Autoplace 0 0x4 Autoplace 1 0x5 Bad Block Marker If any bit in this byte is zero, then this block is bad. 0x6 Autoplace 2 0x7 Autoplace Byte Page Size Offset Content Comment 0x0 ECC Byte 0 Error correction code byte 0 of the lower 256 Byte data in this page 0x1 ECC Byte 1 Error correction code byte 1 of the lower 256 Bytes of data in this page 0x2 ECC Byte 2 Error correction code byte 2 of the lower 256 Bytes of data in this page 0x3 ECC Byte 3 Error correction code byte 0 of the upper 256 Bytes of data in this page 0x4 Reserved Reserved 0x5 Bad Block Marker If any bit in this byte is zero, then this block is bad. NAND FLASH Programming User s Guide 83 Appendix B: Spare Area Schemes
84 0x6 ECC Byte 4 Error correction code byte 1 of the upper 256 Bytes of data in this page 0x7 ECC Byte 5 Error correction code byte 2 of the upper 256 Bytes of data in this page 0x08-0x0F Autoplace Byte Page Size Offset Content Comment 0x0 Bad block marker If any bit in this byte is zero, then this block is bad. 0x1 Reserved Reserved 0x02-0x27 Autoplace x28-0x2A ECC Byte 0-2 Error correction code 3 bytes of the first 256 Byte data in this page 0x2B-0x2D ECC Byte 3-5 Error correction code 3 bytes of the second 256 Byte data in this page 0x2E-0x30 ECC Byte 6-8 Error correction code 3 bytes of the third 256 Byte data in this page 0x31-0x33 ECC Byte 9-11 Error correction code 3 bytes of the fourth 256 Byte data in this page 0x34-0x36 ECC Byte Error correction code 3 bytes of the fifth 256 Byte data in this page 0x37-0x39 ECC Byte Error correction code 3 bytes of the sixth 256 Byte data in this page 0x3A-0x3C ECC Byte Error correction code 3 bytes of the seventh 256 Byte data in this page 0x3D-0x3F ECC Byte Error correction code 3 bytes of the eighth 256 Byte data in this page NAND FLASH Programming User s Guide 84 Appendix B: Spare Area Schemes
85 SAMSUNG Standard Spare Area Schemes 512B(Small Page): 16Byte Spare Area Offset Content Comment 0x0-0x2 LSN 0-2 Logical Sector Number 0x3-0x4 WC 0-1 Status flag against sudden power failure during write 0x5 BI Bad block marker 0x6-0x8 ECC Byte 0-2 ECC code for 512KB main area data 0x9-0x0A S-ECC Byte 0-1 ECC code for LSN data 0x0B-0x0F Reserved Reserved 2048B(Large Page): 64 Byte Spare Area 2048 Byte Main Area Spare Area 1st page Main 2nd page Main 3rd page Main 4th page Main 1st page spare 2nd page spare 3rd page spare 4th page spare Description of the Spare Area Offset Content Comment 0x0 BI 1st bad block marker 0x1 Reserved Reserved 0x2-0x4 LSN 0-2 Logical sector number 0x5 Reserved Reserved 0x6-0x7 WC 0-1 Status flag against sudden power failure during write 0x8-0x0A ECC Byte 0-2 ECC code for first 512KB main area data NAND FLASH Programming User s Guide 85 Appendix B: Spare Area Schemes
86 0x0B-0x0C S-ECC Byte 0-1 ECC Code for first LSN data 0x0D-0x0F Reserved Reserved 0x10-0x1F 0x20-0x2F 0x30-0x3F 2nd page spare structure is the same as the 1st page spare 3rd page spare structure is the same as the 1st page spare 4th page spare structure is the same as the 1st page spare NAND FLASH Programming User s Guide 86 Appendix B: Spare Area Schemes
MCF54418 NAND Flash Controller
Freescale Semiconductor Application Note Document Number: AN4348 Rev. 0, 09/2011 MCF54418 NAND Flash Controller by: Liew Tsi Chung Applications Engineer 1 Introduction The ColdFire MCF5441x family is the
NAND Flash FAQ. Eureka Technology. apn5_87. NAND Flash FAQ
What is NAND Flash? What is the major difference between NAND Flash and other Memory? Structural differences between NAND Flash and NOR Flash What does NAND Flash controller do? How to send command to
Technical Note. Micron NAND Flash Controller via Xilinx Spartan -3 FPGA. Overview. TN-29-06: NAND Flash Controller on Spartan-3 Overview
Technical Note TN-29-06: NAND Flash Controller on Spartan-3 Overview Micron NAND Flash Controller via Xilinx Spartan -3 FPGA Overview As mobile product capabilities continue to expand, so does the demand
There are various types of NAND Flash available. Bare NAND chips, SmartMediaCards, DiskOnChip.
NAND FLASH NAND vs. NOR Beside the different silicon cell design, the most important difference between NAND and NOR Flash is the bus interface. NOR Flash is connected to a address / data bus direct like
Block 3 Size 0 KB 0 KB 16KB 32KB. Start Address N/A N/A F4000H F0000H. Start Address FA000H F8000H F8000H F8000H. Block 2 Size 8KB 16KB 16KB 16KB
APPLICATION NOTE M16C/26 1.0 Abstract The following article describes using a synchronous serial port and the FoUSB (Flash-over-USB ) Programmer application to program the user flash memory of the M16C/26
Booting from NAND Flash Memory
Booting from NAND Flash Memory Introduction NAND flash memory technology differs from NOR flash memory which has dominated the embedded flash memory market in the past. Traditional applications for NOR
1 Gbit, 2 Gbit, 4 Gbit, 3 V SLC NAND Flash For Embedded
1 Gbit, 2 Gbit, 4 Gbit, 3 V SLC NAND Flash For Embedded Distinctive Characteristics Density 1 Gbit / 2 Gbit / 4 Gbit Architecture Input / Output Bus Width: 8-bits / 16-bits Page Size: x8 = 2112 (2048 +
Programming NAND devices
Technical Guide Programming NAND devices Kelly Hirsch, Director of Advanced Technology, Data I/O Corporation Recent Design Trends In the past, embedded system designs have used NAND devices for storing
Production Flash Programming Best Practices for Kinetis K- and L-series MCUs
Freescale Semiconductor Document Number:AN4835 Application Note Rev 1, 05/2014 Production Flash Programming Best Practices for Kinetis K- and L-series MCUs by: Melissa Hunter 1 Introduction This application
Technical Note NAND Flash 101: An Introduction to NAND Flash and HowtoDesignItIntoYourNextProduct
Introduction Technical Note NAND Flash 101: An Introduction to NAND Flash and HowtoDesignItIntoYourNextProduct Introduction This technical note discusses the basics of NAND Flash and demonstrates its power,
Module 2. Embedded Processors and Memory. Version 2 EE IIT, Kharagpur 1
Module 2 Embedded Processors and Memory Version 2 EE IIT, Kharagpur 1 Lesson 5 Memory-I Version 2 EE IIT, Kharagpur 2 Instructional Objectives After going through this lesson the student would Pre-Requisite
USBSPYDER08 Discovery Kit for Freescale MC9RS08KA, MC9S08QD and MC9S08QG Microcontrollers User s Manual
USBSPYDER08 Discovery Kit for Freescale MC9RS08KA, MC9S08QD and MC9S08QG Microcontrollers User s Manual Copyright 2007 SofTec Microsystems DC01197 We want your feedback! SofTec Microsystems is always on
E-LINK FOR ARM. E-Link User maunal 2011.06 1 / 46
E-Link User maunal 2011.06 1 / 46 Directory 1. E-Link ARM JTAG Introduction... 3 2. E-LINK Driver setup... 6 3. E-LINK Application... 9 3.1. KeilMDK... 9 3.2. ADS... 12 3.2.1 E-LINK on ARM11 (Tiny6410/Mini6410)...
Extending the swsusp Hibernation Framework to ARM. Russell Dill
Extending the swsusp Hibernation Framework to ARM Russell Dill 1 2 Introduction Russ Dill of Texas Instruments swsusp/hibernation on ARM Overview Challenges Implementation Remaining work Debugging swsusp
General Commands Reference Guide F
General Commands Reference Guide F TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... General Commands... General Commands Reference Guide F... 1 FDX... 8 Trace Methods 8 Trace Method
Ansur Test Executive. Users Manual
Ansur Test Executive Users Manual April 2008 2008 Fluke Corporation, All rights reserved. All product names are trademarks of their respective companies Table of Contents 1 Introducing Ansur... 4 1.1 About
Hardware and Software Requirements
C Compiler Real-Time OS Simulator Training Evaluation Boards Installing and Using the Keil Monitor-51 Application Note 152 May 31, 2000, Munich, Germany by Keil Support, Keil Elektronik GmbH [email protected]
NAND Flash Memories. Using Linux MTD compatible mode. on ELNEC Universal Device Programmers. (Quick Guide)
NAND Flash Memories Using Linux MTD compatible mode on ELNEC Universal Device Programmers (Quick Guide) Application Note April 2012 an_elnec_linux_mtd, version 1.04 Version 1.04/04.2012 Page 1 of 16 As
LatticeECP2/M S-Series Configuration Encryption Usage Guide
Configuration Encryption Usage Guide June 2013 Introduction Technical Note TN1109 All Lattice FPGAs provide configuration data read security, meaning that a fuse can be set so that when the device is read
TRACE32 Debugger Getting Started... ICD Tutorial... 1. About the Tutorial... 2
ICD Tutorial TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Debugger Getting Started... ICD Tutorial... 1 About the Tutorial... 2 Working with the Debugger... 3 Set up the Program Environment
NAND Flash Memories. Understanding NAND Flash Factory Pre-Programming. Schemes
NAND Flash Memories Understanding NAND Flash Factory Pre-Programming Schemes Application Note February 2009 an_elnec_nand_schemes, version 1.00 Version 1.00/02.2009 Page 1 of 20 NAND flash technology enables
SKP16C62P Tutorial 1 Software Development Process using HEW. Renesas Technology America Inc.
SKP16C62P Tutorial 1 Software Development Process using HEW Renesas Technology America Inc. 1 Overview The following tutorial is a brief introduction on how to develop and debug programs using HEW (Highperformance
8-Bit Flash Microcontroller for Smart Cards. AT89SCXXXXA Summary. Features. Description. Complete datasheet available under NDA
Features Compatible with MCS-51 products On-chip Flash Program Memory Endurance: 1,000 Write/Erase Cycles On-chip EEPROM Data Memory Endurance: 100,000 Write/Erase Cycles 512 x 8-bit RAM ISO 7816 I/O Port
Bootloader with AES Encryption
...the world's most energy friendly microcontrollers Bootloader with AES Encryption AN0060 - Application Note Introduction This application note describes the implementation of a bootloader capable of
MICROPROCESSOR. Exclusive for IACE Students www.iace.co.in iacehyd.blogspot.in Ph: 9700077455/422 Page 1
MICROPROCESSOR A microprocessor incorporates the functions of a computer s central processing unit (CPU) on a single Integrated (IC), or at most a few integrated circuit. It is a multipurpose, programmable
APPLICATION NOTE. AT07175: SAM-BA Bootloader for SAM D21. Atmel SAM D21. Introduction. Features
APPLICATION NOTE AT07175: SAM-BA Bootloader for SAM D21 Atmel SAM D21 Introduction Atmel SAM Boot Assistant (Atmel SAM-BA ) allows In-System Programming (ISP) from USB or UART host without any external
A Computer Glossary. For the New York Farm Viability Institute Computer Training Courses
A Computer Glossary For the New York Farm Viability Institute Computer Training Courses 2006 GLOSSARY This Glossary is primarily applicable to DOS- and Windows-based machines and applications. Address:
AN10860_1. Contact information. NXP Semiconductors. LPC313x NAND flash data and bad block management
Rev. 01 11 August 2009 Application note Document information Info Keywords Abstract Content LPC3130 LPC3131 LPC313x LPC313X LPC3153 LPC3154 LPC3141 LPC3142 LPC31XX LPC31xx Linux kernel Apex boot loader
An Introduction to MPLAB Integrated Development Environment
An Introduction to MPLAB Integrated Development Environment 2004 Microchip Technology Incorporated An introduction to MPLAB Integrated Development Environment Slide 1 This seminar is an introduction to
Memory Basics. SRAM/DRAM Basics
Memory Basics RAM: Random Access Memory historically defined as memory array with individual bit access refers to memory with both Read and Write capabilities ROM: Read Only Memory no capabilities for
Computer Systems Structure Main Memory Organization
Computer Systems Structure Main Memory Organization Peripherals Computer Central Processing Unit Main Memory Computer Systems Interconnection Communication lines Input Output Ward 1 Ward 2 Storage/Memory
Measuring Cache and Memory Latency and CPU to Memory Bandwidth
White Paper Joshua Ruggiero Computer Systems Engineer Intel Corporation Measuring Cache and Memory Latency and CPU to Memory Bandwidth For use with Intel Architecture December 2008 1 321074 Executive Summary
Eureka Technology. Understanding SD, SDIO and MMC Interface. by Eureka Technology Inc. May 26th, 2011. Copyright (C) All Rights Reserved
Understanding SD, SDIO and MMC Interface by Eureka Technology Inc. May 26th, 2011 Copyright (C) All Rights Reserved Copyright by Eureka Technology Inc. All Rights Reserved Introduction This white paper
We r e going to play Final (exam) Jeopardy! "Answers:" "Questions:" - 1 -
. (0 pts) We re going to play Final (exam) Jeopardy! Associate the following answers with the appropriate question. (You are given the "answers": Pick the "question" that goes best with each "answer".)
AN1819 APPLICATION NOTE Bad Block Management in Single Level Cell NAND Flash Memories
APPLICATION NOTE Bad Block Management in Single Level Cell NAND Flash Memories This Application Note explains how to recognize factory generated Bad Blocks, and to manage Bad Blocks that develop during
Memory unit. 2 k words. n bits per word
9- k address lines Read n data input lines Memory unit 2 k words n bits per word n data output lines 24 Pearson Education, Inc M Morris Mano & Charles R Kime 9-2 Memory address Binary Decimal Memory contents
ERserver. iseries. Work management
ERserver iseries Work management ERserver iseries Work management Copyright International Business Machines Corporation 1998, 2002. All rights reserved. US Government Users Restricted Rights Use, duplication
What Types of ECC Should Be Used on Flash Memory?
What Types of ECC Should Be Used on Flash Memory? Application 1. Abstract NOR Flash normally does not need ECC (Error-Correcting Code). On the other hand, NAND requires ECC to ensure data integrity. NAND
Reverse Engineering Flash Memory for Fun and Benefit Jeong Wook (Matt) Oh
Reverse Engineering Flash Memory for Fun and Benefit Jeong Wook (Matt) Oh [email protected] [email protected] HP NAND Flash technology Flash Technology was invented circa 1980 by a Japanese inventor, Dr.
Design of a High-speed and large-capacity NAND Flash storage system based on Fiber Acquisition
Design of a High-speed and large-capacity NAND Flash storage system based on Fiber Acquisition Qing Li, Shanqing Hu * School of Information and Electronic Beijing Institute of Technology Beijing, China
Linux flash file systems JFFS2 vs UBIFS
Linux flash file systems JFFS2 vs UBIFS Chris Simmonds 2net Limited Embedded Systems Conference UK. 2009 Copyright 2009, 2net Limited Overview Many embedded systems use raw flash chips JFFS2 has been the
Single 2.5V - 3.6V or 2.7V - 3.6V supply Atmel RapidS serial interface: 66MHz maximum clock frequency. SPI compatible modes 0 and 3
32Mb, 2.5V or 2.7V Atmel ataflash ATASHEET Features Single 2.5V - 3.6V or 2.7V - 3.6V supply Atmel RapidS serial interface: 66MHz maximum clock frequency SPI compatible modes 0 and 3 User configurable
GETTING STARTED WITH PROGRAMMABLE LOGIC DEVICES, THE 16V8 AND 20V8
GETTING STARTED WITH PROGRAMMABLE LOGIC DEVICES, THE 16V8 AND 20V8 Robert G. Brown All Rights Reserved August 25, 2000 Alta Engineering 58 Cedar Lane New Hartford, CT 06057-2905 (860) 489-8003 www.alta-engineering.com
GAUSS 9.0. Quick-Start Guide
GAUSS TM 9.0 Quick-Start Guide Information in this document is subject to change without notice and does not represent a commitment on the part of Aptech Systems, Inc. The software described in this document
SmartFusion csoc: Basic Bootloader and Field Upgrade envm Through IAP Interface
Application Note AC372 SmartFusion csoc: Basic Bootloader and Field Upgrade envm Through IAP Interface Table of Contents Introduction................................................ 1 Introduction to Field
OTi. Ours Technology Inc. OTi-6828 FLASH DISK CONTROLLER. Description. Features
Description The flash disk controller (OTi_6828) is a disk controller used to make a linear flash device array look likes a normal disk, hiding the flash related problems with erasing. The OTi_6828 is
Operating Systems. and Windows
Operating Systems and Windows What is an Operating System? The most important program that runs on your computer. It manages all other programs on the machine. Every PC has to have one to run other applications
Command Processor for MPSSE and MCU Host Bus Emulation Modes
Future Technology Devices International Ltd. Application Note AN_108 Command Processor for MPSSE and MCU Host Bus Emulation Modes Document Reference No.: FT_000109 Version 1.5 Issue Date: 2011-09-09 This
Handout 17. by Dr Sheikh Sharif Iqbal. Memory Unit and Read Only Memories
Handout 17 by Dr Sheikh Sharif Iqbal Memory Unit and Read Only Memories Objective: - To discuss different types of memories used in 80x86 systems for storing digital information. - To learn the electronic
Using WMI Scripts with BitDefender Client Security
Using WMI Scripts with BitDefender Client Security Whitepaper Copyright 2009 BitDefender; Table of Contents 1. Introduction... 3 2. Key Benefits... 4 3. Available WMI Script Templates... 5 4. Operation...
EMC NetWorker Module for Microsoft for Windows Bare Metal Recovery Solution
EMC NetWorker Module for Microsoft for Windows Bare Metal Recovery Solution Release 3.0 User Guide P/N 300-999-671 REV 02 Copyright 2007-2013 EMC Corporation. All rights reserved. Published in the USA.
Applications Development on the ARM Cortex -M0+ Free On-line Development Tools Presented by William Antunes
Applications Development on the ARM Cortex -M0+ Free On-line Development Tools Presented by William Antunes Agenda Cortex M0+ architecture Introduction to Kinetis L Freedom board Arrow Cloud Connect Internet
In order to upload a VM you need to have a VM image in one of the following formats:
What is VM Upload? 1. VM Upload allows you to import your own VM and add it to your environment running on CloudShare. This provides a convenient way to upload VMs and appliances which were already built.
A3 Computer Architecture
A3 Computer Architecture Engineering Science 3rd year A3 Lectures Prof David Murray [email protected] www.robots.ox.ac.uk/ dwm/courses/3co Michaelmas 2000 1 / 1 6. Stacks, Subroutines, and Memory
Digitale Signalverarbeitung mit FPGA (DSF) Soft Core Prozessor NIOS II Stand Mai 2007. Jens Onno Krah
(DSF) Soft Core Prozessor NIOS II Stand Mai 2007 Jens Onno Krah Cologne University of Applied Sciences www.fh-koeln.de [email protected] NIOS II 1 1 What is Nios II? Altera s Second Generation
Application Note: AN00141 xcore-xa - Application Development
Application Note: AN00141 xcore-xa - Application Development This application note shows how to create a simple example which targets the XMOS xcore-xa device and demonstrates how to build and run this
M85 OpenCPU Solution Presentation
M85 OpenCPU Solution Presentation 2013/09/22 Wireless Solutions Co., Ltd. All rights reserved OUTLINE OpenCPU Summary Advantages Software Architecture What s New? Open Resources Development Requirements
MICROPROCESSOR AND MICROCOMPUTER BASICS
Introduction MICROPROCESSOR AND MICROCOMPUTER BASICS At present there are many types and sizes of computers available. These computers are designed and constructed based on digital and Integrated Circuit
USER AND INSTALLATION MANUAL
Revision 1 - October 2013 User and installation manual O-link The manufacturer OWANDY reserves the right to make modifications to its products or to their specifications in order to improve the performance,
DsPIC HOW-TO GUIDE Creating & Debugging a Project in MPLAB
DsPIC HOW-TO GUIDE Creating & Debugging a Project in MPLAB Contents at a Glance 1. Introduction of MPLAB... 4 2. Development Tools... 5 3. Getting Started... 6 3.1. Create a Project... 8 3.2. Start MPLAB...
File System & Device Drive. Overview of Mass Storage Structure. Moving head Disk Mechanism. HDD Pictures 11/13/2014. CS341: Operating System
CS341: Operating System Lect 36: 1 st Nov 2014 Dr. A. Sahu Dept of Comp. Sc. & Engg. Indian Institute of Technology Guwahati File System & Device Drive Mass Storage Disk Structure Disk Arm Scheduling RAID
Using the Agilent 3070 Tester for In-System Programming in Altera CPLDs
Using the Agilent 3070 Tester for In-System Programming in Altera CPLDs AN-628-1.0 Application Note This application note describes how to use the Agilent 3070 test system to achieve faster programming
DESIGNING SECURE USB-BASED DONGLES
DESIGNING SECURE USB-BASED DONGLES By Dhanraj Rajput, Applications Engineer Senior, Cypress Semiconductor Corp. The many advantages of USB Flash drives have led to their widespread use for data storage
A N. O N Output/Input-output connection
Memory Types Two basic types: ROM: Read-only memory RAM: Read-Write memory Four commonly used memories: ROM Flash, EEPROM Static RAM (SRAM) Dynamic RAM (DRAM), SDRAM, RAMBUS, DDR RAM Generic pin configuration:
Choosing the Right NAND Flash Memory Technology
Choosing the Right NAND Flash Memory Technology A Basic Introduction to NAND Flash Offerings Dean Klein Vice President of System Memory Development Micron Technology, Inc. Executive Summary A 75% increase
Freescale Semiconductor, I
nc. Application Note 6/2002 8-Bit Software Development Kit By Jiri Ryba Introduction 8-Bit SDK Overview This application note describes the features and advantages of the 8-bit SDK (software development
Friendly ARM MINI2440 & Dalvik Virtual Machine with Android
e t International Journal on Emerging Technologies (Special Issue on NCRIET-2015) 6(2): 197-202(2015) ISSN No. (Print) : 0975-8364 ISSN No. (Online) : 2249-3255 Friendly ARM MINI2440 & Dalvik Virtual Machine
Computer Architecture
Computer Architecture Slide Sets WS 2013/2014 Prof. Dr. Uwe Brinkschulte M.Sc. Benjamin Betting Part 11 Memory Management Computer Architecture Part 11 page 1 of 44 Prof. Dr. Uwe Brinkschulte, M.Sc. Benjamin
Table 1 below is a complete list of MPTH commands with descriptions. Table 1 : MPTH Commands. Command Name Code Setting Value Description
MPTH: Commands Table 1 below is a complete list of MPTH commands with descriptions. Note: Commands are three bytes long, Command Start Byte (default is 128), Command Code, Setting value. Table 1 : MPTH
Robust Over-the-Air Firmware Updates Using Program Flash Memory Swap on Kinetis Microcontrollers
Freescale Semiconductor Document Number:AN4533 Application Note Robust Over-the-Air Firmware Updates Using Program Flash Memory Swap on Kinetis Microcontrollers by: Maclain Lobdell Automotive, Industrial,
How to Run the MQX RTOS on Various RAM Memories for i.mx 6SoloX
Freescale Semiconductor, Inc. Document Number: AN5127 Application Note Rev. 1, 05/2015 How to Run the MQX RTOS on Various RAM Memories for i.mx 6SoloX 1 Introduction This document describes how to customize
UM0853 User manual. 1 Introduction. M24LRxx application software user guide
User manual M24LRxx application software user guide 1 Introduction The purpose of this user manual is to teach how to use the M24LRxx tool kit with the M24LRxx_Application_Software. It describes the M24LRxx_Application_Software
With respect to the way of data access we can classify memories as:
Memory Classification With respect to the way of data access we can classify memories as: - random access memories (RAM), - sequentially accessible memory (SAM), - direct access memory (DAM), - contents
SARANGSoft WinBackup Business v2.5 Client Installation Guide
SARANGSoft WinBackup Business v2.5 Client Installation Guide (November, 2015) WinBackup Business Client is a part of WinBackup Business application. It runs in the background on every client computer that
W25Q80, W25Q16, W25Q32 8M-BIT, 16M-BIT AND 32M-BIT SERIAL FLASH MEMORY WITH DUAL AND QUAD SPI
8M-BIT, 16M-BIT AND 32M-BIT SERIAL FLASH MEMORY WITH DUAL AND QUAD SPI - 1 - Preliminary - Revision B Table of Contents 1. GENERAL DESCRIPTION... 5 2. FEATURES... 5 3. PIN CONFIGURATION SOIC 208-MIL...
10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition
10 STEPS TO YOUR FIRST QNX PROGRAM QUICKSTART GUIDE Second Edition QNX QUICKSTART GUIDE A guide to help you install and configure the QNX Momentics tools and the QNX Neutrino operating system, so you can
A+ Guide to Software: Managing, Maintaining, and Troubleshooting, 5e. Chapter 3 Installing Windows
: Managing, Maintaining, and Troubleshooting, 5e Chapter 3 Installing Windows Objectives How to plan a Windows installation How to install Windows Vista How to install Windows XP How to install Windows
IAR C-SPY Hardware Debugger Systems User Guide. for Renesas PC7501 Emulator and ROM-monitor
IAR C-SPY Hardware Debugger Systems User Guide for Renesas PC7501 Emulator and ROM-monitor COPYRIGHT NOTICE Copyright 1995-2006 IAR Systems. All rights reserved. No part of this document may be reproduced
SP8 Programmers 硕 飞 科 技. User's Guide. TEL: 0755-8486 7757 FAX: 0755-8486 7941 WEB: www.sofi-tech.com
硕 飞 科 技 SP8 Programmers User's Guide SHENZHEN SOFI TECHNOLOGY CO.,LTD. TEL: 0755-8486 7757 FAX: 0755-8486 7941 WEB: www.sofi-tech.com Publication Release Date: August 2011 Revision A1 Contents Chapter
IMPORTANT PRODUCT INFORMATION
January 2010 IMPORTANT PRODUCT INFORMATION READ THIS INFORMATION FIRST Product: Max-ON Hot-Backup Redundancy Software, Release 2.05 Introduction Max-ON is a trademark of GE Intelligent Platforms, Inc.
i.mx USB loader A white paper by Tristan Lelong
i.mx USB loader A white paper by Tristan Lelong Introduction This document aims to explain the serial downloader feature of i.mx SoCs on Linux (available across i.mx family starting with i.mx23). This
Connecting AMD Flash Memory to a System Address Bus
Connecting AMD Memory to a System Address Bus Application Note This document is intended to clarify how memories may be connected to a system address bus and how software should issue device commands to
Using Xilinx CPLDs to Interface to a NAND Flash Memory Device
Application Note: Coolunner CPLD XAPP354 (v1.1) September 30, 2002 Using Xilinx CPLDs to Interface to a NAND Flash Memory Device Summary This application note describes the use of a Xilinx Coolunner CPLD
13 Managing Devices. Your computer is an assembly of many components from different manufacturers. LESSON OBJECTIVES
LESSON 13 Managing Devices OBJECTIVES After completing this lesson, you will be able to: 1. Open System Properties. 2. Use Device Manager. 3. Understand hardware profiles. 4. Set performance options. Estimated
Nasir Memon Polytechnic Institute of NYU
Nasir Memon Polytechnic Institute of NYU SSD Drive Technology Overview SSD Drive Components NAND FLASH Microcontroller SSD Drive Forensics Challenges Overview SSD s are fairly new to the market Whereas
Ride7 for ARM. RAISONANCE Tools for the STRx and STM32 families. Overview and Getting Started
Ride7 for ARM RAISONANCE Tools for the STRx and STM32 families Overview and Getting Started July 2007 Table of Contents 1. INTRODUCTION 4 1.1 RAISONANCE tools for the ARM family 6 1.2 Third party tools
PC Base Adapter Daughter Card UART GPIO. Figure 1. ToolStick Development Platform Block Diagram
TOOLSTICK VIRTUAL TOOLS USER S GUIDE RELEVANT DEVICES 1. Introduction The ToolStick development platform consists of a ToolStick Base Adapter and a ToolStick Daughter card. The ToolStick Virtual Tools
HT1632C 32 8 &24 16 LED Driver
328 &216 LED Driver Features Operating voltage: 2.V~5.5V Multiple LED display 32 ROW /8 COM and 2 ROW & 16 COM Integrated display RAM select 32 ROW & 8 COM for 6 display RAM, or select 2 ROW & 16 COM for
Lab 1 Course Guideline and Review
Lab 1 Course Guideline and Review Overview Welcome to ECE 3567 Introduction to Microcontroller Lab. In this lab we are going to experimentally explore various useful peripherals of a modern microcontroller
PUBLIC Model Manager User Guide
SAP Predictive Analytics 2.4 2015-11-23 PUBLIC Content 1 Introduction....4 2 Concepts....5 2.1 Roles....5 2.2 Rights....6 2.3 Schedules....7 2.4 Tasks.... 7 3....8 3.1 My Model Manager....8 Overview....
User's Guide. Using RFDBManager. For 433 MHz / 2.4 GHz RF. Version 1.23.01
User's Guide Using RFDBManager For 433 MHz / 2.4 GHz RF Version 1.23.01 Copyright Notice Copyright 2005 Syntech Information Company Limited. All rights reserved The software contains proprietary information
8051 hardware summary
8051 hardware summary 8051 block diagram 8051 pinouts + 5V ports port 0 port 1 port 2 port 3 : dual-purpose (general-purpose, external memory address and data) : dedicated (interfacing to external devices)
ES_LPC4357/53/37/33. Errata sheet LPC4357/53/37/33. Document information
Rev. 1.1 8 August 2012 Errata sheet Document information Info Keywords Abstract Content LPC4357FET256; LPC4357FET180; LPC4357FBD208; LPC4353FET256; LPC4353FET180; LPC4353FBD208; LPC4337FET256; LPC4337FET180;
Industrial Flash Storage Trends in Software and Security
January 22, 2013 Industrial Flash Storage Trends in Software and Security Many flash storage devices in embedded applications are used to save data but also function as disks for the OS. Most users are
Machine Architecture and Number Systems. Major Computer Components. Schematic Diagram of a Computer. The CPU. The Bus. Main Memory.
1 Topics Machine Architecture and Number Systems Major Computer Components Bits, Bytes, and Words The Decimal Number System The Binary Number System Converting from Decimal to Binary Major Computer Components
Embedded Operating Systems in a Point of Sale Environment. White Paper
Embedded Operating Systems in a Point of Sale Environment White Paper December 2008 Contents Embedded Operating Systems in a POS Environment... 3 Overview... 3 POS Operating Systems... 3 Operating Systems
Embedded Display Module EDM6070
Embedded Display Module EDM6070 Atmel AT91SAM9X35 Based Single Board Computer BY Product Overview Version 1.0 Dated: 3 rd Dec 2013 Table of Contents Product Overview... 2 Introduction... 2 Kit Contents...
Virtual CD v10. Network Management Server Manual. H+H Software GmbH
Virtual CD v10 Network Management Server Manual H+H Software GmbH Table of Contents Table of Contents Introduction 1 Legal Notices... 2 What Virtual CD NMS can do for you... 3 New Features in Virtual
