Linux VGA驱动移植实验【转】

本文转载自:http://m.blog.csdn.net/bzw73/article/details/46564275

有了前面的LCD驱动的框架,再移植VGA驱动就相当的容易了。默认在光盘中已经支持了多款VGA驱动,我们在此基础上增加分辨率为1440*900的驱动。

在kernel/drivers/video/samsung/x4412_lcds.c中添加结构体vga_1440_900:

  1. /* VGA-1440X900 */
  2. static struct s3cfb_lcd vga_1440_900 = {
  3. .width         = 1440,
  4. .height        = 900,
  5. .bpp  = 32,
  6. .freq  = 60,
  7. .timing = {
  8. .h_fp = 48,
  9. .h_bp          = 80,
  10. .h_sw         = 32,
  11. .v_fp = 3,
  12. .v_fpe         = 1,
  13. .v_bp          = 17,
  14. .v_bpe        = 1,
  15. .v_sw         = 6,
  16. },
  17. .polarity = {
  18. .rise_vclk      = 1,
  19. .inv_hsync      = 1,
  20. .inv_vsync      = 0,
  21. .inv_vden       = 0,
  22. },
  23. .init_ldi = NULL,
  24. };

复制代码

注意,上面的所有数据全来源于VGA的VESA标准,调试其他任意的VGA驱动,其参数都需要遵循VESA标准。

在结构体数组x4412_lcd_config中添加1440*900的信息:

  1. static struct {
  2. char * name;
  3. struct s3cfb_lcd * lcd;
  4. } x4412_lcd_config[] = {
  5. { "ek070tn93",             &ek070tn93},
  6. { "vs070cxn",               &vs070cxn},
  7. { "vga-1024x768",       &vga_1024_768},
  8. { "vga-1280x1024",     &vga_1280_1024},
  9. { "vga-1440x900",      &vga_1440_900},
  10. { "vga-1920x1200",     &vga_1920_1200},
  11. };

复制代码

在kernel/drivers/video/samsung/s3cfb_ops.c的s3cfb_map_default_video_memory函数中,默认存在如下程序:

  1. memset(fb->screen_base, 0, fix->smem_len);

复制代码

修改为:

  1. memset(fb->screen_base, 0, fix->smem_len/3);

复制代码

这是内核关于不同分辨率的视频缓存存在的BUG。

编译内核后,更新内核映像,同时进入uboot后,修改uboot环境变量,执行指令如下:

  1. 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驱动,和些方法完全雷同。

时间: 2024-10-18 08:29:49

Linux VGA驱动移植实验【转】的相关文章

Linux声卡驱动移植和测试

一.分析驱动程序,根据开发板修改代码 代码太长,就不贴了,几个注意点: 1. 查看开发板原理图和S3C2410的datasheet,UDA1341的L3MODE.L3DATA.L3CLOCK分别与S3C2410的GPB2.GPB3.GPB4相连,IISLRCK=GPE0, IISSCLK=GPE1, CDCLK=GPE2,IISSDI=GPE3, IISSDO=GPE4,部分代码如下: 2. 两个重要结构体:audio_buf_t和audio_stream_t,其中audio_stream_t

linux网卡驱动移植

这里重要的是物理层PHY receiver,MAC(media access control)层,这里与软件中的协议栈不同,在硬件上MAC是PHY的下一层.DM9000A将MAC和PHY做到一起,也可以像IIS设备那样,SOC内有IIS的控制器,而声卡UDA1341放在片外.网卡当然也有这种设计,它是把PHY的下层MAC放入SOC内,片外的是PHY,当然我暂时还没见过这种的.DM9000A的输入是并行的总线,可以和CPU直接IO.而IIS那种需要通过:CPU CORE BUS->I2S控制器->

Linux Spi驱动移植小结

