在ARM Linux(Anyka)中使用AWTK嵌入式GUI

前文所述早日获得了安凯电子玩具一块经分析这是一个极致低成本的方案带来的后果就是虽然有了Linux但其实没有一种相对于裸机平台的的感觉各方面开发还是挺受束缚的

我们要做的是一个视频对讲的项目需要用到GUI最开始想的是Qt结果没想到板子到手是个这样的情况各方面开发都还是比较底层的直接去调厂家的SDK还没有源码而且8MFlash都可能还没一个Qt的库大只好放弃了Qt评估了一番嵌入式的常用UI发现了AWTK这个国产的嵌入式UI粗看在国内的开源项目中还是少有的看上去还算可靠的

AWTK的兼容性非常不错上到Windows基于XorgLinux和甚至是微信小程序中有各种常见的嵌入式Linux下探RTOS等单片机系统甚至可以直接在单片机上裸机运行

我所用的平台安凯原厂提供了移植不过没有公开发出来考虑到板子提供了Linux Framebuffer/dev/fb0设备理论上Linux嵌入式通用的移植就可以使用了

tslib编译

tslib是一个触控处理的库提供了从原始信号输入去抖动位置校准等对于原始触摸信号处理的能力AWTK的触控功能是基于此库实现的

Linux万物皆为文件设备不例外输入设备更是如此输入设备一般都注册在/dev/input路径下鼠标设备一般命名为/dev/input/mice触摸设备一般命名为/dev/input/eventXX为触摸设备的序号一般是0至于为什么鼠标设备没有触摸设备那样后面的X大概是因为一个系统鼠标指针就一个吧所有鼠标的信号应该都会反馈到/dev/input/mice

而取决与不同触摸设备对于信号的定义方式可能不同等实际情况以及触摸设备本身可能出现过于灵敏导致出现不期望的操作等原始信号往往还需要进行滤波等处理才可以使用在应用程序的交互上

tslib就是替你完成这一系列处理使应用程序的开发者不用关心触摸设备的细节可以直接拿到可信的触摸位置从而在交互上响应显然AWTK的开发者也是处于这样的目的所以使用此库作为触摸信号的处理前端因此要编译AWTK我们需要先编译TSLIB

./configure --disable-static --enable-shared --enable-input=shared --enable-linear=shared --enable-iir=shared --host=arm-linux --prefix=/home/mr/anyka/build_dir/tslib CC=/home/mr/arm-anykav500-linux-uclibcgnueabi/bin/arm-anykav500-linux-uclibcgnueabi-gcc CXX=/home/mr/arm-anykav500-linux-uclibcgnueabi/bin/arm-anykav500-linux-uclibcgnueabi-g++

make

make install

我最先编译的是静态库在编译时一切顺利但在编译AWTK死活无法找到我编译好的Tslib的静态库但将tslib从静态库变为动态库后便没有再出错了所以这里我是编译为了动态库供参考

我使用的tslib版本目前提供了configureCMake两种编译系统的支持这里用的是configure

可以看到这个库的configure程序是通过环境变量指定交叉编译器的

运行完上述命令后若无报错理论上编译好的tslib库已经保存在设置的prefix目录下了