第一课 第1节、数码相框之系统框架

拿到一个项目,首先得搞清楚以下四个方面

1. 弄清需求

2. 设计框架

3. 编写代码

4. 测试

对于项目的需求有以下几个方面:

1. 上电,LCD显示一副界面
2. 根据配置文件,决定停留在当前界面,还是自动的先试下一幅
3.点击一下,出现一个对话框(一开始的默认配置可能是自动显示),
  我们可以选择手动显示还是自动显示
    —————————————————————————
    | 手动显示     自动显示   |
    |                        |
    |————————————————————————
4. 显示过程中,点击屏幕,根据上下左右{ 放大、缩小、显示下一幅 }
5. 左右移动很快时,显示下下一幅

接下来讲设计框架,讲其设计的性能强一点,漂亮一点:

那么将程序分为2个部分:

1. 输入进程                              2. 显示进程(是个程序,并创建多个线程)                                                                                          
                    socket                             7个线程   
输入进程  ———————————————————————————>  接收socket  主控  当前  左   右    上    下 
(输入进程只管把数据通过socket发送出去.)                        准备 准备 准备好 准备好
        |                                                 | 左边 右边 放大的 放大的
 上报     2个线程不断地读取触摸屏                               图片 图片 图片   图片
        | 和按键的数据,并上报给主线程                         |                                                
                                                              —————————————————————————   
        |           事件                                      使用libjpeg将JPEG图片解压出
                    时间                                   |  来,存在framebuffer显存中,
      封装某些函数{  类型(点击,移动)                           对每一幅都分配一块内存
                    数据(方向,速度,幅度)                    —————————————————————————
        —————————————————————————————————                 |     |    |    |     |
           |可以方便取触摸屏 |                                   
触摸屏线程   和按键的数据      按键线程                        |     |    |    |     |
           |               |                                     
         tslib             |                              |     |    |    |     |
     (操作触摸屏))        |                                                                                                                                                                                                                           
                                                          |     |    |    |     |
 操作系统(含有驱动程序)                                   mmap  mmap  mmap mmap  mmap                  
———————————————————————————————————————————————————————————————————————————————————————
                                        (主控决定要显示当前的图像时,通过DMA传输到显存中)                                                                  
                                                     DMA
                                              显存<———————内存  内存 内存 内存   内存
                                                |
———————————————————————————————————————————————————————————————————————————————————————
 硬件:                                      (通过显存里的数据直接在LCD上显示,如果我们左移
                                              的话,会把左移准备的内存数据通过DMA传输到显
                                              存中,那么此时左移后的图像,即便为当前显示图
                                              片,同理,其他点击原理一样)
          触摸屏            按键                LCD

总结:

输入进程 :

        主控线程:得到上报的事件,用socket发出

        TS线程: 使用tslib读TS,封装事件,上报

        按键线程: 读按键,封装事件,上报

显示进程:

          放大线程:准备好当前图片的放大数据

          缩小线程:准备好当前图片的缩小数据

          上一幅线程:准备好上一幅图片

          下一幅线程:准备好下一幅图片

           当前图片线程:准备好当前图片

           主控:根据得到的时间,决定显示哪一幅

驱动:分配5块内存,DMA操作,mmap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值