WinCE驱动开发问题

时间:2022-04-12 18:00:59
各位大侠,小弟请教了:

       在WinCE驱动的开发过程中,(我现在做的事WinCE下LCD的驱动),我想在驱动加载的过程中,将LCD清屏为某一种颜色,已验证我的驱动是正确的,但是这样的话就需要在 驱动程序中定一个全局的缓冲区,这样可以让应用程序也可以使用这一块区域。
但是 这种方法是否可行呢:如果可行的话,该如何定义该缓冲区:调用那些函数呢:
       直接申请一个静态缓冲区的方式我试过了 static char * image【】方法不行
       用MmMapIoSpace映射一段物理内存的方式我也试过了,好像也不行
着急,请各位大哥大姐帮忙,谢谢了

13 个解决方案

#1


引用楼主 qiu__zhi2008 的帖子:
各位大侠,小弟请教了: 

      在WinCE驱动的开发过程中,(我现在做的事WinCE下LCD的驱动),我想在驱动加载的过程中,将LCD清屏为某一种颜色,已验证我的驱动是正确的,但是这样的话就需要在 驱动程序中定一个全局的缓冲区,这样可以让应用程序也可以使用这一块区域。 
但是 这种方法是否可行呢:如果可行的话,该如何定义该缓冲区:调用那些函数呢: 
      直接申请一个静态缓冲区的方式我试过了 static char * image【】方…


我想在驱动加载的过程中,将LCD清屏为某一种颜色,已验证我的驱动是正确的
----最好采用串口的方式。
LCD驱动很容易,基本就是配置寄存器而已。

#2


shi驱动是挺简单的,只是简单的配置一些寄存器而已,但是我想在驱动启动的过程中,将屏幕清屏为某一种颜色,我不怎么相信串口,程序只要执行过去了,但是不一定达到我想要的效果,所以我还是想在驱动中进行验证,希望了解这方面知识的人给我一些帮助,谢谢

#3


引用 2 楼 qiu__zhi2008 的回复:
shi驱动是挺简单的,只是简单的配置一些寄存器而已,但是我想在驱动启动的过程中,将屏幕清屏为某一种颜色,我不怎么相信串口,程序只要执行过去了,但是不一定达到我想要的效果,所以我还是想在驱动中进行验证,希望了解这方面知识的人给我一些帮助,谢谢


你要从RGB处入手吧。

楼主没有必要花钱秀腿的。你只要把那些图像数据变成一种就可以了。

#4


在EBOOT里面做,加载的时候不擦掉就OK了!

#5


我也是那么想的啊,从RGB入手,把他清成一色的,蓝色,红色,或者绿色,但是怎么清 啊,清的还是还不是要用到一个缓冲区啊,该缓冲区怎么建呢;
void ClearLcd(unsigned char r,unsigned char g,unsigned b)
{
  int i,j;
  for(i = 0; i < BOARD_LCD_HEIGHT; i ++){
    for(j = 0; j < BOARD_LCD_WIDTH; j ++){
      image[(i * BOARD_LCD_WIDTH + j) * 3 + 0] = r;
      image[(i * BOARD_LCD_WIDTH + j) * 3 + 1] = g;
      image[(i * BOARD_LCD_WIDTH + j) * 3 + 2] = b;
    }
  }
}清理的时候需要把液晶需要显示的图像所在的缓冲区进行改动啊,我就是问这块缓冲区该如何定义呢:

#6


eboot里面做?怎么做,可否说的详细点:我新人,不怎么明白,谢谢

#7


如果LCD驱动是正确的那你就把对应的Frame Buffer的地址找出来,直接在你的代码里面把相应的Buffer位置数据改成你需要的颜色就OK了,修改后的数据会实时的显示在你的屏幕上
这个缓冲区也不需要另外去开辟,有的LCD驱动通过HalAllocateCommonBufferg来动态分配,也可以自己直接在Config.bib中Reserve,直接使用就可以了

#8


hzdysymbol:
          测试过程中,我需要把需要发送的数据的地址写入LCDC的DMABADDR1寄存器啊,存放我需要发送数据的缓冲区怎么建立啊; 请说明谢谢

#9


不需要建立发送数据的缓冲区啊
直接操作framebuffer就可以了

处理速度够快的坏,用户是看不出来的

#10


Atmel公司的AT91SAm9263 arm9芯片里面的LCDC只有DMA BaseAddress寄存器让你去写入要发送数据的首地址..没有楼上所少的framebuffer啊

#11


这个FrameBuffer是LCD驱动开辟出来跟DMA关联的,所以你要到LCD驱动里去找这个地址

