【Linux駆動】LCD駆動テスト
3291 ワード
(1)カーネルソースディレクトリに入り、make menuconfig->Device Drivers->Graphics support->[M]Support for frame buffer devices
カーネルmake uImageを再コンパイルし、make modules、driver/video/下のfbをko、cfbfillrect.ko、cfbimgblt.ko、cfbcopyarea.koは210のルートファイルにコピーし、それぞれinsmodをカーネルにインストールします.
(2)lcdを取り付ける.ko駆動モジュール
(3)アプリケーション層読み書きframe bufferテスタフレームワーク
または直接使用:cat xxxfile>/dev/fb 0現象:スクリーンが表示されます.
カーネルmake uImageを再コンパイルし、make modules、driver/video/下のfbをko、cfbfillrect.ko、cfbimgblt.ko、cfbcopyarea.koは210のルートファイルにコピーし、それぞれinsmodをカーネルにインストールします.
(2)lcdを取り付ける.ko駆動モジュール
(3)アプリケーション層読み書きframe bufferテスタフレームワーク
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
int main()
{
int fbfd = 0;
struct fb_var_screeninfo vinfo;
struct fb_fix_screeninfo finfo;
long int screensize = 0;
char *fbp = NULL;
int x,y,r = 0,g = 0, b = 0;
unsigned int rgb;
/* */
fbfd = open("/dev/fb0", O_RDWR);
/* */
ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo);
ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo);
/* */
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
/* */
fbp=(char*)mmap(0,screensize,PROT_READ | PROT_WRITE,MAP_SHARED, fbfd, 0);
if((int)fbp == -1)
{
printf("Error: failed to map framebuffer device to memory .
");
return -1;
}
/* fbp : */
for(y = 0;y<(vinfo.yres);y++)//vinfo.yres = 272
{
for(x = 0;x < vinfo.xres;x++)//vinfo.xres=480
{
long location = x*3 + y * vinfo.xres * 3;// , 3 (24 )
r = 256;
g = 0;
b = 0;
rgb = (r << 16) | (g << 8) | b; //
*((unsigned short *)(fbp + location)) = rgb;
}
}
/* , */
munmap(fbp, screensize);
close(fbfd);
}
または直接使用:cat xxxfile>/dev/fb 0現象:スクリーンが表示されます.