Linux VGA驱动移植实验
来源:互联网 发布:大智慧股票行情软件 编辑:程序博客网 时间:2024/05/17 08:05
有了前面的LCD驱动的框架,再移植VGA驱动就相当的容易了。默认在光盘中已经支持了多款VGA驱动,我们在此基础上增加分辨率为1440*900的驱动。
在kernel/drivers/video/samsung/x4412_lcds.c中添加结构体vga_1440_900:
- /* VGA-1440X900 */
- static struct s3cfb_lcd vga_1440_900 = {
- .width = 1440,
- .height = 900,
- .bpp = 32,
- .freq = 60,
- .timing = {
- .h_fp = 48,
- .h_bp = 80,
- .h_sw = 32,
- .v_fp = 3,
- .v_fpe = 1,
- .v_bp = 17,
- .v_bpe = 1,
- .v_sw = 6,
- },
-
- .polarity = {
- .rise_vclk = 1,
- .inv_hsync = 1,
- .inv_vsync = 0,
- .inv_vden = 0,
- },
- .init_ldi = NULL,
- };
注意,上面的所有数据全来源于VGA的VESA标准,调试其他任意的VGA驱动,其参数都需要遵循VESA标准。
在结构体数组x4412_lcd_config中添加1440*900的信息:
- static struct {
- char * name;
- struct s3cfb_lcd * lcd;
- } x4412_lcd_config[] = {
- { "ek070tn93", &ek070tn93},
- { "vs070cxn", &vs070cxn},
- { "vga-1024x768", &vga_1024_768},
- { "vga-1280x1024", &vga_1280_1024},
- { "vga-1440x900", &vga_1440_900},
- { "vga-1920x1200", &vga_1920_1200},
- };
在kernel/drivers/video/samsung/s3cfb_ops.c的s3cfb_map_default_video_memory函数中,默认存在如下程序:
- memset(fb->screen_base, 0, fix->smem_len);
修改为:
- memset(fb->screen_base, 0, fix->smem_len/3);
这是内核关于不同分辨率的视频缓存存在的BUG。
编译内核后,更新内核映像,同时进入uboot后,修改uboot环境变量,执行指令如下:
- setenv bootargs "lcd=vga-1440x900 tp=ft5x06-1024x600 cam=ov2655 mac=00:09:c0:ff:ee:58"
这时,在x4412_lcds.c的lcd_setup函数会通过uboot传递给内核的环境变量自动匹配LCD参数,真正实现一个内核管理多个LCD屏及多个分辨率的VGA的功能。到此,针对1440*900的VGA分辨率的驱动移植完毕,移植其他类型的LCD或其他分辨率的VGA驱动,和些方法完全雷同。
0 0
- Linux VGA驱动移植实验
- Linux系统移植实验---网卡驱动的移植
- Linux系统移植实验---LED驱动的移植
- Linux系统移植实验---SD卡驱动移植
- Linux系统移植实验---USB驱动的移植
- VGA驱动
- linux RTC驱动移植
- linux-wireless驱动移植
- Linux移植RT73驱动
- linux驱动移植笔记
- linux驱动移植经验总结
- linux 蓝牙驱动移植
- linux I2C驱动移植
- 【ARM】Linux驱动移植
- linux驱动入门实验
- u-boot-2008.10移植并添加vga芯片ch7004的驱动
- verilog简单驱动VGA
- ARM linux 移植实验记录
- Markdonw 小技巧
- [LeetCode] Longest Palindromic Substring
- Java 文件上传 JQ 文件上传
- 创建一个字符设备驱动
- PHP常用函数总结
- Linux VGA驱动移植实验
- 如何编译Apache Hadoop2.2.0源代码
- OpenGL Tutorial: (2) Creating an OpenGL Window
- leecode(1)Two Sum
- 利用python画微分方程(组)的数值曲线
- 马上去行动马上去体验
- 在浏览器中运行applet
- Web开发教程--如何让图片在div中垂直居中
- Thinkphp3.2.2多语言包实现