The i.MX23 is a highly capable IC, with excellent support in both 2.6.x and 3.x kernel. Olimex’s imx23-olinuxino boards, maxi, mini, micro and nano are popular developing and end-products boards with i.MX23 SoC. None of those boards support NAND flash as boot medium.
Aim of this project is to add NAND flash on imx23-olinuxino developing boards. The purpose of this project is to enhance quality of developing boards when they are used as learning tool or as end-product boards. To achieve this objective following action steps are required:
- Design and verify a ad-on NAND board for imx23-olinuxino developing board,
- Implement NAND support on u-boot for imx23 based boards
- Boot from NAND
1. Design a ad-on NAND board for imx23-olinuxino-maxi developing board
Schematic is shown on following picture:
Most of GPMI signals are available on extension connector, one is on UEXT connector (UEXT pin 9 – GPMI_WRN/SSP2_SCK) and one on board exposed as test point TP (TP – GPMI_RDY0). On board imx23-olinuxino-maxi needed to do following changes:
- Originally LAN RESET is done from pin GPMI_ALE alias PIN18/LCD_D17/LAN_RES. GPMI_ALE is also available on GPIO connector. Remove resistor R32 so GPMI_ALE is present only on connector. Bring wire connection from UEXT pin 8 – SSP2_MOSI alias GPMI_RDY1/ SSP2-CMD to NRESET.
- Originally GPMI_WRN/SSP2_SCK is used as SSP2-SCK for SPI interface . In modified board this signal is reserved for GPMI_WRN. Bring wire connection from UEXT pin 9 – GPMI_WRN/SSP2_SCK to GPMI_WRN on ad-on NAND board.
- Originally GPMI_RDY0 is brought only on test point TP on PCB board. In modified board this signal is used as GPMI_RDY0 . Bring wire connection from TP to GPMI_RDY0 on ad-on NAND board.
Modified board does not have SPI interface but have MMC card interface. This option is useful for booting board from MMC and testing functionality of new ad-on board with NAND flash on it. On final design are two posibilities:
- use SSP1 pins for SPI interface and no MMC card support, or
- use MMC card interface and no SPI.
Implement NAND support on u-boot for imx23 based boards
Current u-boot doesn’t support NAND on any board with i.MX23 SoC . We will post separate document with u-boot patches and procedure to build u-boot with NAND support for imx23 based boards. For now, some 1st test results:
Booting u-boot from SD card:
U-Boot 2013.10-rc3-00039-g9aae900-dirty (Oct 04 2013 – 20:52:47)
CPU: Freescale i.MX23 rev1.4 at 454 MHz
BOOT: SSP SD/MMC #0
DRAM: 64 MiB
NAND: 256 MiB
MMC: MXS MMC: 0
Net: Net Initialization Skipped
No ethernet found.
Hit any key to stop autoboot: 0
Read some info from NAND:
=> nand info
Device 0: nand0, sector size 128 KiB
Page size 2048 b
OOB size 64 b
Erase size 131072 b
Print partition data:
device nand0 <gpmi-nand>, # parts = 7
#: name size offset mask_flags
0: bootloader 0x00300000 0x00000000 1
1: environment 0x00080000 0x00300000 0
2: redundant-environment0x00080000 0x00380000 0
3: kernel 0x00400000 0x00400000 0
4: fdt 0x00020000 0x00800000 0
5: ramdisk 0x00800000 0x00820000 0
6: filesystem 0x0efe0000 0x01020000 0
active partition: nand0,0 – (bootloader) 0x00300000 @ 0x00000000
mtdids : nand0=gpmi-nand
We used same partition structure as m28evk with i.MX28. This structure will change on final version.
Erase partition :
=> nand erase.part environment
NAND erase.part: device 0 offset 0x300000, size 0x80000
Skipping bad block at 0x00300000
Skipping bad block at 0x00320000
Skipping bad block at 0x00340000
Skipping bad block at 0x00360000
Boot from NAND
<work in progress>