Giter Club home page Giter Club logo

nandreader_ftdi's Introduction

Universal Nand reader for 8 bit NAND memories using FTDI FT2223H.

Based on http://spritesmods.com/?art=ftdinand code and ideas.

Heavily modified to support universally detecting and dumping nands using Linux Kernel source code additions.

Important

Write support disabled

Warning

Read Observed about observed anomalies.

(c) 2014 B. Kerler

with nord-data-recall fixes/improvements:

  1. Diagnostic function that allows to perform hardware test. It is available by using -d parameter. There are two ways to testing. The one is to execute all tests one by one, to accomplish that use only the -d parameter. Another way is to do specific single test adding number to -d parameter. For example -d 15 to execute test of IORDY pin.

    Please be warned that FTDI chip may restart or react abnormally when pins are touched with bare hands. Because of this, tests may sometimes fails or the application may hang or fail with an error. In this case restarting the application should help as it re-initialize the FTDI chip.

    If using osciloscope or voltmeter ~2.0V might appear on the output pin before ~0.5Hz signal appears with amplitude 3.3V. It is caused by internal pull-up resistors in the FTDI chip which looks it they do not pull up to the 3.3V rail.

  2. Selecting specific FTDI device. Raise condition may occur when the FTDI device is plugged for first time and Channel B installed before Channel A. It may also happend when there are more FTDI devices connected to computer. In this case application may connect to wrong device or channel B and further communication with NAND chip will fail. To select specific FTDI channel or device use -f parameter for example -f 1 to select device #1. To list FTDI devices use diagnostic function.

    Parameter also supported in diagnostic mode, but diagnostic mode connects independently to channels and by default assumes channel B is after channel A. If opening channel B fails, application will try also alternative order (channel B before channel A). There is no option to manually select specific FTDI device for channel B during diagnostic mode.

  3. Nice progress indicator showing blocks, percentages and throughput. Progress indicator is refreshed every 0.5s to speed up performace and reduce terminal blinking.

  4. Selecting the range of pages. It is possible to select single page or continous range of pages for read and verify operation (technically also for write, if it will be fully implemented). To choose one page user parameter -p page_number, to select range -p first_page:last_page. If the selected last_page is greater than number of pages in NAND memory, application will reduce the range with warning. If the selected last_page is -1 application will silenty reduce range. Using exact same page number as first_page and last_page will result in one page being read.

  5. Handling communication in smaller chunks with configurable size. On some computers the FTDI chip has tendency to restart upon reception of large burst of data. From application perspective this could be observed as random hang or return with code 1167 during FT_Write. Suspected root cause is USB communication errors when sending large continuous burst. The -c parameter gives ability to configure size of single chunk. For example the application to read the page size 2048 bytes, sends 4098 bytes (1+2x2048+1), then reads 2048 bytes (FTDI@60MHz). When small chunks are used, application will perform many smaller write and read operations per page. For example -c 8, will result in transferring page in 8 byte chunks, which means sending 18 bytes (1+2x8+1), then receiving 8 bytes, and repeating to get entire page. Using very small chunks brings a large throughtput penalty, but allows the application to be used on some computers. On some computers using chunks size 256 bytes resulted in a 5% increase in overal througput. Using chunks larger than the page size does no effect, no more than one page can be transferred in one chunk.

  6. Printing raw ID bytes read from NAND memory.

  7. Added support for ONFI data. The ONFI section can be read to a file and verified with the file using legacy commands -r and -v with selecting region onfi (option -t onfi). Also can be presented in human-readable form using the -i (identify chip) command. Alternatively an existing file containing ONFI information can be presented in human-readable form, even NAND Reader, using using command -show_onfi filename.

  8. Option to select NAND chip geometry from command line. If the ID read from the NAND memory does not match with none of hardcoded list, application does not know how big is memory or how to address memory. Sometimes an ID from hardcoded list matches a NAND memory with a completly different geometry. To handle such cases, the -g parameter was introduced requiring an argument in format: pages:addressing:page_mode:main_size:spare_size, where:
    pages is the total number of pages
    addressing is the addressing format, for example "LPsimple5B"
    main_size is the size of main part of page (in bytes)
    spare_size is the size of spare parta of page (in bytes)
    Read Geometry how to use it

  9. Printing information about the process duration in days, hours, minutes and seconds.