2012-01-07 22:21:29 效果图: 理论学习后,主要是linux中spi子系统设备框架的了解后,主控制器与设备分离的思想,那么我要开始动手了. 1,  make menuconfig添加spi配置 2,platform_driver及platform_device数据结构都有了.于是在mach-tq2440.c中tq2440_devices[]结构添加里         &s3c_device_spi1,//by apple 3,接着开始make zImage. 出错,发现串口信息

Linux声卡驱动移植和測试

一.分析驱动程序,依据开发板改动代码 代码太长,就不贴了,几个注意点: 1. 查看开发板原理图和S3C2410的datasheet,UDA1341的L3MODE.L3DATA.L3CLOCK分别与S3C2410的GPB2.GPB3.GPB4相连.IISLRCK=GPE0, IISSCLK=GPE1, CDCLK=GPE2,IISSDI=GPE3, IISSDO=GPE4,部分代码例如以下: 2. 两个重要结构体:audio_buf_t和audio_stream_t,当中audio_stream_

【Linux驱动】TQ2440 DM9000E网卡驱动移植(Linux-2.6.30.4)

花了一天的时间研究了一下Linux-2.6.30.4版本号内核下关于TQ2440 DM9000E的网卡驱动移植.总结一下自己的收获. 事实上.在Linux-2.6.30.4版本号内核下有关于网卡驱动,可是这个网卡驱动不是针对于 DM9000E.而是针对于 DM9000的. 因此要在此基础之上改动一些參数.而且打上必要的相关代码.这个网卡驱动移植是參照了"天嵌科技出品-Linux移植之Step By Step_V4.6"的文档.但就是这样.还是花费了将近一天的时间.事实上这里的难点在于:

linux驱动移植(nand,yaffs2)

原文:http://blog.sina.com.cn/s/blog_7090b8670101b0bi.html linux驱动移植(nand,yaffs2) 在linux操作系统的顺利移植之后,linux的内核虽然在板子上跑了起来,但是此时linux还不支持板子的的各个硬件,比如说lcd,摄像头,声卡,usb等模块,我们必须要在板子上装入驱动程序后,才能上这些硬件在linux操作系统下工作. 这些驱动在内核中都有驱动的源码,我们要做的就是将这些驱动源码编译到内核中,当然在编译之前是需要对驱动源码

Linux开源模块移植概述暨交叉编译跨平台移植总结--摘自《嵌入式Linux驱动模板精讲与项目实践》

本文摘自<嵌入式Linux驱动模板精讲与项目实践>一书中的"开发与调试技巧". Linux的强大威力就在于有很多开源项目可以使用,通常很多需求可以通过寻找相关的开源模块做为快速解决方案.要把这些开源模块应用到嵌入式中,其中一个关键点就是要使用交叉编译工具对开源项目进行交叉编译. 根据具体情况,下载的开源项目在组织上有很多情况,在此对各种情况进行归类介绍. 1. 下载的开源软件包找不到Makefile 对于这种开源包通常是采用configure的方式组织的,那么第一步就是使用

I.MX6 SHT20 Linux 驱动移植

/*********************************************************************** * I.MX6 SHT20 Linux 驱动移植 * 说明: * 本来打算使用SHT10来做湿度检测,发现其并不是I2C接口,当然也使用 * GPIO能获取到相关数据了,不过由于不小心将其烧坏了,所以换成SHT20. * * 2016-10-10 深圳 南山平山村 曾剑锋 ****************************************

Linux驱动学习之TQ2440 DM9000E网卡驱动移植(Linux-2.6.30.4)

引言 在之前的文章中,我们介绍了如何使用Scala IDE也就是eclipse中集成的Scala开发插件来进行Scala语言程序的开发,在使用了一段时间之后,发现eclipse对Scala的支持并不是很好.用户体验比较差,比如联想速度比较慢等.由于在公司一直使用的Scala开发工具是Intellij IDEA(好吧,其实我使用Scala IDE的目的就是想试一下这两个各有什么优缺点),各方面感觉还不错,所以在此介绍一下这个开发环境. Intellij IDEA是jetbrain开发的一个IDE,