#12


如何建立FrameBuffer这块缓冲区:请人指教:

#13


引用 10 楼 qiu__zhi2008 的回复:
Atmel公司的AT91SAm9263 arm9芯片里面的LCDC只有DMA BaseAddress寄存器让你去写入要发送数据的首地址..没有楼上所少的framebuffer啊


那个地址我们都叫做FrameBuffer

#1


引用楼主 qiu__zhi2008 的帖子:
各位大侠,小弟请教了: 

      在WinCE驱动的开发过程中,(我现在做的事WinCE下LCD的驱动),我想在驱动加载的过程中,将LCD清屏为某一种颜色,已验证我的驱动是正确的,但是这样的话就需要在 驱动程序中定一个全局的缓冲区,这样可以让应用程序也可以使用这一块区域。 
但是 这种方法是否可行呢:如果可行的话,该如何定义该缓冲区:调用那些函数呢: 
      直接申请一个静态缓冲区的方式我试过了 static char * image【】方…


我想在驱动加载的过程中,将LCD清屏为某一种颜色,已验证我的驱动是正确的
----最好采用串口的方式。
LCD驱动很容易,基本就是配置寄存器而已。

#2


shi驱动是挺简单的,只是简单的配置一些寄存器而已,但是我想在驱动启动的过程中,将屏幕清屏为某一种颜色,我不怎么相信串口,程序只要执行过去了,但是不一定达到我想要的效果,所以我还是想在驱动中进行验证,希望了解这方面知识的人给我一些帮助,谢谢

#3


引用 2 楼 qiu__zhi2008 的回复:
shi驱动是挺简单的,只是简单的配置一些寄存器而已,但是我想在驱动启动的过程中,将屏幕清屏为某一种颜色,我不怎么相信串口,程序只要执行过去了,但是不一定达到我想要的效果,所以我还是想在驱动中进行验证,希望了解这方面知识的人给我一些帮助,谢谢


你要从RGB处入手吧。

楼主没有必要花钱秀腿的。你只要把那些图像数据变成一种就可以了。

#4


在EBOOT里面做,加载的时候不擦掉就OK了!

#5


我也是那么想的啊,从RGB入手,把他清成一色的,蓝色,红色,或者绿色,但是怎么清 啊,清的还是还不是要用到一个缓冲区啊,该缓冲区怎么建呢;
void ClearLcd(unsigned char r,unsigned char g,unsigned b)
{
  int i,j;
  for(i = 0; i < BOARD_LCD_HEIGHT; i ++){
    for(j = 0; j < BOARD_LCD_WIDTH; j ++){
      image[(i * BOARD_LCD_WIDTH + j) * 3 + 0] = r;
      image[(i * BOARD_LCD_WIDTH + j) * 3 + 1] = g;
      image[(i * BOARD_LCD_WIDTH + j) * 3 + 2] = b;
    }
  }
}清理的时候需要把液晶需要显示的图像所在的缓冲区进行改动啊,我就是问这块缓冲区该如何定义呢:

#6


eboot里面做?怎么做,可否说的详细点:我新人,不怎么明白,谢谢

#7


如果LCD驱动是正确的那你就把对应的Frame Buffer的地址找出来,直接在你的代码里面把相应的Buffer位置数据改成你需要的颜色就OK了,修改后的数据会实时的显示在你的屏幕上
这个缓冲区也不需要另外去开辟,有的LCD驱动通过HalAllocateCommonBufferg来动态分配,也可以自己直接在Config.bib中Reserve,直接使用就可以了

#8


hzdysymbol:
          测试过程中,我需要把需要发送的数据的地址写入LCDC的DMABADDR1寄存器啊,存放我需要发送数据的缓冲区怎么建立啊; 请说明谢谢

#9


不需要建立发送数据的缓冲区啊
直接操作framebuffer就可以了

处理速度够快的坏,用户是看不出来的

#10


Atmel公司的AT91SAm9263 arm9芯片里面的LCDC只有DMA BaseAddress寄存器让你去写入要发送数据的首地址..没有楼上所少的framebuffer啊

#11


这个FrameBuffer是LCD驱动开辟出来跟DMA关联的,所以你要到LCD驱动里去找这个地址

#12


如何建立FrameBuffer这块缓冲区:请人指教:

#13


引用 10 楼 qiu__zhi2008 的回复:
Atmel公司的AT91SAm9263 arm9芯片里面的LCDC只有DMA BaseAddress寄存器让你去写入要发送数据的首地址..没有楼上所少的framebuffer啊


那个地址我们都叫做FrameBuffer