您尚未登录。

#2 Re: 全志 SOC » buildroot 以太网问题 » 2020-03-31 09:43:06

好像没有啊,下面是我系统启动信息最后面的一部分, 我看Starting dropbear sshd: OK  已经OK啊, 这是什么情况

rtc-ds1307 0-0068: setting system clock to 2020-03-31 09:37:37 UTC (1585647457)
mmcblk0boot1: mmc0:0001 004G60 partition 2 2.00 MiB
 mmcblk0: p1
 mmcblk0boot1: unknown partition table
 mmcblk0boot0: unknown partition table
EXT3-fs: barriers not enabled
kjournald starting.  Commit interval 5 seconds
EXT3-fs (mmcblk0p1): warning: checktime reached, running e2fsck is recommended
EXT3-fs (mmcblk0p1): using internal journal
EXT3-fs (mmcblk0p1): mounted filesystem with writeback data mode
VFS: Mounted root (ext3 filesystem) on device 179:1.
Freeing init memory: 200K
devpts: called with bogus options
can't open /dev/null: No such file or directory
can't open /dev/null: No such file or directory
can't open /dev/null: No such file or directory
can't open /dev/null: No such file or directory
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting mdev... OK
modprobe: can't change directory to '/lib/modules': No such file or directory
Saving random seed: OK
Starting network: OK
Starting dropbear sshd: OK
# ps
PID   USER     COMMAND
    1 root     init
    2 root     [kthreadd]
    3 root     [ksoftirqd/0]
    4 root     [kworker/0:0]
    5 root     [kworker/u:0]
    6 root     [migration/0]
    7 root     [migration/1]
    8 root     [kworker/1:0]
    9 root     [ksoftirqd/1]
   10 root     [khelper]
   11 root     [kworker/u:1]
  341 root     [sync_supers]
  343 root     [bdi-default]
  345 root     [kblockd]
  376 root     [ata_sff]
  380 root     [imx6q-ecspi.4]
  391 root     [khubd]
  413 root     [ipu1_task]
  414 root     [ipu1_task]
  415 root     [ipu2_task]
  416 root     [ipu2_task]
  427 root     [l2cap]
  430 root     [kworker/0:1]
  432 root     [cfg80211]
  518 root     [rpciod]
  526 root     [usb_wakeup thre]
  528 root     [otg_switch]
  532 root     [usb_wakeup thre]
  543 root     [kswapd0]
  544 root     [ksmd]
  606 root     [fsnotify_mark]
  623 root     [nfsiod]
  636 root     [crypto]
  981 root     [kworker/1:1]
 1220 root     [kapmd]
 1257 root     [mtdblock0]
 1262 root     [mtdblock1]
 1318 root     [irq/401-ads7846]
 1324 root     [2-0038]
 1356 root     [kworker/u:2]
 1364 root     [vpu_wq]
 1369 root     [galcore workque]
 1370 root     [Vivante Kernel ]
 1371 root     [galcore daemon ]
 1372 root     [galcore daemon ]
 1373 root     [galcore daemon ]
 1410 root     [krfcommd]
 1414 root     [mmcqd/0]
 1415 root     [mmcqd/0boot0]
 1421 root     [mmcqd/0boot1]
 1429 root     [kjournald]
 1432 root     [flush-179:0]
 1445 root     /sbin/syslogd -n
 1449 root     /sbin/klogd -n
 1461 root     /sbin/mdev -df
 1493 root     -sh
 1494 root     [kworker/0:2]
 1508 root     ps

#3 全志 SOC » buildroot 以太网问题 » 2020-03-31 09:21:50

shiqx429
回复: 4

大家好, 我问一个小问题

我自己定制了buildroot,  只设置了链接器和安装了dropbear,  系统启动都正常,内网外网都可以ping的通, 我现在用dropbear开启监听,出现问题如下

# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
netstat: /proc/net/tcp6: No such file or directory
# 
# 
# dropbear -p 2222
# 
# 
# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
netstat: /proc/net/tcp6: No such file or directory
# 
# ping www.baidu.com
PING www.baidu.com (180.101.49.12): 56 data bytes
64 bytes from 180.101.49.12: seq=0 ttl=53 time=7.716 ms
64 bytes from 180.101.49.12: seq=1 ttl=53 time=7.628 ms
64 bytes from 180.101.49.12: seq=2 ttl=53 time=7.547 ms

我感觉端口打不开啊,  还是我缺什么配置了?   也不像缺配置了,按道理说系统刚启动时,我调用netstat -tln,怎么样也应该有点东西啊,我那个什么都没,昨天卡了一天了,请各位帮忙看看, 给点参考意见,谢谢了

#6 Re: 全志 SOC » littlevgl触摸点是怎么映射的? » 2019-09-19 13:34:46

是啊,谢谢!!!

Jmhh247 说:

点进去看了下,是我发的帖子。。。


shiqx429 说:

你的意思是要将tslib整合至littlevgl中吗?就像 https://whycan.cn/t_2303.html 说的, 下午我试试看看

firstman 说:

before data->point.x = 3921     
before data->point.y = 3773 

这种一看就是 ADC 值,
要获取 LCD X/Y 要通过 tslib
tslib 有做滤波、去抖、校准等功能了。

#8 Re: 全志 SOC » littlevgl触摸点是怎么映射的? » 2019-09-19 11:59:34

你的意思是要将tslib整合至littlevgl中吗?就像 https://whycan.cn/t_2303.html 说的, 下午我试试看看

firstman 说:

before data->point.x = 3921     
before data->point.y = 3773 

这种一看就是 ADC 值,
要获取 LCD X/Y 要通过 tslib
tslib 有做滤波、去抖、校准等功能了。

#9 全志 SOC » littlevgl触摸点是怎么映射的? » 2019-09-19 11:40:26

shiqx429
回复: 7

我现在将littlevgl移植到nano板子上
Linux上运行ts_calibrate正常
Linux运行ts_test也正常

1608.891816:    529    287    255                                               
1608.931818:    505    266    255                                               
1608.971854:    474    243    255                                               
1609.011849:    448    220    255                                               
1609.051823:    423    199    255                                               
1609.091839:    395    176    255                                               
1609.131810:    358    158    255                                               
1609.171840:    358    144    255                                               
1609.211843:    343    132    255                                               
1609.251849:    329    120    255                                               
1609.291859:    326    116    255                                               
1609.331852:    305    102    255                                               
1609.371806:    290     88    255                                               
1609.411850:    288     81    255    

