ƒtƒŒ[ƒ€ƒoƒbƒtƒ@“®ì

@Linux‚ª“®‚¢‚Ä‚¢‚é‚ƁAƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚́A/dev/fb0A/dev/fb1...‚Ì
@‚悤‚É’Pƒ‚ȃuƒƒbƒNƒfƒoƒCƒX‚ŃAƒNƒZƒX‚Å‚«‚Ü‚·B

@‚»‚ê‚ðˆÈ‰º‚Ì‚t‚q‚k‚Å’m‚Á‚½‚̂ŁAŠÈ’P‚ɏI‚í‚邾‚낤‚ÆŽv‚Á‚Ä‚¢‚Ü‚µ‚½B

@@http://telecom0.eng.niigata-u.ac.jp/index.php?FrameBuffer

@‚ªAŽv‚í‚Ê‚Æ‚±‚ë‚ŁA‚Í‚Ü‚Á‚Ä‚µ‚Ü‚¢‚Ü‚µ‚½B

@‚»‚Ì“^––‚ðÐ‰î‚µ‚Ü‚·‚̂ŁA‘¼ŽR‚̐΂Ƃµ‚Ä‚­‚¾‚³‚¢Bm(_ _)m


ƒeƒXƒgƒvƒƒOƒ‰ƒ€Žd—l

@ƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚ðƒAƒNƒZƒX‚·‚邽‚߂ɂ́AƒvƒƒOƒ‰ƒ€‚ª•K—v‚Å‚·B @‚»‚±‚ŁAæ‚ɏЉ‚½‚t‚q‚k‚ðŽQl‚ÉŽŸ‚ÌŽd—l‚ðì¬‚µ‚Ü‚µ‚½B
@‰æ–ʂ́A‰º}‚̂悤‚É‚È‚é‚Í‚¸‚Å‚·B @Žd—l‚ªŒˆ‚Ü‚ê‚΁AŠe•”•ª‚ðƒRƒcƒRƒc‹Lq‚·‚邾‚¯‚Å‚·B

‘Ñ•\Ž¦

