pc:Centos5.4
内核:linux 3.0.1
开发板:ok6410
交叉编译器:arm-linux-gcc 4.4.1
LCD驱动程序
怎么写LCD驱动程序?
1. 分配一个fb_info结构体: framebuffer_alloc
2. 设置
3. 注册: register_framebuffer
4. 硬件相关的操作
测试:
1. make menuconfig去掉原来的驱动程序
-> Device Drivers
-> Graphics support
<M> S3C LCD framebuffer support
2. make uImage
出现错误:修改/drivers/media/video/samsung/tv/s3c-tvenc 中的makefile,然后将s3c-tvenc 注释掉。
又出现错误,继续修改:/home/flinux/kernel/linux-3.0.1/drivers/media/video/samsung/fimc/s3c_fimc_core.c
224 // ctrl->open_lcdfifo = s3cfb_enable_local;
225 // ctrl->close_lcdfifo = s3cfb_enable_dma;
再出错,再改: drivers/video/samsung,修改makefile ,把s3cfb_fimd4x.c屏蔽掉
make modules
3. 使用新的uImage启动开发板:
4. 通过上面的make module,cfbcopyarea.c这三个文件在driver/video里,不过还是没编译成功,为了省麻烦,直接把里面的这三个文件和一个头文件放到一个新建文件夹里,然后添加makefile,再来make下,这样就编译出下面要的三个.ko文件了。
insmod cfbcopyarea.ko
insmod cfbfillrect.ko
insmod cfbimgblt.ko
insmod lcd.ko
echo hello > /dev/tty1 // 可以在LCD上看见hello
cat lcd.ko > /dev/fb0 // 花屏
5. 修改 /etc/inittab
tty1::askfirst:-/bin/sh
用新内核重启开发板
insmod cfbcopyarea.ko
insmod cfbfillrect.ko
insmod cfbimgblt.ko
insmod lcd.ko
insmod buttons.ko