点击屏幕后,上面的数据至少都在800*480之间

之后运行littlevgl的demo程序,发现demo自动运行(就是3个tab循环播放那种),点击屏幕没有任何效果,我在littlevgl中的evdev.c打印了log,获得的点坐标非常不对
code如下:

bool evdev_read(lv_indev_drv_t * drv, lv_indev_data_t * data)
{
    struct input_event in;

    while(read(evdev_fd, &in, sizeof(struct input_event)) > 0) {
 printf("in.type = %d\n", in.type);
printf("in.code = %d\n", in.code);
        if(in.type == EV_REL) {
            if(in.code == REL_X)
				#if EVDEV_SWAP_AXES
					evdev_root_y += in.value;
				#else
					evdev_root_x += in.value;
				#endif
            else if(in.code == REL_Y)
				#if EVDEV_SWAP_AXES
					evdev_root_x += in.value;
				#else
					evdev_root_y += in.value;
				#endif
        } else if(in.type == EV_ABS) {
            if(in.code == ABS_X)
				#if EVDEV_SWAP_AXES
					evdev_root_y = in.value;
				#else
					evdev_root_x = in.value;
				#endif
            else if(in.code == ABS_Y)
				#if EVDEV_SWAP_AXES
					evdev_root_x = in.value;
				#else
					evdev_root_y = in.value;
				#endif
            else if(in.code == ABS_MT_POSITION_X)
                                #if EVDEV_SWAP_AXES
                                        evdev_root_y = in.value;
                                #else
                                        evdev_root_x = in.value;
                                #endif
            else if(in.code == ABS_MT_POSITION_Y)
                                #if EVDEV_SWAP_AXES
                                        evdev_root_x = in.value;
                                #else
                                        evdev_root_y = in.value;
                                #endif
        } else if(in.type == EV_KEY) {
            if(in.code == BTN_MOUSE || in.code == BTN_TOUCH) {
                if(in.value == 0)
                    evdev_button = LV_INDEV_STATE_REL;
                else if(in.value == 1)
                    evdev_button = LV_INDEV_STATE_PR;
            } else if(drv->type == LV_INDEV_TYPE_KEYPAD) {
		data->state = (in.value) ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL;
		switch(in.code) {
			case KEY_BACKSPACE:
				data->key = LV_KEY_BACKSPACE;
				break;
			case KEY_ENTER:
				data->key = LV_KEY_ENTER;
				break;
			case KEY_UP:
				data->key = LV_KEY_UP;
				break;
			case KEY_LEFT:
				data->key = LV_KEY_PREV;
				break;
			case KEY_RIGHT:
				data->key = LV_KEY_NEXT;
				break;
			case KEY_DOWN:
				data->key = LV_KEY_DOWN;
				break;
			default:
				data->key = 0;
				break;
		}
		evdev_key_val = data->key;
		evdev_button = data->state;
		return false;
	    }
        }
    }

    if(drv->type == LV_INDEV_TYPE_KEYPAD) {
        /* No data retrieved */
        data->key = evdev_key_val;
	data->state = evdev_button;
	return false;
    }
    if(drv->type != LV_INDEV_TYPE_POINTER)
        return false;
    /*Store the collected data*/

#if EVDEV_SCALE
    data->point.x = map(evdev_root_x, 0, EVDEV_SCALE_HOR_RES, 0, lv_disp_get_hor_res(drv->disp));
    data->point.y = map(evdev_root_y, 0, EVDEV_SCALE_VER_RES, 0, lv_disp_get_ver_res(drv->disp));
#else
#if EVDEV_CALIBRATE
	data->point.x = map(evdev_root_x, EVDEV_HOR_MIN, EVDEV_HOR_MAX, 0, lv_disp_get_hor_res(drv->disp));
	data->point.y = map(evdev_root_y, EVDEV_VER_MIN, EVDEV_VER_MAX, 0, lv_disp_get_ver_res(drv->disp));
#else
    data->point.x = evdev_root_x;
    data->point.y = evdev_root_y;
#endif
#endif

    data->state = evdev_button;
printf("before data->point.x = %d\n", data->point.x);
printf("before data->point.y = %d\n", data->point.y);
    if(data->point.x < 0)
      data->point.x = 0;
    if(data->point.y < 0)
      data->point.y = 0;
    if(data->point.x >= lv_disp_get_hor_res(drv->disp))
      data->point.x = lv_disp_get_hor_res(drv->disp) - 1;
    if(data->point.y >= lv_disp_get_ver_res(drv->disp))
      data->point.y = lv_disp_get_ver_res(drv->disp) - 1;
printf("after data->point.x = %d\n", data->point.x);
printf("after data->point.y = %d\n", data->point.y);
    return false;
}

log如下

before data->point.x = 3921                                                     
before data->point.y = 3773                                                     
after data->point.x = 799                                                       
after data->point.y = 479                                                       
before data->point.x = 3921                                                     
before data->point.y = 3773                                                     
after data->point.x = 799                                                       
after data->point.y = 479                                                       
before data->point.x = 3921                                                     
before data->point.y = 3773                                                     
after data->point.x = 799                                                       
after data->point.y = 479      