@‚W‚Oƒ‰ƒCƒ“‚²‚ƂɁAF‚ð•ÏX‚µ‚Ä‚¢‚¯‚΂悢‚̂ŁA’Pƒ‚É @‚Qdƒ‹[ƒv‚ō\¬‚µ‚Ü‚·B @Œã‚ŁA—˜—p‚µ‚â‚·‚¢‚悤‚ɁA‰¡‚̃sƒNƒZƒ‹”‚Əc‚̃‰ƒCƒ“”‚ð @ƒ}ƒNƒ’è‹`‚µ‚Ä‚¨‚«‚Ü‚·B #define X_PIXEL_MAX 320 #define Y_LINE_MAX 240 @ŠOƒ‹[ƒv‚̓‰ƒCƒ“ˆ—A“àƒ‹[ƒv‚̓sƒNƒZƒ‹ˆ—‚ÉŠ„‚è“–‚Ä @‚Ü‚¸‚́A‹[Ž—ƒR[ƒh‚Å‹Lq‚Å‚·B for ( y = 0 ; y < Y_LINE_MAX ; y++ ) { /* FŒˆ’è */ /* ‚Pƒ‰ƒCƒ“ˆ— */ for ( x = 0 ; x < X_PIXEL_MAX ; x++ ) { /* Ši”[ˆÊ’uŒvŽZ */ /* ’…F */ } } @F‚́AŠù‚Ƀ‰ƒxƒ‹‚Å’è‹`‚³‚ê‚Ä‚¢‚é‚Æ‚µ‚āA‚W‚Oƒ‰ƒCƒ“‚²‚Æ‚É @V‚µ‚¢F‚ðÝ’肵‚Ü‚·B @#define BORDER1 80 @#define BORDER2 160 tcolor = COLOR_BLUE ; if ( y > BORDER2 ) { tcolor = COLOR_RED ; } else { if ( y > BORDER1 ) { tcolor = COLOR_GREEN ; } } @F‚ªŒˆ‚Ü‚ê‚΁A‚»‚ê‚ð‚R‚Q‚OƒsƒNƒZƒ‹‚ɏo‚·‚¾‚¯‚Å‚·B @ƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚̍ì‚è•û‚Ɉˑ¶‚µ‚Ü‚·‚ªA’ʏí‚́A‚PƒsƒNƒZƒ‹‚É @‰½ƒrƒbƒgŠ„‚è“–‚Ä‚é‚©‚ŁA‚PA‚QA‚SƒoƒCƒg‚ƃAƒNƒZƒX•û–@‚ªŒˆ‚Ü @‚Á‚Ä‚µ‚Ü‚¢‚Ü‚·B @¡‰ñ‚́AƒfƒoƒCƒXƒhƒ‰ƒCƒo‚ÌŽd—l‚ŁA‚PƒsƒNƒZƒ‹‚P‚Uƒrƒbƒg‚È‚Ì‚Å @ƒ[ƒhi‚QƒoƒCƒgjƒAƒNƒZƒX‚Æ‚µ‚Ü‚·B @‚Pƒ‰ƒCƒ“‚́A‚R‚Q‚OƒsƒNƒZƒ‹‚ ‚é‚̂ŁA‚R‚Q‚O~‚P‚Uƒrƒbƒg‚Å‚·B @ƒƒ‚ƒŠ‚́AƒoƒCƒg‚²‚ƂɃAƒhƒŒƒX‚ðŠ„‚è“–‚Ă̂ŁA‚R‚Q‚O~‚Q~‚Wƒrƒbƒg @‚U‚S‚OƒoƒCƒg‚Å‚Pƒ‰ƒCƒ“‚Æ‚È‚è‚Ü‚·B @‚PƒsƒNƒZƒ‹‚́A‚QƒoƒCƒg‚ðè‚ß‚é‚̂ŁAƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚̃|ƒCƒ“ƒ^‚ð @fbptrAƒƒ‚ƒŠ‚̃oƒCƒg‚²‚ƂɐU‚Á‚½ƒAƒhƒŒƒX‚ðlocation‚É“ü‚ê‚āAŽŸ‚Ì @ˆ—‚Å‚PƒsƒNƒZƒ‹‚Ì’…F‚ª‚Å‚«‚Ü‚·B *((unsigned short *)(fbptr + location)) = tcolor; @ @ƒoƒCƒg‚²‚Ƃ̃AƒhƒŒƒX‚ðA•„†‚È‚µ‚P‚Uƒrƒbƒg‚̃AƒhƒŒƒX‚É•ÏŠ·‚µ @‚P‚Uƒrƒbƒg‚ðˆê‹C‚ɏ‘‚«ž‚Ý‚Ü‚·B @ŽŸ‚ɁAƒoƒCƒg‚²‚ƂɐU‚Á‚½ƒAƒhƒŒƒX‚ð‹‚ß‚é•û–@‚ðŒŸ“¢‚µ‚Ü‚·B @’ʏíAƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚́AƒAƒhƒŒƒXŒvŽZ‚ðŠÈ’P‚É‚·‚邽‚ß‚É @‚Q‚̃xƒLæ‚̈ʒu‚©‚çŠY“–ƒ‰ƒCƒ“‚̃f[ƒ^‚ðŠi”[‚µ‚Ü‚·B @‰º}‚̂悤‚ɁAƒ‰ƒCƒ“‚ƃ‰ƒCƒ“‚̊ԂɁAŒ„ŠÔ‚ª‚ ‚é‚悤‚É‚È‚è‚Ü‚·B @ƒƒ‚ƒŠß–ñ‚ðl‚¦‚é‚ƁAŒ„ŠÔ‚ª‚È‚¢‚悤‚ɁA‰Ÿ‚µž‚Ý‚Ü‚·B @‚Ç‚¿‚ç‚ō\¬‚µ‚Ä‚¢‚é‚Ì‚©‚ðAƒ†[ƒU[‚ªl‚¦‚é‚Ì‚Í–Ê“|‚È‚Ì‚Å @Linux‚̏ꍇ‚́A‚»‚̏î•ñ‚ðŠÖ”ioctl‚ðŽÀs‚·‚é‚ƍ\‘¢‘̕ϐ”‚Ì ’†‚ɁA•K—v‚ȏî•ñ‚ð“ü‚ê‚Ä‚­‚ê‚Ü‚·B @ŽŸ‚Ì‚Q‚\‘¢‘̕ϐ”‚ðéŒ¾‚µ‚āAƒVƒXƒeƒ€ƒR[ƒ‹ŠÖ”open‚Å @ƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚̃tƒ@ƒCƒ‹ƒfƒBƒXƒNƒŠƒvƒ^‚ðŽæ“¾‚Å‚«‚é‚Æ @î•ñ‚ðŽæ“¾‚Å‚«‚鏀”õ‚ª®‚¢‚Ü‚·B struct fb_fix_screeninfo finfo; struct fb_var_screeninfo vinfo; @finfo‚́AƒVƒXƒeƒ€ŒÅ—L‚̌Œèî•ñ‚ðŠi”[‚µ‚Ü‚·B @vinfo‚́AƒXƒNƒŠ[ƒ“‚²‚Ƃ̉•Ϗî•ñ‚ðŠi”[‚µ‚Ü‚·B @ŽÀÛ‚ɏî•ñ‚ðŽæ“¾‚·‚éê‡‚́AŠÖ”ioctl‚ð—˜—p‚µ‚Ü‚·B @‚±‚±‚ł́A‚˜•ûŒü‚̃IƒtƒZƒbƒg’lA‚™•ûŒü‚̃IƒtƒZƒbƒg’lA @‚PƒsƒNƒZƒ‹‚ ‚½‚è‚̃rƒbƒg”“™‚ðŽæ“¾‚µ‚Ü‚·B @ŽŸ‚̃R[ƒh‚ŁA‚PƒsƒNƒZƒ‹‚ ‚½‚è‚̃rƒbƒg”‚ƃsƒNƒZƒ‹Š·ŽZ @‚Ì‚Pƒ‰ƒCƒ“’·‚ðŽæ“¾‚µ‚Ä‚¨‚«‚Ü‚·B vbpp = vinfo.bits_per_pixel ; line_len = finfo.line_length ; @ƒ[ƒhƒAƒNƒZƒX‚̃ƒ‚ƒŠƒAƒhƒŒƒX‚́Aƒx[ƒXƒAƒhƒŒƒX‚©‚ç‚Ì @ƒIƒtƒZƒbƒg‚É‘Š“–‚·‚é‚̂ŁAŽŸ‚ÌŒvŽZ‚Å‹‚ß‚ç‚ê‚Ü‚·B #define DIV_BYTE 8 location = ((x+vinfo.xoffset) * vbpp / DIV_BYTE) + (y+vinfo.yoffset) * line_len ; @ˆ—‚Æ‚µ‚Ä‚Ü‚Æ‚ß‚é‚ƁAˆÈ‰º‚É‚È‚è‚Ü‚·B for ( y = 0 ; y < Y_LINE_MAX ; y++ ) { /* FŒˆ’è */ tcolor = COLOR_BLUE ; if ( y > BORDER2 ) { tcolor = COLOR_RED ; } else { if ( y > BORDER1 ) { tcolor = COLOR_GREEN ; } } /* ‚Pƒ‰ƒCƒ“ˆ— */ for ( x = 0 ; x < X_PIXEL_MAX ; x++ ) { /* Ši”[ˆÊ’uŒvŽZ */ location = ((x+vinfo.xoffset) * vbpp / DIV_BYTE) + (y+vinfo.yoffset) * line_len ; /* ’…F */ *((unsigned short *)(fbptr + location)) = tcolor; } }