nandreader_ftdi's People

Contributors

bkerler avatar grosshei avatar nord-data-recall avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nandreader_ftdi's Issues

How to fix

When i try to read a chip with my pre assembled ftdi2232h I get the following error.

C:\Users\Miguel Oliveira\Desktop\NANDReader_FTDI-master\Release>NandTool.exe -i
FT2232H-based NAND readerError at open: 0

I can read the chips normally the way Jeong Wook presented in his pdf.

What am I missing ?

Typo?!

Hi! Great project!

Is "FTDI2323H" a typo? I saw it in the repo description and the README. I don't know any "FTDI2323H". I know there are:

  • FTDI FT232H
  • FTDI FT2232H

Can this tool be used with breakout boards like Adafruit's FT232H board?

'Make' error

Hello,
I am having issues with code compiling , I have installed libftdi1,
It's located
libftdi1: /usr/lib/libftdi1.so /usr/lib/libftdi1.a /usr/include/libftdi1
but still getting error like:

g++ -ggdb -c -o main.o main.cpp
In file included from main.cpp:27:0:
FtdiNand.hpp:4:10: fatal error: ftdi.h: No such file or directory
#include <ftdi.h>
^~~~~~~~
compilation terminated.
: recipe for target 'main.o' failed
make: *** [main.o] Error 1

Kindly suggest

Thanks & Regards
Asmita

Receiving "all fine"-error when trying to write in 12Hz

Hi!

Thanks a billion for your effort on this !
I have set up everything correctly and measured all pin-connections via ohmmeter, and NandTool works regarding identification of the NAND chip, and it seems it correctly reads in slow-mode also.
(Shows FF-Values for regions I had tried to erase with DumpFlash Tool before.)
In 60 MHz mode, I get strange results with 00 and FF values instead, so I suppose this doesnt work correctly (due to my board, the nand or whatever). When I try to write in fastmode it seems to work at first, but somewhen interrupts with "file: Resource temporarily unavailable" - error. In 12MHz mode it doesn`t start at all with "Error at writing command: all fine".
I got to admit I am experiencing problems with DumpFlash also, so I rather expect some failure in my setup. Perhaps you could help me out with the following questions I have?

I use a UM-FT2232H developement board from ELV.de .. "should" be a normal FT2232H Mini dev board with all pinouts.If the schematic the vendor included is correct , LEDs should not interfere (connected to unused I/O-lines). Is there any specific firmware setting to obey (mA settings for GPIO-Pins for example, overall power consumption etc.)? If I am not mistaken, I saw that NandTool enables the correct mode in libftdi itself ?
Second question is : I am unable to build the included libftdi1-1.0 lib. It bails out with
"ftdi.h:392:24: Fehler: Feld »time« als Funktion deklariert" ( I assumed you speak german also).. may 1.1 or 1.2 versions (that I compiled successfully and tested until now) be the source for my problems?

Thanks a lot in advance for any further info you could eventually provide,
Viele Grüße,
Oliver

PS : Just realized that its only the version of libftdi1-1.0 in your git repo that fails to build. The tarball from the ftdi page of that version works. So I will now try to compare ;D

hex data in dmp is odd

I have the NANDReader and TSOP48 socket connected and working. The chip I have in the socket gets properly identified with the ./NandTool -i command. The thing that I find odd is that when I run the ./NandTool -r test.dmp command, the hex values in the file are mostly 00. I would say that there is probably about 1 hex value that isn't 00 to about 50 that are 00. I was curious as to if I had fried the chip - though my chip-offs were pretty straight forward and didn't sit under the IR station for more than 7s. When I run ./NandTool -v test.dmp it errors and recognizes a different value for every byte. Any ideas as to why this is? I can provide screenshots if need be.

one propose

It is recommended to add, reset mechanism, sendCMD ((char) 0xFF)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.