linux相框应用程序,linux应用项目(一)数码相框(1)数码相框之系统框架

项目说明:

数码相框项目:看着简单 涉及到的内容是很多的。

项目流程:

弄清需求

设计框架

编写代码

测试

发展方向:

专家(某个问题专研深刻)

系统(设计框架功能)

弄清需求:

(1)    上电,LCD显示一副图片

(2)    根据配置文件,决定停留当前界面还是自动显示下一张

(3)    点击一下,出现一个对话框(手动,自动)

(4)    上放大,下缩小,左右切换

(5)    左右移动很快,显示下一张

程序分俩部分

(1)输入进程

封装事件

bf3499cd126193f63175a55faede46d0.png

(2)显示进程:

输入系统通过socket把事件发送到显示进程。多个线程 其中一个线程专门用来接收socket数据。22f2869ce4b8d83b62abeca31bb238ca.png

一个线程准备图片,左划的时候 线程开始准备左边的图片。等等 加快速度

图片存在哪里?用库libjpeg解压图片(解压后可以直接在LCD上显示的格式),然后开一块内存把解压后的图片存在framebuffer中。

LCD有显存framebuffer

主控线程,通过DMA把要显示的图片移动到当前图片的显存中 然后LCD显示。左移时主控通过DMA更新显存。

c19bfc268eceec654584c1b65f9ba8f6.png

DMA:传输块 不卡

显示进程大概分7个线程

驱动中分配显存,应用程序用libjpeg是通过mmap使用。

4100b0bbdc98e74b51effd99ed19ee08.png

总结:

输入进程把事件发给显示进程,事件怎么来呢 ,可能从触摸屏来也可能是按键来。

那么输入进程也创建多个线程,触摸屏线程,按键线程

4c02d278cf500de804a3477e930ea5c2.png

触摸屏线程:不停的调用tslib得到触摸屏数据,得到后封装好 上报给主控线程。主控线程收到后发送socket。同理按键线程。方便扩展。显示端的主控线程接受到后决定显示5个图片中的哪一个。

dde51dd46218ad56fe48706009915500.png

如果显示第一个,主控立刻启动DMA把数据传输给显存进行显示。发现左移 立刻DMA一种最新内容到显存。

总结:

820916cbf35b6804c679d142faf9de27.png

为什么用进程线程呢?

某个功能单独独立出来。方便增删。

全局变量可以在多个线程内使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值