从(read(evdev_fd, &in, sizeof(struct input_event))获得的点基本都是3000多以上的,之后由于都超过800*480了,在下边的代码中都处理为799*499了

if(data->point.x < 0)
      data->point.x = 0;
    if(data->point.y < 0)
      data->point.y = 0;
    if(data->point.x >= lv_disp_get_hor_res(drv->disp))
      data->point.x = lv_disp_get_hor_res(drv->disp) - 1;
    if(data->point.y >= lv_disp_get_ver_res(drv->disp))
      data->point.y = lv_disp_get_ver_res(drv->disp) - 1;

lv_drv_conf.h如下

#ifndef USE_EVDEV
#  define USE_EVDEV           1
#endif

#if USE_EVDEV
#  define EVDEV_NAME   "/dev/input/event1"        /*You can use the "evtest" Linux tool to get the list of devices and test them*/

main.c如下

lv_indev_drv_t indev_drv;
    lv_indev_drv_init(&indev_drv);          /*Basic initialization*/
    evdev_init();
    indev_drv.type = LV_INDEV_TYPE_POINTER; /*See below.*/
    indev_drv.read_cb = evdev_read;            /*See below.*/
    lv_indev_drv_register(&indev_drv);      /*Register the driver in LittlevGL*/

我现在搞不清我哪里配置错了,请帮忙看看?
另外运行官方的littlevgl的demo后,3个tab是循环播放吗?我感觉这个现象也怪怪的,我在pc_imulator上也运行过,他那个就没循环播放

#10 Re: 全志 SOC » nano板子ns2009软件驱动和硬件问题 » 2019-09-16 19:46:31

好的,谢谢提醒!

我思故我在 说:

没事, 可以用, 只是有点浪费CPU而已.

你可以接一个中断脚, 然后驱动实现中断优化一下, 当然,不改也是一样的用.

#11 Re: 全志 SOC » nano板子ns2009软件驱动和硬件问题 » 2019-09-16 19:35:32

啊,这样, 那应该用哪个? 还是自己想办法去改?

我思故我在 说:

那个 ns2009 的驱动没有用中断, 而是驱动不停轮询, 机制不太好.

#13 Re: 全志 SOC » nano板子ns2009软件驱动和硬件问题 » 2019-09-16 17:01:11

感谢!!!! 我试试自己弄吧

E11(E12) 飞线出来至 电阻一端, 之后电阻另一端接板子上的地,  对吧??


晕哥 说:

这个错误一般就是没有接上拉电阻, 3.3k估计也没有问题,请个硬哥帮忙焊一下。

#14 Re: 全志 SOC » nano板子ns2009软件驱动和硬件问题 » 2019-09-16 16:59:05

https://whycan.cn/files/members/1951/333490307.jpeg
我的板子好像跟上个帖子不太一样, 我的新一点? 尤其是触控芯片那里

#16 全志 SOC » nano板子ns2009软件驱动和硬件问题 » 2019-09-16 15:17:55

shiqx429
回复: 17

使用的是荔枝派Nano 跨界核心板,板子的tp芯片是ns2009,  之后我下载了(zero-4.13.y分支:  git clone https://github.com/Lichee-Pi/linux.git -b zero-4.13.y, 将zero板子代码中的ns2009.c拿出来,   添加到nano内核中并且使能, 编译都正常

suniv-f1c100s-licheepi-nano.dts 如下:

&i2c0 {
	status = "okay";

	ns2009: ns2009@48 {
		compatible = "nsiway,ns2009";
		reg = <0x48>;
	};
};

开机log如下:

U-Boot 2018.01-05679-g013ca45 (Sep 11 2019 - 11:53:25 +0800) Allwinner Technology

CPU:   Allwinner F Series (SUNIV)
Model: Lichee Pi Nano
DRAM:  32 MiB
MMC:   SUNXI SD/MMC: 0
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment

Setting up a 800x480 lcd console (overscan 0x0)
In:    serial@1c25000
Out:   serial@1c25000
Err:   serial@1c25000
Net:   No ethernet found.
starting USB...
No controllers found
Hit any key to stop autoboot:  0 
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
device 0 offset 0x100000, size 0x4000
SF: 16384 bytes @ 0x100000 Read: OK
device 0 offset 0x110000, size 0x400000
SF: 4194304 bytes @ 0x110000 Read: OK
## Flattened Device Tree blob at 80c00000
   Booting using the fdt blob at 0x80c00000
   Loading Device Tree to 80e5f000, end 80e6448f ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.15.0-next-20180202-licheepi-nano+ (steven@ubuntu) (gcc version 7.2.1 2019
[    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] OF: fdt: Machine model: Lichee Pi Nano
[    0.000000] Memory policy: Data cache writeback
[    0.000000] random: fast init done
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 8128
[    0.000000] Kernel command line: console=ttyS0,115200 panic=5 rootwait root=/dev/mtdblock3 rw rootfs2
[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Memory: 23736K/32768K available (5120K kernel code, 206K rwdata, 1240K rodata, 1024K ini)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc2800000 - 0xff800000   ( 976 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc2000000   (  32 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (6112 kB)
[    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
[    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   ( 207 kB)
[    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 240 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000054] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000122] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000797] Console: colour dummy device 80x30
[    0.000890] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[    0.070248] pid_max: default: 32768 minimum: 301
[    0.070727] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.070771] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.072347] CPU: Testing write buffer coherency: ok
[    0.074257] Setting up static identity map for 0x80100000 - 0x80100058
[    0.076873] devtmpfs: initialized
[    0.084176] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 191126044627s
[    0.084244] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.084565] pinctrl core: initialized pinctrl subsystem
[    0.086914] NET: Registered protocol family 16
[    0.088807] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.090789] cpuidle: using governor menu
[    0.115754] SCSI subsystem initialized
[    0.116024] pps_core: LinuxPPS API ver. 1 registered
[    0.116051] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.116143] PTP clock support registered
[    0.118079] clocksource: Switched to clocksource timer
[    0.148213] NET: Registered protocol family 2
[    0.149791] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes)
[    0.149862] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.149932] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.149981] TCP: Hash tables configured (established 1024 bind 1024)
[    0.150251] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.150309] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.150886] NET: Registered protocol family 1
[    0.152110] RPC: Registered named UNIX socket transport module.
[    0.152155] RPC: Registered udp transport module.
[    0.152171] RPC: Registered tcp transport module.
[    0.152187] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.154401] NetWinder Floating Point Emulator V0.97 (double precision)
[    0.156465] Initialise system trusted keyrings
[    0.157097] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[    0.178480] NFS: Registering the id_resolver key type
[    0.178562] Key type id_resolver registered
[    0.178581] Key type id_legacy registered
[    0.178694] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[    0.193716] Key type asymmetric registered
[    0.193757] Asymmetric key parser 'x509' registered
[    0.194009] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.194043] io scheduler noop registered
[    0.194060] io scheduler deadline registered
[    0.194862] io scheduler cfq registered (default)
[    0.194899] io scheduler mq-deadline registered
[    0.194919] io scheduler kyber registered
[    0.205992] suniv-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[    0.395609] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[    0.403059] console [ttyS0] disabled
[    0.423349] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 25, base_baud = 6250000) is a 16550A
[    0.877819] console [ttyS0] enabled
[    0.889839] panel-simple panel: panel supply power not found, using dummy regulator
[    0.899548] SCSI Media Changer driver v0.25 
[    0.907582] m25p80 spi0.0: w25q128 (16384 Kbytes)
[    0.912437] spi0.0: parsing partitions cmdlinepart
[    0.918381] spi0.0: got parser (null)
[    0.922071] spi0.0: parsing partitions ofpart
[    0.926422] spi0.0: got parser ofpart
[    0.930235] spi0.0: parser ofpart: 4
[    0.933814] 4 ofpart partitions found on MTD device spi0.0
[    0.939356] Creating 4 MTD partitions on "spi0.0":
[    0.944169] 0x000000000000-0x000000100000 : "u-boot"
[    0.951916] 0x000000100000-0x000000110000 : "dtb"
[    0.959530] 0x000000110000-0x000000510000 : "kernel"
[    0.967177] 0x000000510000-0x000001000000 : "rootfs"
[    0.976618] input: 1c23400.lradc as /devices/platform/soc/1c23400.lradc/input/input0
[    0.985567] i2c /dev entries driver
[    0.991986] input: ns2009_ts as /devices/platform/soc/1c27000.i2c/i2c-0/0-0048/input/input1
[    1.030615] sunxi-mmc 1c0f000.mmc: base:0x520166ba irq:21
[    1.038872] NET: Registered protocol family 17
[    1.043565] Key type dns_resolver registered
[    1.050296] Loading compiled-in X.509 certificates
[    1.066162] sun4i-drm display-engine: bound 1e60000.display-backend (ops 0xc0638e90)
[    1.074194] sun4i-tcon 1c0c000.lcd-controller: Missing LVDS properties, Please upgrade your DT
[    1.082882] sun4i-tcon 1c0c000.lcd-controller: LVDS output disabled
[    1.090158] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc06380a8)
[    1.097823] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    1.104545] [drm] No driver support for vblank timestamp query.
[    1.311341] Console: switching to colour frame buffer device 100x30
[    1.351010] sun4i-drm display-engine: fb0:  frame buffer device
[    1.358054] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
[    1.366663] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    1.384089] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    1.391906] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    1.400652] cfg80211: failed to load regulatory.db
[    1.499931] random: crng init done
[    2.941568] VFS: Mounted root (jffs2 filesystem) on device 31:3.
[    2.949507] devtmpfs: mounted
[    2.959233] Freeing unused kernel memory: 1024K
Starting logging: OK
Initializing random number generator... done.
Starting network: OK

