在WinCE驱动的开发过程中,(我现在做的事WinCE下LCD的驱动),我想在驱动加载的过程中,将LCD清屏为某一种颜色,已验证我的驱动是正确的,但是这样的话就需要在 驱动程序中定一个全局的缓冲区,这样可以让应用程序也可以使用这一块区域。
但是 这种方法是否可行呢:如果可行的话,该如何定义该缓冲区:调用那些函数呢:
直接申请一个静态缓冲区的方式我试过了 static char * image【】方法不行
用MmMapIoSpace映射一段物理内存的方式我也试过了,好像也不行
着急,请各位大哥大姐帮忙,谢谢了
13 个解决方案
#1
我想在驱动加载的过程中,将LCD清屏为某一种颜色,已验证我的驱动是正确的
----最好采用串口的方式。
LCD驱动很容易,基本就是配置寄存器而已。
#2
shi驱动是挺简单的,只是简单的配置一些寄存器而已,但是我想在驱动启动的过程中,将屏幕清屏为某一种颜色,我不怎么相信串口,程序只要执行过去了,但是不一定达到我想要的效果,所以我还是想在驱动中进行验证,希望了解这方面知识的人给我一些帮助,谢谢
#3
你要从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;
}
}
}清理的时候需要把液晶需要显示的图像所在的缓冲区进行改动啊,我就是问这块缓冲区该如何定义呢:
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,直接使用就可以了
这个缓冲区也不需要另外去开辟,有的LCD驱动通过HalAllocateCommonBufferg来动态分配,也可以自己直接在Config.bib中Reserve,直接使用就可以了
#8
hzdysymbol:
测试过程中,我需要把需要发送的数据的地址写入LCDC的DMABADDR1寄存器啊,存放我需要发送数据的缓冲区怎么建立啊; 请说明谢谢
测试过程中,我需要把需要发送的数据的地址写入LCDC的DMABADDR1寄存器啊,存放我需要发送数据的缓冲区怎么建立啊; 请说明谢谢
#9
不需要建立发送数据的缓冲区啊
直接操作framebuffer就可以了
处理速度够快的坏,用户是看不出来的
直接操作framebuffer就可以了
处理速度够快的坏,用户是看不出来的
#10
Atmel公司的AT91SAm9263 arm9芯片里面的LCDC只有DMA BaseAddress寄存器让你去写入要发送数据的首地址..没有楼上所少的framebuffer啊
#11
这个FrameBuffer是LCD驱动开辟出来跟DMA关联的,所以你要到LCD驱动里去找这个地址
#12
如何建立FrameBuffer这块缓冲区:请人指教:
#13
那个地址我们都叫做FrameBuffer
#1
我想在驱动加载的过程中,将LCD清屏为某一种颜色,已验证我的驱动是正确的
----最好采用串口的方式。
LCD驱动很容易,基本就是配置寄存器而已。
#2
shi驱动是挺简单的,只是简单的配置一些寄存器而已,但是我想在驱动启动的过程中,将屏幕清屏为某一种颜色,我不怎么相信串口,程序只要执行过去了,但是不一定达到我想要的效果,所以我还是想在驱动中进行验证,希望了解这方面知识的人给我一些帮助,谢谢
#3
你要从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;
}
}
}清理的时候需要把液晶需要显示的图像所在的缓冲区进行改动啊,我就是问这块缓冲区该如何定义呢:
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,直接使用就可以了
这个缓冲区也不需要另外去开辟,有的LCD驱动通过HalAllocateCommonBufferg来动态分配,也可以自己直接在Config.bib中Reserve,直接使用就可以了
#8
hzdysymbol:
测试过程中,我需要把需要发送的数据的地址写入LCDC的DMABADDR1寄存器啊,存放我需要发送数据的缓冲区怎么建立啊; 请说明谢谢
测试过程中,我需要把需要发送的数据的地址写入LCDC的DMABADDR1寄存器啊,存放我需要发送数据的缓冲区怎么建立啊; 请说明谢谢
#9
不需要建立发送数据的缓冲区啊
直接操作framebuffer就可以了
处理速度够快的坏,用户是看不出来的
直接操作framebuffer就可以了
处理速度够快的坏,用户是看不出来的
#10
Atmel公司的AT91SAm9263 arm9芯片里面的LCDC只有DMA BaseAddress寄存器让你去写入要发送数据的首地址..没有楼上所少的framebuffer啊
#11
这个FrameBuffer是LCD驱动开辟出来跟DMA关联的,所以你要到LCD驱动里去找这个地址
#12
如何建立FrameBuffer这块缓冲区:请人指教:
#13
那个地址我们都叫做FrameBuffer