微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 嵌入式系统中LCD驱动的实现原理

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

时间:11-09 来源: 点击:

程序来完成的。在应用程序中,操作/dev/fb的一般步骤如下:打开/dev/fb设备文件;用ioctrl操作取得当前显示屏幕的参数,如屏幕分辨率和每个像素的比特数,根据屏幕参数可计算屏幕缓冲区的大小;将屏幕缓冲区映射到用户空间;映射后即可直接读写屏幕缓冲区,进行绘图和图片显示了。

  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驱动编译进内核。同样的办法也可用在其他设备上。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top