其中有如下这log,代表我驱动应该没问题吧?

[    0.985567] i2c /dev entries driver
[    0.991986] input: ns2009_ts as /devices/platform/soc/1c27000.i2c/i2c-0/0-0048/input/input1

之后执行
ts_calibrate

# ts_calibrate 
[   58.088255] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[   58.094818] input input1: Poll touch data failed: -110
xres = 800, yres = 480
[   60.248158] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[   60.254759] input input1: Poll touch data failed: -110
[   62.408158] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[   62.414729] input input1: Poll touch data failed: -110
[   64.568155] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[   64.574722] input input1: Poll touch data failed: -110
[   66.728180] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[   66.734750] input input1: Poll touch data failed: -110
[   68.888171] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[   68.894738] input input1: Poll touch data failed: -110
[   71.048183] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[   71.054752] input input1: Poll touch data failed: -110

我有些疑问,  有论坛上的热心朋友说是触控芯片I2C没有上拉电阻, 帖子我都看了,但是看他们log信息,基本上都是v3s板子, 我是nano板子,难道也是这个样子吗?要额外去焊接两个上拉电阻, 我手头上只有3.3k电阻,可行不?
我仔细看过置顶的帖子"荔枝派nano(f1c100s)的SPI-Flash系统编译创建全过程"这个帖子, 是2月份的帖子,里面没有提到上拉电阻的问题,哪位能给我个准确的信息,nano板子到底要不要接上拉电阻,我是偏软件的,焊工不行,担心板子搞坏了,板子太小了

#17 Re: 全志 SOC » nano板子GT911触摸屏驱动问题 » 2019-09-12 08:19:51

我试试吧,谢谢了

awfans 说:

很可能没有接上拉电阻, 确认一下.

#18 Re: 全志 SOC » nano板子GT911触摸屏驱动问题 » 2019-09-11 19:26:07

你那边有没有好用的suniv-f1c100s-licheepi-nano.dts和suniv.dtsi给我看看啊

jimmy 说:

pin PE9 already requested by 0-0014; cannot claim for 1c20800.pinctrl:137



pinctrl-suniv.c 和设备树 里面有没有配好 I2C 引脚.

#19 Re: 全志 SOC » nano板子GT911触摸屏驱动问题 » 2019-09-11 19:13:55

不行, 另外我输入root   和密码whycan.cn 无法登入进一步测试,   界面显示了,屏幕触控无效
也是报 i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0,但没报其他错

[    0.972214] 4 ofpart partitions found on MTD device spi0.0
[    0.977839] Creating 4 MTD partitions on "spi0.0":
[    0.982659] 0x000000000000-0x000000100000 : "u-boot"
[    0.990382] 0x000000100000-0x000000110000 : "dtb"
[    0.997935] 0x000000110000-0x000000510000 : "kernel"
[    1.005717] 0x000000510000-0x000001000000 : "rootfs"
[    1.013989] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.020663] ehci-platform: EHCI generic platform driver
[    1.026292] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.032515] ohci-platform: OHCI generic platform driver
[    1.038274] usbcore: registered new interface driver usb-storage
[    1.046490] input: 1c23400.lradc as /devices/platform/soc/1c23400.lradc/input/input0
[    1.056996] input: 1c24800.rtp as /devices/platform/soc/1c24800.rtp/input/input1
[    1.065474] i2c /dev entries driver
[    3.125159] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[    3.131723] rtc-pcf8563 0-0051: pcf8563_write_block_data: err=-110 addr=0e, data=03
[    3.139439] rtc-pcf8563 0-0051: pcf8563_probe: write error
[    3.145112] rtc-pcf8563: probe of 0-0051 failed with error -5
[    3.153300] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[    3.215211] sunxi-mmc 1c0f000.mmc: base:0xcffafbc9 irq:20
[    3.223031] usbcore: registered new interface driver usbhid
[    3.228747] usbhid: USB HID core driver
shiqx429 说:

好的,我一会试一下

我思故我在 说:

i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0

这个错误一般是硬件出问题, 看有没有上拉。

烧这个固件看下情况: https://whycan.cn/t_2689.html

#20 Re: 全志 SOC » nano板子GT911触摸屏驱动问题 » 2019-09-11 18:57:01

失败了

