页次: 1
楼主可以从2个方便入手,
1、校对一下原理图(kicad好评)
2、layout有无问题
使用几层板
盘中孔,6层以上了。
坐等大佬回答
chipid居然可以写,大为震惊。。
你看看隔壁全志,那个才叫资料少。搞个ddr都要遮遮掩掩
问一下,对于TF卡, boot0 和Uboot 分别写到哪个地方啊?
貌似仅支持nand
@twzy
作为function
但是我改了,貌似不行。
[103]spinand UBOOT_START_BLK_NUM 1 UBOOT_LAST_BLK_NUM 1 [108]block from 1 to 1 [111]oob_buf[0] = 0 [112]spi nand block 1 is bad [115]Can't find a good Boot1 copy in spi nand.
你把 U-boot 写到哪儿了?
这可是从第一个block开始读的
老哥,转换uboot 如何修改uart debug?
闭源驱动,没法搞。。
可以的
比如说,PE20/CSI_FIELD、PD12/LVDS_VP0, 类似这些引脚都可以当普通GPIO?
比如说,PE20/CSI_FIELD、PD12/LVDS_VP0, 类似这些引脚都可以当普通GPIO?
如题,外围芯片需要reset功能,PB、PG都用完了
比如说,PE20/CSI_FIELD、PD12/LVDS_VP0, 类似这些引脚都可以当普通GPIO?
64M内存能否跑QT界面,不够是不是要开启交换分区?
如果不行,换个V3X,如何?
触摸屏这么慢的??
如题
25元 是在闲鱼买的,加上邮费35元。BB_Black_V1.6
不要买1.5的,不要买1.5的,不要买1.5的
另外好像是发错版块了,晕哥帮忙操作一下,谢谢!
前几天找了一下这款BeagleBone Black开发板,找着找着找到这玩意,买了2块回来,一块70元(带电源、原理图、补焊了USB),一块25元(缺usb外围原件)
CPU:AM3352
内存:256M
ROM: 256M NAND
百兆网口
跟中国版BeagleBone Black有什么区别?
1、阉割HDMI,保留RGB;
2、eMMC改为NAND,GPMC挂着NAND,GPMC挂并口设备爽啊!
我的用处:GPMC接口挂NAND和2片CH438 8串口芯片,一共16串口。
目标:
刷回原来的uboot以及内核,官方的SDK
挂上2片ch438,实现外挂16串口。
原理图
https://whycan.cn/files/members/1261/LS_BBB_SCH.pdf
实物图
TTL启动信息,启动内核后,省略了。
U-Boot SPL 2013.04-dirty (Aug 04 2014 - 11:06:44)
Control_status {00420313}
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
Could not get board ID.
default->A335BNLT.
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
CONFIG_SYS_NAND_U_BOOT_OFFS:80000
CONFIG_SYS_NAND_PAGE_SIZE:800
spl_image.size:5cd2c
spl_image.load_addr:807fffc0
image entry point: 0x80800000
U-Boot 2013.04-dirty (Jan 04 2015 - 17:08:05)
I2C: ready
DRAM: 256 MiB
WARNING: Caches not enabled
Could not probe the EEPROM; something fundamentally wrong on the I2C bus.
Could not get board ID.
NAND: 256 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
*** Warning - bad CRC, using default environment
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
Net: <ethaddr> not set. Validating first E-fuse MAC
cpsw, usb_ether
Press ESC to abort autoboot in 1 seconds
gpio: pin 53 (gpio 53) value is 1
Card did not respond to voltage select!
mmc0(part 0) is current device
Card did not respond to voltage select!
No micro SD card found, setting mmcdev to 1
mmc_send_cmd : timeout: No status update
Card did not respond to voltage select!
mmc1(part 0) is current device
Card did not respond to voltage select!
Booting from nand ...
NAND read: device 0 offset 0x280000, size 0x500000
5242880 bytes read: OK
gpio: pin 54 (gpio 54) value is 1
NAND read: device 0 offset 0x800000, size 0x1400000
20971520 bytes read: OK
gpio: pin 55 (gpio 55) value is 1
NAND read: device 0 offset 0x260000, size 0x20000
131072 bytes read: OK
gpio: pin 56 (gpio 56) value is 1
## Booting kernel from Legacy Image at 80200000 ...
Image Name: Linux-3.8.13
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4403504 Bytes = 4.2 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 81000000 ...
Image Name: Angstrom-antminer_mm-eglibc-ipk-
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 15146094 Bytes = 14.4 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 80f80000
Booting using the fdt blob at 0x80f80000
Loading Kernel Image ... OK
OK
Loading Ramdisk to 8e3c5000, end 8f236c6e ... OK
Using Device Tree in place at 80f80000, end 80f886ed
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.8.13 (xxl@armdev01) (gcc version 4.7.4 20130626 (prerelease) (Linaro GCC 4.7-2013.07) ) #22 SMP Tue Dec 2 15:26:11 CST 2014
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=50c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: Generic AM33XX (Flattened Device Tree), model: TI AM335x BeagleBone
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] AM335X ES1.0 (neon )
[ 0.000000] PERCPU: Embedded 8 pages/cpu @c0934000 s9408 r8192 d15168 u32768
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64768
[ 0.000000] Kernel command line: console=ttyO0,115200n8 init=/sbin/init
[ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] __ex_table already sorted, skipping sort
[ 0.000000] allocated 524288 bytes of page_cgroup
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[ 0.000000] Memory: 255MB = 255MB total
[ 0.000000] Memory: 236120k/236120k available, 26024k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf800000 - 0xbfe00000 ( 6 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0612cf0 (6188 kB)
[ 0.000000] .init : 0xc0613000 - 0xc06554c0 ( 266 kB)
[ 0.000000] .data : 0xc0656000 - 0xc06cc020 ( 473 kB)
[ 0.000000] .bss : 0xc06cc020 - 0xc0725e3c ( 360 kB)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1.
[ 0.000000] NR_IRQS:16 nr_irqs:16 16
[ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
[ 0.000000] Total of 128 interrupts on 1 active controller
[ 0.000000] OMAP clockevent source: GPTIMER1 at 24000000 Hz
[ 0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
[ 0.000000] OMAP clocksource: GPTIMER2 at 24000000 Hz
[ 0.000000] Console: colour dummy device 80x30
[ 0.000354] Calibrating delay loop... 545.07 BogoMIPS (lpj=531968)
[ 0.015410] pid_max: default: 32768 minimum: 301
[ 0.015639] Security Framework initialized
[ 0.015734] Mount-cache hash table entries: 512
[ 0.025665] Initializing cgroup subsys cpuacct
[ 0.025697] Initializing cgroup subsys memory
[ 0.025761] Initializing cgroup subsys blkio
[ 0.025907] CPU: Testing write buffer coherency: ok
[ 0.026435] CPU0: thread -1, cpu 0, socket -1, mpidr 0
[ 0.026510] Setting up static identity map for 0x8038c820 - 0x8038c86c
[ 0.027897] Brought up 1 CPUs
[ 0.027922] SMP: Total of 1 processors activated (545.07 BogoMIPS).
[ 0.029221] devtmpfs: initialized
[ 0.093751] pinctrl core: initialized pinctrl subsystem
[ 0.093968] rstctl core: initialized rstctl subsystem
[ 0.094459] regulator-dummy: no parameters
[ 0.094968] NET: Registered protocol family 16
[ 0.095734] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.105515] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[ 0.106286] platform 49000000.edma: alias fck already exists
[ 0.106319] platform 49000000.edma: alias fck already exists
[ 0.106347] platform 49000000.edma: alias fck already exists
[ 0.107740] OMAP GPIO hardware version 0.1
[ 0.112423] gpio-rctrl rstctl.3: loaded OK
[ 0.117241] omap-gpmc 50000000.gpmc: GPMC revision 6.0
[ 0.120488] hw-breakpoint: debug architecture 0x4 unsupported.
[ 0.122691] cpsw.0: No hwaddr in dt. Using 88:c2:55:85:c5:a7 from efuse
[ 0.122723] cpsw.1: No hwaddr in dt. Using 88:c2:55:85:c5:a9 from efuse
[ 0.138241] bio: create slab <bio-0> at 0
[ 0.150432] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
[ 0.150886] vmmcsd_fixed: 3300 mV
[ 0.153952] SCSI subsystem initialized
[ 0.154443] usbcore: registered new interface driver usbfs
[ 0.154576] usbcore: registered new interface driver hub
[ 0.154849] usbcore: registered new device driver usb
[ 0.156910] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[ 0.158434] input: tps65217_pwr_but as /devices/ocp.2/44e0b000.i2c/i2c-0/0-0024/input/input0
[ 0.160657] DCDC1: at 1500 mV
[ 0.161801] vdd_mpu: 925 <--> 1325 mV at 1100 mV
[ 0.162990] vdd_core: 925 <--> 1150 mV at 1100 mV
[ 0.164095] LDO1: at 1800 mV
[ 0.165170] LDO2: at 3300 mV
[ 0.167113] LDO3: 1800 mV
[ 0.168231] LDO4: at 3300 mV
[ 0.169220] tps65217 0-0024: TPS65217 ID 0xe version 1.2
[ 0.169970] omap_i2c 44e0b000.i2c: unable to select pin group
[ 0.170702] omap_i2c 4819c000.i2c: bus 1 rev0.11 at 100 kHz
[ 0.173047] omap_i2c 4819c000.i2c: unable to select pin group
[ 0.173289] media: Linux media interface: v0.10
[ 0.173393] Linux video capture interface: v2.00
[ 0.173516] pps_core: LinuxPPS API ver. 1 registered
[ 0.173532] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.174364] Advanced Linux Sound Architecture Driver Initialized.
[ 0.175513] Switching to clocksource gp_timer
[ 0.193853] NET: Registered protocol family 2
[ 0.194864] TCP established hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.194954] TCP bind hash table entries: 2048 (order: 3, 40960 bytes)
[ 0.195045] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.195139] TCP: reno registered
[ 0.195233] UDP hash table entries: 256 (order: 1, 12288 bytes)
[ 0.195283] UDP-Lite hash table entries: 256 (order: 1, 12288 bytes)
[ 0.195701] NET: Registered protocol family 1
[ 0.196264] RPC: Registered named UNIX socket transport module.
[ 0.196285] RPC: Registered udp transport module.
[ 0.196299] RPC: Registered tcp transport module.
[ 0.196312] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.196687] Trying to unpack rootfs image as initramfs...
[ 2.123757] Freeing initrd memory: 14788K
[ 2.124427] CPU PMU: probing PMU on CPU 0
[ 2.124460] hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 5 counters available
[ 2.125068] omap2_mbox_probe: platform not supported
[ 2.128961] VFS: Disk quotas dquot_6.5.2
[ 2.129197] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 2.130494] NFS: Registering the id_resolver key type
[ 2.130588] Key type id_resolver registered
[ 2.130606] Key type id_legacy registered
[ 2.130674] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 2.131197] msgmni has been set to 490
[ 2.133992] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 2.134017] io scheduler noop registered
[ 2.134033] io scheduler deadline registered
[ 2.134084] io scheduler cfq registered (default)
[ 2.135885] tps65217-bl tps65217-bl: no platform data provided
[ 2.135925] tps65217-bl: probe of tps65217-bl failed with error -22
[ 2.136889] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 2.139518] omap_uart 44e09000.serial: did not get pins for uart0 error: -19
[ 2.139808] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88) is a OMAP UART0
[ 2.856985] console [ttyO0] enabled
[ 2.861845] [drm] Initialized drm 1.1.0 20060810
[ 2.880479] brd: module loaded
[ 2.890794] loop: module loaded
[ 2.894253] at24 0-0050: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[ 2.901541] at24 1-0054: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[ 2.908811] at24 1-0055: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[ 2.916079] at24 1-0056: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[ 2.923348] at24 1-0057: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[ 2.958895] bone-capemgr bone_capemgr.8: bone: scan failed (1 time)
我发现,全志全部都没有类SRAM的接口,真是让人头大,imx6,三星贵的一逼啊?
按楼主的原理图也做了个板子,可惜立创商城没有F1C100S这个元件,只能手补了。
想请教下,像这种QFN封装的,有什么焊接技巧呢?没有热风枪,只有个电烙铁。
点焊对好位置,然后堆锡,最后清锡
i80 LCD接口,但是不知道是不是双向,要确认一下。
想在全志上挂一片 ch438q 来玩玩,扩展一些串口
如题
https://whycan.cn/files/members/3/QQ20190311175226.jpg
焊上按键,烧录方便多了。
https://whycan.cn/files/members/3/QQ20190311164816.jpg
焊上排针, 串口输出正常。
用 sunxi-fel 测试烧录, 也正常。
请教一下,这个fel模式是通过哪个管脚进入的?
as86455011 说:晕哥 说:寄存器是兼容的, 所以驱动可以共用.
ns2009 封装更小, 价格更便宜, 其他方面就不太确定了。
这几天才弄触摸屏驱动,真头痛。
别急,ns2009 tsc2007我都弄过, 不复杂,有什么问题跟帖就可以了。
# cat /proc/interrupts
CPU0
16: 964 GPC 55 Level i.MX Timer Tick
17: 15291 GPC 13 Level mxs-dma
18: 4952 GPC 15 Level bch
19: 118 GPC 26 Level 2020000.serial
31: 0 GPC 80 Level 20bc000.wdog
37: 0 GPC 19 Level rtc alarm
39: 0 GPC 4 Level 20cc000.snvs:snvs-powerkey
44: 0 GPC 2 Level sdma
45: 253 GPC 36 Level 21a0000.i2c
46: 47 GPC 37 Level 21a4000.i2c
47: 0 GPC 5 Level mxsfb-drm
50: 0 gpio-mxc 2 Level tsc2007
145: 0 gpio-mxc 1 Edge 0-0048
145: 0 gpio-mxc 1 Edge 0-0048
这个是sc16is752 i2c转tty,这个中断号改如何写?
另外,填写这个中断是不是要看芯片芯片手册?
as86455011 说:晕哥 说:寄存器是兼容的, 所以驱动可以共用.
ns2009 封装更小, 价格更便宜, 其他方面就不太确定了。
这几天才弄触摸屏驱动,真头痛。
别急,ns2009 tsc2007我都弄过, 不复杂,有什么问题跟帖就可以了。
我对linux 中断号没什么概念,
tsc2007@48 {
compatible = "ti,tsc2007";
reg = <0x48>;
interrupt-parent = <&gpio1>;
interrupts = <0x2 0x8>; 0x2 为什么要这样填?
gpios = <&gpio1 2 0>;
ti,x-plate-ohms = <660>;
};
as86455011 说:晕哥 说:寄存器是兼容的, 所以驱动可以共用.
ns2009 封装更小, 价格更便宜, 其他方面就不太确定了。
这几天才弄触摸屏驱动,真头痛。
别急,ns2009 tsc2007我都弄过, 不复杂,有什么问题跟帖就可以了。
算是弄好了。中断没配置好。。
寄存器是兼容的, 所以驱动可以共用.
ns2009 封装更小, 价格更便宜, 其他方面就不太确定了。
这几天才弄触摸屏驱动,真头痛。
ns2009 跟 ts2007 有啥差别??
踩过坑的大神,可以来讨论一下。
as86455011 说:晕哥 说:我看了一下手册 的 参考原理图: http://www.ti.com/lit/ds/symlink/tsc2007.pdf
觉得很可能是你的 X-, X+, Y-, Y+ 接错了, 先把电阻屏取下,再用逻辑分析仪测量一下.
没有接错,貌似本来驱动就是这样子。。打开 evtest 后,一直循环发送命令。。
取下触摸屏,让 X-, X+, Y-, Y+ 全部悬空呢?
不接屏幕 ,evtest 重复打印
Event: time 238.529936, -------------- SYN_REPORT ------------
Event: time 238.549510, type 3 (EV_ABS), code 0 (ABS_X), value 2218
Event: time 238.549510, type 3 (EV_ABS), code 1 (ABS_Y), value 1609
Event: time 238.549510, -------------- SYN_REPORT ------------
Event: time 238.574793, type 3 (EV_ABS), code 0 (ABS_X), value 2224
Event: time 238.574793, type 3 (EV_ABS), code 1 (ABS_Y), value 1564
Event: time 238.574793, -------------- SYN_REPORT ------------
Event: time 238.599501, type 3 (EV_ABS), code 0 (ABS_X), value 2212
Event: time 238.599501, type 3 (EV_ABS), code 1 (ABS_Y), value 1590
Event: time 238.599501, -------------- SYN_REPORT ------------
Event: time 238.619524, type 3 (EV_ABS), code 0 (ABS_X), va^C_X), value 2214
Event: time 238.783022, type 3 (EV_ABS), code 1 (ABS_Y), value 1614
Event: time 238.783022, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3722
Event: time 238.783022, -------------- SYN_REPORT ------------
Event: time 238.806661, type 3 (EV_ABS), code 0 (ABS_X), value 2219
Event: time 238.806661, type 3 (EV_ABS), code 1 (ABS_Y), value 1618
Event: time 238.806661, -------------- SYN_REPORT ------------
Event: time 238.832342, type 3 (EV_ABS), code 0 (ABS_X), value 2212
Event: time 238.832342, type 3 (EV_ABS), code 1 (ABS_Y), value 1588
Event: time 238.832342, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3720
Event: time 238.832342, -------------- SYN_REPORT ------------
我看了一下手册 的 参考原理图: http://www.ti.com/lit/ds/symlink/tsc2007.pdf
觉得很可能是你的 X-, X+, Y-, Y+ 接错了, 先把电阻屏取下,再用逻辑分析仪测量一下.
没有接错,貌似本来驱动就是这样子。。打开 evtest 后,一直循环发送命令。。
看楼上的错误信息,应该是这里出错:
interrupt-parent = <&gpio1>;
interrupts = <3 8>;
那个信息问题不大。
我上了逻辑仪看到好奇怪的现象,我明明没有按下屏幕,中断引脚自动会拉低。。。
首先 PCF8563 工作正常吗? 用来确定硬件, I2C总线配置是否正确.
两个都已经注册了。
内核上显示
[ 2.264915] input: 20cc000.snvs:snvs-powerkey as /devices/soc0/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input0
[ 2.283318] tsc2007 1-0048: GPIO not specified in DT (of_get_gpio returned -2)
[ 2.295832] input: TSC2007 Touchscreen as /devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0048/input/input1
[ 2.316971] rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable.
[ 2.325783] rtc-pcf8563 1-0051: rtc core: registered rtc-pcf8563 as rtc0
[ 2.338505] snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-rtc-lp as rtc1
贴出异常,运行ts_test,能运行那个tslib自带的画面,首次运行就出现这样的内核警告。
# ts_test
[ 26.815685]
[ 26.817350] ======================================================
[ 26.823636] WARNING: possible circular locking dependency detected
[ 26.829937] 4.14.85-01139-g4bae6b9d2d1e-dirty #48 Not tainted
[ 26.835784] ------------------------------------------------------
[ 26.842073] irq/51-tsc2007/54 is trying to acquire lock:
[ 26.847487] (prepare_lock){+.+.}, at: [<c0496650>] clk_prepare_lock+0x80/0xf4
[ 26.854999]
[ 26.854999] but task is already holding lock:
[ 26.860944] (i2c_register_adapter){+.+.}, at: [<c06959b0>] i2c_adapter_lock_bus+0x20/0x24
[ 26.869480]
[ 26.869480] which lock already depends on the new lock.
[ 26.869480]
[ 26.877791]
[ 26.877791] the existing dependency chain (in reverse order) is:
[ 26.885388]
[ 26.885388] -> #1 (i2c_register_adapter){+.+.}:
[ 26.891686] rt_mutex_lock_nested+0x48/0x60
[ 26.896533] i2c_adapter_lock_bus+0x20/0x24
[ 26.901377] i2c_transfer+0xa8/0xbc
[ 26.905525] pcf8563_read_block_data+0x60/0x94
[ 26.910634] pcf8563_clkout_recalc_rate+0x24/0x4c
[ 26.916004] clk_register+0x31c/0x644
[ 26.920328] devm_clk_register+0x40/0x78
[ 26.924906] pcf8563_probe+0x170/0x244
[ 26.929315] i2c_device_probe+0x258/0x278
[ 26.933984] driver_probe_device+0x214/0x2e8
[ 26.938907] __driver_attach+0xb4/0xb8
[ 26.943307] bus_for_each_dev+0x54/0xa4
[ 26.947793] driver_attach+0x20/0x28
[ 26.952020] bus_add_driver+0x178/0x20c
[ 26.956509] driver_register+0x80/0xfc
[ 26.960917] i2c_register_driver+0x40/0x84
[ 26.965684] pcf8563_driver_init+0x18/0x20
[ 26.970436] do_one_initcall+0x44/0x174
[ 26.974938] kernel_init_freeable+0x120/0x1e0
[ 26.979955] kernel_init+0x10/0x11c
[ 26.984104] ret_from_fork+0x14/0x20
[ 26.988301]
[ 26.988301] -> #0 (prepare_lock){+.+.}:
[ 26.993914] lock_acquire+0x70/0x90
[ 26.998072] __mutex_lock+0x58/0x960
[ 27.002312] mutex_lock_nested+0x24/0x2c
[ 27.006892] clk_prepare_lock+0x80/0xf4
[ 27.011386] clk_core_get_rate+0x14/0x78
[ 27.015964] clk_get_rate+0x1c/0x20
[ 27.020106] i2c_imx_start+0x20/0x1c8
[ 27.024419] i2c_imx_xfer+0x44/0xb24
[ 27.028659] __i2c_transfer+0x138/0x27c
[ 27.033154] i2c_transfer+0x6c/0xbc
[ 27.037306] i2c_smbus_xfer+0x220/0x5cc
[ 27.041806] i2c_smbus_read_word_data+0x38/0x48
[ 27.046997] tsc2007_xfer+0x18/0x54
[ 27.051144] tsc2007_soft_irq+0x80/0x268
[ 27.055728] irq_thread_fn+0x24/0x80
[ 27.059963] irq_thread+0x140/0x1f4
[ 27.064111] kthread+0x14c/0x164
[ 27.068000] ret_from_fork+0x14/0x20
[ 27.072196]
[ 27.072196] other info that might help us debug this:
[ 27.072196]
[ 27.080335] Possible unsafe locking scenario:
[ 27.080335]
[ 27.086366] CPU0 CPU1
[ 27.090992] ---- ----
[ 27.095612] lock(i2c_register_adapter);
[ 27.099792] lock(prepare_lock);
[ 27.105791] lock(i2c_register_adapter);
[ 27.112481] lock(prepare_lock);
[ 27.115962]
[ 27.115962] *** DEADLOCK ***
[ 27.115962]
[ 27.122029] 2 locks held by irq/51-tsc2007/54:
[ 27.126569] #0: (&ts->mlock){+.+.}, at: [<c068a378>] tsc2007_soft_irq+0x54/0x268
[ 27.134426] #1: (i2c_register_adapter){+.+.}, at: [<c06959b0>] i2c_adapter_lock_bus+0x20/0x24
[ 27.143417]
[ 27.143417] stack backtrace:
[ 27.147931] CPU: 0 PID: 54 Comm: irq/51-tsc2007 Not tainted 4.14.85-01139-g4bae6b9d2d1e-dirty #48
[ 27.156914] Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[ 27.163190] Backtrace:
[ 27.165834] [<c010c31c>] (dump_backtrace) from [<c010c5e8>] (show_stack+0x18/0x1c)
[ 27.173554] r7:00000000 r6:60070093 r5:00000000 r4:c0e6c190
[ 27.179374] [<c010c5d0>] (show_stack) from [<c098a9cc>] (dump_stack+0xb4/0xec)
[ 27.186774] [<c098a918>] (dump_stack) from [<c016e26c>] (print_circular_bug.constprop.19+0x1c4/0x2f8)
[ 27.196164] r10:c15cd9e0 r9:ffffffff r8:d8351900 r7:d8351e48 r6:c12bb1e8 r5:c12cfbc8
[ 27.204117] r4:c12bb1e8 r3:00000001
[ 27.207869] [<c016e0a8>] (print_circular_bug.constprop.19) from [<c0171464>] (__lock_acquire+0x18e0/0x1914)
[ 27.217779] r10:d8351900 r9:c12bb1e8 r8:c157a410 r7:00000002 r6:69912d26 r5:d8351e28
[ 27.225731] r4:d8351e48 r3:d8351e28
[ 27.229478] [<c016fb84>] (__lock_acquire) from [<c0171c3c>] (lock_acquire+0x70/0x90)
[ 27.237387] r10:00000002 r9:c15db728 r8:00000001 r7:00000001 r6:60070013 r5:00000000
[ 27.245329] r4:ffffe000
[ 27.248039] [<c0171bcc>] (lock_acquire) from [<c09a1548>] (__mutex_lock+0x58/0x960)
[ 27.255852] r8:ffff9548 r7:c0e04900 r6:00000000 r5:00000000 r4:c0e28d18
[ 27.262740] [<c09a14f0>] (__mutex_lock) from [<c09a1e74>] (mutex_lock_nested+0x24/0x2c)
[ 27.270911] r10:00000002 r9:c15db728 r8:ffff9548 r7:c0e04900 r6:c0e47bcc r5:00000001
[ 27.278854] r4:c15d0924
[ 27.281565] [<c09a1e50>] (mutex_lock_nested) from [<c0496650>] (clk_prepare_lock+0x80/0xf4)
[ 27.290095] [<c04965d0>] (clk_prepare_lock) from [<c0498084>] (clk_core_get_rate+0x14/0x78)
[ 27.298571] r5:00000001 r4:d8016f80
[ 27.302321] [<c0498070>] (clk_core_get_rate) from [<c0498c04>] (clk_get_rate+0x1c/0x20)
[ 27.310452] r5:00000001 r4:d80d5810
[ 27.314201] [<c0498be8>] (clk_get_rate) from [<c069b518>] (i2c_imx_start+0x20/0x1c8)
[ 27.322109] [<c069b4f8>] (i2c_imx_start) from [<c069ba80>] (i2c_imx_xfer+0x44/0xb24)
[ 27.330018] r9:c15db728 r8:ffff9548 r7:c0e04900 r6:d859fdd8 r5:00000001 r4:d80d5810
[ 27.337933] [<c069ba3c>] (i2c_imx_xfer) from [<c06963e0>] (__i2c_transfer+0x138/0x27c)
[ 27.346017] r10:00000002 r9:c15db728 r8:ffff9548 r7:c0e04900 r6:d859fdd8 r5:00000000
[ 27.353959] r4:d80d5810
[ 27.356670] [<c06962a8>] (__i2c_transfer) from [<c0696590>] (i2c_transfer+0x6c/0xbc)
[ 27.364577] r10:00000019 r9:00000048 r8:00000001 r7:00000000 r6:00000002 r5:d859fdd8
[ 27.372531] r4:d80d5810 r3:d8351900
[ 27.376288] [<c0696524>] (i2c_transfer) from [<c06979c4>] (i2c_smbus_xfer+0x220/0x5cc)
[ 27.384353] r7:00000000 r6:00000000 r5:d844c410 r4:d80d5810
[ 27.390198] [<c06977a4>] (i2c_smbus_xfer) from [<c0697ec0>] (i2c_smbus_read_word_data+0x38/0x48)
[ 27.399150] r10:00000019 r9:d8322800 r8:d844c48c r7:00000001 r6:00000000 r5:d844c410
[ 27.407093] r4:d844c410
[ 27.409808] [<c0697e88>] (i2c_smbus_read_word_data) from [<c0689e10>] (tsc2007_xfer+0x18/0x54)
[ 27.418598] [<c0689df8>] (tsc2007_xfer) from [<c068a3a4>] (tsc2007_soft_irq+0x80/0x268)
[ 27.426729] r5:d8125800 r4:d844c410
[ 27.430483] [<c068a324>] (tsc2007_soft_irq) from [<c017eeec>] (irq_thread_fn+0x24/0x80)
[ 27.438653] r10:00000001 r9:d856a980 r8:d8125800 r7:00000001 r6:00000000 r5:d8125800
[ 27.446593] r4:d856a980
[ 27.449301] [<c017eec8>] (irq_thread_fn) from [<c017f208>] (irq_thread+0x140/0x1f4)
[ 27.457104] r7:00000001 r6:00000000 r5:ffffe000 r4:d856a9a4
[ 27.462940] [<c017f0c8>] (irq_thread) from [<c01475e8>] (kthread+0x14c/0x164)
[ 27.470244] r10:d8055c2c r9:c017f0c8 r8:d856a980 r7:d859e000 r6:d856a9c0 r5:d856cf80
[ 27.478182] r4:00000000
[ 27.480889] [<c014749c>] (kthread) from [<c0107eb4>] (ret_from_fork+0x14/0x20)
[ 27.488275] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c014749c
[ 27.496215] r4:d856a9c0
下面这里触摸可以显示出坐标
30.142003: 515 11 3362
30.169044: 516 12 3420
30.187874: 514 12 3461
30.206580: 514 13 3480
触摸久了会出现
[ 45.424447] tsc2007 1-0048: i2c io error: -6
# cat /proc/interrupts
CPU0
16: 37647 GPC 55 Level i.MX Timer Tick
17: 15772 GPC 13 Level mxs-dma
18: 5078 GPC 15 Level bch
19: 977 GPC 26 Level 2020000.serial
31: 0 GPC 80 Level 20bc000.wdog
37: 0 GPC 19 Level rtc alarm
39: 0 GPC 4 Level 20cc000.snvs:snvs-powerkey
44: 0 GPC 2 Level sdma
45: 0 GPC 36 Level 21a0000.i2c
46: 164887 GPC 37 Level 21a4000.i2c
47: 0 GPC 5 Level mxsfb-drm
51: 6153 gpio-mxc 3 Level tsc2007
IPI0: 0 CPU wakeup interrupts
IPI1: 0 Timer broadcast interrupts
IPI2: 0 Rescheduling interrupts
IPI3: 0 Function call interrupts
IPI4: 0 CPU stop interrupts
IPI5: 2973 IRQ work interrupts
IPI6: 0 completion interrupts
Err: 0
这是dts的配置
i2c2: i2c@021a4000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";
reg = <0x021a4000 0x4000>;
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6UL_CLK_I2C2>;
status = "disabled";
};
&i2c2 {
clock_frequency = <400000>;//ckk
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status = "okay";
pcf8563@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
touchscreen: touchscreen@48 {
compatible = "ti,tsc2007";
reg = <0x48>;
interrupt-parent = <&gpio1>;
interrupts = <3 8>;
ti,x-plate-ohms = <660>;
};
};
pinctrl_i2c2: i2c2grp {
fsl,pins = <
MX6UL_PAD_CSI_VSYNC__I2C2_SDA 0x4001b8b0
MX6UL_PAD_CSI_HSYNC__I2C2_SCL 0x4001b8b0
MX6UL_PAD_GPIO1_IO02__GPIO1_IO02 0x1b0b0 /* Interrupt */
>;
};
另外我对这个中断的概念完全不懂,希望各位大神可以指点指点..
如题,最近公司用imx6ul做产品,我也是第一次搞嵌入式,linux内核完全不懂。
顺便在这里找人有偿帮忙写驱动。联系方式QQ 371904461
页次: 1