基于嵌入式LINUX和EPD显示的PDA底层驱动设计
发布时间:2020-10-25 02:55
随着嵌入式Linux的的迅速发展以及PDA应用逐渐广),利用嵌入式Linux来搭建其操作系统已经成为最具潜力的PDA技术发展方向。并且由于电子墨水显示技术的不断进步,其终将取代现有的显示设备。本毕业设计的目标是设计基于嵌入式Linux和电子墨水显示技术PDA的底层驱动。并实现对用户应用程序的透明。 PDA产品比较重要的一点就是产品给人最直观的印象,即显示的特性和内容,还有待机时间的长短即耗电量的大小。现有的产品一般使用LCD作为显示输出,但是其显示原理决定了它在感官上不是很舒服,另外其较大的耗电量也限制了产品的待机时间。而本系统采用一种新式的电子墨水屏幕EPD,其驱动普通的LCD有较大不同。而其特殊的特性就决定了系统需要使用另一种方式驱动它。 本文首先分析了嵌入式Linux下驱动程序的开发特点,具体描述驱动开发中的一些关键技术,并分析了相关的算法和实现原理;然后分析了EPD屏的特点并设计了其相应的驱动程序,利用了一种新式的双帧缓冲区机制来实现对用户层透明的设备驱动。另外设计了一种分层的USB驱动来实现设备与主机之间方便的数据同步。最后简要描述了嵌入式浏览器Firefox及其移植,编译过程。整个系统经过设计与
【学位单位】:上海交通大学
【学位级别】:硕士
【学位年份】:2007
【中图分类】:TP302
【部分图文】:
面概括的两个任务:模块的某些函数作为系统中断。标代码(没有连接为完整的可执行文件)构成,正在运行的内核,也可以由 rmmod 程序解除链一个硬件的驱动,Linux 可以采用把驱动程两种方法。由于使用模块化方式加载驱动可以试,所以在编写调试阶段采用模块化方式。不 的驱动模块文件。如果要使用这个驱动程序这样驱动就会根据自己的类型(字符设备类型字符设备而 USB 驱动是块设备)向系统注册,,这个主设备号就是系统对它的唯一标识。然用来创建来一个一般放置在/dev 目录下的设件了,可以通过 open、read、write 等命令对件操作和文件系统的接口,通过读写设备文件如图所示。应用程序
图 3-1 Linux 虚拟地址到物理地址的映射Figure 3-1 Sketch map of Linux virtual address map to physical addressLinux 内核管理物理内存是通过分页机制实现的,在 ARM 体系结构中它将整内存划分成无数 4k 大小页,从而分配和回收内存的基本单位便是内存页了。用分页管理有助于灵活分配内存地址,因为分配时不必要求必须有大块的连续存,系统可以凑出所需要的内存供进程使用。虽然如此,但是实际上系统使用存还是倾向于分配连续的内存块,因为分配连续内存时,页表不需要更改,因能降低 TLB 的刷新率增加访问速度。鉴于上述需求,内核分配物理页为了尽量减少不连续情况,采用了“伙伴” 系 来 管 理 空 闲 页 框 。 内 核 中 分 配 空 闲 页 框 的 基 本 函 数 是t_free_page/get_free_pages,它们或是分配单页或是分配指定的页框。伙伴系分配算法见下节描述。get_free_page 是在内核中分配内存,不同于 malloc 在用户空间中分配,malloc用堆动态分配,实际上是调用 brk()系统调用,该调用的作用是扩大或缩小进堆空间,它会修改进程的 brk 域。如果现有的内存区域不够容纳堆空间,则会页面大小的倍数位单位,扩张或收缩对应的内存区域,但 brk 值并非以页面大
解决这个问题,Linux 采用一种 slab 算法来分配体积比较小的术不但避免了内存内部碎片,减少对伙伴系统分配算法的调用好利用硬件缓存提高访问速度。Slab 并非是脱离伙伴关系而存分配方式,slab 仍然是建立在页面基础之上, Slab 将页面块以供分配。于 slab 的内存管理器中,基本的概念是 cache,slab 和对象。一em_cache_s 描述)对应一组 slab(1:n),每个 slab(用 kmem_一组大小相同的对象(1:n)。系统中所有的 cache 和同属于一slab 各自连成一个双向链表。另外,系统用一个静态建立的 cches_s 结构大小的内存块,名字是 cache_cache。对于小对象配大小为一个物理页面的内存,kmem_slab_s 描述符保存在这页象的 slab 描述符保存在单独建立的 cache_slab 中。slab 分内核的核心对象以及内核中小内存的分配 kmalloc。三者的对
【引证文献】
本文编号:2855355
【学位单位】:上海交通大学
【学位级别】:硕士
【学位年份】:2007
【中图分类】:TP302
【部分图文】:
面概括的两个任务:模块的某些函数作为系统中断。标代码(没有连接为完整的可执行文件)构成,正在运行的内核,也可以由 rmmod 程序解除链一个硬件的驱动,Linux 可以采用把驱动程两种方法。由于使用模块化方式加载驱动可以试,所以在编写调试阶段采用模块化方式。不 的驱动模块文件。如果要使用这个驱动程序这样驱动就会根据自己的类型(字符设备类型字符设备而 USB 驱动是块设备)向系统注册,,这个主设备号就是系统对它的唯一标识。然用来创建来一个一般放置在/dev 目录下的设件了,可以通过 open、read、write 等命令对件操作和文件系统的接口,通过读写设备文件如图所示。应用程序
图 3-1 Linux 虚拟地址到物理地址的映射Figure 3-1 Sketch map of Linux virtual address map to physical addressLinux 内核管理物理内存是通过分页机制实现的,在 ARM 体系结构中它将整内存划分成无数 4k 大小页,从而分配和回收内存的基本单位便是内存页了。用分页管理有助于灵活分配内存地址,因为分配时不必要求必须有大块的连续存,系统可以凑出所需要的内存供进程使用。虽然如此,但是实际上系统使用存还是倾向于分配连续的内存块,因为分配连续内存时,页表不需要更改,因能降低 TLB 的刷新率增加访问速度。鉴于上述需求,内核分配物理页为了尽量减少不连续情况,采用了“伙伴” 系 来 管 理 空 闲 页 框 。 内 核 中 分 配 空 闲 页 框 的 基 本 函 数 是t_free_page/get_free_pages,它们或是分配单页或是分配指定的页框。伙伴系分配算法见下节描述。get_free_page 是在内核中分配内存,不同于 malloc 在用户空间中分配,malloc用堆动态分配,实际上是调用 brk()系统调用,该调用的作用是扩大或缩小进堆空间,它会修改进程的 brk 域。如果现有的内存区域不够容纳堆空间,则会页面大小的倍数位单位,扩张或收缩对应的内存区域,但 brk 值并非以页面大
解决这个问题,Linux 采用一种 slab 算法来分配体积比较小的术不但避免了内存内部碎片,减少对伙伴系统分配算法的调用好利用硬件缓存提高访问速度。Slab 并非是脱离伙伴关系而存分配方式,slab 仍然是建立在页面基础之上, Slab 将页面块以供分配。于 slab 的内存管理器中,基本的概念是 cache,slab 和对象。一em_cache_s 描述)对应一组 slab(1:n),每个 slab(用 kmem_一组大小相同的对象(1:n)。系统中所有的 cache 和同属于一slab 各自连成一个双向链表。另外,系统用一个静态建立的 cches_s 结构大小的内存块,名字是 cache_cache。对于小对象配大小为一个物理页面的内存,kmem_slab_s 描述符保存在这页象的 slab 描述符保存在单独建立的 cache_slab 中。slab 分内核的核心对象以及内核中小内存的分配 kmalloc。三者的对
【引证文献】
相关硕士学位论文 前2条
1 谭翼;基于ARM-Linux平台的Java虚拟机的移植研究[D];昆明理工大学;2007年
2 龙蔚;基于ARM的嵌入式新风测控系统的研究与设计[D];北京邮电大学;2009年
本文编号:2855355
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2855355.html