-
Notifications
You must be signed in to change notification settings - Fork 3
Chip conception
Currently, there are many different types of NAND Flash chips from different manufacturers and new ones are emerging all the time. As the JuliProg project is not commercial and I do it in my spare time, so maintaining a current list of supported chips is very difficult. It was decided the process of creating and testing new chips to "outsourcing" to JuliProg users themselves .This will fill the list of supported chips regardless of the author
I HOPE THIS IDEA WORKS :-)
Dependency Injection (DI) mechanism (MEF based) selected to attach the chip to Juliprog.
The chip is a set of dll (the [chip].dll and a set of dll with implementations of additional functionality). This principle allows very flexible adjustment of the chip itself, its behavior, its functionality.
To create a new or edit an existing one, you only need to edit the dll of the chip, all the other dlls are used as ready modules and used as is.
More details will be described
here
NAND Flash Chip (in the context of the JuliProg programmer) is a modular design that consists of required and optional sections.
To quickly create a new chip, just describe the Required section and add basic operations with the chip (Read, Block Erase, Page Program, Reset). This will be the basic version of the chip that can be fully tested and used. Anyone can supplement this chip with registers, additional memory areas, additional operations, and more. Thus releasing a new version of the chip
This section defines the main parameters of the chip, such as
Parameter | Value | Description |
---|---|---|
devManuf | "SAMSUNG" | chip manufacturer |
name | "K9F1G08U0D" | chip name |
width | Organization.x8 or x16 | chip width - 8 bit or 16 bit |
bytesPP | 0x0800 | page size - 2048 byte (2Kb) (for example) |
spareBytesPP | 0x40 | size Spare Area - 64 byte (for example) |
pagesPB | 0x40 | the number of pages per block - 64 (for example) |
bloksPLUN | 0x0400 | number of blocks in CE - 1024 (for example) |
LUNs | 0x01 | the amount of CE in the chip (for example) |
colAdrCycles | 0x02 | cycles for column addressing (for example) |
rowAdrCycles | 0x03 | cycles for row addressing (for example) |
These parameters are defined in the ChipAssembly class constructor. This is enough to mount the chip to the programmer. In this step, in the programmer window we get a fully formed structure of chips (CE, blocks, pages). However, we will not be able to perform any operations on these items.
This section forms a link to an external dll that performs basic chip operations (Read, Block Erase, Page Programe , Reset). It also joins other dll that implement chip registers (ID Register, Status Register, and others) and dll that implement their operations , interpretation etc .
As well as additional memory areas (OTP and others) and operations on these areas.