Hi everyone, Recently our custom i.mx6Q board wanna using eMMC 5.0 instead eMMC 4.4. I had fix the "card->ext_csd.rev, change 6 to 7" and add some debug message as below.
card->ext_csd.rev = ext_csd[EXT_CSD_REV];
/* workaround: support emmc 4.5 cards to work at emmc 4.4 mode */
//if (card->ext_csd.rev > 6) {
printk("<0>" "test_ext_csd.rev=%d\n", card->ext_csd.rev);
if (card->ext_csd.rev > 7) {
printk(KERN_ERR "%s: test-unrecognised EXT_CSD revision %d\n",
mmc_hostname(card->host), card->ext_csd.rev);
err = -EINVAL;
goto out;
It still can't work after change 6 to 7.
And the log always only show "mmc0: unrecognised EXT_CSD revision 7" when i use mfg_tool to update the image. why?
We use use linux on 3.0.35
Could some one give me some hint? thanks.
Solved! Go to Solution.
Hi nice hsieh,
Here you want to use eMMC 5.0 instead eMMC 4.4, you just need to modify the value of card->ext_csd.rev as you have known. Just change the if (card->ext_csd.rev > 6) to if (card->ext_csd.rev > 7) . It will work. You can try it with no other changes.
Have a great day,
Dan
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Mark Correct button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Sorry for the confusion. According to your answer to Dan, you had. So please ignore my question.
Thanks for your reply :smileyhappy:
Hi,
did you change the updater linux, too?
Thank you Stefan.
Sorry, what do you mean, i don't understand. @@
Hi nice hsieh,
Here you want to use eMMC 5.0 instead eMMC 4.4, you just need to modify the value of card->ext_csd.rev as you have known. Just change the if (card->ext_csd.rev > 6) to if (card->ext_csd.rev > 7) . It will work. You can try it with no other changes.
Have a great day,
Dan
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Mark Correct button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Thank you Dan.:smileyhappy:
1. I modify the value of card->ext_csd.rev from 6 to 7
2. Update uImage in mfgtool_path/Profiles/MX6Q Linux Update/OS Firmware/
It can pass emmc version check now.
But I had a question about kernel panic when i changed uImage.
How to create our uImage for mfgtool ? I tried "make imx6s_android_defconfig" to build uImage, it booting was failed. I also tried to build new android image and get a new uImage, but it failed, too.
Thanks
error_log_1: (make imx6s_android_defconfig to build uImage)
....
....
....
Linux video capture interface: v2.00
android_work: did not send uevent (0 0 (null))
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT
Modules linked in:
CPU: 0 Not tainted (3.0.35-06527-gb727aa3-dirty #646)
PC is at csi_mclk_enable+0x18/0x28
LR is at clk_enable+0x60/0xa0
pc : [<c03b219c>] lr : [<c0063de0>] psr: 60000013
sp : e6029eb0 ip : 00000000 fp : 00000000
r10: e6131a00 r9 : c03b5250 r8 : e6131a20
r7 : 00000000 r6 : e6131a00 r5 : 00000001 r4 : c0be7854
r3 : 00000000 r2 : 00000000 r1 : 00000001 r0 : 00000000
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c53c7d Table: 10004059 DAC: 00000015
PC: 0xc03b211c:
211c e8bd8070 e595c4e8 e3a01001 e2850e4e e1a02001 e08cc001 e585c4e8 ebf2dee6
213c eaffffd7 e595c4e8 e3a01001 e2850e4e e1a02001 e08cc001 e585c4e8 ebf2dede
215c eaffffe6 e59f0018 eb080202 eaffffb5 eb081170 eaffffdd eb08116e eaffffc4
217c c0be7854 c0ae5120 e92d4010 e3074854 e34c40be e2840008 ebf2c6f9 e5943000
219c e5932000 e3822c02 e5832000 e8bd8010 e3070854 e34c00be e4903008 e5932000
21bc e3c22c02 e5832000 eaf2c6ca e92d4038 e2514000 e1a05002 0a000007 ebffffe9
21dc e3550000 1a000009 e59f302c e3a02001 e3a00000 e5c32064 e8bd8038 ebffffeb
21fc e59f3014 e3a00000 e5c34064 e8bd8038 e3a0000a ebf3289e eafffff2 c0be7854
LR: 0xc0063d60:
3d60 eb153b03 eb153a69 e59f000c e3a01084 ebff8909 c0b862c0 c0a99c9c c0a99c00
3d80 e92d4010 e1a0200d e3c23d7f e1a04000 e3c3303f e5933004 e3c3333e e3c330ff
3da0 e3530000 1a000014 e3500000 0a000010 e3700a01 8a00000e e5903038 e3130078
3dc0 1a000008 e59f0048 eb154ed8 e1a00004 ebfffef5 e1a04000 e59f0034 eb154e78
3de0 e1a00004 e8bd8010 e3a01001 ebffb623 eafffff3 e3e04015 eafffff8 e59f0014
3e00 eb153adb eb153a41 e59f000c e3a01065 ebff88e1 c0b862c0 c0a99c44 c0a99c00
3e20 e92d43f8 e1a07b00 e7e36550 e1a03001 e1a07b27 e3560005 33a06005 e3570c02
3e40 e7e94850 e7e30d50 e2801001 e1a00083 3a00000d eb086f89 e2677b01 e2844001
SP: 0xe6029e30:
9e30 00000000 c02819ac c0bd61e8 e6029e8c 00000000 e60117a8 00000000 c02819ac
9e50 e6029ed4 0000040f 00000005 e6131a00 00000000 c0042790 00000000 00000001
9e70 00000000 00000000 c0be7854 00000001 e6131a00 00000000 e6131a20 c03b5250
9e90 e6131a00 00000000 00000000 e6029eb0 c0063de0 c03b219c 60000013 ffffffff
9eb0 00000001 c03b21dc c0061e70 c0be7900 c0b85504 c03b53d8 00000000 00000000
9ed0 e6131a20 c05edf10 c05edef8 c05edf10 e6131a04 c038d260 e6131a20 c0be3c90
9ef0 e6131a54 00000000 c0bb0848 00000000 00000000 c02d3ca8 e6131a20 c0bb0848
9f10 e6131a54 00000000 00000000 c02d3e50 c0bb0848 00000000 c02d3dc4 c02d2eec
...
...
...
error_log_2: (make a new android image and get a new uImage)
...
...
...
DVFS driver module loaded
regulator_init_complete: PFUZE100_VGEN6: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN3: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN2: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN1: incomplete constraints, leaving on
snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:00:01 UTC (1)
VFS: Cannot open root device "(null)" or unknown-block(0,0) Please append a correct "root=" boot option; here are the available partitions:
1f00 64 mtdblock0 (driver?)
b300 14417920 mmcblk0 driver: mmcblk
b310 4096 mmcblk0boot1 (driver?)
b308 4096 mmcblk0boot0 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[<c004ea64>] (unwind_backtrace+0x0/0x138) from [<c066ced0>] (panic+0x74/0x194) [<c066ced0>] (panic+0x74/0x194) from [<c0008d54>] (mount_block_root+0x170/0x224)
[<c0008d54>] (mount_block_root+0x170/0x224) from [<c0008ef0>] (mount_root+0xe8/0x108)
[<c0008ef0>] (mount_root+0xe8/0x108) from [<c000903c>] (prepare_namespace+0x12c/0x184)
[<c000903c>] (prepare_namespace+0x12c/0x184) from [<c0008a1c>] (kernel_init+0x10c/0x140)
[<c0008a1c>] (kernel_init+0x10c/0x140) from [<c0048408>] (kernel_thread_exit+0x0/0x8)
CPU3: stopping
[<c004ea64>] (unwind_backtrace+0x0/0x138) from [<c00413bc>] (do_IPI+0x1d4/0x208)
[<c00413bc>] (do_IPI+0x1d4/0x208) from [<c004734c>] (__irq_svc+0x4c/0xe8)
Exception stack(0xe609bf90 to 0xe609bfd8)
...
...
...
Hi nice hsieh,
I am glad my above answer can help you. About your question on "How to create our uImage for mfgtool ?" Here can you tell me which board and BSP are you using? If your board is designed yourself, any changes refer to our reference board? In the thread I see that you are using the i.MX6Q processor but when you build uImage I see you use "make imx6s_android_defconfig", so it can not work.
Have a great day,
Dan
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Mark Correct button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Dan,
I use Android 4.4 and kernel 3.0.35 on our board.
It can normal booting to android luncher and all functions/components can work before change emmc from 4.x to 5.
I usually use the commands as below to build android image.
$ source build/envsetup.sh
$ lunch (choose sabresd_6dq-user)
$ make -j2
It will create u-boot-6q.bin, boot.img, system.img, recovery.img and uImage in ~myandroid/out/target/product/sabresd_6dq/
I copy the uImage to "instead mfgtool_path/Profiles/MX6Q Linux Update/OS Firmware/uImage" and boot, then got the error msg.
error msg:
...
...
DVFS driver module loaded
regulator_init_complete: PFUZE100_VGEN6: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN3: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN2: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN1: incomplete constraints, leaving on
snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:00:01 UTC (1)
VFS: Cannot open root device "(null)" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00 64 mtdblock0 (driver?)
b300 7634944 mmcblk0 driver: mmcblk
b301 8192 mmcblk0p1 00000000-0000-0000-0000-000000000000
b302 8192 mmcblk0p2 00000000-0000-0000-0000-000000000000
b303 1 mmcblk0p3 00000000-0000-0000-0000-000000000000
b304 6504448 mmcblk0p4 00000000-0000-0000-0000-000000000000
b305 524287 mmcblk0p5 00000000-0000-0000-0000-000000000000
android_work: sent uevent USB_STATE=CONNECTED
b306 524287 mmcblk0p6 00000000-0000-0000-0000-000000000000
b307 8191 mmcblk0p7 00000000-0000-0000-0000-000000000000
103:00000 8191 mmcblk0p8 00000000-0000-0000-0000-000000000000
b310 2048 mmcblk0boot1 (driver?)
b308 2048 mmcblk0boot0 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[<c004ea64>] (unwind_backtrace+0x0/0x138) from [<c066ced0>] (panic+0x74/0x194)
[<c066ced0>] (panic+0x74/0x194) from [<c0008d54>] (mount_block_root+0x170/0x224)
[<c0008d54>] (mount_block_root+0x170/0x224) from [<c0008ef0>] (mount_root+0xe8/0x108)
...
...
Can the uImage use for mfgtool ? or how to build the uImage ?
As you point out in previous message, yes, you're right. I had a mistake that the "make imx6s_android_defconfig" is for i.MX6SoloLite not i.MX6DQ.
Thanks for your reply and reminder :smileyhappy:
Hi nice hsieh,
I see that you said "I copy the uImage to "instead mfgtool_path/Profiles/MX6Q Linux Update/OS Firmware/uImage" and boot, then got the error msg." Here you build the image is for your board not mfgtool, so here you should build the mfgtool images.
# make imx6_updater_defconfig
# make menuconfig
# make uImage
Then copy the uImage to /Profiles/MX6Q Linux Update/OS Firmware.
Have a nice day
Dan
Hi Dan,
Thanks for your reply.
I tried your suggestion to rebuild uImage,
(add "CONFIG_SWITCH=y" in arch/arm/configs/imx6_updater_defconfig ref:https://community.nxp.com/thread/307477)
$ make imx6_updater_defconfig
$ make uImage
and use new uImage to replace the orginial one in mfgtool.
It looks better, and solved the problem about kernel panic.
But I got new error msg as below
U-Boot 2009.08 (Jun 02 2013 - 23:06:16)
CPU: Freescale i.MX6 family TO1.5 at 792 MHz
...
...
...
Board: i.MX6Q-SABRESD: RevC Board: 0x63315 [POR ]
Boot Device: SD
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
Using default environment
In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 10800000 ...
Image Name: Linux-3.0.35-06527-gb727aa3-dirt
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3196924 Bytes = 3 MB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 10c00000 ...
Image Name: uboot initramfs rootfs
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 4543831 Bytes = 4.3 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Linux version 3.0.35-06527-gb727aa3-dirty (nice@nice-zx530) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #659 SMP PREEMPT Fri Jun 17 19:03:38 CST 2016
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Freescale i.MX 6Quad/DualLite/Solo Sabre-SD Board
Memory policy: ECC disabled, Data cache writealloc
CPU identified as i.MX6Q, unknown revision
PERCPU: Embedded 7 pages/cpu @8185d000 s5184 r8192 d15296 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096
Kernel command line: console=ttymxc0,115200 rdinit=/linuxrc enable_wait_mode=off
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: 1024MB = 1024MB total
Memory: 1028628k/1028628k available, 19948k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xfbe00000 - 0xffe00000 ( 64 MB)
vmalloc : 0xc0800000 - 0xf2000000 ( 792 MB)
lowmem : 0x80000000 - 0xc0000000 (1024 MB)
pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)
modules : 0x7f000000 - 0x7fe00000 ( 14 MB)
.init : 0x80008000 - 0x8003b000 ( 204 kB)
.text : 0x8003b000 - 0x805bc644 (5638 kB)
.data : 0x805be000 - 0x8060bd60 ( 312 kB)
.bss : 0x8060bd84 - 0x80638c28 ( 180 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Preemptible hierarchical RCU implementation.
...
...
...
print_constraints: PFUZE100_SW1A: 300 <--> 1875 mV at 1300 mV
print_constraints: PFUZE100_SW1B: 300 <--> 1875 mV at 300 mV
print_constraints: PFUZE100_SW1C: 300 <--> 1875 mV at 1300 mV
print_constraints: PFUZE100_SW2: 800 <--> 3950 mV at 3300 mV
print_constraints: PFUZE100_SW3A: 400 <--> 1975 mV at 1500 mV
print_constraints: PFUZE100_SW3B: 400 <--> 1975 mV at 1500 mV
print_constraints: PFUZE100_SW4: 800 <--> 3950 mV at 3150 mV
print_constraints: PFUZE100_SWBST: 5000 <--> 5150 mV at 5000 mV
print_constraints: PFUZE100_VSNVS: 1200 <--> 3000 mV at 1800 mV
print_constraints: PFUZE100_VREFDDR: at 750 mV
print_constraints: PFUZE100_VGEN1: 800 <--> 1550 mV at 1500 mV
print_constraints: PFUZE100_VGEN2: 800 <--> 1550 mV at 1500 mV
print_constraints: PFUZE100_VGEN3: 1800 <--> 3300 mV at 2500 mV
print_constraints: PFUZE100_VGEN4: 1800 <--> 3300 mV at 1800 mV
print_constraints: PFUZE100_VGEN5: 1800 <--> 3300 mV at 2800 mV
print_constraints: PFUZE100_VGEN6: 1800 <--> 3300 mV at 3300 mV
imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
imx-ipuv3 imx-ipuv3.1: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
Advanced Linux Sound Architecture Driver Version 1.0.24.
Bluetooth: Core ver 2.16
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
i2c-core: driver [max17135] using legacy suspend method
i2c-core: driver [max17135] using legacy resume method
Switching to clocksource mxc_timer1
Clockevents: could not switch to one-shot mode:
Clockevents: could not switch to one-shot mode:
Clockevents: could not switch to one-shot mode:
Clockevents: could not switch to one-shot mode: dummy_timer is not functional.
dummy_timer is not functional.
dummy_timer is not functional.
Could not switch to high resolution mode on CPU 1
Could not switch to high resolution mode on CPU 2
Could not switch to high resolution mode on CPU 3
dummy_timer is not functional.
Could not switch to high resolution mode on CPU 0
NET: Registered protocol family 2
...
...
...
nice_csd.structure=3
nice_ext_csd.raw_ext_csd_structure=2
nice_ext_csd.rev=7
nice_ext_csd.rev=7
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
mmc0: new high speed DDR MMC card at address 0001
mmcblk0: mmc0:0001 R1J56L 13.7 GiB
mmcblk0boot0: mmc0:0001 R1J56L partition 1 4.00 MiB
mmcblk0boot1: mmc0:0001 R1J56L partition 2 4.00 MiB
mmcblk0: unknown partition table
Bluetooth: BNEP filters: protocol multicast
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
mmcblk0boot1: unknown partition table
Bus freq driver module loaded
Bus freq driver Enabled
mmcblk0boot0: unknown partition table
mxc_dvfs_core_probe
DVFS driver module loaded
regulator_init_complete: PFUZE100_VGEN6: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN3: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN2: incomplete constraints, leaving on
regulator_init_complete: PFUZE100_VGEN1: incomplete constraints, leaving on
regulator_init_complete: SPKVDD: incomplete constraints, leaving on
snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)
Freeing init memory: 204K
Starting UTP
ln: /etc/mtab: File exists
disable turn off display
Starting the hotplug events dispatcher udevd
udevd (2003): /proc/2003/oom_adj is deprecated, please use /proc/2003/oom_score_adj instead.
Synthesizing initial hotplug events
g_file_storage gadget: high speed config #1
uuc 0.4 [built May 23 2013 23:59:39]
UTP: Waiting for device to appear
UTP: file/device node /dev/utp already exists
cpu_id is 0
UTP: received command '$ dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1536 count=16'
UTP: executing "dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1536 count=16"
16+0 records in
16+0 records out
8192 bytes (8.0KB) copied, 0.013654 seconds, 585.9KB/s
UTP: sending Success to kernel for command $ dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1536 count=16.
utp_poll: pass returned.
UTP: received command '$ echo 1 >mmc0: DO NOT switch the partitions that used to be
accessed in OS layer HERE. please following the
guidance of Documentation/mmc/mmc-dev-parts.txt.
/sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config'
UTP: executing "echo 1 > /sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config"
sh: write error: Invalid argument
UTP: sending Non-success to kernel for command $ echo 1 > /sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config.
utp_poll: exit with status 256
[stop here]
Here is my environment in uboot.
bootargs=console=ttymxc0,115200 rdinit=/linuxrc enable_wait_mode=off
bootcmd=bootm 0x10800000 0x10c00000
bootdelay=0
baudrate=115200
ipaddr=192.168.1.103
serverip=192.168.1.101
netmask=255.255.255.0
loadaddr=0x10800000
rd_loadaddr=0x10c00000
netdev=eth0
ethprime=FEC0
uboot=u-boot.bin
kernel=uImage
stdin=serial
stdout=serial
stderr=serial
ethact=FEC0
Could you give me some advice about this problem ?
Thanks.
Have a nice day ! :smileyhappy:
Hi Dan,
Could you give me some advice about this problem ?
Thanks.
Hi nice hsieh,
Here are you booting up your board from NFS? And you'd better to create a new thread about the kernel question in our community.
Have a nice day
Dan
Hi Dan,
I created a new topic to discuss the issue at imx6 - Can't download image to emcc 5.0 by mfg after change uImage
We use emmc to boot up on our board by mfgtool to downloag android image.
Thanks :smileyhappy:
Hi nice hsieh,
Our engineer has given the reply to you, and you can chat with him. Here could you help close this thread? Many thanks.
Have a great day,
Dan
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Mark Correct button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi nice hsieh,
About the uImage use I will give you reply tomorrow.
Have a nice day
Dan