...
For Zynq UltraScale+
Code Block | ||
---|---|---|
| ||
CONFIG_SYS_MAX_NAND_DEVICE=y CONFIG_SYS_NAND_ONFI_DETECTION=y CONFIG_CMD_NAND_LOCK_UNLOCK=y CONFIG_CMD_NAND=y CONFIG_SYS_NAND_SELF_INIT=y CONFIG_NAND=y CONFIG_NAND_ARASAN=y |
For Zynq-7000
Code Block | ||
---|---|---|
| ||
CONFIG_NAND=y CONFIG_NAND_ZYNQ=y CONFIG_CMD_NAND_LOCK_UNLOCK=y CONFIG_SYS_MAX_NAND_DEVICE=y CONFIG_SYS_NAND_ONFI_DETECTION=y CONFIG_SYS_NAND_SELF_INIT=y |
Device Tree
For Zynq UltraScale+
Code Block | ||
---|---|---|
| ||
&&nand0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&&pinctrl_nand0_default>; arasan,has-mdma; nand@0 { reg = <0x0>; #address-cells = <0x2>; #size-cells = <0x1>; partition@0 { /* for testing purpose */ label = "nand-fsbl-uboot"; reg = <0x0 0x0 0x400000>; }; partition@1 { /* for testing purpose */ label = "nand-linux"; reg = <0x0 0x400000 0x1400000>; }; partition@2 { /* for testing purpose */ label = "nand-device-tree"; reg = <0x0 0x1800000 0x400000>; }; partition@3 { /* for testing purpose */ label = "nand-rootfs"; reg = <0x0 0x1c00000 0x1400000>; }; partition@4 { /* for testing purpose */ label = "nand-bitstream"; reg = <0x0 0x3000000 0x400000>; }; partition@5 { /* for testing purpose */ label = "nand-misc"; reg = <0x0 0x3400000 0xfcc00000>; }; }; nand@1 { reg = <0x1>; #address-cells = <0x2>; #size-cells = <0x1>; partition@0 { /* for testing purpose */ label = "nand1-fsbl-uboot"; reg = <0x0 0x0 0x400000>; }; partition@1 { /* for testing purpose */ label = "nand1-linux"; reg = <0x0 0x400000 0x1400000>; }; partition@2 { /* for testing purpose */ label = "nand1-device-tree"; reg = <0x0 0x1800000 0x400000>; }; partition@3 { /* for testing purpose */ label = "nand1-rootfs"; reg = <0x0 0x1c00000 0x1400000>; }; partition@4 { /* for testing purpose */ label = "nand1-bitstream"; reg = <0x0 0x3000000 0x400000>; }; partition@5 { /* for testing purpose */ label = "nand1-misc"; reg = <0x0 0x3400000 0xfcc00000>; }; }; }; |
For Zynq-7000
Code Block | ||
---|---|---|
| ||
&&nand0 {
status = "okay";
arm,nand-cycle-t0 = <0x4>;
arm,nand-cycle-t1 = <0x4>;
arm,nand-cycle-t2 = <0x1>;
arm,nand-cycle-t3 = <0x2>;
arm,nand-cycle-t4 = <0x2>;
arm,nand-cycle-t5 = <0x2>;
arm,nand-cycle-t6 = <0x4>;
partition@nand-fsbl-uboot {
label = "nand-fsbl-uboot";
reg = <0x0 0x100000>;
};
partition@nand-linux {
label = "nand-linux";
reg = <0x100000 0x500000>;
};
partition@nand-device-tree {
label = "nand-device-tree";
reg = <0x600000 0x20000>;
};
partition@nand-rootfs {
label = "nand-rootfs";
reg = <0x620000 0x5E0000>;
};
partition@nand-bitstream {
label = "nand-bitstream";
reg = <0xC00000 0x400000>;
}; |
Test Procedure
Code Block | ||
---|---|---|
| ||
Zynq> nand info nand info Device 0: nand0, sector size 128 KiB Page size 2048 b OOB size 64 b Erase size 131072 b subpagesize 512 b options 0x00000000 bbt options 0x00028000 Zynq> nand erase 0 0x20000 NAND erase: device 0 offset 0x0, size 0x20000 Erasing at 0x0 -- 100% complete. OK Zynq> nand write 100000 0 0x20000 NAND write: device 0 offset 0x0, size 0x20000 131072 bytes written: OK Zynq> nand read 200000 0 0x20000 NAND read: device 0 offset 0x0, size 0x20000 131072 bytes read: OK Zynq> cmp.b 100000 200000 0x20000 Total of 131072 byte(s) were the same Zynq> |
Features
- 8/16-bit I/O width with one chip select signal
- ONFI specification 1.0
- 16-word read and 16-word write data FIFOs
- 8-word command FIFO
- Programmable I/O cycle timing
- ECC assist