阅读:1604回复:1
pci显卡驱动求助
嵌入式系统(PowerPC405ep+MontaVista Linux)上做pci显卡的驱动,现在无法正确获得显卡寄存器的内容,已经将做了内存映射到地址空间。是什么原因啊。好象ppc系统上无法获得显卡上VGA BIOS的内容,是不是因为vga bios没有对显卡的寄存器做初始化?vga bios的作用是做什么的?如何解决?先谢过了。
pci上检测到了该显卡,vendor ID,device ID都对, 显卡为ati rage128 我在pc机上windowsXP查看显卡资源, 内存范围:0xE8000000-0xEBFFFFFF 输入/输出范围:D000-D0FF 内存范围:0xED000000-0xED003FFF 这些资源是固定的还是由操作系统分配的,与嵌入式系统上不一样。 在嵌入式系统上是: 0xBC000000-0xBFFFFFFF 0xFF00-0xFFFF 0xBBFFC000-BBFFFFFF 源码/kernel/drivers/video/aty128fb.c 在aty128_pci_register()函数中 reg_addr = pci_resource_start(pdev, 2); request_mem_region(reg_addr, pci_resource_len(pdev, 2) info->regbase = ioremap(reg_addr, 0x1FFF); /* Grab memory size from the card */ info->vram_size = aty_ld_le32(CONFIG_MEMSIZE) & 0x03FFFFFF; 这时aty_ld_le32(CONFIG_MEMSIZE)的值是0,所以后面的代码就执行错误了。 pci部分应该没问题,在pci上插上网卡,加上网卡驱动,网卡可工作。 |
|
最新喜欢:HuYugu... |
沙发#
发布于:2003-11-05 11:52
个人理解:
显卡资源是系统bios根据不同硬件环境进行分配的。 pc 机上 linux 环境下显卡工作流程: 遍历 pci configure space, 找到匹配的 vendor & device ID. 通过 mmap pci configure space 中 mmreg 就可对显卡 reg 进行直接操作。 然后如果你有足够的硬件信息,你就可以做任何事(只要显卡硬件支持 :} )。 另,如果你确信只是 aty_ld_le32(CONFIG_MEMSIZE) 造成代码错误,你可以先代入 固定值 再慢慢测试 我也不是很明白,希望有高手继续帮你吧! good luck |
|