FŽw’è

@F‚́ATrueColor‚Å‚Q‚Sƒrƒbƒg—˜—p‚µ‚Ü‚·‚ªALCDƒfƒBƒXƒvƒŒƒC‚Í @o—Í‚Å‚«‚éF‚́A‚T‚P‚QF‚܂łȂ̂ŁA‚P‚Uƒrƒbƒg‚ðŽg‚¤‚±‚Æ‚É @‚µ‚Ü‚·BiƒfƒoƒCƒXƒhƒ‰ƒCƒo‚ÌŽd—l‚Å‚·Bj @‚P‚Uƒrƒbƒg‚ðŽg‚¤ê‡‚́A‚q‚f‚a‚̐è—L‚·‚éƒrƒbƒg‚ð‚Ç‚¤‚·‚é‚©‚ð @Žw’肵‚Ü‚·B @‚Æ‚Q’Ê‚è‚ÌŽw’è•û–@‚ª‚ ‚è‚Ü‚·‚ªAƒfƒoƒCƒXƒhƒ‰ƒCƒo‚ÌŠÖŒW‚Å‚TF‚UF‚T @‚ðŽg‚¢‚Ü‚·B @ŠeF‚ªè‚ß‚éƒrƒbƒg”‚ªŒˆ‚Ü‚é‚ƁAŽŸ‚̂悤‚ɐF‚ð’è‹`‚Å‚«‚Ü‚·B

î•ñŽæ“¾

@ƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚ð—˜—p‚·‚邽‚߂ɂ́Aƒtƒ@ƒCƒ‹ƒfƒBƒXƒNƒŠƒvƒ^‚ð @‚ðŽæ“¾‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚»‚Ì‚½‚߂ɁAƒVƒXƒeƒ€ƒR[ƒ‹ŠÖ” @open‚ðŽg‚¢‚Ü‚·B #define DEVICE_NAME "/dev/fb0" /* “ǂݏ‘‚«—p‚Ƀtƒ@ƒCƒ‹‚ðŠJ‚­ */ fd_framebuffer = open( DEVICE_NAME , O_RDWR); if ( !fd_framebuffer ) { send_current_error_msg("Framebuffer device open error !"); exit(1); } send_current_information("The framebuffer device was opened !"); @ƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚ðƒI[ƒvƒ“‚Å‚«‚È‚¢‚ƁA‰½‚ð‚â‚Á‚Ä‚à–³‘ʂȂ̂ŁA @‚»‚̂܂܏I—¹‚µ‚Ü‚·B @ƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚ÉŠÖ˜A‚·‚éî•ñ‚ðAŠÖ”ioctl‚ō\‘¢‘̕ϐ”‚ÉŠi”[‚³‚¹‚Ü‚·B /* ŒÅ’èƒXƒNƒŠ[ƒ“î•ñŽæ“¾ */ if ( ioctl( fd_framebuffer , FBIOGET_FSCREENINFO , &finfo ) ) { send_current_error_msg("Fixed information not gotton !"); exit(2); } /* •Ï“®ƒXƒNƒŠ[ƒ“î•ñŽæ“¾ */ if ( ioctl( fd_framebuffer , FBIOGET_VSCREENINFO , &vinfo ) ) { send_current_error_msg("Variable information not gotton !"); exit(3); } @ŒÅ’èA•Ï”‚̏î•ñ‚ð“üŽè‚Å‚«‚È‚¢‚ƁA³‚µ‚¢ˆ—‚ª‚Å‚«‚È‚¢‚̂ŁA @I—¹‚³‚¹‚Ü‚·B

ƒƒ‚ƒŠƒAƒNƒZƒXˆ—

@ƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚́Aƒƒ‚ƒŠ‚Ȃ̂ŁAƒƒ‚ƒŠ‚ւ̃AƒNƒZƒX‚ÉŽŸ‚Ì @‚Q‚‚̊֐”‚ð—˜—p‚µ‚Ü‚·B @ŠÖ”mmap‚́AvoidŒ^‚̃|ƒCƒ“ƒ^‚ð•Ô‚·‚̂ŁAƒLƒƒƒXƒg‚µ‚Ä @‚PƒoƒCƒgƒAƒNƒZƒX‚̃|ƒCƒ“ƒ^‚É•ÏŠ·‚µ‚Ü‚·B fbptr = (char *)mmap(0,screensize,PROT_READ | PROT_WRITE,MAP_SHARED,fd_framebuffer,0); @ƒ|ƒCƒ“ƒ^‚ªNULL‚ł́Aƒƒ‚ƒŠ‚Ƀ}ƒbƒv‚Å‚«‚È‚¢‚̂ŁAƒGƒ‰[Ží•Ê‚ð @•\Ž¦‚µ‚āAI—¹‚³‚¹‚Ü‚·B if ( (int)fbptr == -1 ) { send_current_error_msg("Don't get framebuffer device to memory !"); exit(4); } send_current_information("The framebuffer device was mapped !"); @ˆ—‚ªI—¹‚µ‚½‚È‚çŠÖ”munmap‚ŁAƒƒ‚ƒŠ‚ð‰ð•ú‚µ‚Ü‚·B munmap(fbptr,screensize);

‘Sƒ\[ƒXƒR[ƒh

@‚±‚ê‚Ü‚Å‚Ì“à—e‚ð‚܂Ƃ߂āA‚ЂƂ‚̃\[ƒXƒR[ƒh‚É‚µ‚Ü‚·B /* * fbtst.c * 2006.7.19 Kensuke Ooyu */ #include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <linux/fb.h> #include <linux/fs.h> #include <sys/mman.h> #define DEVICE_NAME "/dev/fb0" #define DIV_BYTE 8 #define X_PIXEL_MAX 320 #define Y_LINE_MAX 240 #define BORDER1 80 #define BORDER2 160 #define COLOR_RED 0xf800 #define COLOR_GREEN 0x07e0 #define COLOR_BLUE 0x001f #define COLOR_WHITE 0xffff #define COLOR_BLACK 0x0000 #define COLOR_YELLOW 0xffe0 /* function prototype */ void send_current_error_msg(char *ptr); void send_current_information(char *ptr); int main(void) { int fd_framebuffer ; struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; long int screensize ; long int location; char *fbptr ; char tmp[DIV_BYTE*10]; int x , y ; int xres,yres,vbpp,line_len; unsigned short tcolor ; /* “ǂݏ‘‚«—p‚Ƀtƒ@ƒCƒ‹‚ðŠJ‚­ */ fd_framebuffer = open( DEVICE_NAME , O_RDWR); if ( !fd_framebuffer ) { send_current_error_msg("Framebuffer device open error !"); exit(1); } send_current_information("The framebuffer device was opened !"); /* ŒÅ’èƒXƒNƒŠ[ƒ“î•ñŽæ“¾ */ if ( ioctl( fd_framebuffer , FBIOGET_FSCREENINFO , &finfo ) ) { send_current_error_msg("Fixed information not gotton !"); exit(2); } /* •Ï“®ƒXƒNƒŠ[ƒ“î•ñŽæ“¾ */ if ( ioctl( fd_framebuffer , FBIOGET_VSCREENINFO , &vinfo ) ) { send_current_error_msg("Variable information not gotton !"); exit(3); } xres = vinfo.xres ; yres = vinfo.yres ; vbpp = vinfo.bits_per_pixel ; line_len = finfo.line_length ; sprintf( tmp , "%d(pixel)x%d(line), %dbpp(bits per pixel)",xres,yres,vbpp); send_current_information( tmp ); /* ƒoƒCƒg’PˆÊ‚ł̃XƒNƒŠ[ƒ“‚̃TƒCƒY‚ðŒvŽZ */ screensize = xres * yres * vbpp / DIV_BYTE ; /* ƒfƒoƒCƒX‚ðƒƒ‚ƒŠ‚Ƀ}ƒbƒv‚·‚é */ fbptr = (char *)mmap(0,screensize,PROT_READ | PROT_WRITE,MAP_SHARED,fd_framebuffer,0); if ( (int)fbptr == -1 ) { send_current_error_msg("Don't get framebuffer device to memory !"); exit(4); } send_current_information("The framebuffer device was mapped !"); /* •\Ž¦ */ for ( y = 0 ; y < Y_LINE_MAX ; y++ ) { /* FŒˆ’è */ tcolor = COLOR_BLUE ; if ( y > BORDER2 ) { tcolor = COLOR_RED ; } else { if ( y > BORDER1 ) { tcolor = COLOR_GREEN ; } } /* ‚Pƒ‰ƒCƒ“ˆ— */ for ( x = 0 ; x < X_PIXEL_MAX ; x++ ) { /* Ši”[ˆÊ’uŒvŽZ */ location = ((x+vinfo.xoffset) * vbpp / DIV_BYTE) + (y+vinfo.yoffset) * line_len ; /* ’…F */ *((unsigned short *)(fbptr + location)) = tcolor; } } munmap(fbptr,screensize); close(fd_framebuffer); return 0; } void send_current_error_msg(char *ptr) { fprintf( stderr , "%s\n" , ptr ); } void send_current_information(char *ptr) { fprintf( stdout , "%s\n" , ptr ); }

ƒRƒ“ƒpƒCƒ‹AƒŠƒ“ƒN

@SH-4—p‚̃[ƒhƒ‚ƒWƒ…[ƒ‹‚ðì¬‚µ‚Ü‚·B @ƒRƒ“ƒpƒCƒ‹‚́AŠÈ’P‚Å‚·B @$ sh4-linux-gcc -o fbtst fbtst.c @‰½“x‚à“¯‚¶‚±‚Æ‚ðƒ^ƒCƒv‚·‚é‚Ì‚ª–Ê“|‚Ȃ̂ŁAŽŸ‚̃VƒFƒ‹ @ƒXƒNƒŠƒvƒg‚ðì¬‚µ‚Ü‚µ‚½B @#!/bin/bash @filename=$1 @# @if [ -f ${filename}.c ] ; then @ sh4-linux-gcc -o $filename ${filename}.c @else @ echo "${filename}.c not exist !" @fi @ŽÀsŒ ‚ð•t‰Á‚µ‚Ä‚¨‚«‚Ü‚·B @$ chmod 766 sh4gcc @Žg‚¢•û‚́AŽŸ‚̂悤‚É‚µ‚Ü‚·B @$ ./sh4gcc fbtst

“®ìŠm”F

@ŽÀsƒtƒ@ƒCƒ‹‚ªo—ˆã‚ª‚Á‚½‚̂ŁAŽŸ‚ÌŒo˜H‚ÅCAT760‚É“]‘—‚Å‚·B
  1. coLinuxƒfƒBƒŒƒNƒgƒŠ@¨@WindowsƒfƒBƒŒƒNƒgƒŠ@iSamba—˜—pj
  2. WindowsƒfƒBƒŒƒNƒgƒŠ@¨@Fedra MachineƒfƒBƒŒƒNƒgƒŠ@iFTP—˜—pj
  3. Fedra MachineƒfƒBƒŒƒNƒgƒŠ@¨@CAT760ƒfƒBƒŒƒNƒgƒŠ@iFTP—˜—pj
@ŽÀsŒ ‚ð•t‰Á‚µ‚Ä‚¨‚«‚Ü‚·B @$ chmod 766 fbtst @ŽÀs‚µ‚Ü‚·B @$ ./fbtst @‚±‚±‚ŁAƒGƒ‰[‚ªo‚³‚ê‚Ü‚µ‚½B @Framebuffer device open error ! @‚±‚̈Ӗ¡‚́AƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚ª‘¶Ý‚µ‚È‚¢‚Æ‚¢‚¤‚±‚ƁB @‚±‚ê‚ŁA”¼“ú‹ß‚­“ª‚ð•ø‚¦‚Ä‚¢‚Ü‚µ‚½B @‰½ŒÌ‚È‚çAƒu[ƒgŽž‚ɁAŽŸ‚̂悤‚É•\Ž¦‚³‚ê‚é‚©‚ç‚Å‚·B @ŽÀs‚µ‚½Žž“_‚ŁAŽŸ‚̂悤‚É•\Ž¦‚³‚ê‚é‚Í‚¸‚Å‚·B @‚Å‚àA•\Ž¦‚́AŽŸ‚Ì‚Ü‚Ü‚Å‚·B @Framebuffer device open error ! @­‚µ—âÃ‚É‚È‚Á‚čl‚¦‚Ä‚Ý‚Ü‚µ‚½B @ƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚́ALinux‚©‚猩‚āAƒfƒoƒCƒXƒtƒ@ƒCƒ‹‚Å‚·B @ƒfƒoƒCƒXƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚È‚¢‚È‚ç‚΁A/dev/fb0‚à‚È‚¢‚Í‚¸‚Å‚·B @CAT760ã‚̃ƒ‚ƒŠ‚ɁAƒ‹[ƒgƒtƒ@ƒCƒ‹ƒVƒXƒeƒ€‚ª‚ ‚èADebinaSH @‚ðƒRƒ“ƒpƒNƒgƒtƒ‰ƒbƒVƒ…“™‚Å“®‚©‚µ‚Ä‚Í‚¢‚È‚¢‚̂ŁA¡‚Ü‚ÅÝ’è @‚ÉŠÖ‚µ‚Ä–³“Ú’…‚Å‚µ‚½B @ƒRƒ}ƒ“ƒhls‚ŁAƒfƒoƒCƒXƒtƒ@ƒCƒ‹‚ð•\Ž¦‚³‚¹‚Ü‚µ‚½B @$ ls -la /dev/fb* crw-rw-rw---- 1 root root 2936 Jan 1 0:00 /dev/fb0 @“úí‚©‚çƒfƒoƒCƒXƒtƒ@ƒCƒ‹‚ðˆµ‚Á‚Ä‚¢‚él‚È‚çA‚·‚®‚É @‚í‚©‚邱‚Æ‚Å‚·‚Ë‚¦B @ƒfƒoƒCƒXƒhƒ‰ƒCƒo‚É•K{‚̃ƒWƒƒ[”ԍ†Aƒ}ƒCƒi[”ԍ†‚ª @‚ ‚è‚Ü‚¹‚ñB‚¾‚©‚çA‚»‚ñ‚ȃfƒoƒCƒX‚Í‚È‚¢‚ƁAƒGƒ‰[‚ª @•Ô‚é‚Ì‚Å‚·B(T_T) @‘¼‚ÌLinuxƒ}ƒVƒ“‚ŁAƒtƒŒ[ƒ€ƒoƒbƒtƒ@[‚̃}ƒCƒi[”ԍ†‚Æ @ƒƒWƒƒ[”ԍ†‚ðŠm”F‚µ‚āAÝ’è‚·‚邱‚Æ‚É‚µ‚Ü‚µ‚½B @ƒƒWƒƒ[”ԍ†‚Í‚Q‚XAƒ}ƒCƒi[”ԍ†‚Í‚O‚©‚ç‚Æ‚È‚Á‚Ä‚¢‚é @‚̂ŁAŽŸ‚̂悤‚É‘€ì‚µAV‚µ‚¢ƒfƒoƒCƒXƒtƒ@ƒCƒ‹‚ðì¬ @‚µ‚Ü‚µ‚½B @$ rm -R /dev/fb0 @$ mknod /dev/fb0 b 29 0 @$ ls -la /dev/fb* brw---------- 1 root root 29, 0 Jul 18 15:04 /dev/fb0 @$ chmod 666 /dev/fb0 @‹C‚ðŽæ‚è’¼‚µ‚āAÄƒ`ƒƒƒŒƒ“ƒW‚Å‚·B @ƒ^[ƒ~ƒiƒ‹‚ðŒ©‚é‚ƁAƒtƒŒ[ƒ€ƒoƒbƒtƒ@‚̏ˆ—‚Í‚¤‚Ü‚­ @‚¢‚Á‚Ä‚¢‚é‚悤‚Å‚·‚µAŽæ“¾î•ñ‚à•\Ž¦‚³‚ê‚Ä‚¢‚Ü‚·B @‰æ–Ê‚àAŽw’肵‚½“à—e‚Å•\Ž¦‚³‚ê‚Ü‚µ‚½Bv(^o^)v

–ß‚é