[    0.993157] suniv-pinctrl 1c20800.pinctrl: pin PE9 already requested by 0-005d; cannot claim for 1c20800.pinctrl:137
[    1.003931] suniv-pinctrl 1c20800.pinctrl: pin-137 (1c20800.pinctrl:137) status -22
[    1.011792] Goodix-TS: probe of 0-005d failed with error -22
[    1.018494] suniv-pinctrl 1c20800.pinctrl: pin PE9 already requested by 0-0014; cannot claim for 1c20800.pinctrl:137
[    1.029081] suniv-pinctrl 1c20800.pinctrl: pin-137 (1c20800.pinctrl:137) status -22
[    1.036823] Goodix-TS: probe of 0-0014 failed with error -22
shiqx429 说:

dts添加两个不同地址的gt911  我参考了帖子 ,正在试

&i2c0 {
	pinctrl-0 = <&i2c0_pins>;
	pinctrl-names = "default";
	status = "okay";

	gt9115d: touchscreen@5d {
		compatible = "goodix,gt911";
		reg = <0x5d>;
		interrupt-parent = <&pio>;
		interrupts = <4 3 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_reset_pin>;
		irq-gpios = <&pio 4 3 GPIO_ACTIVE_HIGH>; /* INT */
		reset-gpios = <&pio 4 9 GPIO_ACTIVE_HIGH>; /* RST */---------------------这里也改了之前是4 4  现在改成4 9
		/* touchscreen-swapped-x-y; */
	};
	gt91114: touchscreen@14 {
		compatible = "goodix,gt911";
		reg = <0x14>;
		interrupt-parent = <&pio>;
		interrupts = <4 3 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_reset_pin>;
		irq-gpios = <&pio 4 3 GPIO_ACTIVE_HIGH>; /* INT */
		reset-gpios = <&pio 4 9 GPIO_ACTIVE_HIGH>; /* RST */
		/* touchscreen-swapped-x-y; */
	};
};

&pio {
        gt911_int_pin: gt911_int_pin@0 {
                pins = "PE3";
                function = "gpio_in";
        };

		ts_reset_pin: ts_reset_pin@0 {
			pins = "PE9";
			function = "gpio_out";
		};
};

#21 Re: 全志 SOC » nano板子GT911触摸屏驱动问题 » 2019-09-11 18:01:05

dts添加两个不同地址的gt911  我参考了帖子 ,正在试

&i2c0 {
	pinctrl-0 = <&i2c0_pins>;
	pinctrl-names = "default";
	status = "okay";

	gt9115d: touchscreen@5d {
		compatible = "goodix,gt911";
		reg = <0x5d>;
		interrupt-parent = <&pio>;
		interrupts = <4 3 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_reset_pin>;
		irq-gpios = <&pio 4 3 GPIO_ACTIVE_HIGH>; /* INT */
		reset-gpios = <&pio 4 9 GPIO_ACTIVE_HIGH>; /* RST */---------------------这里也改了之前是4 4  现在改成4 9
		/* touchscreen-swapped-x-y; */
	};
	gt91114: touchscreen@14 {
		compatible = "goodix,gt911";
		reg = <0x14>;
		interrupt-parent = <&pio>;
		interrupts = <4 3 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_reset_pin>;
		irq-gpios = <&pio 4 3 GPIO_ACTIVE_HIGH>; /* INT */
		reset-gpios = <&pio 4 9 GPIO_ACTIVE_HIGH>; /* RST */
		/* touchscreen-swapped-x-y; */
	};
};

&pio {
        gt911_int_pin: gt911_int_pin@0 {
                pins = "PE3";
                function = "gpio_in";
        };

		ts_reset_pin: ts_reset_pin@0 {
			pins = "PE9";
			function = "gpio_out";
		};
};

#22 Re: 全志 SOC » nano板子GT911触摸屏驱动问题 » 2019-09-11 17:59:05

好的,我一会试一下

我思故我在 说:

i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0

这个错误一般是硬件出问题, 看有没有上拉。

烧这个固件看下情况: https://whycan.cn/t_2689.html

#23 Re: 全志 SOC » nano板子GT911触摸屏驱动问题 » 2019-09-11 17:32:44

# i2cdetect -l 
i2c-0   i2c             mv64xxx_i2c adapter                     I2C adapter
# i2cdetect -r -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          [ 2659.848214] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 2661.928204] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 2664.008168] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- ^C[ 2666.088209] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0

#24 全志 SOC » nano板子GT911触摸屏驱动问题 » 2019-09-11 17:20:06

shiqx429
回复: 11

我现在触摸屏驱动不行,请帮忙看看,指导一下

首先我已经看过
https://whycan.cn/t_2688.html  还有 https://whycan.cn/t_2482.html#p19396 
里面提到的问题我下面再说,我先说一下我的改动

1.内核中已经勾选Gooddix I2C touchscreen,之前内核是[M],我改为*

2.suniv-f1c100s-licheepi-nano.dts 文件如下

// SPDX-License-Identifier: (GPL-2.0+ OR X11)
/*
 * Copyright 2018 Icenowy Zheng <icenowy@aosc.io>
 */

/dts-v1/;
#include "suniv-f1c100s.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	model = "Lichee Pi Nano";
	compatible = "licheepi,licheepi-nano", "allwinner,suniv-f1c100s",
		     "allwinner,suniv";

	aliases {
		serial0 = &uart0;
		spi0 = &spi0;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	reg_vcc3v3: vcc3v3 {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	panel: panel {
		/* compatible = "qiaodian,qd43003c0-40", "simple-panel";*/
		compatible = "lg,lb070wv8", "simple-panel";
		/* compatible = "sharp,lq043t1dg04", "simple-panel"; */
		#address-cells = <1>;
		#size-cells = <0>;
		enable-gpios = <&pio 4 6 GPIO_ACTIVE_HIGH>;

		port@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;

			panel_input: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&tcon0_out_lcd>;
			};
		};
	};

	leds {
		compatible = "gpio-leds";

			// blue_led {
			// 	label = "licheepi:blue:usr";
			// 	gpios = <&pio 4 4 GPIO_ACTIVE_LOW>; /* PE4 */
			// 	linux,default-trigger = "disk-activity";
			// };

			blue_led {
				label = "licheepi:blue:usr";
				gpios = <&pio 4 5 GPIO_ACTIVE_LOW>; /* PE5 */
				linux,default-trigger = "heartbeat";
			};

	};

	
};

&de {
	status = "okay";
};

&spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi0_pins_a>;
	status = "okay";
	spi-max-frequency = <50000000>;
	flash: w25q128@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "winbond,w25q128", "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <50000000>;
		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "u-boot";
				reg = <0x000000 0x100000>;
			};

			partition@100000 {
				label = "dtb";
				reg = <0x100000 0x10000>;
			};

			partition@110000 {
				label = "kernel";
				reg = <0x110000 0x400000>;
			};

			partition@510000 {
				label = "rootfs";
				reg = <0x510000 0xAF0000>;
			};
		};
	};
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_pins_a>;
	status = "okay";
};

