首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式系统中LCD驱动的实现原理(3)

嵌入式系统中LCD驱动的实现原理(3)

LCD模块化驱动


在对S3C2410的LCD编写模块化驱动程序时,首先要从内核中去除LCD驱动。这里需要做一些改动,系统调用被加在以下文件中,需去除:/root/usr/src/arm/linux/kernel/sys.c;/root/usr/src/arm/linux/include/arm-arm下的unistd.h和lcd.h;/root/usr/src/arm/linux/arch/arm/kernel下的calls.s。
编写模块化驱动程序,有以下几个关键的函数。
● lcd_kernel_init(void)//当模块被载入时执行
● lcd_kernel_exit(void)//当模块被移出内核空间时被执行
● lcd_kernel1_ioctl(struct*inode, struct*file, unsigned int cmd, unsigned longarg) //其他功能
每当装配设备驱动程序时,系统自动调用初始化模块lcd_kernel_init(void)。
另一个必须提供的函数是lcd_kernel_exit(void),它在模块被卸载时调用,负责进行设备驱动程序的工作。
执行insmod lcd.o命令即可将LCD驱动添加到内核中,执行rmmod lcd命令即可从内核中删除LCD驱动。

静态加载LCD驱动


将写好的lcd驱动程序lcd.c放到arm/linux/drivers/char目录下,修改arm/linux/drivers/char/config.in文件,加上一行:Bool'LCD driver support'CONFIG_LCD;修改arm/linux/drivers/char/Makefile文件,加上一行:obj-$(CONFIG_LCD)+=lcd.o。


这样,当再进行make xconfig时,就会选择是否将LCD驱动编译进内核。同样的办法也可用在其他设备上。
继承事业,薪火相传
返回列表