Twitter E-mail RSS


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:

RESET LAN Modification

RESET LAN Modification

  • 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
DRAM:  64 MiB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
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:

=> mtdparts

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
mtdparts: mtdparts=gpmi-nand:3m(bootloader)ro,512k(environment),512k(redundant-)=>


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>

Home imx23-g-NAND imx23-g-NAND