Available NAND flash and accessing it from Linux


#1

Hello.

How much NAND flash is actually present and available on the OrangePi I96 boards? I have ‘Ubuntu 16.04.5 LTS’ installed on an SDcard. Looking at /proc/partitions shows only /dev/mmcblk0p1 and mmcblk0p2, which seem to match the partitions on the SDCard. And ‘dmesg’ has ‘No NAND device found’. The RDA8810PL datasheet mentions of ‘4Gb 8bit NAND flash’. How do I access this under Linux? Attempt a cursory analysis I also modprobe’d and installed all the available modules on ‘/lib/modules/3.10.62-OrangePi_i96+’.

Also, the [RDA8810PL datasheet](http://www.rdamicro.com/upload/2016030304473558.pdf) mentions of 'Integrated 2GB LPDDR2', whereas /proc/meminfo shows only 256MB. **How do I explain this difference?**

The output of uboot just before booting Linux is as below.

RDA8810 Boot_ROM V1.6
HW_CFG: 4286
SW_CFG: 0000
Load EMMC
Open eMMC
EMMC OCR timeout
Open eMMC card Failed
Load EMMC Fail
Load SD
Open SD card
mcd_Open
Card is SDHC
Inserted Card is a SD card
mcd_Open Done
Loading image from SD card ................................................................................................Done
Check Image ... Done
Run ...
Init Clock ...
Clock config ver: 1.0
PMU vbuck1 = 9, vbuck3 = 10
setup ddr vtt to 1
setup ddr vtt to 1
setup ddr vtt to 1
setup ddr vtt to 1
setup ddr vtt to 1
setup ddr vtt to 1
setup ddr vtt to 1
setup ddr vtt to 1
setup ddr vtt to 1


rda2 stand for dqs_prsel_preset
rda2=0 rda2=1 rda2=2 rda2=3 rda2=4 rda2=5 rda2=6 rda2=7
   R      R      R      R      *      *      R      R
Please check the result and choose the best one
 final rda2= 0, rda2_old = 2
setup ddr vtt to 1
pll freq CPU = 988
pll freq BUS = 800
pll freq MEM = 260
Init DDR, flag = 0x0002, para = 0x00001338
32bit dll-on Mode ...
ddr2 phy init done!
format ctrl value: 22000202
address ctrl value: 30301
decode ctrl value: 10
dram init done ...
Done
SETTING SECURITY CONTEXT
Board security: Not present
Init emmc ...
MMC: registered mmc interface 0
Spl init emmc first, use default zero mclk adj and inv.
MMC: registered mmc interface 1
raise: Signal # 8 caught
ERROR: v7_dcache_inval_range - stop address is not aligned - 0x0010fd48
-------------MMC information-----------
Manufacturer ID: 27,  Name: Unknown
OEM: 5048
Tran Speed: 25000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: Bus Width: 4-bit
-----------------------------------------
boot_mmc mfr id = 27
EMMC boot ...
Check Image ...Verify image:
 Done


U-Boot 2012.04.442-rel5.0.2-gac25114-dirty (Jul 06 2017 - 16:49:54)

RDA8810 SoC
Board: RDA8810
DRAM:  236 MiB
CPU: enable instruction caches
CPU: enable data caches
CPU: enable neon
CPU:   p15-c1-c1 (NSACR): 0x00000000 -> 0x00000c00
CPU:   p15-c1-c0 (CPACR): 0x00000000 -> 0x00f00000
NAND:  metal 28 hwcfg 4286, use eMMC, skip nand init
0 MiB
MMC:   MMC: registered mmc interface 0
Cannot find the emmc corresponding mclk adj and inv.Now use default zero. Please add it
MMC: registered mmc interface 1
ERROR: v7_dcache_inval_range - stop address is not aligned - 0x8dae5e88
-------------MMC information-----------
Manufacturer ID: 27,  Name: Unknown
OEM: 5048
Tran Speed: 25000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: Bus Width: 4-bit
-----------------------------------------
MMC: 0, MMC: 1
Using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0

#2

Hello.

How much NAND flash is actually present and available on the OrangePi I96 boards? I have ‘Ubuntu 16.04.5 LTS’ installed on an SDcard. Looking at /proc/partitions shows only /dev/mmcblk0p1 and mmcblk0p2, which seem to match the partitions on the SDCard. And ‘dmesg’ has ‘No NAND device found’. The RDA8810PL datasheet mentions of ‘4Gb 8bit NAND flash’. How do I access this under Linux? Attempt a cursory analysis I also modprobe’d and installed all the available modules on ‘/lib/modules/3.10.62-OrangePi_i96+’.

I’ve not tried it myself but perhaps take a look at this article (and
the underlying blog if you can read Spanish):

Also, the RDA8810PL datasheet mentions of ‘Integrated 2GB LPDDR2’, whereas /proc/meminfo shows only 256MB. How do I explain this difference?

Be aware that some people use case to distinguish between Gb(its) and G
(ytes). Basically hardware designers often think of memories in terms
of bits rather than bytes. Thus in this case 2Gb == 256MB (and in the
case of the NAND, 4Gb == 512MB).