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