&mmc0 {
	vmmc-supply = <&reg_vcc3v3>;
	bus-width = <4>;
	broken-cd;
	status = "okay";
};

&tcon0 {
	pinctrl-names = "default";
	pinctrl-0 = <&lcd_rgb666_pins>;
	status = "okay";
};

&tcon0_out {
	tcon0_out_lcd: endpoint@0 {
		reg = <0>;
		remote-endpoint = <&panel_input>;
	};
};

&i2c0 {
	pinctrl-0 = <&i2c0_pins>;
	pinctrl-names = "default";
	status = "okay";

	gt911: touchscreen@5d {
		compatible = "goodix,gt911";
		reg = <0x5d>;
		interrupt-parent = <&pio>;
		interrupts = <4 3 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_reset_pin>;
		irq-gpios = <&pio 4 3 GPIO_ACTIVE_HIGH>; /* INT */
		reset-gpios = <&pio 4 4 GPIO_ACTIVE_HIGH>; /* RST */
		/* touchscreen-swapped-x-y; */
	};
};

&pio {
        gt911_int_pin: gt911_int_pin@0 {
                pins = "PE3";
                function = "gpio_in";
        };

		ts_reset_pin: ts_reset_pin@0 {
			pins = "PE9";-----------------------------------------------我改动过,之前默认是PE3,我已经改成PE9了
			function = "gpio_out";
		};
};

&lradc {
	vref-supply = <&reg_vcc3v3>;
	status = "okay";

	button@200 {
		label = "Volume Up";
		linux,code = <KEY_VOLUMEUP>;
		channel = <0>;
		voltage = <200000>;
	};

	button@400 {
		label = "Volume Down";
		linux,code = <KEY_VOLUMEDOWN>;
		channel = <0>;
		voltage = <400000>;
	};

	button@600 {
		label = "Select";
		linux,code = <KEY_SELECT>;
		channel = <0>;
		voltage = <600000>;
	};

	button@800 {
		label = "Start";
		linux,code = <KEY_OK>;
		channel = <0>;
		voltage = <800000>;
	};
};

刷机之后启动板子
部分log如下

[    0.940333] Creating 4 MTD partitions on "spi0.0":
[    0.945148] 0x000000000000-0x000000100000 : "u-boot"
[    0.952937] 0x000000100000-0x000000110000 : "dtb"
[    0.960578] 0x000000110000-0x000000510000 : "kernel"
[    0.968316] 0x000000510000-0x000001000000 : "rootfs"
[    0.977583] input: 1c23400.lradc as /devices/platform/soc/1c23400.lradc/input/input0
[    0.986534] i2c /dev entries driver
[    3.208195] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[    3.214754] Goodix-TS 0-005d: i2c test failed attempt 1: -110
[    5.368175] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[    5.374716] Goodix-TS 0-005d: i2c test failed attempt 2: -110
[    5.418173] Goodix-TS 0-005d: I2C communication failure: -110
[    5.424049] Goodix-TS: probe of 0-005d failed with error -110
[    5.459185] sunxi-mmc 1c0f000.mmc: base:0x2b2be80f irq:21
[    5.467168] NET: Registered protocol family 17

我这个现象跟上面提到的帖子现象一样

参考第一个帖子说有两个可能
1.

guo_felix 说:

谢谢晕哥    之前一直怀疑设备树写得有问题 检测了好几遍,也确实检查出了问题。后来尝试控制PE11 和PE12,发现抓从底板上引出来的PE12没办法拉低,但cat value 又确实是0,最后发现是核心板和底板就这个脚虚焊了  现在i2cdetect:

# i2cdetect -y -r 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- 5d -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --       

虽然log中好像关于触屏的驱动还是有问题:

[    0.663484] i2c /dev entries driver
[    0.781273] Goodix-TS 0-0014: i2c test failed attempt 1: -6
[    0.821241] Goodix-TS 0-0014: i2c test failed attempt 2: -6
[    0.861061] Goodix-TS 0-0014: I2C communication failure: -6

但至少I2c是没问题的了

-----------------------------说的是虚焊了, 我跟他不一样,我的是小小的那块nano板子,邮票大小,不太可能虚焊

2.

guo_felix 说:

谢谢晕哥 已经可以了,可以读到gt911,可以运行 ts_test

[    0.663190] i2c /dev entries driver
[    0.782659] Goodix-TS 0-005d: ID 911, version: 1060
[    0.790639] Goodix-TS 0-005d: Direct firmware load for goodix_911_cfg.bin failed with error -2

总结一下,应该是需要dts将引脚改对(PE3),还有就是<reg>也要改到相应0x5d

----------------------------------这个我现在的代码也是这样的,也是PE3  0x5d


参考第二个帖子
楼主说"gt911根据reset pin和interrupt pin拉高的顺序决定使用i2c地址0x14或0x5d, 但似乎linux的goodix驱动尚未支持设置两个时序,导致在调试时地址会变化,从而无法驱动。可通过在dts中添加两个不同地址的gt911来解决,总有一个能驱动成功。"

这个怎么在dts添加两个不同地址的gt911啊, 这个我不会,能指导一下吗?


另外我现在用的板子是 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.6d612e8davnXcb&id=584657396198&_u=b1t9k8ak2a0b
配套的电路图
1.png

0x14/0x5d/0x48我都试过, 现象一样的, 请多帮忙看看,谢谢!!!!!

#25 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-11 10:44:36

谢谢,我的问题跟他不一样 我的是tslib: Selected device is not a touchscreen (must support ABS and KEY event types)
可能是kernel那边触摸屏驱动没加,再试

tslib: Selected device is not a touchscreen (must support ABS and KEY event types)
两种情况:一种内核未加入触摸屏的支持,另一种情况是将TSLIB_TSDEVICE=/dev/input/eventN,改为 TSLIB_TSDEVICE=/dev/input/eventX


我思故我在 说:

#26 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-11 10:32:41

加上了,非常感谢,   目前报错提示selected device is not a touchscreen,  网上也有人说这个问题,我在找资料看看

v3s 说:

不用先添加 Qt5, 只要      -> Target packages     -> Libraries    -> Hardware handling -> tslib

 Symbol: BR2_PACKAGE_TSLIB [=y]                                          │  
  │ Type  : bool                                                            │  
  │ Prompt: tslib                                                           │  
  │   Location:                                                             │  
  │     -> Target packages                                                  │  
  │       -> Libraries                                                      │  
  │ (4)     -> Hardware handling  

