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

项目说明:

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

项目流程:

  • 弄清需求
  • 设计框架
  • 编写代码
  • 测试

发展方向:

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

系统(设计框架功能)

弄清需求:

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

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

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

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

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

程序分俩部分

(1)输入进程

封装事件

linux应用项目(一)数码相框(1)数码相框之系统框架_第1张图片

(2)显示进程:

输入系统通过socket把事件发送到显示进程。多个线程 其中一个线程专门用来接收socket数据。linux应用项目(一)数码相框(1)数码相框之系统框架_第2张图片

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

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

LCD有显存framebuffer

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

linux应用项目(一)数码相框(1)数码相框之系统框架_第3张图片

DMA:传输块 不卡

显示进程大概分7个线程

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

linux应用项目(一)数码相框(1)数码相框之系统框架_第4张图片

总结:

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

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

linux应用项目(一)数码相框(1)数码相框之系统框架_第5张图片

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

linux应用项目(一)数码相框(1)数码相框之系统框架_第6张图片

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

总结:

linux应用项目(一)数码相框(1)数码相框之系统框架_第7张图片

为什么用进程线程呢?

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

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


你可能感兴趣的:(S3C2440)