WhyCan Forum

本站无需注册,无需积分,无需回复可下载所有资料,如果真的喜欢小站,请您注册之后请至少回复一个帖子激活Id,谢谢支持! 站长QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-09-09 10:08:11

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

LittlevGL最后如何打包到nano板子上自动运行的?

我现在已经编译好了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 ")"

离线

#2 2019-09-09 10:11:46

awfans
会员
注册时间: 2018-04-03
累计积分: 186

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

离线

#3 2019-09-09 15:10:48

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

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库不一致, 用同一个工具链编译即可。

离线

#4 2019-09-09 15:38:34

awfans
会员
注册时间: 2018-04-03
累计积分: 186

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

离线

#5 2019-09-09 16:34:51

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

在试, 一会回你

awfans 说:

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

离线

#6 2019-09-09 16:44:49

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

还是报同样的错./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 就可以了。

离线

#7 2019-09-09 17:06:47

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,403

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

离线

#8 2019-09-09 17:21:03

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

不能去, 一旦去掉就编译报错了, 就找不到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 后面的问好去掉试一试

离线

#9 2019-09-09 17:29:23

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,403

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

离线

#10 2019-09-09 17:36:12

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

离线

#11 2019-09-09 17:54:07

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

我现在改了如下几个地方
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

最近编辑记录 shiqx429 (2019-09-09 17:55:46)

离线

#12 2019-09-09 18:06:13

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,403

Re: LittlevGL最后如何打包到nano板子上自动运行的?

离线

#13 2019-09-09 18:18:14

awfans
会员
注册时间: 2018-04-03
累计积分: 186

Re: LittlevGL最后如何打包到nano板子上自动运行的?

离线

#14 2019-09-09 18:50:11

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

好的,感谢二位,我再多看看,谢谢了

离线

#15 2019-09-09 19:53:34

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

状况更新一下:
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
暂时还没启动起来,我再看看

离线

#16 2019-09-09 20:47:28

firstman
会员
注册时间: 2019-04-06
累计积分: 154

Re: LittlevGL最后如何打包到nano板子上自动运行的?

如果改 fb 了, 为什么还用 SDL2 呢?

离线

#17 2019-09-10 17:30:22

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

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

离线

#18 2019-09-10 17:48:16

qter
会员
注册时间: 2017-09-14
累计积分: 11

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

离线

#19 2019-09-10 19:18:38

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

qter 说:

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

离线

#20 2019-09-10 20:02:29

xm1994
会员
注册时间: 2019-07-03
累计积分: 24

Re: LittlevGL最后如何打包到nano板子上自动运行的?

shiqx429 说:

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

qter 说:

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

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

离线

#21 2019-09-10 20:04:10

路漫漫
会员
注册时间: 2019-07-22
累计积分: 28

Re: LittlevGL最后如何打包到nano板子上自动运行的?

楼上厉害, 感谢分享!

离线

#22 2019-09-11 07:50:53

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

我看过了,如果确实不用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

离线

#23 2019-09-11 08:17:54

qter
会员
注册时间: 2017-09-14
累计积分: 11

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

离线

#24 2019-09-11 09:47:24

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

qter 说:

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

离线

#25 2019-09-11 09:53:57

v3s
会员
注册时间: 2017-09-08
累计积分: 105

Re: LittlevGL最后如何打包到nano板子上自动运行的?

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

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

此人很懒,没有签名!

离线

#26 2019-09-11 10:32:41

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

加上了,非常感谢,   目前报错提示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 2019-09-11 10:40:31

我思故我在
会员
注册时间: 2019-09-03
累计积分: 50

Re: LittlevGL最后如何打包到nano板子上自动运行的?

离线

#28 2019-09-11 10:44:36

shiqx429
会员
注册时间: 2019-09-04
累计积分: 39

Re: LittlevGL最后如何打包到nano板子上自动运行的?

谢谢,我的问题跟他不一样 我的是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


我思故我在 说:

最近编辑记录 shiqx429 (2019-09-11 10:45:40)

离线

页脚