#27 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-11 09:47:24

我正在看这块,正在尝试在buildroot添加tslib,  我现在buildroot是尽量要小, 知道怎么在buildroot中加tslib么,   这里需要先添加QT5,  但是我menuconfig中提示*** Qt5 needs a toolchain w/ wchar, NPTL, C++, dynamic library ***  ,  要添加很多依赖,我现在还在看都要添加哪些

qter 说:

用 evtest/ts_calibrate/ts_test 先测试一下触摸是否正常吧

#28 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-11 07:50:53

我看过了,如果确实不用libinput的话, 那就是我之前一版那种情况,但是触控不行,  就是触控无效我才去想开启libinput

下面是我的设置,这个是显示都正常,就是无法触控
Makefile文件

LVGL_DIR ?= ${shell pwd}
CFLAGS ?= -Wall -Wshadow -Wundef -Wmaybe-uninitialized -O3 -g0 -I$(LVGL_DIR)/ 
LDFLAGS ?= -lSDL2 -lm
BIN = demo

lv_drv_conf.h文件

/*-----------------------------------------
 *  Linux frame buffer device (/dev/fbx)
 *-----------------------------------------*/
#ifndef USE_FBDEV
#  define USE_FBDEV           1
#endif

#if USE_FBDEV
#  define FBDEV_PATH          "/dev/fb0"
#endif

/*-------------------------------------------------
 * Touchscreen as libinput interface (for Linux based systems)
 *------------------------------------------------*/
#ifndef USE_LIBINPUT
#  define USE_LIBINPUT           0
#endif

#if USE_LIBINPUT
#  define LIBINPUT_NAME   "/dev/input/event0"        /*You can use the "evtest" Linux tool to get the list of devices and test them*/
#endif  /*USE_LIBINPUT*/

/*-------------------------------------------------
 * Mouse or touchpad as evdev interface (for Linux based systems)
 *------------------------------------------------*/
#ifndef USE_EVDEV
#  define USE_EVDEV           1
#endif

main.c 文件添加

#include "lv_drivers/indev/evdev.h"

lv_indev_drv_t indev_drv;
    lv_indev_drv_init(&indev_drv);          /*Basic initialization*/
    evdev_init();
    indev_drv.type = LV_INDEV_TYPE_POINTER; /*See below.*/
    indev_drv.read_cb = evdev_read;            /*See below.*/
    lv_indev_drv_register(&indev_drv); 
xm1994 说:
shiqx429 说:

USE_EVDEV我已经设置过了,就是触控无效我才去找置顶的帖子,那里有说"littlegv :在官方的framebuffer demo基础上添加了libinput设备的初始化,就可以用触屏了。",我也不确定呢,在试!

qter 说:

也可以用 USE_EVDEV=1 吧, libinput 是不是把 ev又封装了一遍?

用evdev就可以,可以看我项目里的这个提交
https://github.com/summershrimp/opendeck-gui/commit/f16c256390c36c5360f5efb919942c9960aef1eb

#29 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-10 19:18:38

USE_EVDEV我已经设置过了,就是触控无效我才去找置顶的帖子,那里有说"littlegv :在官方的framebuffer demo基础上添加了libinput设备的初始化,就可以用触屏了。",我也不确定呢,在试!

qter 说:

也可以用 USE_EVDEV=1 吧, libinput 是不是把 ev又封装了一遍?

#30 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-10 17:30:22

更新:
Segmentation fault问题已经找到  就是按照awfans提到的那样, 直接用那里的main.c就好
目前图形界面已经显示出来了, 就是无法触控

看论坛帖子上好像说要把USE_LIBINPUT使能,  我正看如何在buildroot中把libinput功能加进来

#31 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-09 19:53:34

状况更新一下:
1.buildroot中 要将SDL2加上
2.CC?= 要将?去掉(不去可能也没事,后续再确认)
3.disp_drv.disp_flush = fbdev_flush; 改为disp_drv.flush_cb = fbdev_flush; 官方release6.0说改了

目前启动之后
# ./demo                                                                       
The framebuffer device was opened successfully.                                 
800x480, 32bpp                                                                 
The framebuffer device was mapped to memory successfully.                       
Segmentation fault
暂时还没启动起来,我再看看

#33 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-09 17:54:07

我现在改了如下几个地方
littlegl:
Makefile中CC = /home/steven/develop/buildroot-2017.08/output/host/bin/arm-linux-gcc(问号去掉了,报sdl.h找不到,我在想办法改)

#define USE_FBDEV 1
#  define USE_EVDEV           1

main中添加(按文档添加的)
/* 添加 fb 支持 */
#include "lv_drivers/display/fbdev.h"
#include "lv_drivers/indev/evdev.h"

/*Linux frame buffer device init*/
    fbdev_init();

    /*Add a display the LittlevGL sing the frame buffer driver*/
    lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.disp_flush = fbdev_flush;      /*It flushes the internal graphical buffer to the frame buffer*/
    lv_disp_drv_register(&disp_drv);
这个目前报错,main.c:78:13: error: ‘lv_disp_drv_t {aka struct _disp_drv_t}’ has no member named ‘disp_flush’

buildroot:
我正在看看哪里加SDL的支持


晕哥 说:

当然会报错了,你的buildroot 很可能没有开启SDL2,而且嵌入式下面一般用fb,而不是SDL

#34 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-09 17:36:12

这样啊?我再试试,  我有些没理解, 我先在去掉问号,是编译LittlevGL出错,  那我应该去buildroot下的menuconfig把sdl2功能开启吗?还是要到LittlevGL中去找找如何用fb? 我小白,刚接触这个

#35 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-09 17:21:03

不能去, 一旦去掉就编译报错了, 就找不到SDL头文件

/home/steven/develop/LittlevGL/pc_simulator/lv_drivers/display/monitor.c:19:34: fatal error: SDL2/SDL.h: No such file or directory
#include MONITOR_SDL_INCLUDE_PATH
                                  ^
compilation terminated.


晕哥 说:

把 CC 后面的问好去掉试一试

#36 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-09 16:44:49

还是报同样的错./demo: line 1: syntax error: unexpected ")"   

littlevgl 的makfile中CC ?= /home/steven/develop/buildroot-2017.08/output/host/bin/arm-linux-gcc
buildroot中toolclain type-->buildroot toolchain  默认的链接器



