没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
结合三星公司 ARM9 系列嵌入式处理器 S3C2410,讲解如何进行 LCD 驱动程序模块
化编程及如何将驱动程序静态加载进系统内核。
LCD(液晶显示)模块满足了嵌入式系统日益提高的要求,它可以显示汉字、字符和
图形,同时还具有低压、低功耗、体积小、重量轻和超薄等很多优点。随着嵌入式系统的应
用越来越广泛,功能也越来越强大,对系统中的人机界面的要求也越来越高,在应用需求的
驱使下,许多工作在 Linux 下的图形界面软件包的开发和移植工作中都涉及到底层 LCD 驱
动的开发问题。因此在嵌入式系统中开发 LCD 驱动得以广泛运用。
本文以三星公司 ARM9 内核芯片 S3C2410 的 LCD 接口为基础,介绍了在 Linux 平台
上开发嵌入式 LCD 驱动程序的一般方法。
本文硬件采用三星公司的 S3C2410 芯片的开发板,软件采用 Linux 2.4.19 平台,编译
器为 arm-linux-gcc 的交叉编译器,使用 640×480 分辨率的 TFT 彩色 LCD,通过对其 Linux
驱动程序进行改写和调试,成功地实现了对该种屏的驱动和显示。
嵌入式驱动的概念
设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽
了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普
通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它主要完成的功能有:对
设备进行初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给
设备文件的数据、回送应用程序请求的数据以及检测和处理设备出现的错误。
Linux 将设备分为最基本的两大类:一类是字符设备,另一类是块设备。字符设备和块
设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件 I/O 一般就紧接着发生了。
字符设备以单个字节为单位进行顺序读写操作,通常不使用缓冲技术;块设备则是以固定大
小的数据块进行存储和读写的,如硬盘、软盘等,并利用一块系统内存作为缓冲区。为提高
效率,系统对于块设备的读写提供了缓存机制,由于涉及缓冲区管理、调度和同步等问题,
实现起来比字符设备复杂得多。LCD 是以字符设备方式加以访问和管理的,Linux 把显示驱
动看做字符设备,把要显示的数据一字节一字节地送往 LCD 驱动器。
Linux 的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev 目录
下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就
像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主
设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多
个设备。对于常用设备,Linux 有约定俗成的编号,如硬盘的主设备号是 3。Linux 为所有
的设备文件都提供了统一的操作函数接口,方法是使用数据结构 struct file_operations。这
个数据结构中包括许多操作函数的指针,如 open()、close()、read()和 write()等,但由于外
设的种类较多,操作方式各不相同。Struct file_operations 结构体中的成员为一系列的接口
函数,如用于读/写的 read/write 函数和用于控制的 ioctl 等。打开一个文件就是调用这个文
件 file_operations 中的 open 操作。不同类型的文件有不同的 file_operations 成员函数,如
普通的磁盘数据文件,接口函数完成磁盘数据块读写操作;而对于各种设备文件,则最终调
资源评论
- xjdx0512012-03-22文档说了一下驱动的加载步骤,虽然有详细的说明但感觉内容都是很简单,没有深入的研究性说明,也就是说明一下操作步骤而已,里面的函数用了太多的.........,对于初学者来说谁知里面怎么写啊
winningdaffy
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功