[Tiptoi-hw] Nochmals-Frage bez. NAND-Access

Sven A. Huerlimann sh at sighup.ch
So Jan 3 18:20:06 CET 2021


Servus!

On 03.01.21 12:35, Matthias Weber via tiptoi-hw wrote:
>
> Hallo!
>
> Sven A. Huerlimann via tiptoi-hw wrote:
>> Hallo zusammen, ein gutes Neues!
>>
>> Ich hab nochmals ein Verständnisproblem beim NAND Controller, ev. kann
>> mir da jemand weiterhelfen:
>>
>> Ich hab ein halbwegs brauchbares Fundament für die NFC-Emulation. Ein
>> ungefähres Gespür für die Register und den Ablauf einer Flash-Read
>> Operation.
>
> Uh, war kurz verwirrt. NFC = NAND Flash Controller?
>
> Für mich hat sich NFC als Near Field Communication eingebrannt.
>
Genau.. Bei mir eigentlich auch, aber irgendwann hab ich kapituliert und
das Anyka-Wording übernommen.
>
>> Was ich jetzt sehe, ist das die FW folgendes macht:
>>
>> - NAND-Reset (0xff, no cycles)
>>
>> - NAND-Read (0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30)
>>
>> - und dann ein weiteres Command mit dem "Continue" bit gesetzt, aber nur
>> "ein" write ins command register.
>
> Kannst du kurz nochmal erläutern, was du mit der Beschreibung in den
> Klammern meinst? Beziehst du dich immer auf das Kommando?
>
Jup. Der NFC hat ein Register an 0x0404a000 (nennen wir es mal
NFC_COMMAND) und darüber (0ffset 0x04 - 0x1C) weitere Register im
opensource-treiber nicht explizit benannt sind, aber offenbar die
weiteren Cycle abbilden.

Ein Read-Cycle mit Addresse schreibt zum Beispiel (Sorry fürs Spamen und
die etwas infantile Formatierung):

nfc status write
Command valid bit set
Chipselect asserted
NFC_CTRL_REG_CE_SAVE_BIT asserted
nfc status
nfc status write
Start of Command Cyce ///////////////////////////////////////////////
NFC_COMMAND write (cycle 0): 00000064
NFC_CMD_REG_CMD_BIT write
WRITE ENABLE
COMMAND LATCH ENABLE
ADDRESSS LATCH DISABLE
NFC_CMD_REG_CMD_CONF
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Commmand Cycle
NFC_COMMAND write (cycle 1): 00000062
NFC_CMD_REG_CMD_BIT write
WRITE ENABLE
COMMAND LATCH DISABLE
ADDRESSS LATCH ENABLE
NFC_CMD_REG_ADD_CONF
========================================================
00000062
NFC_COMMAND write (cycle 2): 00000062
NFC_CMD_REG_CMD_BIT write
WRITE ENABLE
COMMAND LATCH DISABLE
ADDRESSS LATCH ENABLE
NFC_CMD_REG_ADD_CONF
========================================================
00000062
NFC_COMMAND write (cycle 3): 00000062
NFC_CMD_REG_CMD_BIT write
WRITE ENABLE
COMMAND LATCH DISABLE
ADDRESSS LATCH ENABLE
NFC_CMD_REG_ADD_CONF
========================================================
00000062
NFC_COMMAND write (cycle 4): 00000062
NFC_CMD_REG_CMD_BIT write
WRITE ENABLE
COMMAND LATCH DISABLE
ADDRESSS LATCH ENABLE
NFC_CMD_REG_ADD_CONF
========================================================
00000062
NFC_COMMAND write (cycle 5): 00000062
NFC_CMD_REG_CMD_BIT write
WRITE ENABLE
COMMAND LATCH DISABLE
ADDRESSS LATCH ENABLE
NFC_CMD_REG_ADD_CONF
========================================================
00000062
NFC_COMMAND write (cycle 6): 00018064
NFC_CMD_REG_INFO_POS write: 0030
NFC_CMD_REG_CMD_BIT write
WRITE ENABLE
COMMAND LATCH ENABLE
ADDRESSS LATCH DISABLE
NFC_CMD_REG_CMD_CONF
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
NFC_COMMAND write (cycle 7): 0001dc01
NFC_CMD_REG_INFO_POS write: 003b
NFC_CMD_REG_DELAY_BIT write
WRTIE DISABLE
COMMAND LATCH DISABLE
ADDRESSS LATCH DISABLE
NFC_CMD_REG_DELAY_BIT
-------------------------------------------------------
EEEENNNNNDDDD of TRANSACTION oooooooooooooooooooooooooooooooooooo
NFC_CMD_REG_LAST_BIT write
End Cycle
Got NAND command: 00, Address: 00, 00, 00, 00, 00, End: 30, Delay: 3b
EEEENNNNNDDDD of TRANSACTION oooooooooooooooooooooooooooooooooooo

> Ich habe gerade das Datenblatt eines HY27UF084G2B und
> https://github.com/maehw/ftdi-nand-flash-reader/blob/master/bitbang_ft2232.c
> befragt.
>
> 0x00 0x30 ist ein Page Read (READ1) Kommando. Zwischen 0x00 und 0x30
> kommen 5 Adress-Bytes (2x Spalte, 3x Zeile).
>
> Und dann werden bei einer Page wahrscheinlich 2112 Bytes am Stück
> gelesen. Vielleicht siehst du das und ein interner Puffer füllt sich?
>
Ok. Hier ist das Problem, dass ich ja den Puffer füllen muss :)

Ich denk ich schaufel einfach mal 2112 Bytes und sehe was passiert.

>> Meine naive Annahme: Read-Cycle setzt mal auf (Startadresse, etc. etc.)
>> und danach kann mit diesem "Continue" einfach die nächste
>> Page?Block?Sector?Huga abgefragt werden?
>
> Bei SPI-Flash kenne ich das, dass man keine weiteren Adressen explizit
> angeben muss. Hier könnte ich mir vorstellen, dass der NAND Flash
> Controller einen Autoinkrement durchführt.
>
Was wird dann inkrementiert? Zeile? Spalte? Da magelts bei mir stark an
Durchblick.
>
> Gruß
> Matthias
Gruss Sven
>
> _______________________________________________
> tiptoi-hw mailing list
> tiptoi-hw at lists.nomeata.de
> https://lists.nomeata.de/mailman/listinfo/tiptoi-hw
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://lists.nomeata.de/pipermail/tiptoi-hw/attachments/20210103/5bfa8b35/attachment.htm>


Mehr Informationen über die Mailingliste tiptoi-hw