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