FAQ_全志平台Tina系统改用gpt分区表后系统启动异常问题解决方法(Waiting for root device /dev/nand0p3...)
【现象】在升级到tina3.0.7使用R328芯片的时候,系统无法启动,报错“Waiting for root device /dev/nand0p3..”
[ 4.012988] Hardware name: sun8iw18
[ 4.016922] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
[ 4.025637] [] (show_stack) from [] (dump_stack+0x7c/0x98)
[ 4.033766] [] (dump_stack) from [] (__warn+0xd8/0xf8)
[ 4.041501] [] (__warn) from [] (warn_slowpath_null+0x1c/0x24)
[ 4.050019] [] (warn_slowpath_null) from [] (_of_add_opp_table_v2+0x94/0x3b4)
[ 4.060004] [] (_of_add_opp_table_v2) from [] (dev_pm_opp_of_cpumask_add_table_by_soc_bin+0x80/0xc0)
[ 4.072236] [] (dev_pm_opp_of_cpumask_add_table_by_soc_bin) from [] (sunxi_cpufreq_init+0x154/0x3bc)
[ 4.084470] [] (sunxi_cpufreq_init) from [] (cpufreq_online+0x160/0x604)
[ 4.093964] [] (cpufreq_online) from [] (cpufreq_add_dev+0x54/0x7c)
[ 4.102971] [] (cpufreq_add_dev) from [] (subsys_interface_register+0xbc/0xc8)
[ 4.113051] [] (subsys_interface_register) from [] (cpufreq_register_driver+0x114/0x1f0)
[ 4.124111] [] (cpufreq_register_driver) from [] (sunxi_cpufreq_initcall+0x20/0x44)
[ 4.134680] [] (sunxi_cpufreq_initcall) from [] (do_one_initcall+0x140/0x174)
[ 4.144662] [] (do_one_initcall) from [] (kernel_init_freeable+0x18c/0x1d4)
[ 4.154450] [] (kernel_init_freeable) from [] (kernel_init+0x8/0xec)
[ 4.163554] [] (kernel_init) from [] (ret_from_fork+0x14/0x24)
[ 4.172107] ---[ end trace 47ae9e617b53b1dc ]---
[ 4.177315] of: dev_pm_opp_of_cpumask_add_table_by_soc_bin: couldn't find opp table for cpu:1, -2
[ 4.187309] [cpu_freq] ERR: Failed to add opp table
[ 4.193200] cpuidle: enable-method property 'psci' found operations
[ 4.200713] cpuidle: enable-method property 'psci' found operations
[ 4.209193] sunxi-mmc sdc1: SD/MMC/SDIO Host Controller Driver(v3.17 2018-12-17 10:17)
[ 4.218303] sunxi-mmc sdc1: Can't get vmmc regulator string
[ 4.224602] sunxi-mmc sdc1: Can't get vqmmc regulator string
[ 4.230994] sunxi-mmc sdc1: Can't get vdmmc regulator string
[ 4.237373] sunxi-mmc sdc1: Failed getting OCR mask: 0
[ 4.243584] sunxi-mmc sdc1: set host busy
[ 4.248122] sunxi-mmc sdc1: ***set host ocr***
[ 4.253178] mmc:failed to get gpios
[ 4.257398] sunxi-mmc sdc1: sdc set ios:clk 0Hz bm PP pm UP vdd 21 width 1 timing LEGACY(SDR12) dt B
[ 4.283889] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
[ 4.311898] sunxi-mmc sdc1: detmode:manually by software
[ 4.318755] sunxi-mmc sdc1: smc 0 p1 err, cmd 52, RTO !!
[ 4.324976] sunxi_get_str_of_property()1542 - failed to get the string of propname led_regulator!
[ 4.334992] sunxi-mmc sdc1: smc 0 p1 err, cmd 52, RTO !!
[ 4.341041] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
[ 4.344952] sunxi_led_probe()1739 - finish
[ 4.345325] hidraw: raw HID events driver (C) Jiri Kosina
[ 4.345615] usbcore: registered new interface driver usbhid
[ 4.345617] usbhid: USB HID core driver
[ 4.347085] sunxi-daudio daudio0: regulator missing or invalid
[ 4.347562] sunxi-daudio daudio2: regulator missing or invalid
[ 4.349639] sunxi-codec-machine sndcodec: sun8iw18codec <-> cpudai mapping ok
[ 4.352060] ipip: IPv4 and MPLS over IPv4 tunneling driver
[ 4.353047] gre: GRE over IPv4 demultiplexor driver
[ 4.353052] ip_gre: GRE over IPv4 tunneling driver
[ 4.354790] Initializing XFRM netlink socket
[ 4.354822] NET: Registered protocol family 17
[ 4.354915] 8021q: 802.1Q VLAN Support v1.8
[ 4.356694] write_efuse_to_reg_ver_3:reading environment_temp is zero
[ 4.356700] write_efuse_to_reg_ver_3:reading calibration data0 is zero
[ 4.358899] Registering SWP/SWPB emulation handler
[ 4.363340] get det_vbus is fail, 84
[ 4.364137] sunxi-rtc rtc: hctosys: unable to read the hardware clock
[ 4.364935] snddaudio snddaudio0: codec: snd-soc-dummy, codec_dai: snd-soc-dummy-dai.
[ 4.365752] snddaudio snddaudio0: snd-soc-dummy-dai <-> daudio0 mapping ok
[ 4.367191] snddaudio snddaudio2: codec: snd-soc-dummy, codec_dai: snd-soc-dummy-dai.
[ 4.367974] snddaudio snddaudio2: snd-soc-dummy-dai <-> daudio2 mapping ok
[ 4.369595] ALSA device list:
[ 4.369600] #0: audiocodec
[ 4.369603] #1: snddaudio0
[ 4.369606] #2: snddaudio2
[ 4.503733] Waiting for root device /dev/nand0p3...
[ 4.505910] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
[ 4.507797] sunxi-mmc sdc1: smc 0 p1 err, cmd 8, RTO !!
[ 4.508175] sunxi-mmc sdc1: card claims to support voltages below defined range
[ 4.517871] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
[ 4.517939] sunxi-mmc sdc1: sdc set ios:clk 50000000Hz bm PP pm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
[ 4.518084] sunxi-mmc sdc1: sdc set ios:clk 50000000Hz bm PP pm ON vdd 21 width 4 timing SD-HS(SDR25) dt B
[ 4.519008] mmc0: new high speed SDIO card at address 0001
[ 8.419872]
[ 8.419872] insmod_device_driver
[ 8.419872]
[ 8.427076] device_chose finished 65!
【原因】
Tina系统原来使用的是mbr分区表,现在改成了gpt分区表
使用GPT的话,按sys_partitions.fex顺序命名为nand0p1,nand0p2...
使用MBR的话,按sys_partitions.fex顺序命名为nanda, nandb...
这里其实底层分区已经按gpt的格式配置好了,但是env-4.9.cfg里没有按gpt来配置,所以起不来,应该在env-4.9.cfg中配置:
gpt=1
#set kernel cmdline if boot.img or recovery.img has no cmdline we will use this
setargs_nor=setenv bootargs earlyprintk=${earlyprintk} console=${console} root=${nor_root} rootwait init=${init} rdinit=${rdinit} loglevel=${loglevel} partitions=${partitions} cma=${cma}
setargs_nand=setenv bootargs earlyprintk=${earlyprintk} console=${console} root=${nand_root} rootwait init=${init} rdinit=${rdinit} loglevel=${loglevel} partitions=${partitions} cma=${cma} gpt=${gpt}
setargs_mmc=setenv bootargs earlyprintk=${earlyprintk} console=${console} root=${mmc_root} rootwait init=${init} rdinit=${rdinit} loglevel=${loglevel} partitions=${partitions} cma=${cma} gpt=${gpt