参考文章:
项目需求分析
程序架构
1. 为了提高程序的复用性,将应用程序分为两个进程,进程之间通过socket套接字进行通信。
2. 两个进程下通过多线程框架,完成不同功能模块的调度。
3. 本项目设计的驱动程序除了前文以完成的LCD驱动、触摸屏驱动、按键驱动,还需设计DMA驱动(mmap映射)将存于内存中的图片放入LCD显存中,减少CPU的占比。
输入进程(3线程):
- 主控线程:得到上报的事件,用socket套接字发送给显示进程
- ts线程:使用tslib读触摸屏(input子系统封装事件,上报)
- 按键线程:读按键,没有事件时会休眠(input子系统封装事件,上报)
显示进程(7线程):
- socket线程:接收输入进程中socket发送的数据
- 放大线程:准备好当前图片的放大数据
- 缩小线程:准备好当前图片的缩小数据
- 上一幅线程:准备好上一幅图片数据
- 下一幅线程:准备好下一幅图片数据
- 当前图片线程:准备好当前图片数据
- 主控线程:根据得到的事件,决定显示哪一幅图片
驱动程序:
分配5块内存、DMA操作、mmap函数直接操作内存
点阵字符显示
- 准备点阵字符库和点阵汉字库
- 根据选择的点阵大小,来进行对应编码
- 显示字母:“end宿命”