I've been using U-boot nand write.trimffs command to flash rootfs.ubifs image to the NAND flash of i.MX6DL.
We have decided to switch to MfgTool for production. The problem is that when there are some bad blocks on NAND of i.MX6, MfgTool has issues during write and the final written image is corrupted. The same i.MX6 module can be programmed correctly by u-boot.
Here is the profile I am using:
<LIST name="TX6-LINUX-NAND">
<CMD state="BootStrap" type="find" body="Recovery" timeout="180"/>
<!--U-Boot update and environment setup: -->
<CMD state="BootStrap" type="boot" body="Recovery" file="work/u-boot_mfg.bin" >Loading mfg U-Boot.</CMD>
<CMD state="BootStrap" type="load" file="work/mfg.env" address="0x10500000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading mfg U-Boot parameters.</CMD>
<CMD state="BootStrap" type="load" file="files/linux/u-boot-tx6u-80x0.bin" address="0x10600000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading U-Boot image.</CMD>
<CMD state="BootStrap" type="load" file="files/linux/u-boot.env" address="0x10700000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading U-Boot environment.</CMD>
<CMD state="BootStrap" type="load" file="files/linux/imx6dl-tx6u-80xx.dtb" address="0x10800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading dtb.</CMD>
<CMD state="BootStrap" type="load" file="files/mfg/uImage-mfg" address="0x10900000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading mfg Linux kernel.</CMD>
<CMD state="BootStrap" type="load" file="files/mfg/initramfs.cpio.gz.uboot" address="0x11800000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading initramfs.</CMD>
<CMD state="BootStrap" type="load" file="files/linux/uImage" address="0x12000000"
loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading kernel image.</CMD>
<CMD state="BootStrap" type="jump" > Boot... </CMD>
<CMD state="BootStrap" type="find" body="Updater" timeout="180"/>
<CMD state="Updater" type="push" body="pipe dd of=/dev/mtdblock2" file="files/linux/uImage">Write kernel image</CMD>
<CMD state="Updater" type="push" body="frf">flush the memory.</CMD>
<CMD state="Updater" type="push" body="pipe dd of=/dev/mtdblock3" file="files/linux/rootfs.image">Write rootfs image</CMD>
<CMD state="Updater" type="push" body="frf">flush the memory.</CMD>
<CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>
</LIST>
Here is the module output on serial debug during flashing by MfgTool (Note mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed error and its following errors):
U-Boot 2013.07-00787-g36ed10c (Mar 24 2015 - 16:03:58)
CPU: Freescale i.MX6DL rev1.1 at 792 MHz
Reset cause: POR
Board: Ka-Ro TX6U-8010
I2C: ready
DRAM: 1 GiB
VDDCORE set to 1421mV
VDDSOC set to 1421mV
NAND: 128 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Using default environment
Temperature: 38 C, calibration data 0x58f50669
CPU clock set to 792.000 MHz
Baseboard: stk5-v3
MAC addr from fuse: 00:0c:c6:7a:39:b5
Net: FEC
Hit any key to stop autoboot: 0
## Warning: defaulting to text format
## Info: input data size = 434 = 0x1B2
NAND erase.chip: device 0 whole chip
Skipping bad block at 0x00620000
Skipping bad block at 0x03d00000
Skipping bad block at 0x04b60000
Skipping bad block at 0x07f80000
Skipping bad block at 0x07fa0000
Skipping bad block at 0x07fc0000
Skipping bad block at 0x07fe0000
OK
Writing FCB to block 0 @ 00000000
Programming U-Boot image from 10600000 to block 1 @ 00020000
Erasing flash @ 00020000..0011ffff
Programming flash @ 00020000..0009ffff from 10600000
## Warning: defaulting to text format
## Info: input data size = 630 = 0x276
Saving Environment to NAND...
Erasing Nand...
Erasing at 0x160000 -- 100% complete.
Writing to Nand... done
NAND erase.part: device 0 offset 0x7f00000, size 0x80000
Erasing at 0x7f60000 -- 100% complete.
OK
NAND write: device 0 offset 0x7f00000, size 0xa000
40960 bytes written: OK
## Booting kernel from Legacy Image at 10900000 ...
Image Name: Linux-3.16.0-01083-g9ed3598
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 5159576 Bytes = 4.9 MiB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 11800000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4545835 Bytes = 4.3 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 10800000
Booting using the fdt blob at 0x10800000
Loading Kernel Image ... OK
Loading Ramdisk to 4f2ed000, end 4f742d2b ... OK
Loading Device Tree to 4f2e0000, end 4f2ec535 ... OK
Starting kernel ...
Booting Linux on physical CPU 0x0
Linux version 3.16.0-01083-g9ed3598 (support@karo-electronics.de) (gcc version 4.7.2 (GCC) ) #2 SMP Wed Mar 18 14:55:58 CET 2015
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: Ka-Ro electronics TX6U-801x/-803x Module
Memory policy: Data cache writealloc
PERCPU: Embedded 7 pages/cpu @bf7cb000 s8192 r8192 d12288 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096
Kernel command line: console=ttymxc0,115200 rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber=""
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1025364K/1048576K available (6488K kernel code, 292K rwdata, 2036K rodata, 316K init, 397K bss, 23212K reserved)
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xffe00000 (2048 kB)
vmalloc : 0xc0800000 - 0xff000000 (1000 MB)
lowmem : 0x80000000 - 0xc0000000 (1024 MB)
modules : 0x7f000000 - 0x80000000 ( 16 MB)
.text : 0x80008000 - 0x8085b338 (8525 kB)
.init : 0x8085c000 - 0x808ab000 ( 316 kB)
.data : 0x808ac000 - 0x808f5060 ( 293 kB)
.bss : 0x808f5068 - 0x8095882c ( 398 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
Hierarchical RCU implementation.
RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
NR_IRQS:16 nr_irqs:16 16
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 ID prefetch enabled, offset 1 lines
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 16 ways, 512 kB
L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76050001
Switching to timer-based delay loop
sched_clock: 32 bits at 66MHz, resolution 15ns, wraps every 65075262448ns
Console: colour dummy device 80x30
Calibrating delay loop (skipped), value calculated using timer frequency.. 132.00 BogoMIPS (lpj=660000)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x106285c0 - 0x10628618
CPU1: Booted secondary processor
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
Brought up 2 CPUs
SMP: Total of 2 processors activated.
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
pinctrl core: initialized pinctrl subsystem
regulator-dummy: no parameters
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
cpuidle: using governor menu
CPU identified as i.MX6DL, silicon rev 1.1
Use WDOG1 as reset source
vdd1p1: 800 <--> 1375 mV at 1100 mV
vdd3p0: 2800 <--> 3150 mV at 3000 mV
vdd2p5: 2000 <--> 2750 mV at 2400 mV
vddarm: 725 <--> 1450 mV at 1150 mV
vddpu: 725 <--> 1450 mV at 1150 mV
vddsoc: 725 <--> 1450 mV at 1200 mV
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
imx6dl-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver
mxs-dma 110000.dma-apbh: initialized
3V3_ETN: 3300 mV
2V5: 2500 mV
3V3: 3300 mV
LCD0 POWER: 3300 mV
LCD1 POWER: 3300 mV
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
i2c i2c-0: IMX I2C adapter registered
i2c i2c-2: IMX I2C adapter registered
Linux video capture interface: v2.00
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
imx-ipuv3 2400000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
Advanced Linux Sound Architecture Driver Initialized.
cfg80211: Calling CRDA to update world regulatory domain
Switched to clocksource mxc_timer1
NET: Registered protocol family 2
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP: reno registered
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Trying to unpack rootfs image as initramfs...
Freeing initrd memory: 4436K (bf2ed000 - bf742000)
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
futex hash table entries: 512 (order: 3, 32768 bytes)
VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
NFS: Registering the id_resolver key type
Key type id_resolver registered
Key type id_legacy registered
jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
fuse init (API version 7.23)
msgmni has been set to 2011
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
imx-weim 21b8000.weim: Driver registered.
imx-pwm 2084000.pwm: prop pinctrl-0 index 0 invalid phandle
mxc_sdc_fb fb@2: register mxc display driver lcd
Console: switching to colour frame buffer device 80x30
imx-sdma 20ec000.sdma: initialized
imx-sdma 20ec000.sdma: loaded firmware 1.1
Serial: IMX driver
2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 58, base_baud = 5000000) is a IMX
console [ttymxc0] enabled
21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 59, base_baud = 5000000) is a IMX
imx-uart 21ec000.serial: prop pinctrl-0 index 0 invalid phandle
21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 60, base_baud = 5000000) is a IMX
serial: Freescale lpuart driver
[drm] Initialized drm 1.1.0 20060810
[drm] Initialized vivante 1.0.0 20120216 on minor 0
brd: module loaded
loop: module loaded
nand: device found, Manufacturer ID: 0xec, Chip ID: 0xf1
nand: Samsung NAND 128MiB 3,3V 8-bit
nand: 128MiB, SLC, page size: 2048, OOB size: 64
Bad block table found at page 65472, version 0x01
Bad block table found at page 65408, version 0x01
nand_read_bbt: bad block at 0x000000620000
nand_read_bbt: bad block at 0x000003d00000
nand_read_bbt: bad block at 0x000004b60000
6 ofpart partitions found on MTD device gpmi-nand
Creating 6 MTD partitions on "gpmi-nand":
0x000000020000-0x000000120000 : "u-boot"
0x000000120000-0x000000180000 : "env"
0x000000180000-0x000000780000 : "linux"
0x000000780000-0x000007f00000 : "rootfs"
0x000007f00000-0x000007f80000 : "dtb"
0x000007f80000-0x000008000000 : "bbt"
gpmi-nand 112000.gpmi-nand: driver registered.
libphy: fec_enet_mii_bus: probed
fec 2188000.ethernet eth0: registered PHC device 0
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
usbcore: registered new interface driver usb-storage
/soc/aips-bus@02100000/usb@02184200: could not find phandle
2184200.usb supply vbus not found, using dummy regulator
ci_hdrc ci_hdrc.1: EHCI Host Controller
ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
mousedev: PS/2 mouse device common for all mice
input: 20b8000.kpp as /devices/soc0/soc/2000000.aips-bus/20b8000.kpp/input/input0
snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc0
i2c /dev entries driver
mxc_v4l2_output v4l2_out: V4L2 device registered as video16
mxc_v4l2_output v4l2_out: V4L2 device registered as video17
imx2-wdt 20bc000.wdog: timeout 60 sec (nowayout=0)
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
mmc0: no vqmmc regulator found
mmc0: no vmmc regulator found
mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA
mmc1: no vqmmc regulator found
mmc1: no vmmc regulator found
mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
galcore: clk_get vg clock failed, disable vg!
Galcore version 5.0.11.25762
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
sgtl5000 2-000a: sgtl5000 revision 0x11
/soc/aips-bus@02000000/spba-bus@02000000/ssi@02028000: could not get #dma-cells for /soc/aips-bus@02000000/iomuxc@020e0000/imx6qdl-tx6/ipu1grp-3
/soc/aips-bus@02000000/spba-bus@02000000/ssi@02028000: could not get #dma-cells for /soc/aips-bus@02000000/iomuxc@020e0000/imx6qdl-tx6/ipu1grp-3
2-000a: 1200 mV normal
sgtl5000 2-000a: Using internal LDO instead of VDDD
fsl-ssi-dai 2028000.ssi: Missing dma channel for stream: 0
fsl-ssi-dai 2028000.ssi: ASoC: pcm constructor failed: -22
imx-sgtl5000 sound: ASoC: can't create pcm HiFi :-22
imx-sgtl5000 sound: ASoC: failed to instantiate card -22
------------[ cut here ]------------
WARNING: CPU: 0 PID: 1 at /home/oliver/projects/kernel/tx6-2015-02-27/drivers/regulator/core.c:3601 regulator_unregister+0xc8/0xd4()
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.16.0-01083-g9ed3598 #2
[<8001447c>] (unwind_backtrace) from [<80011184>] (show_stack+0x10/0x14)
[<80011184>] (show_stack) from [<80621dec>] (dump_stack+0x74/0x90)
[<80621dec>] (dump_stack) from [<8002308c>] (warn_slowpath_common+0x64/0x88)
[<8002308c>] (warn_slowpath_common) from [<800230cc>] (warn_slowpath_null+0x1c/0x24)
[<800230cc>] (warn_slowpath_null) from [<802b55e0>] (regulator_unregister+0xc8/0xd4)
[<802b55e0>] (regulator_unregister) from [<804cc560>] (ldo_regulator_remove+0x20/0x38)
[<804cc560>] (ldo_regulator_remove) from [<804cc5a4>] (sgtl5000_remove+0x2c/0x34)
[<804cc5a4>] (sgtl5000_remove) from [<804bd510>] (soc_remove_codec+0x1c/0x88)
[<804bd510>] (soc_remove_codec) from [<804bd8d0>] (soc_remove_dai_links+0x2d8/0x324)
[<804bd8d0>] (soc_remove_dai_links) from [<804c0490>] (snd_soc_register_card+0x9b0/0x1324)
[<804c0490>] (snd_soc_register_card) from [<804cb274>] (devm_snd_soc_register_card+0x2c/0x68)
[<804cb274>] (devm_snd_soc_register_card) from [<804d4474>] (imx_sgtl5000_probe+0x244/0x2d0)
[<804d4474>] (imx_sgtl5000_probe) from [<802fd888>] (platform_drv_probe+0x18/0x48)
[<802fd888>] (platform_drv_probe) from [<802fc548>] (driver_probe_device+0x10c/0x22c)
[<802fc548>] (driver_probe_device) from [<802fc6f4>] (__driver_attach+0x8c/0x90)
[<802fc6f4>] (__driver_attach) from [<802fad98>] (bus_for_each_dev+0x54/0x88)
[<802fad98>] (bus_for_each_dev) from [<802fbd4c>] (bus_add_driver+0xd4/0x1d0)
[<802fbd4c>] (bus_add_driver) from [<802fcd34>] (driver_register+0x78/0xf4)
[<802fcd34>] (driver_register) from [<800088c4>] (do_one_initcall+0x80/0x1b8)
[<800088c4>] (do_one_initcall) from [<8085cc98>] (kernel_init_freeable+0xfc/0x1c8)
[<8085cc98>] (kernel_init_freeable) from [<8061dce4>] (kernel_init+0x8/0xe4)
[<8061dce4>] (kernel_init) from [<8000e678>] (ret_from_fork+0x14/0x3c)
---[ end trace eb3c95c00a3a455a ]---
imx-sgtl5000 sound: snd_soc_register_card failed (-22)
imx-sgtl5000: probe of sound failed with error -22
TCP: cubic registered
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
8021q: 802.1Q VLAN Support v1.8
Key type dns_resolver registered
Number of LUNs=8
Mass Storage Function, version: 2009/09/11
LUN: removable file: (no medium)
Number of LUNs=1
LUN: removable file: (no medium)
Number of LUNs=1
g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11
g_mass_storage gadget: g_mass_storage ready
input: gpio-keys as /devices/soc0/gpio-keys/input/input1
snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to 1970-01-01 00:06:45 UTC (405)
ALSA device list:
No soundcards found.
Freeing unused kernel memory: 316K (8085c000 - 808ab000)
Starting UTP
ln: /etc/mtab: File exists
disable turn off display
Starting the hotplug events dispatcher udevd
udevd (77): /proc/77/oom_adj is deprecated, please use /proc/77/oom_score_adj instead.
Synthesizing initial hotplug events
g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage
uuc 0.4 [built Apr 25 2013 00:52:55]
UTP: Waiting for device to appear
UTP: file/device node /dev/utp already exists
cpu_id is 0
UTP: received command 'pipe dd of=/dev/mtdblock2'
pid is 749, UTP: executing "dd of=/dev/mtdblock2"
UTP: sending Success to kernel for command pipe dd of=/dev/mtdblock2.
random: nonblocking pool is initialized
UTP: received command 'frf'
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9728
Buffer I/O error on device mtdblock2, logical block 1216
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9736
Buffer I/O error on device mtdblock2, logical block 1217
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9744
Buffer I/O error on device mtdblock2, logical block 1218
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9752
Buffer I/O error on device mtdblock2, logical block 1219
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9760
Buffer I/O error on device mtdblock2, logical block 1220
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9768
Buffer I/O error on device mtdblock2, logical block 1221
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9776
Buffer I/O error on device mtdblock2, logical block 1222
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9784
Buffer I/O error on device mtdblock2, logical block 1223
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9792
Buffer I/O error on device mtdblock2, logical block 1224
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
end_request: I/O error, dev mtdblock2, sector 9800
Buffer I/O error on device mtdblock2, logical block 1225
lost page write due to I/O error on mtdblock2
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
nand: nand_erase_nand: attempt to erase a bad block at page 0x00000c40
mtdblock: erase of region [0x4a0000, 0x20000] on "linux" failed
...
(This pattern repeated many times)
Solved! Go to Solution.
Hi Isaak
I am not familiar with karo bsp, one can try with latest freescale
3.14.28 Mfg Tools
Programmers (Flash, etc.) (7)
IMX6_L3.14.28_MFG_TOOL (REV L3.14.28_1.0.0)
For the NAND to be recognized, it must have an entry in table linux../drivers/mtd/nand/nand_ids.c.
Then rebuild MFG Tool firmware as describes sect.6.2 "Manufacturing Tool, MFGTool"
attached Yocto Guide , then use commands as in profile "NAND Flash" in ucl2.xml.
Best regards
igor
Hi Isaak
I am not familiar with karo bsp, one can try with latest freescale
3.14.28 Mfg Tools
Programmers (Flash, etc.) (7)
IMX6_L3.14.28_MFG_TOOL (REV L3.14.28_1.0.0)
For the NAND to be recognized, it must have an entry in table linux../drivers/mtd/nand/nand_ids.c.
Then rebuild MFG Tool firmware as describes sect.6.2 "Manufacturing Tool, MFGTool"
attached Yocto Guide , then use commands as in profile "NAND Flash" in ucl2.xml.
Best regards
igor
Hi Igor,
The kernel I am currently using for i.MX6 is kernel 3.10.17 (as many patches are released for kernel 3.10). Do I have to use #2 option in the below list, or the MfgTool kernel version is irrelevant of what Kernel/DTB I am flashing to the i.MX6.
BTW, I cannot find MfgTool 3.14.28. The available downloads under Programmers section are:
Hi Isaak
3.10.17 is quite old, recommended to use latest 3.14.28 GA release
i.MX6Q|i.MX 6Quad Processors|Quad Core|Freescale
~igor
Ah. I was looking at the wrong page: SABRE Board Reference Design|Freescale
We are planning to switch to 3.14.28 in the future, but we are currently stuck with 3.10.
There is also 3.10.53 available on the page you provided. Should I use it (as our kernel and DTB is 3.10) or I can use MfgTool 3.14.28 without any compatibility issue?
To be specific, what does MfgTool version specify (e.g. MfgTool 3.14) and what is its relation with the U-Boot/kernel/DTB I am going to flash on i.MX6?
there is 3.10.53 U-Boot/kernel/DTB and corresponding to it 3.10.53 mfg tool version.