ºìÁªLinuxÃÅ»§
Linux°ïÖú

»ùÓÚLinux²Ù×÷ϵͳºËÐĵĺº×ÖÏÔʾ

·¢²¼Ê±¼ä:2006-10-20 09:48:52À´Ô´:ºìÁª×÷Õß:lgms2008
¡¡¡¡ÔÚ²ûÊö¡°»ùÓÚLinuxºËÐĵĺº×ÖÏÔʾ¡±µÄ¼¼Êõϸ½Ú֮ǰ£¬ÓбØÒª½éÉÜÒ»ÏÂÔ­ÓÐLinuxµÄ¹¤×÷»úÖÆ¡£ÕâÀïÖ÷ÒªÉæ¼°µ½Á½²¿·ÖµÄ֪ʶ£¬ÕâÊÇLinuxÏÂÖն˺ÍÖ¡»º³åµÄʵÏÖ¡£

¡¡¡¡¿ØÖÆ̨£¨console£©

¡¡¡¡Í¨³£ÎÒÃÇÔÚLinuxÏ¿´µ½µÄ¿ØÖÆ̨£¨console£©ÊÇÓɼ¸¸öÉ豸¹¹³ÉµÄ¡£·Ö±ðÊÇ/dev/ttyN£¨ÆäÖÐtty0¾ÍÊÇ/dev/console£¬ tty1¡¢tty2¾ÍÊDz»Í¬µÄÐéÄâÖնˣ¨virtual console£©£©¡£Í¨³£Ê¹ÓÃÈȼüAlt+FnÀ´ÔÚÕâЩÐéÄâÖÕ¶ËÖ®¼ä½øÐÐÇл»¡£ÕâЩttyÉ豸¶ÔÓ¦ÓÚ linux/drivers/char/console.cºÍlvt.c¡£ÆäÖÐconsole.c¸ºÔð»æÖÆÆÁÄ»ÉϵÄ×Ö·û£¬vt.c¸ºÔð¹ÜÀí²»Í¬µÄÐéÄâÖնˣ¬²¢ÇÒ¸ºÔðÌṩconsole.cÐèÒª»æÖƵÄÄÚÈÝ¡£Vt.c°Ñ²»Í¬ÐéÄâÖÕ¶ËϵÄÐèÒª½»¸øconsole.c»æÖƵÄÄÚÈÝ£¬·Åµ½²»Í¬µÄ»º´æÖÐÈ¥¡£Vt.c¹ÜÀíÕßÕâÑùÒ»¸ö»º³åÇøµÄÊý×飬²¢ÇÒ¸ºÔðÔÚÕâЩ»º´æÖ®¼äÇл»£¬²¢Ö¸¶¨ÄÄÒ»¸ö»º³åÇøÊDZ»¼¤»îµÄ¡£ÄãËù¿´µ½µÄÐéÄâÖն˾ͶÔÓ¦×ű»¼¤»îµÄ»º³åÇø¡£Console.c ͬʱҲ¸ºÔð½ÓÊÕÖն˵ÄÊäÈ룬Ȼºó°Ñ½ÓÊÕµ½µÄÊäÈëµÄÐÅÏ¢·Åµ½»º³åÇø¡£

¡¡¡¡Ö¡»º³å£¨framebuffer£©

¡¡¡¡FramebufferÊÇ°ÑÏÔ´æ³éÏóºóµÄÒ»¸öÖÖÉ豸£¬¿ÉÒÔͨ¹ýÕâ¸öÉ豸µÄ¶Áдֱ½Ó¶ÔÏÔ´æ½øÐвÙ×÷¡£ÕâÖÖ²Ù×÷ÊdzéÏóµÄ¡¢Í³Ò»µÄ¡£Óû§²»±Ø¹ØÐÄÎïÀíÏÔ´æµÄλÖᢻ»Ò³»úÖƵȵȾßÌåϸ½Ú£¬ÕâЩ¶¼ÊÇÓÉFramebufferÉ豸Çý¶¯³ÌÐòÀ´Íê³ÉµÄ¡£

¡¡¡¡Framebuffer¶ÔÓ¦µÄÔ´ÎļþÔÚlinux/drivers/video/Ŀ¼Ï¡£×ܵijéÏóÉ豸ÎÄ×÷Ϊfbcon.c£¬ÔÚÕâ¸öĿ¼Ï»¹ÓÐÓë¸÷ÖÖÏÔ¿¨Çý¶¯³ÌÐòÏà¹ØµÄÔ´Îļþ¡£

¡¡¡¡ÔÚʹÓÃÖ¡»º³åʱ£¬LinuxÊǽ«ÏÔ¿¨ÖÃÓÚͼÐÎģʽϵġ£

¡¡¡¡ÎÒÃÇÒÔÒ»¸ö¼òµ¥µÄÀý×ÓÀ´ËµÃ÷×Ö·ûÏÔʾµÄ¹ý³Ì¡£ÎÒÃǼÙÉèÊÇÔÚÐéÄâÖÕ¶Ë1£¨/dev/tty1£©ÏÂǨÐÐÈçϵļòµ¥³ÌÐò£º

[code]main ()

{

puts(¡±hello£¬world.

¡±)£»

}[/code]

