도와주세요!!
글 수 15,339
2003.08.27 01:37:48 (*.110.165.136)
6678
빨간장미님...
저도 혹시나 해서 해보긴 했는데.. X11=N으로 하고
아래에 1027, 768로 해서 해상도가 바뀐다고요...
저는 아무리 해도 안되는 데요.. 그 부분을 if문 밖으로 가져 와도 안돼고 암
튼
저는 안됩니다.. 되신다니 정말 신기하군요..
괜찮으시면.....
그렇게 해서 800*600으로 컴파일된 데모
하나만 올려 주세요 저도 한번 해보게요...
그리구요 제가 나름대로 살펴 본 결과 순전히 제생각이지만..
src/drivers디렉토리의 scr_fb.c 에서 스크린 사이즈 정보를 얻어 오는 것 같
습니다.
fb_open 함수의 아래 라인을
if(fb < 0) {
EPRINTF("Error opening %s: %m. Check kernel config
",
env);
return NULL;
}
if(ioctl(fb, FBIOGET_FSCREENINFO, &fb_fix) == -1 ||
ioctl(fb, FBIOGET_VSCREENINFO, &fb_var) == -1) {
EPRINTF("Error reading screen info: %m
");
goto fail;
}
/* setup screen device from framebuffer info*/
type = fb_fix.type;
visual = fb_fix.visual;
psd->portrait = MWPORTRAIT_NONE;
psd->xres = psd->xvirtres = fb_var.xres;
psd->yres = psd->yvirtres = fb_var.yres;
여기에서
ioctl(fb, FBIOGET_VSCREENINFO, &fb_var) == -1)에서 스크린 사이즈 값을
읽어와서
그 값을 psd의 xres, yres에 넣는 것 같은데
참고로 제일 마지막 두줄 인
psd->xres = psd->xvirtres = fb_var.xres;
psd->yres = psd->yvirtres = fb_var.yres;
를
psd->xres = psd->xvirtres = 640;
psd->yres = psd->yvirtres = 480;
이렇게 하면 똑 같이 잘 동작합니다.
그라나.
psd->xres = psd->xvirtres = 800;
psd->yres = psd->yvirtres = 600;
해서 컴파일 하고 Ezboard에서 돌리면
Error mmaping /dev/fb0: Invalid argument
Cannot initialise screen
이런 에러가 나옵니다.
에러가 나는 부분은 fb_open함수의
/* mmap framebuffer into this address space*/
psd->size = (psd->size + getpagesize () - 1)
/ getpagesize () * getpagesize ();
psd->addr = mmap(NULL, psd->size,
PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
if(psd->addr == NULL || psd->addr == (unsigned char *)-1) {
EPRINTF("Error mmaping %s: %m
", env);
goto fail;
}
여기 부분이고요
FBIOGET_VSCREENINFO 는 0x4600으로 세팅되어 있습니다..
제 생각에 이 번호가 아마도 H/W의 번지 수 같은데 이 부분에서 해상도를 읽
어 오는 것 아닌가요
맞다면 여기 읽어오는 부분에서 바꾸어 줘야 해상도가 바뀔 것 같은데
ioctl을 잘 모르니 막히는 군요..
제 생각이 맞나요.. 맞다면 여기에서 어떻게 진행 해야 할까요..
읽어 주셔서 감솨 합니다.
PS. LCD SET는 언제 들어 오나요.. 옛날 쫀드기 같은 케이블에다가 와이어 연
결하는 쌩노가다에 화면 조정에 넘 시간이 걸려서리.. 하지만 꼭 해결하고 싶
어요.. Help me~~
저도 혹시나 해서 해보긴 했는데.. X11=N으로 하고
아래에 1027, 768로 해서 해상도가 바뀐다고요...
저는 아무리 해도 안되는 데요.. 그 부분을 if문 밖으로 가져 와도 안돼고 암
튼
저는 안됩니다.. 되신다니 정말 신기하군요..
괜찮으시면.....
그렇게 해서 800*600으로 컴파일된 데모
하나만 올려 주세요 저도 한번 해보게요...
그리구요 제가 나름대로 살펴 본 결과 순전히 제생각이지만..
src/drivers디렉토리의 scr_fb.c 에서 스크린 사이즈 정보를 얻어 오는 것 같
습니다.
fb_open 함수의 아래 라인을
if(fb < 0) {
EPRINTF("Error opening %s: %m. Check kernel config
",
env);
return NULL;
}
if(ioctl(fb, FBIOGET_FSCREENINFO, &fb_fix) == -1 ||
ioctl(fb, FBIOGET_VSCREENINFO, &fb_var) == -1) {
EPRINTF("Error reading screen info: %m
");
goto fail;
}
/* setup screen device from framebuffer info*/
type = fb_fix.type;
visual = fb_fix.visual;
psd->portrait = MWPORTRAIT_NONE;
psd->xres = psd->xvirtres = fb_var.xres;
psd->yres = psd->yvirtres = fb_var.yres;
여기에서
ioctl(fb, FBIOGET_VSCREENINFO, &fb_var) == -1)에서 스크린 사이즈 값을
읽어와서
그 값을 psd의 xres, yres에 넣는 것 같은데
참고로 제일 마지막 두줄 인
psd->xres = psd->xvirtres = fb_var.xres;
psd->yres = psd->yvirtres = fb_var.yres;
를
psd->xres = psd->xvirtres = 640;
psd->yres = psd->yvirtres = 480;
이렇게 하면 똑 같이 잘 동작합니다.
그라나.
psd->xres = psd->xvirtres = 800;
psd->yres = psd->yvirtres = 600;
해서 컴파일 하고 Ezboard에서 돌리면
Error mmaping /dev/fb0: Invalid argument
Cannot initialise screen
이런 에러가 나옵니다.
에러가 나는 부분은 fb_open함수의
/* mmap framebuffer into this address space*/
psd->size = (psd->size + getpagesize () - 1)
/ getpagesize () * getpagesize ();
psd->addr = mmap(NULL, psd->size,
PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
if(psd->addr == NULL || psd->addr == (unsigned char *)-1) {
EPRINTF("Error mmaping %s: %m
", env);
goto fail;
}
여기 부분이고요
FBIOGET_VSCREENINFO 는 0x4600으로 세팅되어 있습니다..
제 생각에 이 번호가 아마도 H/W의 번지 수 같은데 이 부분에서 해상도를 읽
어 오는 것 아닌가요
맞다면 여기 읽어오는 부분에서 바꾸어 줘야 해상도가 바뀔 것 같은데
ioctl을 잘 모르니 막히는 군요..
제 생각이 맞나요.. 맞다면 여기에서 어떻게 진행 해야 할까요..
읽어 주셔서 감솨 합니다.
PS. LCD SET는 언제 들어 오나요.. 옛날 쫀드기 같은 케이블에다가 와이어 연
결하는 쌩노가다에 화면 조정에 넘 시간이 걸려서리.. 하지만 꼭 해결하고 싶
어요.. Help me~~