UFPI Programmer Manual
UFPI Programmer Manual
UFPI Programmer Manual
User Manual
24.05.21 REVISION
Оглавление
INTRODUCTION...................................................................................................................................................5
1 Download and install..........................................................................................................................................6
1.1 Software DOWNLOADING......................................................................................................................6
1.2 DRIVER INSTALLATION........................................................................................................................8
2 Description of tabs and menus.........................................................................................................................10
2.1 Main screen (tab)......................................................................................................................................10
2.2 TOOLBAR................................................................................................................................................13
2.3 MAIN MENU...........................................................................................................................................16
2.4 LOG..........................................................................................................................................................19
3 Program SETTINGS........................................................................................................................................20
3.1 UFPI tab....................................................................................................................................................21
3.2 GUI tab.....................................................................................................................................................24
3.3 MEDIA.....................................................................................................................................................25
3.4 BUTTONS................................................................................................................................................26
3.5 MODULES...............................................................................................................................................28
3.5.1 NAND...............................................................................................................................................29
3.5.2 OneNAND........................................................................................................................................32
3.5.3 Serial NAND.....................................................................................................................................34
3.5.4 NOR..................................................................................................................................................35
3.5.5 SDMMC............................................................................................................................................36
3.5.6 SPI.....................................................................................................................................................38
3.5.7 EEPROM..........................................................................................................................................39
4 MODULES.......................................................................................................................................................40
4.1 LOGGER..................................................................................................................................................41
4.2 NAND.......................................................................................................................................................43
4.2.1 Options. Select CE (chip)..................................................................................................................43
4.2.2 ACCESS CYCLE..............................................................................................................................44
4.2.3 «READ IN» и «WRITE FROM».....................................................................................................44
4.2.4 MODEL............................................................................................................................................45
4.2.5 MODE (access).................................................................................................................................45
4.2.6 BAD BLOCKS (BB)........................................................................................................................45
4.2.7 ECC...................................................................................................................................................46
4.2.8 Bad block list management buttons..................................................................................................47
4.2.9 Miscellaneous /Additional features. (some of them s appear after ID reading)...............................47
4.2.10 Application. Bad Blocks (BB)........................................................................................................50
4.2.11 Application. Bad Block Table (BBT)..............................................................................................56
4.2.12 Application. ECC............................................................................................................................59
4.2.13 Application. Dump analysis. Dump preparation. Creating a "clean" dump...................................61
4.2.14 Application. Dump analysis when reading ID and writing of "clean" dump with control "Use
reserved area."..............................................................................................................................................62
4.2.15 Description in the log during operation..........................................................................................64
4.3 SD/eMMC.................................................................................................................................................65
4.3.1 Options..............................................................................................................................................66
4.3.2 «Read IN» и «Write FROM»............................................................................................................66
4.3.3 MODE...............................................................................................................................................66
4.3.4 MODEL............................................................................................................................................66
4.3.5 Partition.............................................................................................................................................66
4.3.6 4-bit mode / 1-bit mode.....................................................................................................................67
INTRODUCTION.
This guide is intended to familiarize you with the basics and demonstration of the UFPI hardware and
software system. For experienced users, it may also be useful to read the FAQ section of the manual.
UFPI (Universal Flash Programming Interface) - it is a USB powered device based on a modern protected
200 MHz dual-core processor with High-Speed USB Phy (480 Mbps). The main purpose of this interface and
software is to program Flash or EEPROM memory and work with basic serial protocols such as JTAG, SPI,
I2C, NAND, eMMC, SD, 1W, and so on. The main purposes are maximum speed, simplicity of the interface
and maximum number of opportunities for the user. A script language with C-like syntax and direct access to
the software, OS, and hardware functions of the UFPI unit allows the user to create (if necessary) their own
full-featured script applets without using the IDE, compilers, and other programming equipment. The ability to
use external configuration files for the IS allows you to use any necessary parameters, commands and
frequency, as well as create any necessary configuration even for "unsupported" chips.
MAIN Features
Very fast speed. For example, works with NAND faster than the "fastest" ChipProg-481.
Windows drivers are not needed. Plug-and-Play for Win10 and Win8 (WCID device).
Power from USB with allowed USB VID and PID.
Bidirectional I/O with voltage levels from 1 V to 5 V
Plug-and-Play sockets. The software automatically selects the appropriate mode and voltage when
connected.
Secure and reliable Box updates. Mirror update with AES256.
Support of user chip parameters - geometry, voltages, access time, etc.
Comfortable licensing system. You can use the modules you need.
Powerful C-like scripting language.
Multilingual user interface.
Use multi-part data containers with user-defined compression and encryption.
Functions of FS partitions mounting.
Supports common ECC partition tables and algorithms.
Built-in hexadecimal editor.
Fixed modes for connected sockets.
System requirements
- Any desktop or laptop with x86/x64 1 GB RAM (recommended 2 GB or more)
- Windows XP/Vista/7/8/10 operating system (and also Linux_x64 and MacOS_x64)
- USB 2.0 High Speed Port (480 Mbps)
Linux.
To install on Linux, start the terminal with the command sudo ./ufpi.run and start the menu "Interface -
Install."
USB voltage.
Installed voltage.
To set the mode, you need to tick the box corresponding to the channel and press the "Fix" button.
Emulation Modes.
It is possible to emulate CMSIS DAP. To do this, select the appropriate item in the JTAG menu and press the
"Fix" button. When a JTAG socket is inserted, a CMSIS DAP device appears in Device Manager. In this case,
the program will no longer determine the programmer. To disable emulation in this case, it is enough to
connect the programmer without a socket.
Shedule update.
Update mode.
Highly discouraged for untrained users. Anyone who needs to work, not experiment, is not encouraged to tix
the box. This box is empty by default.
2.2 TOOLBAR.
Reading ID and chip initialization button. Usually, this button always starts working with the chip, receiving
information about it, as well as setting the parameters of the program and programmer.
Chip Memory Read Button. Read to file or buffer, depending on your configuration.
Writes the chip from a file for writing or from a buffer, depending on the configuration.
Compares the chip contents with the write file or buffer, depending on the configuration.
Enable/disable power supply of socket and power settings. Description in the relevant chapter.
File Manager. Mount partitions, file systems, and work with their contents. Description in the relevant
chapter.
IN ORDER:
File.
Interface.
Install License - When you purchase a module license, you must select the file you received by mail to
activate it from this menu.
Firmware update (Emergency) - Very frequent question, procedure description.
Install/Uninstall - Hint or install/uninstall the software on the OS.
Miscellaneous - Contains a UFPI Self-Test.
Buffer.
Edit Buffer - Duplicates the button on the toolbar. Description in the relevant chapter.
Load/Save to File and from File - Accordingly opens the file selection dialog and loads from file to buffer, or
saves the contents of the buffer to file.
Save ULOG - Saves the result of writing LOGGER to a buffer in ULOG format.
Download/Save To/From Read/Write File - Matches the name of the item in the application of files specified
in the Read To and Write From fields on the module tab.
Read/write to/from buffer mode - Read/write flash to buffer mode. At the same time, the fields for the
corresponding item "Read to" and "Write from" become inactive.
Read/Write to Buffer - Activates/deactivates both previous items at once.
Settings.
Interface language
Util.
Dump Analysis - NAND dump preparation tool for recording. Contains adjustment settings. Contains ECC
Help.
Program information and help file.
2.4 LOG.
The log displays information about all transactions that occur. You can select and copy text from the log to
the clipboard.
You can select and copy text from the log to the clipboard.
The default is Auto Select. Auto-scroll works in this mode if the scroll bar is lowered to the lowest position
and there are no other selected fragments in the log.
The “Always On” and “Off” modes match the names.
3 Program SETTINGS.
All settings are saved to the folder next to the program in the ufpi.ini file
To reset the settings, you can either delete the file and then automatically create it with the default settings
the next time you start, or there is a “Restore Defaults” button at the bottom left of the Settings window that
will set the default flags on the current tab.
By items:
3.3 MEDIA.
Use this tab to set and check the selected sound effects for “task is complete”.
For example, for Windows 7, you can select C :\Windows\Media\Savanna\Windows Ding.wav.
3.4 BUTTONS.
Select the type of action: script, process or image (opens in the built-in viewer, .jpg, .png, .gif, .bmp formats
are allowed).
3.5 MODULES.
The tab has settings for each module, which are moved through the combo box.
3.5.1 NAND.
SIZE.
Set the size of the first page when reading ID. The default value is 0x0 and the page size is based on the
actual flash page size. NAND pages are large enough and it is enough 0x100 - 0x200 size for evaluation.
Show in log more detailed information. The example in the picture compared with the previous one. (not set
by default).
3.5.2 OneNAND.
3.5.4 NOR.
3.5.5 SDMMC.
3.5.6 SPI.
3.5.7 EEPROM.
4 MODULES.
MODULES list:
1-Wire
EEPROM I2C
EEPROM SPI
EEPROM Microwire (3-Wire)
SPI Flash
UART
SD/eMMC
NOR
NAND
Serial NAND
OneNAND
BDM
JTAG
LOGGER
Mount File
Mount Chip
4.1 LOGGER.
SOCKET.
Works with socket 2045.
Features.
The socket has power supply and recording LEDs. It may also have a Vref/VCC logic level voltage switch.
Logger records the status of connected lines (up to 8 lines) in RAM, or a file (the volume is limited only to
free space on the medium where the save path is indicated) for analysis in the program (PulseView by Sigrok).
You can connect to the i2c exchange bus and learn the exchange protocol.
Number of lines.
Select the number of lines to write. The number of lines affects the write speed and volume of the resulting
file.
Sampling rate.
Buffer size.
Select buffer limit. After filling the allotted volume, the recording stops automatically. When writing to disk,
the option is ignored and does not restrict the file.
The most stable (when operating at high frequencies) capture in the computer RAM. This avoids possible
operating system and hard drive delays.
Trigger.
Sets the trigger (start of recording) to activity on any of the recorded channels.
4.2 NAND.
Sockets.
Works with sockets of various combinations. More specifically described in chapter.
Features.
The NAND module allows you to work with a x8/x16 flash to 4xCE with a voltage from 1 to 5 volts. UFPI
allows you to work with BB, ECC, ONFI, JESD, Partition table, etc.
Ability to work with scripts.
Able to add manual flash configurations.
Select a chip if there are several of them in the flash. In general, you do not need to touch it.
Software automatically determines how many chips on ID reading.
4.2.4 Model.
You do not need manually select the NAND model in UFPI, because the flash ID is automatically defined or
parameters from the database. But you can also choose manually.
A menu that specifies the definition parameters and the BB bypass algorithm. You can load these options
with a UDEV file or set them manually. After changing the settings, need to read the chip ID again.
Detection
Management.
BB processing method selection.
Either not used, either skipping with continuing writing to the next (table type is not important here), either
in the most correct way, using the reserved area. It is possible to use the reserve area if the bad block table was
correctly determined during dump analysis. For a normal skip or write, "as it is" must be set to "Not in Use."
Type table.
4.2.7 ECC.
Print BADs.
Displays information of the BB log in the current session.
Additional features
Analysis on ID reading.
Select an analysis object. You can select dump analysis (file selected for recording) and chip analysis (chip
content). After the analysis is complete, the program will check the geometry of the dump, ECC, the presence
of BB, BBT, partition table and configure the programmer to record the corresponding parameters. More.
BAD Blocks
Working with the BB list. You can save (to the .ubad file), restore (from the .ubad file), or mark bad blocks
by adding the necessary blocks, after a comma.
Sampling delay
Delay settings can be used when ISP connecting used, or a DIY-made adapter to compensate for long lines.
ONFI.
Enabled/Disabled (enabled by default). Some NANDs have a special ONFI memory region in which its
configuration is stored. UFPI can analyze these parameters and even if the chip is not in the programmer
database, can apply, or supplement the parameters from these factory configurations.
CRC check (Enabled by default). Some chips contain an ONFI filled out of the standard, or have errors in it,
or even an incorrect CRC for various reasons. In such cases, you can disable CRC checking or disable ONFI
access.
Log of BB.
Work begins by reading the ID and displaying the NAND BB list
NAND socket x8/x16, 4xCE, 3.30В
NAND ID ECD584725042 (ECD584725042ECD5), CE1 (*)
Manufacturer Samsung
Model name K9GAG08U0E
Bus and voltage x8 3.30V
Serial Access 30ns
Address Cycles 2/3 (Col/Row)
Page size 0x2000 (8192)
Spare size 0x1B4 (436)
Pages in Block 0x80 (128)
Block data size 0x100000 (1048576) 1 MiB
Block raw size 0x10DA00 (1104384) 1.05 MiB
Blocks count 0x81C (2076)
Bits per Cell 2 (MLC)
ECC Requirement 24/1024 (Bits/CW)
Dies per Chip 1
Chip (CE) count 1
Total data size 0x81C00000 2.03 GiB
Total raw size 0x88A7D800 2.13 GiB
NAND ECC correction MSTAR_P8K_SP436_CW8_S12L42 (no ECC errors in Page #0)
NAND BAD Blocks Table Samsung RFS (Block #0)
BAD blocks detection (Spare bytes #0 == 0x00) //detection method "First byte marker in spare" is 0x00
BAD blocks management Use Reserved Area
BAD blocks request...OK
BAD blocks count: 9 //the following blocks are listed by this criterion
Block 0x0001 (1) addr 0x00100000 (0x0010DA00) BAD Block
Block 0x0003 (3) addr 0x00300000 (0x00328E00) BAD Block
Block 0x0005 (5) addr 0x00500000 (0x00544200) BAD Block
Block 0x0007 (7) addr 0x00700000 (0x0075F600) BAD Block
Block 0x0009 (9) addr 0x00900000 (0x0097AA00) BAD Block
Block 0x000B (11) addr 0x00B00000 (0x00B95E00) BAD Block
Block 0x025E (606) addr 0x25E00000 (0x27E40C00) BAD Block
Block 0x07E4 (2020) addr 0x7E400000 (0x84F82800) BAD Block
Block 0x0819 (2073) addr 0x81900000 (0x88754A00) BAD Block
When reading the ID, a list of only those BBs that have been determined according to the put options and
markers is described in LOG. There are no universal ways to correctly define a marker, although standards
exist, but manufacturers do not always adhere to them. Most often Most often, this marker corresponds to the
first byte in spare, the first page of each block and is 0x00.
Have to know that block 0 is usually guaranteed by the chip manufacturer as reliable and cannot have a BB
marker. If, for some reason, block 0 is marked as "Bad Block" in the log, then the marker is not selected
correctly.
If the number of detected BBs in the log reaches 256 pieces, then the marker is not selected correctly.
If the number of detected BB in the log exceeds 20-30 pieces, then such a flash is most likely not suitable for
reliable operation. Since the spare area for replacing the BB is limited, although it all depends on the chip and
for example in K9GAG08U0E Samsung D5500 has:
NAND RBA 0x07FB-0x0785 (2043-1925), 0x77 (119) Blocks
Physical BB.
In the production of NAND in the factories, blocks are blocked for recording that cannot provide the
necessary reliability. Special-purpose blocks are also blocked, such as in SAMSUNG K9GAG08U0E 2073 the
block is blocked on all chips. Typically, a blocked block is simply filled with 00 and write is protected, but
also other filling may occur.
Logical BB.
Errors in NAND are almost always present and accumulate during work. Correction code is used to correct
them.
When the number of errors in the page approaches the ECC limit, the contents of the block are transferred
depending on the algorithm to a new place, an writes in the BB table, and a marker about its state is writes in
the block with errors. Such blocks can be erased. recorded (if a check mark is set ON in the options), but need
carefully checking their status before using.
Often, new chips (for example, K9GAG08U0E) comes from Aliexpress, having only 1-3 BB, after careful
inspection, have dozens of worn-out blocks, which should be labeled as "Bad blocks." These chips are not new,
just carefully erased by the seller with BB markers. Here is an example of verifying such chip after a week
after recording:
NAND socket x8/x16, 4xCE, 3.30В
NAND ID ECD584725042 (ECD584725042ECD5), CE1 (*)
Manufacturer Samsung
Model name K9GAG08U0E
Bus and voltage x8 3.30V
Serial Access 30ns
Address Cycles 2/3 (Col/Row)
Page size 0x2000 (8192)
Spare size 0x1B4 (436)
Pages in Block 0x80 (128)
NAND Partition #5, 'part-04-ID1F', Block 0x6BC (1724), count 0xC8 (200)
NAND Partition #5, addr 0x6BC00000 (0x717C1800), size 0x0C800000 (0x0D2A5000)
NAND Partition #6, 'UPCH', Block 0x7FD (2045), count 0x1 (1)
NAND Partition #6, addr 0x7FD00000 (0x869D7200), size 0x00100000 (0x0010DA00)
NAND Partition #7, 'LPCH', Block 0x7FE (2046), count 0x1 (1)
NAND Partition #7, addr 0x7FE00000 (0x86AE4C00), size 0x00100000 (0x0010DA00)
Loading IC BAD Blocks list...2 BAD Block(s)
Writing new BAD Blocks list...
NAND BAD Block 0x0714 (1812) replaced with 0x07FB (2043)
NAND BAD Block 0x0819 (2073) ignored
Encoding ECC in the patched pages...MSTAR_P8K_SP436_CW8_S12L42
BAD blocks management Use Reserved Area
****************2021.05.16 22:11:34:1134**********************
Data source File 'E:\temp\damp\Новая папка\SAMSUNG\D55xx\dados flash tv samsung un32d5500 k9gag08u0e -
ic1302\CLEAR\dados flash tv samsung un32d5500 k9gag08u0e - ic1302_fix_nobads.bin'...Normal
User task flags Async IO, ECC
Verifying NAND from 0x00000000, size 0x88A7D800...
Block 0x0002 (2) addr 0x00200000 (0x0021B400) 2 Bit error(s) in 1 page(s)!
Block 0x0003 (3) addr 0x00300000 (0x00328E00) 2 Bit error(s) in 1 page(s)!
Block 0x0004 (4) addr 0x00400000 (0x00436800) 3 Bit error(s) in 1 page(s)!
Block 0x0005 (5) addr 0x00500000 (0x00544200) 5 Bit error(s) in 4 page(s)!
Block 0x0006 (6) addr 0x00600000 (0x00651C00) ECC, 5 bit(s) corrected
Block 0x0007 (7) addr 0x00700000 (0x0075F600) 1 Bit error(s) in 1 page(s)!
Page 0x6C02 (27650), Block 0x00D8 (216) addr 0x0D804000 (0x0E383368) Uncorrectable ECC error!//unreliable
Block
Block 0x00D8 (216) addr 0x0D800000 (0x0E37F000) 4 Bit error(s) in 2 page(s)!
Block 0x00D9 (217) addr 0x0D900000 (0x0E48CA00) 4 Bit error(s) in 1 page(s)!
Block 0x00DA (218) addr 0x0DA00000 (0x0E59A400) 2 Bit error(s) in 1 page(s)!
Block 0x00DB (219) addr 0x0DB00000 (0x0E6A7E00) ECC, 1 bit(s) corrected
Block 0x00DB (219) addr 0x0DB00000 (0x0E6A7E00) 8 Bit error(s) in 5 page(s)!
Block 0x00DC (220) addr 0x0DC00000 (0x0E7B5800) 1 Bit error(s) in 1 page(s)!
Block 0x00DD (221) addr 0x0DD00000 (0x0E8C3200) 3 Bit error(s) in 1 page(s)!
Block 0x00DE (222) addr 0x0DE00000 (0x0E9D0C00) ECC, 3 bit(s) corrected
Page 0x6F90 (28560), Block 0x00DF (223) addr 0x0DF20000 (0x0EB00140) Uncorrectable ECC error!//unreliable
Block
Block 0x00DF (223) addr 0x0DF00000 (0x0EADE600) 1 Bit error(s) in 1 page(s)!
Block 0x00E0 (224) addr 0x0E000000 (0x0EBEC000) 1 Bit error(s) in 1 page(s)!
Block 0x01D6 (470) addr 0x1D600000 (0x1EF03C00) 1 Bit error(s) in 1 page(s)!
Block 0x01D8 (472) addr 0x1D800000 (0x1F11F000) 16 Bit error(s) in 8 page(s)!
Block 0x01D9 (473) addr 0x1D900000 (0x1F22CA00) 10 Bit error(s) in 7 page(s)!
Page 0xED0C (60684), Block 0x01DA (474) addr 0x1DA18000 (0x1F353870) Uncorrectable ECC error!//unreliable
Block
Block 0x01DA (474) addr 0x1DA00000 (0x1F33A400) 16 Bit error(s) in 11 page(s)!
Page 0xED92 (60818), Block 0x01DB (475) addr 0x1DB24000 (0x1F46DCA8) Uncorrectable ECC error!//unreliable
Block
Page 0xEDAC (60844), Block 0x01DB (475) addr 0x1DB58000 (0x1F4A48F0) Uncorrectable ECC error!//unreliable
Block
Block 0x01DB (475) addr 0x1DB00000 (0x1F447E00) ECC, 1 bit(s) corrected
...
Block 0x0214 (532) addr 0x21400000 (0x23050800) ECC, 4 bit(s) corrected
Block 0x0215 (533) addr 0x21500000 (0x2315E200) ECC, 1 bit(s) corrected
Block 0x0215 (533) addr 0x21500000 (0x2315E200) 3 Bit error(s) in 1 page(s)!
Block 0x0216 (534) addr 0x21600000 (0x2326BC00) ECC, 2 bit(s) corrected
Block 0x0216 (534) addr 0x21600000 (0x2326BC00) 2 Bit error(s) in 1 page(s)!
Purpose.
You cannot erase and work with faulty blocks. It takes a long time to determine the state by scanning the first
page of each block when accessing, so a bad block table is used. BB table is the dump place where the list of
bad blocks, their new locations and other service data is recorded. There are no universal ways to work with
BB tables. Although certain specifications exist, manufacturers are not required to comply with them.
Therefore, equipment manufacturers usually have their own view of the table and UFPI knows how to identify
and work with some of them.
BBT location.
The bad block table can be located at the beginning, at the end of the chip or at other fixed offsets. You can
specify the exact location of the selected table in the Bad Blocks definition settings.
BBT changes
Changing the BBT like any other data in the NAND requires further recalculation of the ECC of this page.
Using bypass, skip, transfer of bad blocks without entering into the BBT will not be able to work correctly in
the device. Based on the purpose and content of the Samsung D5500 table, it can be seen that each bad block
has a reassignment. Programmer's log:
flash tv samsung un32d5500 k9gag08u0e - ic1302_fix_nobads.bin' Analysis, size 0x88A7D800...
NAND Page 8192+436 (0x21B4), PIB 128, Block 0x10DA00 (1104384), 0x081C (2076) Blocks, IC geometry
NAND ECC correction MSTAR_P8K_SP436_CW8_S12L42
NAND BAD Blocks Table Samsung RFS, Block 0x07FD (2045)
NAND Partition Info Samsung RFS, Block 0x07FE (2046)
NAND LPCH Block 0x07FE (2046) at 0x86AE4C00
NAND LPCH TPCB 0x07FC (2044), Ages 1-1
NAND UPCH Block 0x07FD (2045) at 0x869D7200, 1 record(s) (Active)
NAND UPCH TPCB 0x07FC (2044), Ages 1-2, инфо 0x0000
NAND RBA 0x07FB-0x0785 (2043-1925), 0x77 (119) Blocks
NAND Partition #1, 'part-00-ID1B', Block 0x0 (0), count 0xD6 (214)
NAND Partition #1, addr 0x00000000 (0x00000000), size 0x0D600000 (0x0E163C00)
NAND Partition #2, 'part-01-ID1C', Block 0xD6 (214), count 0x100 (256)
NAND Partition #2, addr 0x0D600000 (0x0E163C00), size 0x10000000 (0x10DA0000)
NAND Partition #3, 'part-02-ID1D', Block 0x1D6 (470), count 0xD6 (214)
NAND Partition #3, addr 0x1D600000 (0x1EF03C00), size 0x0D600000 (0x0E163C00)
NAND Partition #4, 'part-03-ID1E', Block 0x2AC (684), count 0x410 (1040)
NAND Partition #4, addr 0x2AC00000 (0x2D067800), size 0x41000000 (0x4475A000)
NAND Partition #5, 'part-04-ID1F', Block 0x6BC (1724), count 0xC8 (200)
NAND Partition #5, addr 0x6BC00000 (0x717C1800), size 0x0C800000 (0x0D2A5000)
NAND Partition #6, 'UPCH', Block 0x7FD (2045), count 0x1 (1)
NAND Partition #6, addr 0x7FD00000 (0x869D7200), size 0x00100000 (0x0010DA00)
NAND Partition #7, 'LPCH', Block 0x7FE (2046), count 0x1 (1)
NAND Partition #7, addr 0x7FE00000 (0x86AE4C00), size 0x00100000 (0x0010DA00)
Loading IC BAD Blocks list...20 BAD Block(s)
Writing new BAD Blocks list...
NAND BAD Block 0x00D8 (216) replaced with 0x07FB (2043)
NAND BAD Block 0x00DF (223) replaced with 0x07FA (2042)
NAND BAD Block 0x01DA (474) replaced with 0x07F9 (2041)
NAND BAD Block 0x01DB (475) replaced with 0x07F8 (2040)
NAND BAD Block 0x02B1 (689) replaced with 0x07F7 (2039)
Therefore, no "Universal" bypasses and omissions implemented on other programmers will not solve the
problem. The programmer must be able to work with each table personally and based on it use the algorithm
for bad blocks bypassing .This need to know for everyone who posted topics about the "magic" bypass of the
BB on other programmers and offers options with skipping a bad block and writing data to the next block.
As an example of an RBA (Reserved Block Area) bypass, you can familiarize yourself with the application
Purpose.
ECC - (error-correcting code) Without going into the physical subtleties of error formation, this is just for
understanding that the number of errors increases over time, and the more erasure cycles the flash block, the
faster these errors can accumulate in it. NAND flash initially involves the use of a correction code. To maintain
the operation of NAND, Hamming, BCH, Reed-Solomon correction codes with various options and derived
from them using encryption and other standard and non-standard techniques are used. The full NAND page
size consists of page and spare. Usually page contains data, and spare code correction.
No changes, patches, BBT recalculations can be made without recalculating the ECC code.
No guarantees for the dump and its entry in the NAND (even if there is not a single BB in it) can be given
without ECC verification.
ECC Selection.
It is difficult or even impossible for a regular user to define ECC parameters and algorithm, so UFPI
simplified the task by entering an Autodetect of the algorithm. To do this, it is enough to insert chip (having the
desired dump) and read the ID when the Autodetect scheme is set. The name of the algorithm will be shown in
the log:
NAND ECC correction Autodetect MSTAR_P8K_SP436_CW8_S12L42 (no ECC errors in Page #0)
Alternatively, if you select a dump with a double click on the "Read To" or "Write From" field, select Check
or Correct ECC from the context menu..
So, you can check the file for correctness even before programming and installation chip into device.
NAND ECC correction MSTAR_P8K_SP436_CW8_S12L42 (Autodetect)
Проверка ECC в 'E:\temp\delete\111\NAND_Samsung_K9GAG08U0E_2021-05-16_23-20.bin'...
ECC checked in 36767 page(s), 228940 blank page(s) skipped, 7 blank codeword(s), 168 codeword(s) with blank
ECC
Detected 1 ECC Bit error(s), 1 in ECC data
Very often files from files uploads, marked "verified" or shared in forums, have uncorrectable errors. Files
with uncorrectable errors cannot guarantee proper operation.
Designation
To facilitate and visually perceive ECC schemes, names have been introduced that can be guided without
delving into the complexity of the algorithm. For example, a dump from Samsung D5500.
When reading ID, the algorithm is determined automatically:
NAND ECC correction Autodetect MSTAR_P8K_SP436_CW8_S12L42 (no ECC errors in Page #0)
MSTAR — manufacturer of the Mstar processor. You can find by the inscription on the processor or
description on the Internet.
P8K — page size 8192 bytes. You can see from the NAND or Log options when reading the ID in the
programmer.
SP436 is the size of spare 436 bytes. You can see from the NAND or log parameters when reading the ID in
the programmer.
S12 — is the number of bytes from the start of spare to the start of the correction code.
CW8 — The number of parts the page is divided into. The approximate illustration in the Micron
documentation looks like this:
Only in the dump from D5500 page 8192 bytes, spare 436 and divided into 8 parts. This can be clearly seen by
counting how many parts of the correction code for the full page in spare, separated from each other, with bytes
0xFF.
The remaining additions to the name of the algorithm for the user do not carry useful information.
In the «Mode» field, select «NAND with spare» and «Autodetect». In some cases, when the analysis cannot
automatically recognize, you must explicitly specify dimensions by selecting «User Geometry» or by setting
the desired flash, read the ID, and select «IC Geometry».
In the Dump field, select the dump to correct.
Fields "Page", "Spare", "PIB" need to fill, if as mentioned earlier, auto-determination did not recognize the
NAND geometry by dump. Here you need to fit the page size, spare and the number of pages in the block. The
Block field automatically counts the size of the block. If the required chip is installed in the programmer and
the ID is previously read, you can click the "Use current" button and the fields will be filled with the current
(from this chip) page size, spare and their number.
The Bad Blocks field is used to generate user BB in the dump to be prepared and is used when the "Write
user BAD blocks" check box is set ON. It can be useful in preparing an individual dump for a specific chips
instance for recording without the functions of bypassing the BB. The "Use current" button is automatically
filled in current BB list that was received while reading ID. These parameters are not needed to create a clean
dump for further recording with BB control in UFPI,
"Show Partition info" and "Load and Use Partitions" check boxes uses to analyze the layout of partitions and
put them in the «Partitions» RW Mode.
If you select the "Extract partitions" check box, the analysis will create separate dump section files in the
dump folder.
The "Correct ECC in Partitions only" check box is necessary when using different ECC schemes in different
partitions of the same dump. This check box automatically determines ECC on each partition individually.
A demonstration of the application can be found in the supplementary appendix.
Additional options.
Enable "«А Dump Analysis when Reading ID» in "Add. Options.
For normal conditions and chips, set "Asynchronous" and "Do not write empty data." ON.
ECC setup.
For normal NAND, you must select a scheme with Autodetect.
Ffile.
Select «clean" dump. If you select a dump containing a BB in the log, the analysis will receive a
corresponding error.
Write, Verify.
If uncorrectable errors are found during the verification process, repeat the software configuration process
with additional bad blocks and record, verify again.
Verification can be carried out after an unlimited time. To do this, perform the items, except for erasing and
recording chip.
A demonstration of the application can be found in the supplementary appendix.
4.3 SD/eMMC.
Sockets.
A large quantity of sockets for eMMC is listed in the application. application.
Features.
- Fastest among famous competitors. Speed is limited only by the properties of the chip type, the connection
and the USB port of the computer.
- It allows in most cases to work successfully in ISP mode with fast speed.
- Does not require a chip model. The model and parameters are automatically defined.
- Advanced options with partitions and boot options, as well as the ability to use configurations for backups of
platforms and partitions and much more. It is advisable to familiarize yourself with the main provisions in the
JEDEC specification.
- Expansion of functionality using scripts.
- Operation of 1-4-8 bit mode, as well as synchronously, with blocks with integrity control and repeated re-
reading in case of errors, allows you to subtract problem chips.
- EMMC need not to be ERASED.
4.3.1 Options.
4.3.3 RW Mode.
Described in another chapter with samples.
4.3.4 Model.
NEED NOT.
4.3.5 Partition.
Selection partition: USER/RPMB/BOOT1/BOOT1/GPP1-4.
177, 179) from the eCSD register At the top, select options from the drop-down menus, and at the bottom
based on the bit configuration, a byte is immediately compiled. It also works vice versa, by inscribing a byte
and clicking "Apply" you can see the decryption by items from above. Click OK to write the values to the
appropriate registers.
Separately issued on RST_N [162] bytes. As a fuse, the check box is cleared and a warning is signed that the
parameter "OTP" (that is, this usually means write once without the ability to change it back).
All these bytes can be written to the menu individually «Add.features»
[LC_LD_LE42B_42G]
Name=LC_LD_LE42B_42G
act1=0x3F00000:0x80000:USER:sestore
act2=0x3F80000:0x80000:USER:sedata
[Philips]
model1=QV14
model2=QV15
model3=TPM14
model4=TPM15
model5=QM16
[QV14]
Name=QV14
…
Each module will use .pbi with specific names of type tv.mmc.pbi, sat.nand.pbi, etc.
There can be multiple .pbi files with the same extension for one module of type tv.mmc.pbi, sat.mmc.pbi.
After pressing the "?" button and reading the ID, the "Platform Backup" menu button becomes available.
.mmc.pbi files are used for eMMC.
For SD cards, .sdc.pbi files are used.
Analysis on ID.
Selects an object to search for the partition table. You can assign "eMMC" or "Dump" separately, or a
combination by selecting the priority "Dump, eMMC." If a .UDEV description file is opened, the list of
spartitions from UDEV is loaded. Otherwise, the program will try to analyze markup with its own algorithms.
Extended CSD.
Write a single byte to the register, or the entire eCSD file.
When reading the ID in the log, some bytes of eCSD are described and signed. The number of the byte in the
register is specified in square brackets. Next, its meaning and decryption. When writing a byte, it is sufficient
to specify its number and value. Example:
Boot Config [179] 0x00 (No Boot, access to USER)
Each time you read an ID, files are created in the ufpi\Logs\eMMC folder, including the full eCSD. They are
signed with chips number and date/time of creation. When writing a full file, you can select it, edit it in hex
editor if necessary.
It is important to remember that not all registers are eCSD writable and not all registers are recoverable.
Different manufacturers have different reserved registers, which cannot be changed without consequences.
Please read the JEDEC specifications carefully.
Basic bytes can be configured in the calculator CONFIG CALCULATOR.
Samsung features.
A great choice of features are available primarily for Samsung eMMC revisions up to v5.0. Collected in one
place.
«Write CID» and «Write CID #2» — writes a custom CID value, even from another eMMC manufacturer..
«Write CSD» — writes a custom CSD value.
"Remove Write Protection" - Remove write protection that is set to CSD and eCSD and is displayed in the
log when reading ID:
Permanent Write Protect
or
Boot Write Protection 0x0A (BOOT1_PERM BOOT2_PERM)
or
User Write Protection 0x10 (US_PERM_WP_DIS)
"Formatting" - Clears the contents of partitions and registers to factory status.
"Firmware Read" and "Firmware Write" are special commands for reading and writing internal FW eMMC.
The "Read To" and "Write From" fields must be filled with the appropriate read/write files. The firmware file
read by extraneous programmers may be incompatible, or need to be corrected. The firmware operation of the
internal FW in the eMMC does not guarantee the correct further operation of the chip.
Hynix features.
"Clear Lifetimer (v5.1)" - Experimental function to reset the operating time counter «LifeTimer». Made just
to extend the life of devices for which it is critical. Works on eMMC Hynix revision v5.1. Besides dumping of
LifeTimer, writes down "partitionss Are Complete" value in byte [155] of eCSD.
Read mode.
"Auto" - Optimal mode for reading good flashes in the socket at high speed. It's the default.
"Single blocks" - reading occurs sequentially on one block with check of integrity of the received block
CMD17 (READ_SINGLE_BLOCK). The default block size is specified in the CSD register. Suitable for
working with faulty chips, where monitoring and re-reading of problem blocks is required. The speed of this
mode is the lowest.
"Multiple Blocks (Open )"-read multiple blocks using the CMD18 (READ_MULTIPLE_BLOCK) command
and is interrupted by the stop command.
"Multiple Blocks (Count)" - read multiple blocks using the CMD18 (READ_MULTIPLE_BLOCK)
command and stops. The counter is set by the CMD23 (SET_BLOCK_COUNT) command.
"Multiple Blocks (One request)" - read with CMD18 (READ_MULTIPLE_BLOCK) without stopping until
the end of the specified region.
"Ignore Read Errors" - Do not stop with read errors, read from the next block. This option can be useful
when reading faulty chips.
Write mode.
"Auto" - Optimal mode for recording good chips in the block at high speed. It's the default.
"Single blocks" - similar to reading.
"Multiple Blocks (Open)" - similar to reading.
"Multiple Blocks (Count)" - similar to reading.
"Multiple Blocks (Single Query)" - similar to reading.
"4-bit mode at VCCQ = 1V8" - during recording, sets the mode to 4 bits if VCCQ 1,8V. It is recommended
that you use this option for a stable and predictable result.
Erase mode.
«Auto» select is the default. eMMC erasure.
Timing mode.
"Auto" Select - Optimal mode. Set by default.
"Legacy 26 MHz" - compatibility mode with obsolete MMC cards.
"High speed 26 MHz" - high-speed mode (HS52), with a set frequency of 26 MHz.
"High speed 52 MHz" - high-speed mode (HS52) with a set frequency of 52MHz. This mode is set by
default as the most stable and suitable for most cases.
"High speed 200MHz" - High-speed mode (HS200) up to 200MHz. In practice, above 90MHz, stable work
in common BGA sockets is difficult to achieve.
"Sampling Delay" and "Drive Delay" - parameters can be useful for matching lines when operating at a high
frequency. To use, it is enough to set the maximum value, if the errors are missing, to lower the stable value.
Partitioning.
BOOT/ RPMB / GPP. - some eMMC, in particular Samsung before revision 5.0 support the partition markup
function BOOT, RPMB, GPP. To modify, enter a dimension (kB/MB) and an integer value.
RPMB.
"Authentication" - enter the key for further operation and recording in RPMB.
Write Authentication Key - Set the authentication key only if it has not previously been written. This is
according to specification 32 a byte key in HEX form (i.e. 0x....). Before using, you should understand if this
action is necessary. The operation for most chips is irreversible.
Disabled - Disable RPMB status and polling when reading ID. According to users, there were faulty Toshiba
eMMC, which, after polling RPMB status, ceased to read until the next reboot.
Password.
Unlock - Requires a password (in ASCII format) to start a locked chip session. For example, in the log, such
a chip will be:
eMMC ID 1501003030585056300304051227C0CF, DAT0 Locked!
"Lock" - End the session with the blocked chips.
"Clear" - Allows you to clear a known password.
"Set" - Set the password to block the chip.
"Erase" - Erases the password and clears the contents of the chip. This operation does not require a
password.
"Brutforce" - automatic password selection. You can specify length, symbols, and stop and continue to
search.
Power Cycle
Full power-off cycle, delay, and reinitialization and read ID.
Async IO.
similar to other modules. It is important to remember that it is not possible to read and ignore errors in
asynchronous mode.
Pin Test
Similar to other modules.
Contains various information about the memory card (from the size of the sector of the memory card to
consumption in read/write mode). 16 bytes long.
Important areas in CSD are 12 and 13 bits: the value of this register.
PERM_WRITE_PROTECT -Permanent write/erase protection.
TMP_WRITE_PROTECT - Write/erase protection prior to card reboot.
If the permanent protection check box of the working device is set ON, it will turn on and work, but all
changes will be reset after the next reboot. Some such chips can cure formatting, or firmware internal FW, but
their reliability will still remain in doubt.
So the normal response of the current running eMMC is OCR 0xC0FF8080 (3V3/1V8), that is, the last [31]
bit is set to 1 if the card activation procedure is completed successfully.
BOOT1, BOOT2.
These sections are also always present on the chip, even if they are not used and empty. Typically, the size is
4MB. Designed usually to accommodate the boot area. UFPI supports these sections and they are described in
the specification. Allows you to write, read data and set the size (if provided by the manufacturer).
GPP1 – GPP4.
General purpose partitions. By default, they are not enabled in the manufacturer, but the user can activate
them. Their number and size are set by the user and can be from 1 to 4. UFPI supports these partitions and they
described in the specification. Allows you to write, read data, and set quantity and size (if required by the
manufacturer).
USER.
The main user-defined partition that can contain the loader, partition table, partitions, and other data. Its
capacity is the total volume minus the capacity occupied by the previous partitions.
When trying to power the mainboard by the programmer, the currents are hundreds of mA, it should be
borne in mind that the usb cable, and the port should be of good quality.
If the board is powered by an external source rather than a programmer, set the VCCQ power switch on the
adapter to the position corresponding to the voltage applied to the mainboard. You cannot combine the VCCQ
of the programmer and the mainboard at the same time.
For such work, it is more convenient to disable the «Read ID» after socket connection" settings and control
power supply through the. power button.
If you have not described socket or when using the layout board, you need to familiarize yourself with the
diagram and note that the VCC of the eMMC programmer is connected to the VCCQ.
4.4 NOR.
Sockets.
Works with sockets 2046 or 2060.
Features.
- • The chip parameters are determined automatically, provided that they are properly connected. Chip
selection in this module is not active.
- • For the most correct operation, UFPI represents the address space of regions, sectors with individual
dimensions.
- Supports CFI and manual settings.
- Ability to work with scripts.
Erasure.
Either the < X > button or the Chip Erase button. In the first case, it is erased by sectors, it is necessary when
working with parts/sectors/sections. In the second, the entire chip is erased with one command.
RW Mode.
The same as with other chips working with chips regions.
Additional features/Miscellaneous.
4.5 1-Wire.
Sockets.
Works with sockets 2046 or 2060.
Features.
- This module does not have standard read/write and other functions. It wotks through scripts. The forum has
ready to use scripts, descriptions and discussions for them.
- Connected to GND and SDA pins (1W IO). pinout.
Sockets.
With sockets 2046 or 2060.
Features.
- In addition to the usual read/write functions, it has a unique method for automatically determining the size of
EEPROM 24cXX by pressing the ID read button <? >.
- • 24cXX chips do not require erasure before writing, the erase button in this module writes 0xFF to the entire
volume of the chip.
- • Frequency and address for normal 24sXX are determined automatically and do not require changes.
- • Ability to work with individual regions of the chip through RW Mode.
- Ability to work with scripts Chip regions sets by RW Mode.
Address.
In this module is possible to set the arbitrary address of the chip bus. To do this, in the "Address" field, enter
a known or received in the log address when scanning and click Install. To scan the addresses, click on the
"Scan" button, the log will show the addresses to which the answer was received.
Sockets.
Works with sockets 2046 or 2060.
Features.
- Designed to work with old 25XXX/95XXX chips. These chips do not have an auto-detection function and
you must select a model from the list before working with them.
- Operation is similar to the usual 24сХХ EEPROM.
Sockets.
Works with sockets 2046 or 2060.
Features.
- Work the same as with 24сХХ EEPROM
- 93cXX in addition to voltage and discharge, it can be distinguished by pinout. This should be paid special
attention., check when connect.
Sockets.
Works with sockets 2046 or 2060.
Features.
- The module is versatile and does not require the presence of a chip model in the base. For unknown chips,
the settings from ID/SFDP/CFI are generally applied automatically. This is usually always enough to
read/unlock/erase and write.
- You can configure manually with button «+».
- Allowed working with scripts.
ID reading.
If the read ID matches several different chips, a selection window is displayed to refine the desired model.
Select the desired one and click OK. If you want to read the same or the same chip ID multiple times during
operation, you can check "Apply to current ID." Then each reading of the ID will apply the selected model and
there will be no prompts until the ID is changed (for example, when installing another chip), the program is
restarted, or you select "Add. User Model Cleanup» Features
When determining chip by priority, the parameters "configuration file" - "internal base" - "SFDP" - "ID size
based on JEDEC standards" are used. If the chips ID is not present in the configuration files or database, the ID
log is highlighted in yellow colour
Options:
Frequency set - Values are displayed in the log when reading the "CMD frequency 50/100/100/100 MHz
(Slow/Fast/Dual/Quad)" ID. Low/Medium/Maximum/ISP options.
Read mode - Slow/Fast/Dual/Quad. Corresponds to Normal/Fast and Dual/Quad reading modes (some
modes may not be supported by flash) according to the chip specification.
Chip Erase - Erase a chip with one command, if it is supported. If you erase using the X button, it will take
longer for the entire chip. But it is divided based on compatibility with individual chip blocks.
Unprotect.
The button sends the unlock command, or sets the status registers that prohibit writing to 0. I.e. The
recording ban is removed.
Need to know that in some chips these status registers are protected from zeroing and the recorded lock is no
longer removed.
You need to know that some old SPI flash have lock registers that are restored if you remove power from the
chip. In this case, you need to turn the power on «Always ON».
ACESS MODE.
Module work is the same as in others.
MODEL.
Manual select. AUTO is working by default.
The values are set either by setting the check boxes or by entering a hexadecimal value (do not forget to
click the "Apply" button).
All registers in the log (when reading the ID, if detailed output of information is included) and in the
installation window are signed according to the documentation for the chip.
When you click the Record button, the recorded status is recorded and reconciled. If the log does not match,
the warning is highlighted in yellow colour.
SFDP mode.
Default mode. The definition will work as described.
Off. The SFDP check item will be skipped.
Async IO.
Speed increase the same as in other modules.
Pin Test
Works the same as other modules.
4.10 UART.
Socket.
Works with socket 2044 and 2060.
Features.
- Auto Rate Detection. (baud rate).
- Support working with scripts.
Main features
Intuitive parameters, as in all UART terminal programs:
- UART speed. There is a generally accepted number of standard speeds: 300; 600; 1200; 2400; 4800;
9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600 baud.
- Number of data bits (usually 8).
- Presence of parity bit.
- And 1 stop bit.
- Flow control.
- Type of information displayed in the log (HEX/ASCII).
The picture shows the configuration of UART 9600 8-N-1, stream Off (ASCII). If you select the desired
configuration, click Install to apply the settings. The log will write the applied configuration.
Auto-baud.
Autodetect baudrate. It is desirable to start before the start of the exchange for proper synchronization with
the starting bit. If successfully detected, the determined speed will be signed in the "Auto Speed" field.
LOG scrooling.
The log's auto scrooling is customizable
Socket.
Works with sockets 2046 or 2060. SPI position.
By default, read/write works in single line mode and the default frequency is 85MHz.
You can set the speed by increasing the write, reading modes to x2/x4 and even increasing the frequency to
100MHz, if the chip and current connection allows.
RW Mode
Described in chapter.
Model.
In this module, you do not need to select the model manually, since all the parameters are contained in the
ONFI of the flash itself and are applied automatically.
ECC.
Similar to normal NAND, except that internal ECC control is usually used, which is set as "Chip"
(HWECC).
Miscellaneous (add.features)
The filling of functions corresponds to the usual NAND, with the exception of BBM LUT. This item allows
you to put the blok into the internal (in the chip controller) Bad Block Table and process them. The BBM LUT
block operation is one-time operation and cannot be canceled. The entered block or table cannot be cleared.
4.12 OneNAND.
Socket.
Works with sockets 2031 or 2032 and BGA base.
Features.
Speed selection: Low/Normal/High.
RW Mode.
Described in chapter.
Model.
You do not need to select the model manually, since all flashes are contained in the database and are
determined automatically by ID.
Bad Blocks.
Described in chapter.
"Check Bads" and "Bads info" buttons, as well as in Miscellaneous. The Bad Blocks menu functions work
the same as normal NAND.
ECC.
The same as with NAND.
Miscellaneous (add.features).
Features corresponds to the usual NAND, with the exception of Flex OneNAND. This item is for switching
between chips in the chip housing.
4.13 BDM.
Socket.
Works with socket 2043.
Features.
- Can works with scripts.
- Processors supported:
MC9S08AC60
MC9S08AC48
MC9S08AC32
MC9S08AW60
MC9S08AW48
MC9S08AW32
MC9S08AW16
MC9S08GB60
MC9S08GB32
MC9S08GT60
MC9S08GT32
MC9S08GT16
MC9S12XF384
and others.
- Writes with .bin files that can be converted from s-records to "Tools - Conversion" menu.
- More information on forum.
Sequence of actions.
- Select the processor type.
- Read ID.
- Work like with a regular flash drive.
- Erase and remove protection with the "Erase everything" button.
4.14 JTAG.
Socket.
Works with socket 2043.
Features.
• • This interface creates a .udev file with initialization parameters and chip configuration.
• • The VREF level is supplied from an external source according to the signal levels (usually 3.3V).
• • After connecting and reading the ID, we open the defined chip tab and work as usual according to the
module used.
Supported devices.
At the moment, there are ready UDEV files only for processors S4LJ162X01 and JUPITER4E and their
internal flash. How to work with these processors: examples are given in the forum:
Theme Modes Restore a processor-based printer JUPITER4E
Restore a processor-based printer S4LJ162X01
It is also possible to run CMSIS DAP emulator.
Application.
Allows attach a file system as a virtual file drive.
Examples is в attachment.
Features.
At the moment, it differs from "Mount Chip" only in that the mount object should be a file. Both modules
are basically almost equivalent, the difference is in convenience only. This option may be more convenient if
the partitions are read and you want to work with the partitions on the disk before writing to the chip.
Application.
Allows attach a file system like a virtual disk drive.
Examples in attachment.
Features.
At the moment, it distinguishes itself from Mount File only by the fact that the installation object should be a
chip. Both modules are almost equivalent, the difference is in convenience only. This option can be more
convenient if you need to work with partitions without wasting time reading and writing the dump back to
disk.
5 RW Mode
Allows you to work with the entire chip, as well as set addresses, page numbers, blocks, partitions
separately. It works in almost every module. The following is an example of NAND.
Mode: Partitions
In this mode, you can work with chip partitions. Partitions can be loaded from a UDEV file, filled manually,
or get using dump analysis.
All fields within the table can be edited by double-clicking. Partition files are written and saved to the
specified folder. Files in "Read To" and "Write From" are not used in this mode! When you add a keyboard to a
folder path in a row, you must press Enter to apply it.
To select the required files/regions (the names are automatically assigned from the name and location of the
section unless otherwise specified) that you want to read/write, check the appropriate lines
Right-click menu
Add partition.
When creating, you can add a new partitions to the end of the table.
Remove Partition(s).
Delete the selected partition. You can select multiple through Ctrl or Shift.
Open File.
Opens the dialog for selecting an existing region file to write to in the selected row.
Auto Names.
After filling the table and alignment of sizes and addresses, clicking the button automatically populates the
"Files" column. These names will save the region files when you read them.
When power is on, the status line shows the voltage and current consumed by the power supply channel. In
SPI, NAND and similar modules, one channel is used for power supply, and for eMMC both channels are
involved, and the second channel also shows the voltage and current of the second channel. The main channel
on which it is possible to adjust the voltage during operation of the programmer is channel A.
By excess of 500mA current on the channel (if not disabled) then overload protection will work. The log will
show "UFPI interface is off" and on the programmer will start blinking the LED corresponding to the channel
that went into an accident (кChannel A- VCC/VREF LED1 or channel B- VUSB LED2).
If "Ignore the accident" is set on the main tab, the box will not stop emergency, it will continue to work, but
the message will appear: "UFPI power accident! Output A "
It is not recommended to turn on "Ignore accident" during daily operation in normal conditions! Only in
some cases can use with an understanding of the consequences when working in-circuit, when it is required to
power the connected device from the box.
For ISP operation with large current consumers, you can use the Vref mode. To do this, switch the switches
on the socket to the appropriate position and connect the external power supply to the VCC output of the
device chip and connect the socket to the VCC. In this case, when voltage is supplied from an external power
source (for example, LDP), the internal output buffers of the box will be powered and the voltage will be
displayed in the status line.
The remaining power voltages set by the switches on the socket are described in the PIN OUT.
Right-click on “zipper button” the menu appears, all check boxes are cleared by default (you can also click
"Default voltage" to undo the changes). The voltage when reading the ID is used according to the socket, then
after reading the ID, its model is determined and/or the corresponding voltage is set automatically.
Example:
after reading the ID at NAND512R3A in a socket with a set voltage of 3 .3V, the program will automatically
determine it as 1.8 volt and work with it on 1 .8V.
after reading ID at W25Q64FW with 3.3V voltage sets on a socket, we will see in the log that was defined as
W25Q64FV as they have absolutely identical ID!!! If you set the voltage on the socket to 1.8v and read the ID
again, then the W25Q64FW will already be written in the log. All according to the voltage.
The setting is individually remembered in each module!
You can set any of the listed voltages (the state of the socket power switches should be different from Vref),
or in the "User voltage" item you can manually enter numbers in millivolts. If the voltage is set through the
menu, change it by the switch on the socket, then it will change in the same way as the voltage is set on the
socket.
The voltage on the menu does not prevent it from being put on the socket.
The "Socket Voltage" option switches from the current voltage to the voltage set on the socket.
The "Always ON" option can be useful when working in ISP mode, with scripts, old SPIs (which do not
retain status after power off). In the eMMC module, power is always ON by default and this option does not
need to be activated.
The "Soft On" option allows you to smoothly raise the voltage when switching on, which often helps with
ISP connection, preventing protection from working during the initial charge of capacitors and transients when
turning on power from the box.
Structure.
The example of NAND for TV SAMSUNG D5500.
[DESC]
; Model device
Name = D5500
; Memory type
; eMMC, SD, NAND, ONENAND
FlashType1 = NAND
; ECC algoritm
; 0 - OFF
; 1 - Scheme
; 2 - HW
ECCAlgo = 1
; ECC Scheme
ECCScheme = MSTAR_P8K_SP436_CW8_S12L42
; Analysis on ID
; 0 - OFF
; 1 - dump
; 2 - dump, ic
; 3 - ic
; 4 - ic, dump
AnalysisOnID = 1
[BBM]
; 1 – During Erase
; 2 – 1st spare marker byte
; 3 - 6st spare marker byte
; 4 – User marker offset in spare
; 5 - User marker offset in page
; 6 - BAD Blocks Table
; 7 - BBM LUT (SNAND)
bbDetect = 2
; Management
; 0 – Not used
; 1 - Skip BAD Block
; 2 – Use Reserved Area
bbMgmt = 2
; Operation
; 0 - equale
; 1 - not equal
bbMarkerOp = 0
; Table type
; OFF – Not use
; AUTODETECT
; LG BBMINFO
; Samsung RFS
bbTableType = Samsung RFS
[NAND]
;offline geometry NAND. Use for mount file and analyse Bad Block.
PageData = 8192
PageSpare = 436
PagesInBlock = 128
Blocks = 2076
[INFO]
; Any text information that is displayed at load UDEV
[PARTITIONS]
; Information for working with partitions
FlashBase1 = 0
[PARTITIONS]
;Activate the RW mode “Partition”.
PartitionsMode = true
;Addr partition, Size artition, Name partition, Part/Partition(user/boot1/boot2/RPMB), File name, Offset
in file, File System.
0x0000000000,0x00200000,Partitions_table,USER,
0x0000200000,0x00300000,MBOOT,USER,
...
0x0003080000,0x00040000,RTPM,USER,
0x00030C0000,0x2BC00000,system,USER,USER_0x00030C0000_0x2BC00000_system.bin,0,EXT4
0x002ECC0000,0x40400000,userdata,USER,,,EXT4
To work with partition and with files, it is necessary to name the partition files by names "by convention"
type: boot1_0x0_0x1000_zboot.bin and press the "Load from folder" sections in RW Mode.
8 GZIP.
One of the pleasant features of UFPI is working with GZIP (open distributed archive format) format on the
fly. This means you can read and write directly from the archive. Thus, we save disk space and do not spend
time unpacking dumps.
To read to the archive, you must select a file to save with the .gzip extension.
To write from the .gzip archive, you do not need to unpack it, simply select the archive and click "Record."
The programmer will determine the format itself, and record its content.
You can pack and unpack not only dumps, but also any files.
You can find the compression ratio in the settings. It can affect the speed of work on weak computers. The
default is level 7 as the best.
The buffer allows you quickly evaluate the content, and also you can read, edit and write back to the chip
without saving a dump to a file.
Working with a buffer can be more stable at a high speed than directly with a file on HDD. The buffer is the
space allocated in the RAM, thats the reason of the limitations in its size. This is the fastest option To work
with LOGGER, (after capturing the signal, you can either convert to the .sr format or save it in the native
binary format UFPI .ulog).
The Buffer Editor opens by a button on the toolbar, or through the Edit Buffer menu.
The Buffer Read Mode and Buffer Write Mode flags can be set and cleared either individually or
simultaneously by the "Buffer Read and Write Mode" option
At the same time, the field "Read to" or "Write from" corresponding to the activated item becomes inactive.
The editor allows you to view, edit, and save. Standard Hotkeys Ctrl+C, Ctrl+V and others work as well.
10 Test FILE
The test file will generate a visually understandable sequence in the dump.
A test dump is generated individually for each module and each chip based on geometry and dimensions and
other options.
Visually, the editor shows the separation of pages, codewords, and even spare with the specified ECC
Features.
The file manager allows you to mount and work with the file system directly reading and writing by the file
system in the file dump or directly in the chip. You can mount both: as partition in a dump and a s a separate
partition file.
RUN.
When the programmer is connected, the «START FILE MANAGER» button appears in the toolbar.
Mount options:
Media - chip/file;
Mode - full file or chip (if the full file or media is a single partition )/part of the media (manually enter the
offset and size of the partition in the dump )/partition (by selecting a partition from the list);
File system - selection of the required FS;
Partition - select a partition from the list of chip/dump defined partitions during analysis;
Notes.
If the partition is not mounted, need to recheck everything according to the items, restart the software, make
sure that the dump is correct or compatible, or take another one.
In "Mount" window after alignment of all fields, re-check all fields before pressing OK. If alignment
sequences are incorrect, the fields may change themselves.
The "Mode" field : «Partial Media” field is required to manually specify a partition. If no partitions are
found, you can enter them manually, for example https://mslw.com/bb/showthread.php?tid=2...2#pid35582
"Mode" field: "Entire media" is required to mount one extracted partition (for example, subtract one partition
through "mode: partitions," it can be mounted), the path to which you need to specify in the field below.
The "Read Only" check box is a protector against rash actions. Some FS are Read Only
"No Recovery" check box disables the built-in mechanism of FS structure recovery.
Files only can be copied. There is no folder copy. You can create or delete folders if they are not empty.
You cannot navigate to other folders in the file manager while copying.
If you want to reconnect the box, then you need to restart the program. Otherwise, it will not be mounted.
I.e. if you just did box reconnect after the socket, etc. - everything will work, but if the power is lost from it -
then restart the software.
Linux and MacOS have no mount. Windows only.
Added hash file validation capabilities (for example, keys and export/import).
Added the ability to recover corrupted keys in QV platforms/chassis.
12 Package.
Features.
The main purpose of containers is to store several parts of firmware in one file and the ability to write all
these pieces to different addresses from one file. It is also possible to add an image that contains the necessary
information or reminder and is displayed when the Package is opened. If desired, the data in the Package may
be compressed and encrypted. If a Package is selected as the file for recording, all write/erase/verify operations
will be performed on the addresses and dimensions of the binary parts that are contained in the Package. In
meaning, this is almost the opposite operation from "Platform Backup".
When creating a package for NAND, addressing is indicated without spare.
Package Editor.
Run the Package Editor in the menu «Util-Package Editor».
EXAMPLE
The Package assembly and example work are described in Appendix.
13 UFPI Self-Test.
It is designed mainly to detect defects in the assembly of the programmer - breaks, short circuits, incorrect
operation of sensors, etc. It was made for internal use, but since sometimes there is a need for verification not
only during production, it was taken out into a separate function in the programmer shell.
How it works:
For a complete test, you need to make a small socket with 4 resistors - 910К on ID1, 1K on ID2, 75 Ohm 0.5
w between the ground in VCC, 120 Ohm 0.5 W on VUSB. When the socket is turned on, the yellow LED will
light up. To start, press "Interface, add.options, UFPI Self-Test." If something is wrong, then a list of errors will
be displayed in the log. First, the processor signal lines on the board are tested, then frequency generation,
voltage sensors, then the buffer lines are tested. Only extensions will be tested without a socket.
However, you need to know that encrypted scripts cannot be connected (# include) in another script.
Writing scripts.
Scripts are written in any convenient text editor (for example, with Notepad++ syntax highlighted).
For ease of debugging, the script can be bound to a hotkey in the settings
All debugging when writing scripts takes place by starting and checking in the log window. For example, the
location and type of error are described:
Line 7, error 'No matching symbol 'setPowerMode''
Line 2, error 'Unexpected token '{''
It is convenient to use the print () output function for debugging and monitoring;
14.1 SCRIPTS.
A lot of programmer capabilities are executed using separate applications, (scripts). They are written by
users. Script discussion forum here. This section lists some of them.
(Some older scripts have not been updated after changes or feature additions and may not run on the latest
versions of the software, require changes.)
HOT KEYS. You can associate each script to a specific button.
OneNAND
Script for finding Partitions in a dump and creating a .udev file
NAND
The script for quick detection if the BAD block installed in the NAND programmer hits on the block with
information in the dump or not
Script for defining partitions in the NAND dump and creating a UDEV file. What is UDEV and what it is
for: read here
Partition mini editor (read/insert partitions from/to dump with support for UDEV files and section sizes
based on title + manual data entry mode and light operation mode). You can work with one or more dams,
dividing them into partitions and shuffling these partitions between them.
Dividing the NAND dump by main and spare, as well as the reverse action - creating the dump from main
and spare.
Script for creating a dump file in which a classic method of block BAD skipping is performed. This bypass
principle is very rare in practice, do not hurry to apply it until you understand - how exactly the bypass works
for your device.
The script for determining and setting the optimal parameter ReadRetry
eMMC
Script for defining partitions in eMMC dump. MBR/EBR, GPT, MSTAR ANDROID, MTK LG, ANDROID
TV SONY
Partitioning dump from a UDEV file
Editing configuration constants in SMART TV ANDROID dumps based on CPU MSTAR. It is necessary,
for example, to activate uart. Also, with this script it was possible to open the uart on the Vestel chassis
17MB95
To work with eMMC dump partitions, if you have a UDEV file, you can use the script that we used to work
with NAND dumps
Partitions mini Editor (read/insert partitions from/to dump with UDEV file support and partitions sizes based
on title + manual data entry mode and light operation mode)
SPI
script for working with OTP area
Super I/O
Script for working with multi-controllers KB9010, KB9012, KB9022
Weltrend
WT802, WT805, WT806, WT807
Touch Sensor
CT1C08x
15 FAQ
Notes, which can be useful for quick familiarization with the forum, chips and programmer will be collected
and grouped HERE, In the topic of accompanying the guide, you can post new issues that should be included
in the guide and FAQ.
Why should I select a read and write files for reading and writing before
operation?
UFPI does not create any temporary files when reading or writing. The process occurs directly with the
selected file. This allows you to predict volumes and free disk space even with large flash volumes, as well as
not waste time working with temporary files.
How do I downgrade back to the old version after the upgrade? This question
often appears after the message "UFPI Outdated version for Box with firmware
vX.X.X. Please use latest software version. "
Run the version you want to roll back to. Then press and hold the button on the disabled programmer.
Connect the programmer to USB. After the programmer enters the update mode (all three LEDs will flash in
yellow at the same time), release the button. Then in INTERFACE menu press SOFTWARE UPGRADE, after
that, the programmer will get firmware from the current version and it will be possible to use it with this
version. Important! It is not recommended to abuse this feature, since any chip memory has a target resource
for erasure and write.
Usually, rollback of versions works within the version base. You cannot downgrade back to version 2.0.5
from version 2.0.7.
Task Queue.
UFPI knows how to line up tasks, and then run them in turn. For example, we want to read-erase-record-
verify a large flash. After selecting the file and starting the reading, you can immediately click the erase
button, then check for cleanliness, select the file to write and click "write..." and the program will take
performs all these actions in the specified order without stopping.
Built-in archiver.
The program has a built-in archiver that will help save disk space and can work without separate unpacking.
It is also possible to unpack not only dumps, but other compressed gzip files, for example, UFPI updates.
ASYNC mode.
It allows to obtain a significant increase in speed. However, in some cases, you have to disable it, for
example, if you want to read almost dead eMMC or NAND with repetitions in case of errors.
Emulation MODES.
When you connect a socket in emulation mode, you will not see the opened tabs of the module, and a new
device will appear in Device Manager. If you got a similar problem when connecting a JTAG socket for
example, simply disable the emulation mode in the main software tab by selecting "Default" and clicking
"Fix."
Socket.
This board, which is inserted into the programmer, has switches and ID resistors to set the desired voltage
and module. It may be supplied with additionally "base" with the necessary sockets/pins/connectors for
connecting arbitrary adapters.
Socket Base.
It is inserted into its corresponding socket and is designed to install the bga or tsop socket, other base or flash
directly.
BOX.
UFPI programmer.
Module .
This is the tab in the software, for example NAND/SPI/eMMC... which is active when the appropriate
socket is inserted and the license is available.
BB (Bad Blocks) .
Bad Block. Faulty block in NAND chip.
CRC (Checksum).
This is an algorithm, or value, that is designed to verify data integrity.
15.5 NAND.
Addressing.
In the device, work with NAND occurs page by page. Spare is not treated as a data area. In a regular read
dump you can see that it consists of Page and Spare. Therefore, addressing in the dump will differ from
addressing when working in the "RW Mode," or reading terminal logs, or a programmer logs. There is a
parameter "Addresses with Spare" in the menu "Miscellaneous/Add.features."to see the address with Spare in
the log.
15.6 EMMC.
EMMC erasing.
According to the specification, the controller of these chips automatically erases them before writing the
blocks to the chip. Therefore, it is not necessary to erase chip, some chips does not support such commands at
all. But this possibility is present and in different chips either the erase command can be supported, or you can
simply write zeros or 0xFF. By "X" button the erasure algorithm corresponds to "Miscellaneous" - Erase Mode.
In the Samsung eMMC before v5.0 revision, the formatting function is also supported (Separate item in
"Miscellaneous"), which erases both the data and the loading configuration (make factory reset).
15.7 SPI.
Power supply.
Special attention should be paid to chips power supply before starting work. It is not always possible
correctly distinguish between 1,8/3,3V when reading ID/SFDP. Exact values can be obtained from the
documentation for the chip or by studying the equipment on which the flash is installed.
For ISP mode with 3.3 volt flashes (for example, "pinch"), an attempt to work at voltage levels of 2.8 or
even 2,6V is often more successful. At the same time, it is useful to set the power check box "Always on" and
several times re-read the ID, monitoring that everything works stably.
15.8 UART.
AUTO speed.
It is very rare and convenient determine the baudrate automatically.
16 Attachment.
In future we will navigate the articles and list the options. I will list the options for some kits that should be
paid attention to for understanding.
NAND BGA63.
Highest quality socket KZT - 2020 + 2021.
Using your own socket (for example, if there is 2031 + 2030) KZT - 2020 + 2009.
Using your own socket JRS - 2020 + 2010.
OneNAND BGA63.
Highest quality socket KZT - 2031 + 2030.
Using your own socket (for example, if there is 2020 + 2021) KZT - 2031 + 2011.
Using your own socket JRS - 2031 + 2059.
Option using combined with ENTTv2 and your own socket JRS - 2032 + 2028.
The kit for BGA64 with quality socket KZT – 2023 + 2024.
The kit for BGA64 with your own socket JRS– 2023 + 2012.
SPI/I2C/1W/UART
Socket 2046 is most common and familiar, but today there ie newest 2060. In 2060, It is able to turn on
UART and has been added and additional pins for connection.
The position of the switches on the socket corresponds to the following modes:
Режим Vcc
ON ON ON – SPI Flash ON ON ON – 3V3
OFF ON ON – I2C EEPROM OFF ON ON – 1V8
ON OFF ON – SPI EEPROM OFF OFF OFF – 5V0
ON OFF ON – 2V6
OFF OFF ON – mWire EEPROM
OFF OFF OFF – 1-Wire MODE
ON OFF OFF – UART
ON ON OFF – SNAND (SPI NAND)
NOTE.
- Worth remembering that you can use any of their suitable ones sockets instead of 2057 and 2062 .
They're universal.
- Sockets such as 2043, 2044 have a connector for connecting their own wires RJ45. Its Very convenient
for quick replacement and organization of a large set of own adapters.
- Empty socket boards (PCBs) are not equipped with connectors or elements.
- For a TV serviceman, usually the following are important:
- SPI/I2C/UART.
- NAND TSOP48.
- EMMC.
- OneNAND BGA63.
- The rest, such as NAND BGA63, NOR are not so actual.
16.1.5 Tips and useful information for selecting your adapter kit.
Universal adapters.
If you have already decided to buy a programmer, then SPI/I2C/1W DIP24 (art. 2060 or 2046) socket is
what is commonly called a "must have" adapter. With this universal adapter, the programmer can become a tool
for working with various types of memory, protocols and voltages. By selecting the desired mode of operation,
you can work with SPI NOR, SPI NAND, SPI EEPROM, I2C EEPROM, Microwire (3-Wire) EEPROM and
1-Wire devices.
When choosing, you need to understand the following things. The store does not sell BGA kits for working
with eMMC, they are purchased separately on Aliexpress and similar shops. Which of the Chinese BGA kits to
choose and buy depends only on your preferences, finances and what is sold there at this moment. The UFPI
store sells adapters for these "standard" Chinese kits. So the question of choosing an adapter to work with
BGA eMMC depends of which one you will have or already have.
There is a pcb circuit board for the RT809 programmer, that will allow you to independently assemble
eMMC socket for UFPI and use existing BGA adapters.
If you already have or plan to buy, for example, EASY JTAG EMMC BGA kit - it means to buy UFPI EASY
JTAG eMMC socket (2038), etc. If you only need to work in ISP mode, then there is no difference what
eMMC adapter you need, all of them are suitable. If desired, you can assemble the adapter independently,
adapter diagrams in the application and on the site.
16.2 EXAMPLES .
16.2.1 Attachement. Create a NAND Flash configuration file.
If the chip is not determined, or is not determined correctly, the "+" button opens the menu of the
configurator, where you need to enter the main parameters of the chip for operation.
The official documentation is the main reliable source from the manufacturer, which is usually freely
distributed on the Internet.
Lets see ESMT F59L1G81A SPI ID 92F18095407F7F7F chip. Free access documentation.
Usually everything you need is written on the front pages. The first page says: 1 Gbit. The full size of 1Gbit
can be represented as 128Mbyte or as 128 * 2 ^ 20 = 134217728 byte or translated into a hexadecimal system
of 0x8000000 bytes. This size is without the spare area.
The 3,3V voltage for writing is converted to millivolts 3300.
Next, the first page lists the basic parameters of the chips geometry. Also, usually there is a visual picture of
the "ARRAY ORGANIZATION," in the documentation for each chip similar to given in the current
documentation on page 4.
Page size «- Page Program: (2K + 64) bytes» (it consists of a page + spare size).
Page = 2K = 2*2^10 = 2048 = 0x800 byte;
Spare = 64 = 0x40 byte.
The total page size in the read dump is 0x840 bytes.
Block size: «- Block Erase: (128K + 4K) bytes» (sum of page size+spare).
128K = 128*2^10 = 131072 = 0x20000 byte. Block size without spare;
4K = 4*2^10 = 4096 = 0x1000 bytes;
Summary block size: 0x20000+0x1000 = 0x21000 byte;
To calculate the number of pages in a block, you need to divide the block size (considering or not considering
spare) by the page size: 0x20000/0x800 = 0x21000/0x840 = 0x40 = 64 (pages in block).
The number of blocks can be obtained by dividing the total chip size to the block size. It was noted above
that the full size was considered excluding spare. So to get the number of blocks, it must be divided by the size
of the block without spare: 0x8000000/0x20000 = 0x400 = 1024 blocks.
The data bus is determined by pinout. For example, for TSOP48 NAND chips, terminals 29-32 and 41-44
are standard, this is distributed I/O0-I/O7 i.e., 8 bits of the data bus. If in addition to them, there are still I/O8-
I/O15 nearby, then it will already be x16 bit.
Access time. This value is named as tREA in this documentation and is 20ns in the "AC Characteristics for
Operation" table on page 8. Page 13 illustrates the position of the tREA among the signal sequence. This is the
time at which the internal chip buffer puts the byte on the I/O data bus and is ready to read.
Col/Row address loops. The easiest thing is to find the "Address Cycle Map" table on page 4, which usually
always clearly describes the necessary values. It shows that the first two lines (the number is limited to * L) are
"Column Address" addressing inside the page.
The second two are "Row Address" for addressing pages/blocks, etc.
It is easy to calculate that if the full page size of the 0x840 chip in binary form can be represented by 12
bytes (100001000000) this is A0-A11 indicated in the first lines.
Also, if you calculate, the total number of pages is 0x10000. Two bytes are required to enumerate them from
0x to 0xFFFF. This is the second two 8-bit rows in table A12-A27.
ECC bit. This value indicates the number of valid errors during guaranteed chips recording cycles. Based on
this, the equipment manufacturer uses the ECC correction algorithm. So on the first page of the documentation
it is indicated: "- 100K Program/Erase Cycles (with 1 bit/528 bytes ECC)" and means that during 100,000
erase/write cycles the number of errors will not exceed 1 bit by 528 bytes. In the case of a configurator, it is
rounded to 512. This value is not critical to the operation of the programmer and is used only in verification to
evaluate chip condition after recording.
Bit in a cell. In the case of F59L1G81A, this is SLC. Among other data on the first page is indicated:
"Memory Cell: 1bit/Memory Cell."
Small hint:
Single-Level Cell or SLC (1 bit per cell)
Multi-Level Cell or MLC (2 bits per cell)
Triple-Level Cell or TLC (3 bits per cell)
Quad-Level Cell or QLC (4 bits per cell)
Penta-Level Cell or PLC (5 bits per cell)
When all fields are correctly filled in, the full size will be calculated below, coinciding with the calculations
above.
The "Save" button saves the configuration file to the folder FlashIDs and this configuration will already be
triggered by default when reading the ID. To delete, you can use the "Delete" button or delete the file specified
in the header of the configurator window.
The main reliable source is official documentation from the manufacturer, which is usually freely distributed
on the Internet.
Consider the EON EN25Q32B SPI ID 1C3016 flash (1C30161C30161C30: 9F). Documentation is available
on the official website.
Usually everything you need is written on the front pages. First page says 32 Megabit. The full size of
32Mbit can be represented as 32/8 = 4Mbyte or as 4 * 2 ^ 20 = 4194304byte or translated into a hexadecimal
system of 0x400000 bytes.
The voltage is further indicated as "Full voltage range: 2.7-3.6 volt." In millivolts, it is common to introduce
3300mV into the configurator.
The page size is placed on the first page: "256 bytes per programmable page." You can either fit into the
configurator 256 or convert to a hexadecimal view of 0x100.
The size of the sector is slightly lower: "1024 sectors of 4-Kbyte." This translates to bytes 4 * 2 ^ 10 = 4096
= 0x1000.
You must also check with the identified ID on page 15.
ID in the log "SPI ID 1C3016."
4-byte address will be needed for large flashes only.
For example, on the 22 documentation page there is a description of the reading command and the line: "The
instruction code for the Read Data Bytes (READ) instruction is followed by a 3-byte address (A23-A0)." The
illustration also shows these 24 bytes. This chip addressable limit will be three bytes from 0 to 0xFFFFFF =
0x1000000 bytes. When transferred to Mebibayty 16777216/2 ^ 20 = 16MiB or to bits16 * 8 = 128Mib. I.e. for
SPI, a flash of more than 128Mib (for example 25Q256) will already be described in the documentation about
the 4 byte address.
The main reliable source is official documentation from the manufacturer, which is usually freely distributed
on the Internet.
Let's take a look at the Spansion/Cypress S29GL032N90FFI02 flash. NOR ID 0001227E221D2200 AMD
Algo (CFI).
Documentation. From official webpage.
The volume and operating voltage can be seen on the first page. Here, the 3V is written in the configurator
window as 3300 (mV).
The full size of 32Mbit can be represented as 32/8 = 4Mbyte or as 4 * 2 ^ 20 = 4194304byte or translated
into a hexadecimal system of 0x400000 bytes.
Please note the full marking. On page 12, you can determine that MODEL NUMBER = 02 = x8/x16, VCC =
VIO = 2.7 - 3.6 V, Uniform sector, WP #/ACC = VIL protects lowest addressed sector.
Memory organization. On page 19 there is a table with the listed sectors. It can be seen from the table that all
64 sectors of the same size 64KB. As such, the configurator selects one region and the size and number of
sectors, respectively.
Similarly, we convert 64KV to bytes by multiplying by 2 ^ 10 = 64 * 1024 = 65536 = 0x10000.
If to see 20 page for the neighboring memory model, then the table shows that there are two regions. The
first counts 63 sectors by 64KV and the second 8 sectors by 8KV.
Pay attention to the numbering of sectors, since it can go both from the beginning and from the end. The
"Top Boot Sector" and "Bottom Boot Sector." The order of regions will depend on this.
The size of the flash corresponds to the size from the beginning of the first to the end of the last sector and can
be checked in the column "8-bit Address Range." We get from 0 to 3FFFFFh in total we get 0x400000 bytes.
This corresponds to the one previously calculated.
Checking ID. Page 29 shows the table. It is always worth checking the ID against the documentation.
Because an incorrect ID may indicate a bad contact, malfunction, or mismatch with this documentation. Source
ID 0001227E221D2200.
Manufacturer ID: Cypress Products are always the first
DQ8 to DQ15 = 0x00;
DQ7 to DQ0 = 0x01;
then lines for S29GL032N
Cycle 1 = 0х227E;
Cycle 2 = 0х221D;
Cycle 2 = 0x2200;
The remaining columns can be verified from the full ID in the log. There is also useful information.
Command set. The most usable are AMD. On page 47, you can see the commands in the table. The first
cycles in the commands in the case of AMD are always inserted similar 555/AAA sets of bytes.
In the case of an INTEL instruction set, there will be no such incremental bytes and there will be simply
instructions. For example, see the Intel 28F256J3 documentation on page 35.
Do not think that if Intel flash, then it has Intel command system. That's not always truth.
21 mode is selected based on the chips pinout. For TSOP56, this is 15 (or 13 for TSOP48) leg of the chip. In
the case of c S29GL032N, it acts as the address line А21.
If you open the documentation on Intel 28F256J3 on page 15, then on the 15 leg will be Vpp/Vpen. Table 7
of this documentation describes that it is normally connected to Vcc (2.7 V-3.6 V)
When all fields are correctly filled in, the full size will be calculated below, coinciding with the calculations
above.
The "Save" button saves and, when reading the ID, the configuration is already triggered, filled and saved in
a file in the program folder by default. To delete, you can use the Delete button or delete the file specified in
the header of the configurator window.
If the mounting is successful, the content and description of the partition will appear in the file manager.
File Manager allows you to go through directories, copy, replace, and many other operations. You can
perform operations on selected files by right-clicking context menu.
The RW Mode allows you to save/write partitions not only from USER eMMC, but
also to combine.
Read the flash ID and fill in the partition sizes in the "Partitions" RW Mode window:
So you can read and write. You can select files from the folder where you read "Full Backup" to write all the
required partitions at once.
You can similarly compose or save a .UDEV file:
[DESC]
Name = Partitions
FlashType1 = eMMC
FlashBase1 = 0
[PARTITIONS]
PartitionsMode = true
0x0000000000,0x1D2000000,part_00,USER,USER_0x0000000000_0x1D2000000_part_00.bin
0x0000000000,0x00400000,part_01,BOOT1,BOOT1_0x0000000000_0x00400000_part_01.bin
0x0000000000,0x00400000,part_02,BOOT2,BOOT2_0x0000000000_0x00400000_part_02.bin
0x0000000000,0x00080000,part_03,RPMB,RPMB_0x0000000000_0x00080000_part_03.bin
Writing partitions.
Open "RW Mode - Partitions", click "Load from New Folder", or select a working folder and click "Load
from Current". Click OK and you can write. All partitions will be recorded sequentially. The auto complete
fields is based on a consistent file name that specifies the location, address, and size.
The script next to it will collect everything into one file in the FULL DUMP folder.
After selecting the platform, the specified data will be stored in the UBAK file.
eMMC Platform Backup for 'LC_LD_LE42B_42G'...
Data saving to File 'E:\temp\LC_LD_LE42B_42G.ubak'...OK
Reading eMMC USER from 0x03F00000, size 0x00080000...OK
Reading eMMC USER from 0x03F80000, size 0x00080000...OK
Completed in 0.06 second(s). Code download speed 15.87 MiB/sec.
When recovering from a UBAK file, all these parts will be written back
(You can choose Restore/Restore + Verification and the regions will be writed. Or simply choice Verification of
the attachment region.)
eMMC Platform Restore from 'E:\temp\LC_LD_LE42B_42G.ubak'...MMC Rev.1
Backup name 'LC_LD_LE42B_42G', size 1 MiB, created 16 Июнь 2021 10:32:41
Press "mount" button, select media, mode, file system and partition.
Press "OK" and go to file manager with mounted section. You can then check the file hashes in the folder
from the PCM menu.
And the most interesting thing is that if you disactive the “Read-Only” tick box in the mount settings, then
the remaining items are available and the damaged keys can be magically restored by the machine.
16.2.10 Attachment. Fix the dump and write the NAND dump using the
example of Samsung D5500.
Additional check.
After a few days insert into the programmer, set all ECC, BB (or load .UDEV) and dump settings as
described above. In the module settings, set "Do not stop verification for errors" and for clarity you can set
"Show errors for whole blocks."
Read ID.
Start verification and check for bads with uncorrectable errors.
NAND socket x8/x16, 4xCE, 3.30В
NAND ID ECD584725042 (ECD584725042ECD5), CE1 (*)
Manufacturer Samsung
Model name K9GAG08U0E
Bus and voltage x8 3.30V
Serial Access 30ns
Address Cycles 2/3 (Col/Row)
Page size 0x2000 (8192)
Spare size 0x1B4 (436)
Pages in Block 0x80 (128)
Block data size 0x100000 (1048576) 1 MiB
Block raw size 0x10DA00 (1104384) 1.05 MiB
Blocks count 0x81C (2076)
Bits per Cell 2 (MLC)
ECC Requirement 24/1024 (Bits/CW)
Dies per Chip 1
Chip (CE) count 1
Total data size 0x81C00000 2.03 GiB
Total raw size 0x88A7D800 2.13 GiB
NAND ECC correction MSTAR_P8K_SP436_CW8_S12L42 (no ECC errors in Page #0)
NAND BAD Blocks Table Samsung RFS (Block #0)
BAD blocks detection (Spare bytes #0 == 0x00)
BAD blocks management Use Reserved Area
BAD blocks request...OK
BAD blocks count: 20
Block 0x00D8 (216) addr 0x0D800000 (0x0E37F000) BAD Block
Block 0x00DF (223) addr 0x0DF00000 (0x0EADE600) BAD Block
Block 0x01DA (474) addr 0x1DA00000 (0x1F33A400) BAD Block
Block 0x01DB (475) addr 0x1DB00000 (0x1F447E00) BAD Block
Block 0x02B1 (689) addr 0x2B100000 (0x2D5ABA00) BAD Block
Block 0x02B7 (695) addr 0x2B700000 (0x2DBFD600) BAD Block
Block 0x02BA (698) addr 0x2BA00000 (0x2DF26400) BAD Block
Block 0x02BC (700) addr 0x2BC00000 (0x2E141800) BAD Block
Block 0x02BD (701) addr 0x2BD00000 (0x2E24F200) BAD Block
Block 0x02C1 (705) addr 0x2C100000 (0x2E685A00) BAD Block
Block 0x033D (829) addr 0x33D00000 (0x3691F200) BAD Block
Block 0x036B (875) addr 0x36B00000 (0x39991E00) BAD Block
Purpose.
For example, the BIOS dump is taken from the laptop and you need program in SPI flash without erasing
the Windows key.
Preparing.
Finding the key offset , dump is divided into three parts with dimensions multiples of the sector. The sector
in the SPI is the minimum erasable part. For example, if it were NAND flash, it would be blocks.
Two regions are cut - before Winkey and after it, and then saved as separate files with the .bin extension
from the dump to be written. All regions must be multiples of the minimum erasable size - block.
Example:
0x000000-0x41F000 – region to key. Save to a separate file.
0x41F000-0x423000 – region with key
0x423000-0x800000 – region after key. Save to a separate file.
You can then add a picture, a .udev file, or a text document to open when the Package is opened..
Set the chip type for SPI as Undefined.
You can immediately select the compression level for the archiver so that the file takes up less space. In the
picture, "GZIP level 7" is selected.
You can encrypt and set a password for protection.
As all settings are completed and parts are added, you must save the .upkj project by clicking the appropriate
button.
After you save the project, you can modify it, or you can create a Package with the appropriate button.
IMPORTANT to know.
To avoid errors, all parts of the files and the project must be placed in the same folder.
When you open a Package with .udev added file, its settings are automatically applied. For example, you set
the RW Mode to "Partitions" with a list of partitions included. The working folder with partitions must be next
to the .upkg Package file.
When you open a Package containing a .txt file, its contents are logged. It could be a description.
If a picture has been added to the Package, it opens parallel to the program window. This may be an
illustration or a diagram.