- 具有很多编程思想,很有代表性
 - 拿到一个项目,肯定不是一上来就闷头闷脑的写代码
- 第一步要先弄清需求
 - 第二 设计框架
 - 最后才是编写代码
 - 写完后要测试代码
 
 - 程序员可以有两个发展方向
- 专家 在某个问题上专研的非常深
 - 系统 架构,对整个产品设计的各个部分很了解,可以设计出良好的框架
 
 - 需求
- 上电,LCD显示第一张图片
 - 读配置文件,根据配置文件决定是停留在当前界面还是自动显示下一副图片
 - 点击一下,出现一个对话框
 - 根据上下左右的滑动显示放大、缩小或下一副图片
 - 左右移动很快时,显示下下一幅
 
 - 设计框架
- 分成两部分
- 输入进程
 - 输出/显示进程
 
 - 输入进程调用tslib库来读取触摸屏数据
 - 对输入事件进行封装:事件、时间、类型、位置、方向、速度、幅度。。
 - 用libjpeg库显示jpg图片
 - 对上、下、左、右、当前图片都分配一块内存
 - LCD在操作系统里都有一块显存:framebuffer
 - 使用DMA将内存中的图片传输到显存framebuffer中
 
 - 分成两部分
 - 输入进程
- 主控线程,得到上报的事件,用socket发给显示线程
 - ts线程:使用tslib读取触摸屏,封装事件,上报
 - 按键线程:读按键,封装事件,上报
 
 - 显示进程
- socket接受线程:接收数据,接收socket信息
 - 放大线程:准备好当前图片的放大数据
 - 缩小线程:准备好当前图片的缩小数据
 - 上一副线程:准备好上一幅图片
 - 下一副线程
 - 当前图片线程:准备好当前图片
 - 主控线程:根据得到的事件,决定显示哪一幅图片
 
 - 驱动程序
- 触摸屏驱动 tslib
 - 按键驱动
 - LCD驱动
 - 分配5块内存,DMA操作,MMAP
 
 