¡¡¡¡pputsº¯ÊýÏòȱʡÊä³öÎļþ£¨/dev/tty£©·¢³ö¡°Ð´¡±µÄϵͳµ÷ÓÃwrite(2)¡£ÏµÍ³µ÷Óõ½LinuxºËÐĶÔÓ¦µÄºËÐĺ¯Êý->---- console.cÖеÄcon_write( ), con_write( )×îÖÕ»áµ÷ÓÃdo_con_write()£¬ÔÚdo_con_write()ÖиºÔð°Ñ¡±hello£¬world.¡±Õâ¸ö×Ö·û´®·Åµ½tty1¶ÔÓ¦µÄ»º³åÇøÖÐÈ¥¡£

¡¡¡¡Do_con_write()»¹¸ºÔð´¦Àí¿ØÖÆ×Ö·ûºÍ¹â±êµÄλÖá£ÈÃÎÒÃÇÀ´¿´Ò»ÏÂdo_con-write()Õâ¸öº¯ÊýµÄÉùÃ÷£º

[code]Static int do_con_write(struct

Tty_struct * tty, int

from_user, const unsigned

char *buf, int count )[/code]

¡¡¡¡ÆäÖÐttyÊÇÖ¸Ïòtty_struct½á¹¹µÄÖ¸Õ룬Õâ¸ö½á¹¹Àï´æ·Å׏ØÓÚÕâ¸öttyµÄËùÓÐÐÅÏ¢£¨Çë²ÎÕÕlinux/include/linux/tty.h£©¡£tty_srtuct½á¹¹Öж¨ÒåÁË?p> Ó㨻ò¸ß²ã£©ttyµÄÊôÐÔ£¨ÀýÈç¿í¶ÈºÍ¸ß¶ÈµÈ£©¡£

¡¡¡¡ÔÚdo_con_write£¨£©º¯ÊýÖÐÓõ½ÁËtty_struct½á¹¹ÖеÄdriver_data±äÁ¿¡£Driver_dataÊÇÒ»¸ö vt_vt_stuctÖ¸Õë¡£ÔÚvt_struct½á¹¹Öаüº¬Õâ¸öttyµÄÐòÁкţ¨ÎÒÃÇÕýʹÓÃtty1£¬ËùÒÔÕâ¸öÐòºÅΪ1£©¡£Vt_struct½á¹¹ÖÐÓÐÒ»¸övc½á¹¹µÄÊý×évc_cons£¬Õâ¸öÊý×é¾ÍÊǸ÷ÐéÄâÖն˵Ä˽ÓÐÊý¾Ý¡£

[code]Static int do_write(struct

Tty_struct * tty, int

From_user,const unsigned char

*buf, int conut)

{

struct vt_struct *vt = (struct

vt_struct *)tty_>driver_data;

//ÎÒÃÇÓõ½ÁËdriver_data±äÁ¿

¡­¡­¡­¡­

currcons = vt->_num;

//ÔÚÕâÀïµÄvc_nums¾ÍÊÇ1

¡­¡­¡­¡­

}[/code]