shiqx429 说:

在试, 一会回你

awfans 说:

先不用管其他的, 你使用 buildroot 的 output/host/bin/arm-linux-gcc 编译 lvgl 就可以了。

#37 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-09 16:34:51

在试, 一会回你

awfans 说:

先不用管其他的, 你使用 buildroot 的 output/host/bin/arm-linux-gcc 编译 lvgl 就可以了。

#38 Re: 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-09 15:10:48

感谢! 真有可能是工具链的问题,但我还没试成功

buildroot的工具链 我就用默认的,没动,  之后我在buildroot下找到了它下载的arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2压缩包, 之后我解压,有个arm-2014.05文件夹,内部有arm-none-linux-gnueabi和 bin 等文件夹

之后我就到littlevgl中将Makefile修改如下
CC ?= /home/steven/dev/arm-2014.05/arm-none-linux-gnueabi-gcc
也能编译过,  但最后下载到板子上, 执行./demo  还是报同样的错 line 1: syntax error: unexpected ")".

我感觉我还是哪里不对,  是不是buildroot中也要配置外部工具链? 也就是arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2这个,我尝试改了,但是编译buildroot老是提示Cannot execute cross-compiler

awfans 说:

1. 首先用 crc32或者md5工具看下文件是否相同, 与电脑上的文件对比是否一致.
2. 如果一致, 用静态链接, gcc 的参数是 -static
3. 如果用静态链接没有问题, 那是你的rootfs里面的c库和littlevgl的c库不一致, 用同一个工具链编译即可。

#39 全志 SOC » LittlevGL最后如何打包到nano板子上自动运行的? » 2019-09-09 10:08:11

shiqx429
回复: 27

我现在已经编译好了LittlevGL的bin, 我参考pack_tf_img.sh这个脚本,里面有以下语句
if [ $_ADD_LITTLEVGL_DEMO = true ]
        echo_tip "we gonna add littleVgl demo in your dir /root"
        then sudo mkdir -p p2/root/littlevgl_demo &&\
            sudo cp $_TOP_DIR/littlevgl_demo/$_SCREEN_PRAM/* p2/root/littlevgl_demo/


我就在我的脚本里加了
#LittlevGL
mkdir -p rootfs/root/littlevgl_demo 我加的
cp -r $LITTLEVGL_BIN  rootfs/root/littlevgl_demo我加的

mkfs.jffs2 -s 0x100 -e 0x10000 --pad=0xAF0000 -o jffs2.img -d rootfs/ 以下是文档里的语句,
dd if=jffs2.img of=$OUT_FILENAME bs=1k seek=5184 conv=notrunc


我也将编译好的demo的可执行文件放到了root/littlevgl_demo 文件夹下, 之后打包成spi的flashimage,下载到板子上,  之后也没有什么界面出来,  还是跟没一直littlevgl以前一样,只是控制台界面, 我是哪里少加了什么吧?是不是linux启动后要自动运行littlevgl的demo可执行文件?  我尝试过在控制台下运行那个demo可执行文件(./demo), 提示我./demo: line 1: syntax error: unexpected ")"

#40 Re: 全志 SOC » nano编译LittlevGL时报错 » 2019-09-09 08:18:54

谢谢! 问题找到了, 是我把Makefile中的CC ?= 问号被我不小心删掉了,补上就好了

firstman 说:

你的toolchain 可能配置有点点问题, 在 Makefile 里面手动加入 -I/usr/include/

强制搜索这个目录试一试

#41 Re: 全志 SOC » nano编译LittlevGL时报错 » 2019-09-06 17:01:43

/lv_drivers/display/../../lv_drv_conf.h:101:39: fatal error: SDL2/SDL.h: No such file or directory
#  define MONITOR_SDL_INCLUDE_PATH    <SDL2/SDL.h>

#42 全志 SOC » nano编译LittlevGL时报错 » 2019-09-06 17:00:40

shiqx429
回复: 3

大家好
我在编译LittlevGL时候,执行make后,提示缺少SDL.h
我已经执行了
### Install SDL
You can download SDL from https://www.libsdl.org/

On Linux you can install it via terminal:
```
sudo apt-get update && sudo apt-get install -y build-essential libsdl2-dev
```

并且/usr/include/SDL2/SDL.h 也是在的,怎么提示我找不到这个文件呢?

#43 Re: 全志 SOC » 新人求助:nano板子 根文件系统编译问题 » 2019-09-05 13:12:55

好文章,之前没看到,可惜了!

jiangming1399 说:

再发一次这个: https://whycan.cn/t_2179.html 希望对你有所帮助

#45 Re: 全志 SOC » 新人求助:nano板子 根文件系统编译问题 » 2019-09-05 09:06:14

你好,能不能把buildroot-2017.08.tar.gz 配套的.config给我参考一下啊?

晕哥 说:

那个默认的好像有Qt配置,所以很大,把Qt 禁用就好了

#46 Re: 全志 SOC » 新人求助:nano板子 根文件系统编译问题 » 2019-09-04 18:59:12

这样啊?我刚入门,不敢乱去掉,提供的文档要是再完善一些就好了, 但是tar.gz是怎么编译出来的,现在很蒙, 但是也不对啊,我就是用文档上提供的.config进行编译的,size大小不应该差这么多吧

还能这么玩 说:

在 buildroot 的 make menuconfig 里面把 不要的配置都取消, 特别是 Qt, MPlayer, ffmpeg, python 这些巨无霸, 然后就很小了。

#47 全志 SOC » 新人求助:nano板子 根文件系统编译问题 » 2019-09-04 17:22:17

shiqx429
回复: 10

我是一步一步安装文档进行操作的(http://nano.lichee.pro/build_sys/rootfs.html)
我有两个问题
1.最后生成的image是rootfs.tar(98M), 但是提供的一键刷机工具包中的文件系统是rootfs.tar.gz(2.3M),这个是怎么回事?
我在menuconfig->FileSystem image->tar the root system中也确实是生成tar的,我展开这个选项发现没有生成tar.gz的压缩格式, 这个是我哪里搞错了吗?怎么跟一键刷机工具中的rootfs差这么多

2.关于menuconfig中的toolclain-->toolclain type 应该选哪个?是builtroot toolclain 还是external toolclain?  我在论坛上看到一个帖子好像是说用external toolclain如果使用我们编译uboot的toolclain 可能是有问题


我用的buildroot是buildroot-2017.08.tar.gz,  以上两个问题请有做过这块的朋友帮忙看看,谢谢了!

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn