1.项目流程
弄清需求(需要完成什么)
设计框架(怎么实现需求)
编写代码(怎么通过代码设计)
测试
2.弄起需求
1.上电,LCD显示一幅图片
2.根据配置文件,决定停留当前界面还是自动显示下一张
3.点击一下,出现一个对话框(手动显示,自动显示)
4.上放大,下缩小,左右滑动切换图片
5.左右滑动很快时,切换上上/下下张图片
3.设计框架
1.输入进程
创建3个线程,按键线程,主控线程
触摸线程:不停调用tslib,当有数据后封装成事件,上报给主控线程
按键线程:没按下时休眠,按下时便产生中断,封装好上报给主控线程
主控线程:收到数据后,用socket发送给显示进程
2.显示进程
创建7个线程
socket接收线程:用来接收socket。比如左滑的数据,通知事件到主控线程
主控线程:根据得到的事件,然后调用驱动通过DMA将准备好的数据(位于某个内存上)放到显存地址framebuffer上
其他5个线程(当前,上,下,左,右)
eg:比如当主控显示完一个图片后,则开始准备好(解压上幅/下幅图片,放大,缩小的数据),方便主控线程直接调用从而提高速度。图片数据是通过应用程序用库libjpeg解压将jpeg格式转换为LCD显示格式,使用mmap()函数传到某个内存上
当前线程:点击一下,会出现一个对话框,若退出对话框后,便会通知当前线程,从而显示当前图片
对话框:按钮以及边框直接做成一个个图片,调用对话框是直接覆盖LCD即可
4.线程和进程
进程
具有一定独立功能的程序关于数据集合上的一次进行活动,是系统进行资源分配和调度的一个独立单位
线程
是进程的一个实体,是CPU调度和分派的基本单位。它是比进程更小的能够独立运行的基本单位。线程自己基本不拥有系统资源只拥有一点在运行中那个必不可少的资源。一个线程可以创建和撤销另一个线程。
区别
1.一个线程只能属于一个进程,而一个进程可以拥有多个线程
2.线程是进程工作的最小单位
3.一个进程会分配一个地址空间,进程与进程之间不共享地址空间,即共享内存
4.同一个进程下的把不同的多个线程,共享进程的地址空间
5.线程在执行过程中需要协助同步,不同进程的线程间要利用消息通信的办法实现同步。
6.线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
进程的优点
1.每个进程互相独立,不影响主程序的稳定性
2.通过增加CPU就可以扩展性能
3.可以尽量减少线程加锁和解锁的影响,极大的提高性能
进程的缺点
1.逻辑控制复杂,需要和主程序交互
2.进程的调度开销大
线程的有优点
1.程序逻辑和控制简单
2.所有线程可以直接共享内存和变量
3.线程方式消耗的总资源比进程消耗的少
线程的缺点
1.每个线程和主程序共用地址空间,最大内存地址受限
2.线程之间的同步加锁不易控制
3.一个线程的崩溃可能影响到整个程序的稳定性