¡¡¡¡Òª·ÃÎÊÐéÄâÖն˵Ä˽ÓÐÊý¾Ý£¬ÐèʹÓÃvc_cons[currcons].dÖ¸Õë¡£Õâ¸öÖ¸ÕëÖ¸ÏòµÄ½á¹¹º¬Óе±Ç°ÐéÄâÖÕ¶ËÉϹâ±êµÄλÖ㬻º³åÇøµÄÆðʼµØÖ·¡¢»º³åÇø´óСµÈÐÅÏ¢¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 4 ÌõÆÀÂÛ

  1. lgms2008 ÓÚ 2006-10-20 10:21:26·¢±í:

    ¡¡¡¡Ò²ÐíÓжÁÕß»áÎÊ£¬Ö»ÐèҪΪÿ¸ö×Ö·ûÌí¼ÓһλÐÅÏ¢À´±êÖ¾ÊÇ·ñÊǺº×Ö¾Í×ã¹»ÁË£¬ÎªÊ²Ã´»¹Òª¿ª±ÙÓëÔ­»º³åÇø´óСÏàͬµÄË«±¶»º³åÇø£¬ÕâÊDz»ÊÇÌ«ÀË·ÑÄØ£¿

    ¡¡¡¡ÎÒÃÇÏÈ·ÅÏÂÕâ¸öÎÊÌ⣬ÉÔºóÔÙ×÷»Ø´ð¡£

    ¡¡¡¡Æäʵ£¬Èç¹ûÔÙÌí¼ÓһλÀ´±êÖ¾µ±Ç°×Ö·ûÊǺº×ÖµÄ×ó°ë±ß»¹ÊÇÀú°ë±ßµÄ»°£¬¾Í»áʡȥɨÃèÆÁÄ»Éϵ±Ç°ÕûÐÐ×Ö·û´®µÄ¹¤×÷£¬ÕâÑùÒ»À´£¬±à³Ì»á¸ü¼òµ¥£¬µ«ÊÇÓжÁÕß»áÎÊ£¬¼´Ê¹ÊÇÕâÑù£¬Ê¹ÓÃ8λ×ܹ»ÓÃÁË°É£¿ÎªÊ²Ã´»¹ÒªÊ¹ÓÃ16λÄØ£¿

    ¡¡¡¡ÎÒÃǵÄ×ö·¨ÊÇ£ºÓõÍ8λÀ´´æ·Åºº×ÖÁíÍâÒ»°ëµÄÄÚÂ룬Óøß8λÖеÄ2λÀ´´æ·ÅÉÏÃæËù½²µÄ¸¨ÖúÐÅÏ¢£¬¸ß8λµÄÊ£Óà6λ¿ÉÒÔÓÃÀ´´æ·Åºº×Ö»òÆäËû±àÂ뷽ʽ£¨Èç BIG5»òÈÕÎÄ¡¢º«ÎÄ£©µÄÐÅÏ¢£¬´Ó¶øʹÎÒÃÇ¿ÉÒÔʵÏÖͬÆÁÏÔʾ¶àÖÖË«×Ö½ÚÓïÑÔµÄ×Ö·û¶ø²»»áÏ໥¸ÉÈÅ¡£ÁíÍ⣬ÔÚ±à³Ìʱ£¬Ë«±¶»º³åÒ²±È½ÏÈÝÒ×¼ÆËã¡£ÕâÑùÎÒÃǾͻشðÁËÈçÉϵÄÁ½¸öÎÊÌâ¡£

    ¡¡¡¡Æù½ñΪֹ£¬ÎÒÃÇÓÐÁËÒ»Ì׳¹µ×½â¾öºº×ÖºÍÖƱí·ûÏ໥¸ÉÈÅ£¬°ë¸öºº×ÖµÄˢС¢ÖØ»æµÈÎÊÌâµÄ·½°¸¡£Ê£ÏµľÍÊǾßÌå±à³ÌÀ´ÊµÏÖµÄÎÊÌâÁË¡£

    ¡¡¡¡µ«ÊÇ£¬ÓÉÓÚFramebufferµÄÇý¶¯³ÌÐòºÜ¶à£¬ÐÞ¸Äÿһ¸öÇý¶¯³ÌÐòµÄxxxx_putc()º¯ÊýºÍxxxx_putcs()º¯Êý»áÊÇÒ»ÏСµÄ¹¤×÷£¬¶øÇÒ£¬¸Ä¶¯Çý¶¯³ÌÐòºó£¬Ã¿ÖÖÇý¶¯³ÌÐòµÄ²âÊÔÒ²ÊǺÜÂé·³µÄ£¬ÓÈÆäÊǶÔÓÚÓÐÓ²¼þ¼ÓËÙµÄÏÔ¿¨£¬Ð޸ĺͲâÊÔ»á¸ü²»ÈÝÒס£

    ¡¡¡¡ÄÇô£¬ÊÇ·ñ´æÔÚÒ»ÖÖ²»ÐèÒªÐÞ¸ÄÏÔ¿¨Çý¶¯³ÌÐòµÄ·½·¨ÄØ£¿¾­¹ýÒ»·¬Å¬Á¦£¬ÎÒÃÇ·¢ÏÖ£¬¿ÉÒÔµ÷ÓÃxxxx_putcs()»òxxxx_putc()º¯ÊýÊä³öºº×Ö֮ǰ£¬ÐÞ¸ÄVGA×Ö¿âÖ¸ÕëʹÆäÖ¸ÏòËùÐèÏÔʾµÄºº×ÖÔÚºº×Ö×Ö¿âÖеÄλÖ㬼´°ÑÒ»¸öºº×Öµ±³ÉÁ½¸öVGA ASCII×Ö·ûÊä³ö¡£Ò²¾ÍÊÇ˵£¬ÔÚÄÚºËÖдæÔÚÁ½¸ö×ֿ⣬һ¸öÊÇÔ­ÓеÄVGA×Ö·û×ֿ⣬ÁíÒ»¸öÊǺº×Ö×ֿ⣬µ±ÎÒÃÇÐèÒªÊä³öºº×ÖµÄʱºò£¬¾Í°ÑVGA×Ö¿âµÄÖ¸ÕëÖ¸Ïòºº×Ö×Ö¿âµÄÏàӦλÖ㬺º×ÖÊä³öÍêÖ®ºó£¬ÔٰѸÃÖ¸ÕëÖ¸ÏòVGA×Ö¿âµÄÔ­ÓÐλÖá£

    ¡¡¡¡ÕâÑùÒ»À´£¬ÎÒÃǾÍÖ»ÐèÒªÐÞ¸Äfbcon..cºÍconsole.c£¬ÆäÖÐconsole.c¸ºÔðά»¤Ë«±¶»º³åÇø£¬°Ñÿһ¸ö×Ö·ûµÄÐÅÏ¢´æÈ븽¼ÓµÄ»º³åÇøÖУ»¶øfbcon.c¸ºÔðÀûÓÃË«±¶»º³åÇøÖеĸ½¼ÓµÄÐÅÏ¢£¬µ÷Àí VGA×Ö¿âµÄÖ¸Õ룬µ÷ÓõײãµÄÏÔʾÇý¶¯³ÌÐò¡£

    ¡¡¡¡ÕâÀﻹÓм¸¸öÐèҪעÒâµÄµØ·½£º

    ¡¡¡¡1¡¢ÓÉÓÚÆÁÄ»ÖØ»æµÈÔ­Òò£¬µ÷Óõײãxxxx_putc()ºÍxxxx_putc()µÄµØ·½Óжദ£¬ÎÒÃÇ×öÁËÁ½¸öº¯Êý·Ö±ðâÊÕâÁ½Éϵ÷Óã¬Íê³ÉÌæ»»×Ö¿â¡¢µ÷ÓÃxxxx_putcs()»òxxxx_putc()¡¢»Ö¸´×Ö¿âµÈ¹¦ÄÜ¡£

    ¡¡¡¡2¡¢ÎªÁËʵÏÖÏòÉϹöÆÁʱҲÄÜ¿´µ½ºº×Ö£¬ÎÒÃÇÐèÒª×÷ÁíÍâµÄÐ޸ġ£LinuxÔÚÉè¼ÆÐéÄâÖն˵Äʱºò£¬ÌṩÁ˻ع˱»¹ö³öÆÁÄ»ÒÔÍâµÄÐÅÏ¢µÄ¹¦ÄÜ£¬Õâ¾ÍÊÇÓÃÈȼüÀ´ÏòÉϹöÆÁ£¨Shift+Pageup£©¡£µ±Ç°±»Ê¹ÓõĻ¢ÐéÄâÖն˵Äʱºò£¬¹«¹²»º³åÇøµÄÄÚÈݻᱻÇå³ý¶ø±»ÐµÄÐéÄâÖÕ¶ËʹÓã¬ÏòÉϹöÆÁµÄʱºò£¬ÏÔʾµÄÊǹ«¹²»º³åÇøÖеÄÄÚÈÝ¡£Òò´Ë£¬Èç¹ûÎÒÃÇÏëÔÚÏòÉϹöÆÁµÄʱºò¿´µ½ºº×Ö£¬Ôò¹«¹²»º³åÇøÒ²±ØÐë¼Ó±¶£¬ÒÔÈ·±£Ã»ÓÐÐÅÏ¢¶ªÊ§¡£µ±¹ö³öÆÁÄ»µÄס´¦Ïò¹«¹²»º³åÇøÌîдµÄʱºò£¬±ØÐë°Ñ¶¢Ó¦µÄ¸½¼ÓÐÅÏ¢Ò²Ìîд½ø¹«¹²»º³åÇøµÄ¸½¼ÓÇøÓòÖУ¬Õâ¾ÍÒªÇófbcon.c±ØÐ붮µÃÀûÓù«¹²»º³åÇøµÄ¸½¼ÓÐÅÏ¢¡£µ±È»£¬ÁíÍâÓÐÒ»´¦ÍµÀÁµÄ·½·¨£¬ÄǾÍÊDz»ÔÊÐíÓû§ÏòÉϹöÆÁ£¬´Ó¶ø±ÜÃâ¶Ô¹«Çø»º³åÇøµÄ´¦Àí¡£

    ¡¡¡¡3¡¢°Ñ²»Í¬µÄ±àÂ뷽ʽ£¨GB¡¢BIG5¡¢ÈÕÎĺͺ«ÎÄ£©Ð´³É²»Í¬µÄÄ£¿é£¬ÒÔʵÏÖ¶¯Ì¬¼ÓÔØ£¬´Ó¶øʹµÃÀ©Õ¹ÐµıàÂ뷽ʽ²»ÐèÒªÖØбàÒëºËÐÄ¡£

    ¡¡¡¡Ð¡½á

    ¡¡¡¡Í¨¹ýÕâ´ÎÕë¶ÔinuxºËÐĵÄ̽Ë÷£¬ÎÒÃÇ·¢ÏÖ£¬Ä¿Ç°LinuxµÄºËÐÄÉè¼ÆÖУ¬ÍêȫûÓп¼Âǵ½Ë«×Ö½Ú±àÂë×Ö·ûµÄÏÔʾ£¬ÎÒÃÇÔÚÕâÖÖÇé¿öÏÂÃþË÷³öÒ»Ì×½â¾öºËÐĺº×ÖÏÔʾµÄ·½·¨£¬²¢±àÂëʵÏÖÁ˸÷½°¸¡£×ñÑ­ºËÐĵÄGPL°æȨÉùÃ÷£¬ÎÒÃÇͬʱ¹«²¼ÁËʵÏÖÕâÒ»¼¼ÊõµÄÔ´´úÂ룬µ±È»£¬ÕâЩ¸Ä¶¯ÈÔÈ»ÊÇGPLµÄ¡£Èç¹ûÄܶÔÑо¿ºËÐĵÄÅóÓÑÓÐËù°ïÖú£¬Ñø»îһЩ´ó¼Ò¶ÔºËÐĵÄÉñÃظУ¬½«ÊÇÎÒÃÇ×î´óµÄÊÕ»ñ¡£

    ¡¡¡¡µ«ÊǶԺËÐĺÍÖÐÎÄ»¯À´Ëµ£¬Õâ½ö½öÊÇÒ»ÖÖ³¢ÊÔ£¬Ô¶²»ÊÇÖյ㡣ÕâÖָĶ¯¶àÉÙ´øÓÐһЩºÚ¿ÍµÄÉ«²Ê£¬²»Ì«¿ÉÄÜÈںϽøȨÍþµÄºËÐÄÀïÈ¥¡£ÎÒÃÇÈÔÔÚ»ý¼«Ì½Ë÷Ô²Âú½â¾öÕâÒ»ÎÊÌâµÄ·½·¨£¬µ±È»ÕâһĿ±ê±ØÈ»ÐèҪͨ¹ý¹úÄÚÍâLinuxȺÌåµÄ¹²Í¬Å¬Á¦²ÅÄÜʵÏÖ¡£ÎÒÃÇÒ²·Ç³£»¶Ó­´ó¼ÒºÍÎÒÃǹ²Í¬ÌÖÂÛÕâÒ»ÎÊÌâ ¡£

  2. lgms2008 ÓÚ 2006-10-20 10:19:45·¢±í:

    ¡¡¡¡Õâ¸ö·½°¸ÓÐÒ»¸öÀ§ÄÑ£¬¼´xxxx_putc()º¯Êý²»Óûº³åÇøµÄµØÖ·£¬¶øÊÇÓÃÒ»¸öÕûÊý×÷Ϊ²ÎÊý£¬ËùÒÔxxx_putc()ÎÞ·¨Ö±½ÓÀûÓÃÏàÁÚµÄ×Ö·ûÀ´Åбð¸Ã×Ö·ûÊÇ·ñÊǺº×Ö¡£

    ¡¡¡¡½â¾ö·½°¸ÊÇ£¬ÀûÓÃxxxx_putc()µÄ¹â±êÃÇÖòÎÊý£¨yy,xx£©£¬¿ÉÒÔÄæÍƳö¸Ã×Ö·ûÔÚ»º³åÇøÖеÄλÖ㬵«ÈÔһЩСÂé·³£¬ÔÚLinuxµÄÐéÄâÖÕ¶ËÏ£¬Óû§¿ÉÄÜ»áÉϾí¸ÃÆÁÄ»(Shift+Pageup)£¬µ¼Ö¹â±êµÄy×ù±êºÍÏàÓ¦×Ö·ûÔÚ»º³åÇøµÄÐÐÊý²»Ò»Ö£¬ÏàÓ¦µÄ½â¾ö·½°¸ÊÇ£¬ÔÚÄæÍƵĹý³ÌÖУ¬¿¼ÂÇÔÚÆÁµÄ²ÎÁ¿¡£

    ¡¡¡¡ÕâÑùÒ»À´£¬ÎÒÃǾÍÓÖ½øÁËÒ»²½£¬µÃµ½ÁËÒ»¸öÏà¶Ô¸üºÃµÄ°æ±¾¡£µ«ÈÔÓÐÎÊÌâûÓнâ¾ö£¬ÇÃÈëturbonetcfg£¬»á·¢Ïֲ˵¥µÄ±ß¿ò×Ö·ûÒ²±»µ±³Éºº×ÖÏÔʾ£¬ÕâÊÇÒòΪ£¬ÕâÖֱ߿ò×Ö·ûÊÇÀ©Õ¹×Ö·û£¬Ò²Ê¹ÓÃÁË×Ö·ûµÄµÍ8룬Òò¶ø±»µ±³Éºº×ÖÏÔʾ£¬ÕâÊÇÒòΪ£¬ÕâÖֱ߿ò×Ö·ûÊÇÀ©Õ¹×Ö·û£¬Ò²Ê¹ÓÃÁË×Ö·ûµÄµÍ8룬Òò¶ø±»µ±×÷ºº×ÖÀ´³àʾ¡£ÀýÈ磬µ¥Ïß¡°--¡±µÄÖƱí·ûÄÚÂëΪ0xC4£¬µ±Á¬³ÉÒ»Ìõ³¤Ïßʱ¾ÍÊÇÓÉÒ»Á¬´®0xC4×é³ÉµÄ£¬¶ø0Xc4c4ÕýÊǺº×Ö¡°ÄÄ¡±£¬ÓÚÊÇˮƽµÄÖƱí·û±»Ò»Á¬´®µÄ¡°ÄÄ¡±×ÖÌæ´úÁË£¬ÒòΪÖƱí·ûµÄÖÖÀà±È½Ï¶à£¬¶øÇÒ´¹Ö±ÖƱí·ûÓëÆäºóÃæ×Ö·ûµÄ×éºÏÐÎʽÓÖ¶àÖÖ¶àÑù£¬Òò¶øºÜÄÑÅжϳöÏàӦλÖõÄ×Ö·ûÊDz»ÊÇÖƱí·û£¬´ÓÀíÂÛÉÏ˵£¬ÎÞÂÛ²ÉȡʲôÑùµÄÅųýËã·¨£¬¶¼±ØÈ»´æÔÚÎóÅеÄÇé¿ö£¬ÒòΪ×Ü´æÔÚ¶þÒåÐÔ£¬Ã»Óгä×ãµÄÌõ¼þÀ´Íƶϳöµ±Ç°×Ö·û¾¿¾¹ÊÇÖƱí·û»¹ÊǺº×Ö¡£

    ¡¡¡¡ÎÒÃÇÒ»·½ÃæÑ°ÕÒ¸üºÃµÄÅųý×éºÏËã·¨£¬Ò»·½ÃæÊÔͼѰÕÒÆäËûµÄ½â¾ö·½°¸£¬ÒªÏë´Ó¸ù±¾ÉϽâ¾öÕâ¸öÎÊÌ⣬±ØÐëÀûÓÃÆäËûµÄ¸¨ÖúÐÅÏ¢£¬½ö½öÀûÓûº³åÇøµÄ×Ö·ûÀ´ÅжÏÊDz»¹»µÄ¡£

    ¡¡¡¡¾­¹ýÒ»·¬Å¬Á¦£¬ÎÒÃÇ·¢ÏÖ£¬ÔÚUNIXÖÐʹÓÃÀ©Õ¹×Ö·ûʱ£¬¶¼ÒªÏÈÊä³ö×Ö·ûתÒåÐòÁУ¨Escape sepuence£©À´Çл»µ±Ç°×Ö·û¼¯¡£×Ö·ûתÒåÐòÁÐÊÇÒÔ¿ØÖÆ×Ö·ûEcsΪÊ׵ĿØÖÆÃüÁÔÚUNIXµÄÐéÄâÖÕ¶ËÖÐÍê³ÉÖն˿ØÖÆÃüÁÕâÖÖÃüÁî°üÀ¨Òƶ¯¹â±ê×ù±ê¡¢¾íÆÁ¡¢É¾³ý¡¢Çл»×Ö·û¼¯µÈµÈ¡£Ò²¾ÍÊÇ˵£¬ÔÚÊä³ö´ú±íÖƱíµÄ×Ö·û´®Ö®Ç°£¬Í¨³£ÊÇÒªÏÈÊä³öÌض¨µÄ×Ö·ûתÒåÐòÁУ¬ÔÚconsole.cÀÓиù¾Ý×Ö·ûתÒåÐòÁÐÃüÁîÀ´¼Ç¼×Ö·û״̬µÄ±äÁ¿£¬½áºÏ¸Ã±äÁ¿ÌṩµÄÐÅÏ¢£¬¾Í¿ÉÒԷdz£×¼È·µØ°ÑÖƱí·ûÓ뺺×ÖÇø±ð¿ªÀ´¡£

    ¡¡¡¡ÔÚÈçÉÏ˼·µÄÖ¸ÒýÏ£¬ÎÒÃÇÓÖ²úÉúÁËеĽâ¾ö·½°¸£¬¾­¹ý¸Ä¶¯µÃµ½ÁËÁíÒ»°æ±¾¡£

    ¡¡¡¡ÔÚÕâ¸öеİ汾ÉÏ£¬turbonetcfgÔÚ³õ´Î»æÖƵÄʱºò£¬ÖƱí·ûÓ뺺×Ö±»ÇåÎúµØÇø·Ö¿ª£¬µ«»¹ÓÐÎÊÌ⣺turbonetcfgÔÚÖØ»æµÄʱºò£¨ÈçÇл»ÐéÄâÖն˻òÊÇÒƶ¯Êó±ê¹â±êµÄ£©£¬ÖƱí·û»¹ÊDZä³ÉÁ˺º×Ö£¬ÒòΪÖØ»æÍêÈ«Áì´øÓÚ»º³åÇø£¬¶øÕâʱÓÃÀ´¼Ç¼×Ö·û¼¯×´Ì¬µÄ±äÁ¿²¢²»·´Ó³µ±Ç°×Ö·û¼¯×´Ì¬¡£ÎÊÌ⻹ÊÇûÓÐ×îÖÕ½â¾ö£¬ÎÒÃÇÓֻص½ÁËÆðµã¡£

    ¡¡¡¡¿´À´ÎÊÌâµÄ×îÖÕ½â¾öÊֶαØÐëÊÇ°Ñ×Ö·û¼¯µÄ״̬°éËæ×Åÿһ¸ö×Ö·ûÔÚÿһ¸ö×Ö·ûÕ¼ÓÃ16λµÄ»º³åÇø£¬µÍ6¡¢8λÊÇASCIIÖµ£¬ÍêÈ«±»ÀûÓ㬸ß8λÒûʳǰÁ¿ÑÕÉ«ºÍ±³¾°ÑÕÉ«µÄÊôÐÔ£¬Ò²Ã»ÓжàÓàµÄ¿Õ¼ä¿ÉÒÔÀûÓã¬Òò¶øÖ»ÄÜÁíÍ⿪±ÙеĻº³åÇø¡£ÎªÁ˱£³ÖÒ»ÖÂÐÔ£¬ÎÒÃǾö¶¨ÔÚÔ­À´µÄ»º³åÇøºóÃæÌí¼ÓÏàͬ´óСµÄ»º³åÇø£¬ÓÃÀ´´æ·ÅÊÇ·ñºº×ÖµÄÐÅÏ¢¡£

  3. lgms2008 ÓÚ 2006-10-20 10:18:52·¢±í:

    ¡¡¡¡ÏÔʾÖÐÎÄ

    ¡¡¡¡±ÈÈç˵ÎÒÃÇÊÔÊä³öÒ»¾äÖÐÎÄ£ºputcs(ÄãºÃ ¡±)£¨¡°ÄãºÃ¡±µÄÄÚÂëΪ0xc4.0xe3.0ba.0xc3£©¡£Õâʱºò»áÔõôÑùÄØ£¿ÓÐÒ»µã¿ÉÒԿ϶¨£¬¡°ÄãºÃ¡±¿Ï¶¨²»»á³öÏÖÔÚÆÁÄ»ÉÏ£¬Ô­ÒòÊÇ£º

    ¡¡¡¡1¡¢ºËÐÄÖÐûÓкº×Ö×ֿ⣬ÖÐÎÄÏÔʾ¾ÍÊÇÎÞÃ×Ö®´¶ÁË¡£

    ¡¡¡¡2¡¢ÔÚ¸ºÔð×Ö·ûÏÔʾµÄvoid fbcon_cfb8_putcs()º¯ÊýÖУ¬Ô­ÓвÙ×÷ÈçÏ£º

    ¡¡¡¡¶ÔÓÚÿ¸öÒªÏÔʾµÄ×Ö·û£¬ÒÀ´Î´ÓÐéÄâÖն˻º³åÇøÖÐÒÔWORDΪµ¥Î»¶ÁÈ¡£¨µÍλ×Ö½ÚÊÇASCIIÂ룬¸ß8λÊÇ×Ö·ûµÄÊôÐÔ£©¡£ÓÉÓÚºº×ÖÊÇË«×Ö½Ú±àÂ뷽ʽ£¬ËùÒÔÕâÖÖ²Ù×÷ÊDz»¿ÉÄÜÏÔʾ³öºº×ֵģ¬Ö»ÄÜÏÔʾxxxx_putcs()Êä³öµÄÊÇÒ»¸öÒ»¸öµÄVGA×Ö·û¡£

    ¡¡¡¡Òò´Ë£¬Òª½â¾öµÄÎÊÌ⣺ȷ±£ÔÚµ÷ÓÃdo_con_write()ʱ½øÐÐuni_pcת»»²»»á¸Ä±äÔ­ÓбàÂ룬һ¸öºÜÖ±½ÓµÄʵÏÖ·½Ê½¾ÍÊǼÓÔØÒ»¸öÎÒÃÇ×Ô¼º¶¨ÖÆµÄ UnicodeÓ³Éä±í£¬loadunimap dirdct.uni£¬»òÕß½ø½Ó°Ñdirect.uniÉèÖÃΪºËÐĵÄȱʡӳÉä±í¡£

    ¡¡¡¡Õë¶ÔÒÔÉÏÎÊÌ⣬ÎÒÃÇÒª×öµÄµÚÒ»¸ö³¢ÊÔ·½°¸ÈçÏ£º

    ¡¡¡¡Ê×ÏÈÐèÒªÔÚºËÐÄÖмÓÔغº×Ö×ֿ⣬ȻºóÐÞ¸Äfbcon_cfb8_putcs()º¯Êý£¬ÔÚfbcon_cfb8_putcs()ÖÐÒ»´Î¶ÁÁ½¸öWORD£¬¼ì²éÕâÁ½¸öWORDµÄµÍλ×Ö½ÚÊÇ·ñÄÜÆ´³ÉÒ»¸öºº×Ö£¬Èç¹û·¢ÏÖÄÜÆ´³ÉÒ»¸öºº×Ö£¬¾ÍËã³öÕâ¸öºº×ÖÔÚºº×Ö×Ö¿âµÄµÄÆ«ÒÆ£¬È»ºó°ÑËüµ±³É¸ö16¡Á16µÄVGA×Ö·ûÀ´ÏÔʾ¡£

    ¡¡¡¡ÊÔÑéµÄ½á¹û±íÃ÷£º

    ¡¡¡¡1¡¢Äܹ»Êä³öºº×Ö£¬µ«ÈÔÓÐÐí¶à²»ÀíÏëµÄµØ·½£¬±ÈÈç˵£¬Êä³öÒÔ°ë¸öºº×Ö¿ªÊ¼µÄÒ»´®ºº×Ö£¬ÔòÕâ°ë¸öºº×ÖºóÃæµÄºº×Ö¶¼»áÊÇÂÒÂ룬ÕâÊÇ¡°°ë¸öºº×Ö¡±µÄÎÊÌâ¡£

    ¡¡¡¡2¡¢¹â±êÒƶ¯»áÆÆ»µºº×ÖµÄÏÔʾ£¬±íÏÖΪ£¬¹â±êÒƶ¯¹ýµÄºº×Ö»á±ä³ÉÂÒÂ룬ÕâÊÇÒòΪ¹â±êµÄ¸üÐÂÊÇͨ¹ýxxxx_putc()º¯ÊýÀ´Íê³ÉµÄ¡£

    ¡¡¡¡xxxx_putc()º¯ÊýÓëxxxx_putcs()º¯ÊýʵÏֵŦÄܹ»ÀàËÆ£¬µ«ÊÇxxxx_()º¯ÊýֻˢÐÂÒ»¸ö×Ö·û¶ø²»ÊÇÒ»¸ö×Ö·û´®£¬Òò¶øxxxx_putc()µÄÊäÈë²ÎÊýÊÇÒ»¸öÕûÊý£¬¶ø²»ÊÇÒ»¸ö×Ö·û´®µÄµØÖ·£¬xxxx_putc()º¯ÊýµÄÉùÃ÷ÈçÏ£º

    [code]void fbcon_cfb8_putc(struct vc_data
    *conp, struct display *p, int c, int YY, int xx)[/code]

    ¡¡¡¡ÏÂÒ»¸ö³¢ÊÔ·½°¸¾ÍÊÇͬʱÐÞ¸Äxxxx_putc()º¯ÊýºÍxxxx_putc()º¯ÊýΪÁ˽â¾ö°ë¸öºº×ÖµÄÎÊÌ⣬ÿһ´ÎÊä³ö֮ǰ£¬¶¼´ÓÆÁÄ»µ±Ç°ÐеÄÆðʼλÖÿªÊ¼´ò´ë£¬ÒÔÈ·¶¨ÒªÊä³öµÄ×Ö·ûÊÇ·ñÂäÔÚ°ë¸öºº×ÖµÄλÖÃÉÏ£¬Èç¹ûÊÇÔÚ°ë¸öºº×ÖµÄλÖÃÉÏ£¬Èç¹ûÊÇÔÚ°ë¸öºº×ÖµÄλÖã¬Ôò½øÐÐÏàÓ¦µÄµ÷Õû£¬¼´´ÓÏòÇ°Òƶ¯Ò»¸ö×Ö½ÚµÄλÖÿªÊ¼Êä³ö¡£

  4. lgms2008 ÓÚ 2006-10-20 09:54:26·¢±í:

    ¡¡¡¡¡°hello,world.¡±ÖеÄÿһ¸ö×Ö·û¶¼Òª¾­¹ýconv_uni_to_pc()Õâ¸öº¯Êýת»»³É8λµÄÏÔʾ×Ö·û¡£ÕâÑù×öµÄÖ÷ҪĿµÄÊÇʹ²»Í¬ÓïÑԵĹú¼ÒÄÜ°Ñ16λµÄ UnicodeÂëÓ³Éäµ½8λµÄÏÔʾ×Ö·û¼¯ÀĿǰÖ÷Òª»¹ÊÇÕë¶ÔÅ·ÖÞ¹ú¼ÒµÄÓïÑÔ£¬Ó³Éä½á¹ûΪ8룬²»°üº¬Ë«×Ö½Ú(double byte)µÄ·¶Î§¡£

    ¡¡¡¡ÕâÖÖ´ÓUnicodeµ½ÏÔʾ×Ö·ûµÄÓ³Éä±íÉÏ£¬»á°ÑÖÐÎĵÄ×Ö·ûÓ³Éäµ½ÆäËûµÄ×Ö·ûÉÏ£¬ÕâÊÇÎÒÃDz»Ï£Íû¿´µ½Ò²ÊDz»ÐèÒªµÄ£¬ËùÒÔÎÒÃÇÓÐÁ½ÖÖÑ¡Ôñ£º

    ¡¡¡¡1£© ²»½øÐÐconv_uni_to_pc()µÄת»»

    ¡¡¡¡2£© ¼ÓÔØ·ûºÏË«×Ö½Ú´¦ÀíµÄÓ³Éä¹Øϵ£¬¼´¶Ôòã ¿ØÖÆ×Ö·û½øÐÐÒ»¶ÔÒ»µÄ²»±äÓ³É䣬ÎÒÃÇ×Ô¼º¶¨ÖƵķûºÏÕâÖÖÓ³Éä¹ØϵµÄUnicodeÂë±íÊÇdirect.uni¡£ÒªÏë¿´/×°Ôص±Ç°ÏµÍ³µÄUnicodeÓ³Éä±í£¬¿ÉʹÓÃÍⲿÃüÁîloadunimap¡£ ¾­¹ýconv_uni_to_pc()ת»»Ö®ºó£¬¡±hello, world.¡±ÖеÄ×Ö·û±»Ò»¸öÒ»¸öµØÌîдµ½ttyµÄ»º³åÇøÖУ¬È»ºódo_con_write()µ÷ÓõײãµÄÇý¶¯³ÌÐò£¬°Ñ»º³åÇøÖеÄÄÚÈÝÊä³öµ½ÏÔʾÆ÷ÉÏ£¨Ò²¾ÍÏ൱ÓÚ°Ñ»º³åÇøµÄÄÚÈÝ¿½±´µ½VGAÏÔ´æÖÐÈ¥£©:

    [code]sw->con putcs(vc_cons[currcons].d,

    (u16 *)draw_from, (u16 *)draw_to_

    (u16 *)draw_rwom, Y, draw_x);[/code]

    ¡¡¡¡Ö®ËùÒÔÒªµ÷ÓõײãÇý¶¯³ÌÐò,ÊÇÒòΪ´æÔÚ²»Í¬µÄÏÔʾÉ豸,Æä¶ÔÓ¦VGAÏÔ´æµÄ´æÈ¡·½Ê½Ò²²»Ò»Ñù¡£ ÉÏÃæµÄSw->con_putcs()¾Í»áµ÷ÓÃfbcon.cÖеÄfbcon_putcs()º¯Êý(con_putcsÊÇÒ»¸öº¯ÊýµÄÖ¸Õ룬ÔÚ Framebufferģʽ)ÏÂÖ¸Ïòfbcon_putcs()º¯Êý£¬Ò²¾ÍÊÇ˵£¬ÔÚdo_con_write()º¯ÊýÖÐÊÇÖ±½Óµ÷ÓÃÁË fbcon_putcs()º¯ÊýÀ´½øÐÐ×Ö·ûµÄ»æÖÆ£¬±ÈÈç˵ÔÚ256ɫģʽÏ£¬ÕæÕý¸ºÔðÊä³öµÄº¯ÊýÊÇ£º

    [code]void fbcon_cfb8_putcs(struct vc_d

    ta *conp,struct display *p, const
    unsignde short *s, int count, int YY, int xx )[/code]