imx6sl 调试记录

公板芯片型号:MCIMX6L8DVN10AB 

我的板子芯片型号:MCIMX6L2EVN10AB no GPU ,no EPDC

调板子时一定要注意,首先要搞清楚硬件芯片的具体差异,然后去nxp的官网找区别,网址如下:https://community.nxp.com/search.jspa?q=imx6sl%20no%20gpu%20no%20epdc

一直认为gpu,epdc是内核起来一定时间后才初始化的,这是错误的。

之前程序打印信息:Uncompressing Linux...  done, booting the kernel.然后就重启了,当时就认为是kernel启动的汇编有问题,一直跟,追后发现程序已经跑到内核里面了,最后死在asmlinkage void __init start_kernel(void)中的rest_init();,跟到这就不知道什么原因导致死机,因为rest_init()是创建系统的0号进程。最后只能换方法。到freescale官网上找到类似的问题,屏蔽掉epdc,和gpu就可以正常启动了,但是程序跑着跑着还是会重启

yv ...................enter do_one_initcall=1
calling init_machine_late+0x0/0x28 @ 1
cpu cpu0: dev_pm_opp_get_opp_count: device OPP not found (-19)
initcall init_machine_late+0x0/0x28 returned 0 after 7224 usecs
yv ...................enter do_one_initcall=1
calling imx_amp_power_init+0x0/0xdc @ 1
initcall imx_amp_power_init+0x0/0xdc returned 0 after 1 usecs
yv ...................enter do_one_initcall=1
calling init_oops_id+0x0/0x40 @ 1


U-Boot 2015.04 (Sep 28 2016 - 14:14:49)

并且不是死在某一个驱动函数里,因为calling init_oops_id+0x0/0x40 @ 1已经执行完了,目前只能去内核里面找,函数下一个要执行什么驱动初始化,在System.map文件中找到

58470 809a2c78 T __initcall7_start
58471 809a2c78 t __initcall_init_machine_late7
58472 809a2c7c t __initcall_imx_amp_power_init7
58473 809a2c80 t __initcall_init_oops_id7
58474 809a2c84 t __initcall_pm_qos_power_init7
猜测下一个执行的应该是pm_qos_power_init,到内核里把这一部分相关的屏蔽掉,内核没有从启现象了。但是

mmcblk1: mmc1:0007 SD16G 14.4 GiB (ro)
mmcblk1: p1 p2
wm8962 1-001a: Failed to read ID register
wm8962: probe of 1-001a failed with error -110
imx-wm8962 sound.18: failed to find codec platform device
imx-wm8962: probe of sound.18 failed with error -22
imx-spdif sound-spdif.19: snd-soc-dummy-dai <-> 2004000.spdif mapping ok
NET: Registered protocol family 26
TCP: cubic registered
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
can: controller area network core (rev 20120528 abi 9)
NET: Registered protocol family 29
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: BNEP socket layer initialized
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
Bluetooth: HIDP socket layer initialized
8021q: 802.1Q VLAN Support v1.8
Key type dns_resolver registered
cpu cpu0: failed to init cpufreq table: -22
imx6q-cpufreq: probe of imx6q-cpufreq failed with error -22
SWBST: disabling
SW4: disabling
wm8962-supply-4v2: disabling
wm8962-supply-3v15: disabling
usb_otg1_vbus: disabling
regulator-dummy: disabling
imx mcc test is registered.
snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to 1970-01-01 00:00:00 UTC (0)
ALSA device list:
#0: imx-spdif
VFS: Cannot open root device "mmcblk1p2" or unknown-block(179,2): error -30
Please append a correct "root=" boot option; here are the available partitions:
1f00 8192 mtdblock0 (driver?)
b300 15159296 mmcblk1 driver: mmcblk
b301 501760 mmcblk1p1 000ab1ac-01
b302 14544896 mmcblk1p2 000ab1ac-02
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)

error -30显示是sd卡的读写权限问题,上面还识别成只读,所以去量sd卡的WP脚,果不其然,此脚一直为高,无论卡上锁还是不上锁。找到wp的配置管脚把它从上拉改成下拉,kernel总算可以正常启动了。

原文地址:https://www.cnblogs.com/yangv/p/5959283.html