LinuxÏÂtty¡¢consule¡¢´®¿ÚÖ®¼äµÄ¹ØÏµÊÕ¼¯
1¡¢LINUXÏÂTTY¡¢CONSOLE¡¢´®¿ÚÖ®¼äÊÇÔõÑùµÄ²ã´Î¹ØÏµ£¿¾ßÌåµÄº¯Êý½Ó¿ÚÊÇÔõÑùµÄ£¿´®¿ÚÊÇÈçºÎ±»µ÷Óõģ¿
ttyºÍconsoleÕâЩ¸ÅÄîÖ÷ÒªÊÇһЩÐéÄâÉ豸µÄ¸ÅÄ¶ø´®¿Ú¸ü¶àµÄÊÇÖ¸Ò»¸öÕæÕýµÄÉ豸Çý¶¯¡£Ttyʵ¼ÊÊÇÒ»ÀàÖÕ¶ËI/OÉ豸µÄ³éÏó£¬Ëüʵ¼ÊÉϸü¶àµÄÊÇÒ»¸ö¹ÜÀíµÄ¸ÅÄĿµÄÊÇÏòÉϲãµÄVFSÌṩһ¸öͳһµÄ½Ó¿Ú¡£Í¨¹ýfile_operations½á¹¹ÖеÄtty_ioctl¿ÉÒÔ¶ÔÆä½øÐÐÅäÖᣲétty_driver£¬Ä㽫µÃµ½n¸ö½á¹û£¬Êµ¼Ê¶¼ÊÇÏà¹ØÐ¾Æ¬µÄÇý¶¯¡£Òò´Ë£¬¿ÉÒԵõ½µÄ½áÂÛÊÇ£ºÃ¿¸öÃèÊöttyÉ豸µÄtty_structÔÚ³õʼ»¯Ê±±ØÈ»¹Ò½ÓÁËij¸ö¾ßÌåоƬµÄ×Ö·ûÉ豸Çý¶¯£¨²»Ò»¶¨ÊÇ×Ö·ûÉ豸£©£¬¿ÉÒÔÊǺܶ࣬°üÀ¨ÏÔ¿¨»ò´®¿Úchip¡£
¶øconsoleÊÇÒ»¸ö»º³åµÄ¸ÅÄËüµÄÄ¿µÄÓÐÒ»µãÀàËÆÓÚtty¡£Êµ¼ÊÉÏconsole²»½öºÍttyÁ¬ÔÚÒ»Æð£¬»¹ºÍframebufferÁ¬ÔÚÒ»Æð£¬¾ßÌåµÄÔÒò¿´ÏÂÃæµÄ¼üÅ̵ÄÖжϴ¦Àí¹ý³Ì¡£TtyµÄÒ»¸ö×Ó¼¯ÐèҪʹÓÃconsole(µäÐ͵ÄÈçÖ÷É豸ºÅ4£¬´ÎÉ豸ºÅ1¨D64)£¬µ«ÊÇҪעÒâµÄÊÇûÓÐconsoleµÄttyÊÇ´æÔڵġ£¶ø´®¿ÚÔòÖ¸µÄÊÇtty_driver¡£ ¾Ù¸öµäÐ͵ÄÀý×Ó£¬·ÖÎöһϼüÅ̵ÄÖжϴ¦Àí¹ý³Ì£º
keyboard_interrupt¨D>handle_kbd_event¨D>handle_keyboard_event¨D>handle_scancode
void handle_scancode(unsigned char scancode, int down)
{
……..
tty = ttytab? ttytab[fg_console]: NULL;
if (tty && (!tty->driver_data)) {
……………
tty = NULL;
}
………….
schedule_console_callback();
}
Õâ¶Î´úÂëÖеÄÁ½¸öµØ·½ºÜÖµµÃ×¢Ò⣬Ҳ¾ÍÊdzýÁË»ñµÃttyÍ⣨ͨ¹ýÈ«¾ÖÁ¿tty¼Ç¼£©£¬»¹½øÐÐÁËconsole»ØÏÔschedule_console_callback¡£TtyºÍconsoleµÄ¹ØÏµÔÚ´ËÒѾºÜÃ÷ÁË£¡£¡£¡
2¡¢printkº¯ÊýÊǰÑÐÅÏ¢·¢Ë͵½¿ØÖÆÌ¨Éϰɣ¿ÈçºÎÈÃPRINTK°ÑÐÅϢͨ¹ý´®¿ÚËͳö£¿»òÕß˵ϵͳÔÚʲôµØ·½À´¾ö¶¨Êǽ«ÐÅÏ¢Ë͵½ÏÔʾÆ÷»¹ÊÇ´®¿Ú£¿ ¾ßÌå¿´Ò»ÏÂprintkº¯ÊýµÄʵÏÖ¾ÍÖªµÀÁË£¬printk²»Ò»¶¨Êǽ«ÐÅÏ¢Íù¿ØÖÆÌ¨ÉÏÊä³ö£¬ÉèÖÃkernelµÄÆô¶¯²ÎÊý¿ÉÄÜ¿ÉÒÔ´ïµ½½«ÐÅÏ¢Ë͵½ÏÔʾÆ÷µÄ
Ïà¹ØÎĵµ£º
¸÷sectionµÄλÖ÷ֲ¼¿´Äں˵ÄÁ´½Ó½Å±¾
D:\KIDE\target\kernel-version\cgel3.0\linux\include\asm-generic\vmlinux.lds.h
D:\KIDE\target\kernel-version\cgel3.0\linux\arch\powerpc\kernel\vmlinux.lds.S
Kernel¾µÏñÆðʼµØÖ·KERNELBASE = 0xc000 0000£¬ÕâÒâζ×ÅÄں˴úÂëºÍÄÚºËÈ«¾Ö±äÁ¿µÈµÄµØÖ·¿Õ¼äÔÚ3g-4gµÄµØ·½£¬
¶ø ......
×îÔç½Ó´¥LinuxÄÚºËÊÇÔÚ´óÈýµÄʱºò£¬ÄÇʱ¡¶²Ù×÷ϵͳ¡·µÄ¿Î³ÌÉè¼Æ¾ÍÊǽøÐÐLinuxÄÚºËÔ´´úÂëµÄ·ÖÎöÓë½ø³Ìµ÷¶ÈµÄ¸Ä½ø¡£ÌâÄ¿ÊÇ´óµÄÓеãÏÅÈË£¬ÌØ
±ðÊǶÔÄÇʱһ¸öÉæ×ãδÉîµÄÄêÇáÈË¿´À´¡£²»¹ýÄÇʱ×öµÄÊÂÇéºÜ¼òµ¥£¬ÈÏÈÏÕæÕæµÄ¿´ÁË¡¶LinuxÄÚºËÔ´´úÂëÇé¾°·ÖÎö¡·µÄǰÑÔ²¿·Ö£¨Ö÷Òª½²µÄAT&T»ã
±àÓïÑÔ£¬ÄÚºËÖÐÒ»Ð©ÌØÊâµÄ±à³Ì¹æÔò£©£¬Ó ......
½ñÌì¿´µ½Ê¦ÐÖ¹¤Î»ÉÏÓб¾Linux Kernel In a Nutshell£¬»¹ÊÇȫӢµÄÓ°Ó¡°æ£¬ËùÒԾͽè¹ýÀ´¿´¿´£¬·¢ÏÖÏÖÔÚ¿´Ó¢ÎĵÄÊé½¥½¥ÊÊÓ¦ÁË£¬»¹ÊDZȽÏÈÝÒ׵ģ¬ÊéÖпªÊ¼½éÉÜÈçºÎ±àÒëLinuxÄںˣ¬LinuxÄں˴óÈýµÄʱºòҲѧ¹ý±àÒë¹ý£¬µ«Êǵ±Ê±±àÒë±È½Ï¼òµ¥£¬Õâ´Î¾ö¶¨ÔÙÖØÍ·µ½Î²ºÃºÃ±àÒëһϣ¬Ê×ÏÈÏÂÔØlinux kernel£¬ÔÙÓÃsecureCRTÉÏ´«µ½Ubuntu 8. ......
ºÜ¾ÃûÓÐд¼¼Êõ²©ÎÄÁË£¬´ÓÕâÀ↑ʼÎÒµÄÑо¿ÉúÉúÑÄ£¬×ªÑÛ¾ÍÒªÔÚÖ°³¡ÉÏÑø¼Òºý¿Ú£¬Éú»îÕæµÄ²»ÈÝÒ×£¬ÐҺû¹Óм¼ÊõÏà°éΪÎé¡£
ÓÉÓÚ¹¤×÷µÄ¹ØÏµ£¬ÖÕÓÚ½Ó´¥µ½linuxÍøÂçºÍkernelµÄ±à³Ì£¬×ÜÌåÀ´Ëµ×ÜÊÇÒ»¸öºÃµÄÆõ»ú¡£ÈÃÎÒÄܹ»ÉîÈë²Ù×÷ϵͳÄںˡ£×ö¹ýÒ»¶Îʱ¼äµÄÓû§³ÌÐòµÄ¿ª·¢£¬×ÜÊÇÔÚWindowsƽ̨ÉÏ£¬ÖÕÓÚÓлú»áÔÚlinuxÉÏ×öµã¶«Î÷£¬»¹Ê ......
ǶÈëʽϵͳÓëͨÓÃPC»ú²»Í¬£¬Ò»°ãûÓÐÓ²ÅÌÕâÑùµÄ´æ´¢É豸¶øÊÇʹÓÃFlashÉÁ´æÐ¾Æ¬¡¢Ð¡ÐÍÉÁ´æ¿¨µÈרΪǶÈëʽϵͳÉè¼ÆµÄ´æ´¢×°Ö㬱¾ÎÄ·ÖÎöÁËǶÈëʽϵͳÖг£ÓõĴ洢É豸¼°Æä¹ÜÀí»úÖÆ£¬½éÉÜÁ˳£ÓõĻùÓÚFLASHµÄÎļþϵͳÀàÐÍ¡£
1£®Ç¶Èëʽϵͳ´æ´¢É豸¼°Æä¹ÜÀí»úÖÆ·ÖÎö
¡¡¡¡¹¹½¨ÊÊÓÃÓÚǶÈëʽϵͳµÄLi ......