====== DSFlash2 (DS Linker, N-Card et al.) programming ====== ===== Flash chips ===== Known types: - Hynix HY27UF081G2M - Samsung K9G8G08U0M ===== Commands ===== TODO: Figure out card timings. (Are all of them stored in RAM?) ==== ??? (00 08 aa bb 00 00 00 00) ==== - ''aabb'' - ''000'' ~ ''7FE'', in increments of 2 ==== ??? (66 00 00 00 00 00 00 00) ==== ==== ??? (86 00 00 00 00 00 00 00) ==== ==== ??? (87 08 aa bb ?? ?? ?? ??) ==== - ''aabb'' - ''000'' ~ ''7FF'' ==== ??? (C1 ?? ?? 00 00 00 00 00) ==== ==== NAND: Read other pins (C2 00 00 00 00 00 00 00) ==== Returns 4 bytes - repeated byte containing: - bits 0-6: ? - bit 7: READY/BUSY OUTPUT pin? ==== NAND: Read I/O pins 0-7 (D0 00 00 00 00 00 00 00) ==== Returns 4 bytes - repeated byte containing bits 0-7 on the I/O pins. Used for reading the status rgister. ==== NAND: Send command (D1 ?? ?? ?? ?? ?? ?? ??) ==== TODO ==== NAND: Read page (D2 aa bb cc dd 00 00 00) ==== - ''aabbccdd'': Address (MSB to LSB) Returns 512 bytes. ==== NAND: Write page (D3 00 FF FF FF FF FF pp) ==== Expects 512 bytes. - ''pp'': First byte of page (second byte onwards follow)