Linux小项目-数码相册设计

1. 前言 这是基于linux系统开发板设计一个小项目-数码相册,在lcd屏上可以显示完成常见的图片显示,翻页、旋转、缩放等功能。
开发板采用友善之臂的tiny4412开发板,cpu是三星的4412,最高主频1.5ghz。板子配有8g的emmc,2g的ddr,运行linux3.5内核,文件系统采用busybox制作的最小根文件系统,不带图形桌面框架,系统是最小最精简的系统。
要完成整个项目相册的功能,需要的东西还是比较多的,首先要编译安装各种图片库: libjpg,giflib,libpng等等,图片需要缩放,需要支持缩放算法;lcd界面上的文字,时间采用矢量字体显示的,还需要交叉编译安装freetype库。然后硬件层,需要编写lcd屏驱动(帧缓冲框架),触摸屏驱动(输入子系统),三轴加速度计驱动(mma7660飞思卡尔的芯片)。
整个项目的代码布局如下:
如果把整个项目代码写完一遍,基本上linux驱动、应用层编程都能够熟悉一遍。
涉及的技术点总结:
(1)png、jpg、gif等各种开源图片库的编译安装,完成对应图片解码,显示。整个过程里还需要懂得png、jpg、gif图片的构造原理,如何读取数据,如何提取rgb数据,最终在lcd屏上完成显示。
(2)lcd驱动编写,首先得了解linux帧缓冲框架原理,明白lcd屏的时序,才能编写驱动。应用层需要明白如何针对帧缓冲框架完成应用编程,实现画点、画线、文字等基本显示。
(3)触摸屏驱编写,触摸屏驱动芯片是ft5x06,这个iic接口的芯片,编写触摸屏驱动需要熟悉iic子系统、输入子系统、内核中断、工作队列等框架,因为触摸屏芯片支持笔中断,需要注册中断,在中断服务函数里调用工作队列实时读取数据。 应用层还需要适配tslib库接口,让tslib去读取输入子系统上传的坐标,还能完成校准,测试等功能,最终在自己工程内再封装函数去读取tslib接口返回的坐标数据,完成触屏屏逻辑处理。
(4)三轴加速度mma7660驱动编写,通过三轴加速度测量开发板的姿态,完成数码相册里图片的自动上下左右翻转,手机相册都有这个功能,横竖屏切换。
(5)按键驱动编写,数码相册支持按键翻页、触摸屏滑动翻页、自动图片播放(幻灯片)等功能,所以还需要编写按键驱动,按键驱动采用杂项字符设备编写,通过ioctl接口上传按键值。
(6)矢量字体库编译安装,界面上需要显示各种文字提示、时间等信息。用到矢量字体ttc,ttf等。
图片的翻页采用双向链表完成,支持左右翻页,更新链表时,将指定目录下所有图片加到双向链表里,通过按键、触摸屏、自动播放时,从链表里获取图片地址完成显示。

;>
英特尔i5-10600现身跑分,有6核12线程
拓维信息面向OpenHarmony生态战略 共建自主创新国产基础软件生态
为什么在IC的VCC入口串联一个小电阻?
三星成为了失败者,在中国这个全球最大智能机市场的份额已不到1%
如何查看模块的诊断信息
Linux小项目-数码相册设计
破裂强度试验机/爆破强度试验机
颜水成:360拥有领先的人工智能技术
美高森美通过战略性收购和创新在2017年继续实现增长
如何选择电源才是最适合系统的?电源的摆放和走线有什么注意事项?
EMC基础知识:开关电源产生的噪声
谷歌已向Android,iOS和Unity移动开发人员发布了ARCore 1.20
在线式户外UPS不间断电源的特点有哪些
酒店智能门锁的功能和四个电路介绍
Orange灵活SD-WAN解决方案助力Getinge运营
TI HDC2080数字温湿传感器在贸泽开售 让智能设备精度更高、功耗更低
浅谈植物病害诊断仪在智慧农业领域中的应用
新品Aircharge立式风冷无线充的开箱图赏
光纤KVM技术在电力行业中的应用
鲁大师2016年芯片排行top20:麒麟960获CPU冠军