1.BIOS×Ô¼ì
¼ÆËã»úÔÚ½ÓͨµçÔ´Ö®ºóÊ×ÏȽøÐÐBIOS×Լ죬¼´ÎÒÃÇËù˵µÄpost(power on self test).×Ô¼ìÍê³Éºó£¬È»ºó¸ù¾ÝBIOSÖеÄÉèÖõÄÒýµ¼Ë³Ðò£¬´ÓÓ²ÅÌ¡¢¹âÅÌÒýµ¼£¬Í¨³£ÎÒÃÇʹÓÃÓ²ÅÌÀ´Òýµ¼ÏµÍ³¡£ÔÚÓ²Å̵ĵÚÒ»¸öÉÈÇø£¨0´ÅµÀ0ÖùÃæ1ÉÈÇø£©ÓÐÒ»¶Î´úÂë½Ð×öMBR£¨Master Boot Record.Ö÷Òýµ¼¼Ç¼£©£©£¬µ±MBR±»¼ÓÔØµ½ÄÚ´æÖкó£¬BIOS»á½«¿ØÖÆÈ¨½»¸øMBR£¨MBRÔÚÄÚ´æÖУ¬¼´running).
2.¶ÁÈ¡MBRµÄÐÅÏ¢£¨MBR¿ÉÄÜÊÇlilo,grub,spfdiskµÈ£©
MBRÊÇÒ»¶Î¿ÉÖ´ÐдúÂ룬´óСΪ512×Ö½Ú£¬¸Ã´úÂëµÄ×÷ÓÃÊǸæËßÎÒÃǵÄϵͳÈçºÎÒýµ¼linux,ÀýÈç"kernel /boot/vmlinuz-2.6.9.-5.EL ro root=LABEL=/",ÕâÊÇÒ»¶Îgrub£¬vmlinuzµÄÊÇ¿ÉÒýµ¼µÄѹËõÃüÁgrub½«¸æËßϵͳÈçºÎ¼ÓÔØvmliunz¡£
3.¼ÓÔØÄÚºË
µ±ÄÚºËÓ³Ïñ±»¼ÓÔØµ½ÄÚ´æÖ®ºó£¬Äں˽׶ξͿªÊ¼ÁË£¬ÄÚ´æÓ³Ïñ²¢²»ÊÇÒ»¸ö¿ÉÖ´ÐеÄÄںˣ¬¶øÊÇÒ»¸ö¾¹ýѹËõµÄÄÚºËÓ³Ïñ¡£Í¨³£ËûÊÇÒ»¸özlmage£¨j½ÏСµÄÄںˣ¬Ð¡ÓÚ512K£©»îbzlmage£¨½Ï´óµÄÄںˣ¬´óÓÚ512K£©¡£Ö®ºóÒª¶ÔÄں˽øÐнâѹ£¬²¢·ÅÈë¸ß¶ËÄÚ´æµ±ÖС£
4.Ö´ÐÐinit½ø³Ì£¬²¢È¡µÃrun-levelÐÅÏ¢.
&nbs ......
£¨1£©Òì³£µÄ¸ÅÄî
ÖжÏÐźÅÊÇÒ»¸öͳ³Æ£¬Í³³ÆÄÇЩ¸Ä±äCPUÖ¸ÁîÖ´ÐÐÐòÁеÄʼþ¡£µ«ËüÓÖ·ÖΪÁ½ÖÖ£º
Ò»ÖÖÊÇͬ²½µÄ£¬Ã»ÄÇôͻȻ£¬ÒòΪËüÖ»ÔÚÒ»¸öÖ¸ÁîµÄÖ´ÐÐÖÕÖ¹Ö®ºó²Å·¢Éú£¬ÊéÖÐÒÀ´ÓIntelµÄ¹ßÀý£¬³ÆÎªÒì³££¨Exception£©¡£Ò»°ãÊDZà³Ì´íÎó£¨Ò»°ãµÄ´¦ÀíÊÇ·¢Ðźţ©»òÕßÄں˱ØÐë´¦ÀíµÄÒì³£Çé¿ö£¨Äں˻á²ÉÈ¡»Ö¸´Òì³£ËùÐèµÄһЩ²½Ö裩£»
Ò»ÖÖÊÇÒì²½µÄ£¬Í»È»Ò»Ð©£¬ÒòΪËüÊÇÓɼä¸ô¶¨Ê±Æ÷ºÍI/OÉ豸²úÉúµÄ£¬Ö»×ñÑCPUʱÖÓÐźţ¬ËùÒÔ¿ÉÄÜÔÚÈκÎʱºò²úÉú£¬ÊéÖÐÒ²ÒÀ´ÓIntelµÄ¹ßÀý£¬³ÆÎªÖжϣ¨Interrupt£©¡£Òì³£µÄÖÖÀàÈçÏ£º
£¨2£©Äں˿ØÖÆÂ·¾¶
ÄÚºËÔÚÔÊÐíÖжÏÐźŵ½À´Ö®Ç°£¬±ØÐëÏÈ×¼±¸ºÃ¶ÔËüÃǵĴ¦Àí£¬Ò²¾ÍÊÇÊʵ±µØ³õʼ»¯ÖжÏÃèÊö·û±í£¨Interrupt Descriptor Table, IDT£©¡£ÖжÏÐźÅÒ»À´£¬CPU¿ØÖƵ¥Ôª¾Í×Ô¶¯°Ñµ±Ç°µÄ³ÌÐò¼ÆÊýÆ÷£¨eip¡¢cs£©ºÍeflags±£´æµ½ÄÚºËstack£¬È»ºó°ÑÊÂÏÈÓë·¢ÉúµÄÖжÏÐźÅÀàÐ͹ØÁªºÃµÄ´¦Àí³ÌÐòµÄµØÖ·£¨±£´æÔÚIDTÖУ©·Å½ø³ÌÐò¼ÆÊýÆ÷¡£Õâʱ£¬Äں˿ØÖÆÂ·¾¶£¨kernel control path£©ºá¿Õ³öÊÀ¡£
&n ......
Linux ºÍ Unix Îļþϵͳ±»×éÖ¯³ÉÒ»¸öÓвã´ÎµÄÊ÷Ðνṹ¡£ÎļþϵͳµÄ×îÉϲãÊÇ /£¬»ò³ÆÎª ¸ùĿ¼¡£ÔÚ Unix ºÍ Linux µÄÉè¼ÆÀíÄîÖУ¬Ò»ÇнÔΪÎļþ——°üÀ¨Ó²ÅÌ¡¢·ÖÇøºÍ¿É²å°Î½éÖÊ¡£Õâ¾ÍÒâζ×ÅËùÓÐÆäËüÎļþºÍĿ¼£¨°üÀ¨ÆäËüÓ²Å̺ͷÖÇø£©¶¼Î»ÓÚ¸ùĿ¼ÖС£ ÀýÈ磺/home/jebediah/cheeses.odt ¸ø³öÁËÕýÈ·µÄÍêÕû·¾¶£¬ËüÖ¸Ïò cheeses.odt Îļþ£¬¶ø¸ÃÎļþλÓÚ jebediah Ŀ¼Ï£¬¸ÃĿ¼ÓÖλÓÚ home Ŀ¼£¬×îºó£¬home Ŀ¼ÓÖλÓÚ¸ù(/) Ŀ¼Ï¡£ ÔÚ¸ù (/) Ŀ¼Ï£¬ÓÐÒ»×éÖØÒªµÄϵͳĿ¼£¬ÔÚ´ó²¿·Ö Linux ·¢ÐаæÀﶼͨÓá£Ö±½ÓλÓÚ¸ù (/) Ŀ¼Ïµij£¼ûĿ¼ÁбíÈçÏ£º
/bin - ÖØÒªµÄ¶þ½øÖÆ (binary) Ó¦ÓóÌÐò
/boot - Æô¶¯ (boot) ÅäÖÃÎļþ
/dev - É豸 (device) Îļþ
/etc - ÅäÖÃÎļþ¡¢Æô¶¯½Å±¾µÈ (etc)
/home - ±¾µØÓû§Ö÷ (home) Ŀ¼
/lib - ϵͳ¿â (libraries) Îļþ
/lost+found - ÔÚ¸ù (/) Ŀ¼ÏÂÌṩһ¸öÒÅʧ+²éÕÒ(lost+found) ϵͳ
/media - ¹ÒÔØ¿ÉÒÆ¶¯½éÖÊ (media)£¬ÖîÈç CD¡¢ÊýÂëÏà»úµÈ
/mnt - ¹ÒÔØ (mounted) Îļþϵͳ
/opt - Ìṩһ¸ö¹©¿ÉÑ¡µÄ (optional) Ó¦ÓóÌÐò°²×°Ä¿Â¼
/proc - ÌØÊâµÄ¶¯Ì¬Ä¿Â¼£¬ÓÃÒÔά»¤ÏµÍ³ÐÅÏ¢ºÍ״̬£¬°üÀ¨µ±Ç°ÔËÐÐÖнø³Ì ......
1. »ù±¾¸ÅÄî
ÏûÏ¢¶ÓÁеÄ×î¼Ñ¶¨ÒåÊÇ£ºÄں˵ØÖ·¿Õ¼äÖеÄÄÚ²¿Á´±í¡£ÏûÏ¢¿ÉÒÔ˳ÐòµØ·¢Ë͵½¶ÓÁÐÖУ¬
²¢ÒÔ¼¸ÖÖ²»Í¬µÄ·½Ê½´Ó¶ÓÁÐÖлñÈ¡¡£µ±È»£¬Ã¿¸öÏûÏ¢¶ÓÁж¼ÊÇÓÉ IPC±êʶ·ûËùΨһ±êʶµÄ¡£
2. ÄÚ²¿ºÍÓû§Êý¾Ý½á¹¹
ÒªÍê³ÉÀí½âÏóϵͳ V IPCÕâÑù¸´ÔÓµÄÎÊÌ⣬¹Ø¼üÊÇÒª³¹µ×ÊìϤÄں˵öÄÚ²¿Êý¾Ý½á¹¹¡£
ÉõÖÁ¶ÔÄÇЩ×î»ù±¾µÄ²Ù×÷À´Ëµ£¬Ö±½Ó·ÃÎÊÕâЩ½á¹¹ÖеÄij¼¸¸ö½á¹¹Ò²ÊDZØÒªµÄ£¬¶øÆäËûµÄ½á
¹¹ÔòÍ£ÁôÔÚÒ»¸ö¸üµÍµÄ¼¶±ðÉÏ¡£
3. ÏûÏ¢»º³åÇø
ÎÒÃÇÒª½éÉܵĵÚÒ»¸ö½á¹¹ÊÇ msgbuf½á¹¹¡£Õâ¸öÌØÊâµÄÊý¾Ý½á¹¹¿ÉÒÔÈÏΪÊÇÏûÏ¢Êý¾ÝµÄÄ£
°å¡£ËäÈ»¶¨ÒåÕâÖÖÀàÐ͵ÄÊý¾Ý½á¹¹ÊdzÌÐòÔ±µÄÖ°Ô𣬵«ÊǶÁÕß¾ø¶Ô±ØÐëÖªµÀʵ¼ÊÉÏ´æÔÚ
msgbufÀàÐ͵Ľṹ¡£ËüÊÇÔÚÔÚ linux/msg.hÖж¨ÒåµÄ£¬ÓÐ2¸ö³ÉÔ±£º
• mtype—ËüÊÇÏûÏ¢ÀàÐÍ£¬ÒÔÕýÊýÀ´±íʾ¡£Õâ¸öÊý±ØÐëΪһ¸öÕýÊý£¡
• mtext—Ëü¾ÍÊÇÏûÏ¢Êý¾Ý¡£
4. ÄÚºËmsg½á¹¹
Äں˰ÑÏûÏ¢¶ÓÁÐÖеÄÿ¸öÏûÏ¢¶¼´æ·ÅÔÚ msg½á¹¹µÄ¿ò¼ÜÖС£¸Ã½á¹¹ÊÇÔÚ linux/msg.hÖж¨Òå
µÄ£¬ÈçÏÂÊÇÆä³ÉÔ±µÄÃèÊö£º
• msg_next—ÕâÊÇÒ»¸öÖ¸Õ룬ָÏòÏûÏ¢¶ÓÁÐÖеÄÏÂÒ»¸öÏûÏ¢¡£ÔÚÄÚºËѰַ¿Õ¼äÖУ¬ËüÃÇ
Êǵ±×÷Ò»¸öÁ´±í´æ´¢µÄ¡£
• msg_type—ÕâÊ ......
GPIO£¨General Purpose Input/OutputµÄËõд£©¾ÍÊÇоƬµÄÒý½Å£¬Òý½ÅÊǿɱà³ÌµÄ¿É¶ÔÒý½ÅµÄ¹¤×÷ģʽ½øÐÐÉèÖãºÊäÈëģʽ(¼ì²âÊäÈëÐźÅ)£¬Êä³öģʽ(Êä³ö0»ò1)£¬¸ß×è״̬(³£ÓÃÓÚADת»»)£¬»¹ÓнûÖ¹»òÔÊÐíÉÏÄÚ²¿ÏÂÀµç×è(ÉÏÀ£º¹Ü½Åͨ¹ýµç×è½Ó¸ßµçƽ£¬ÏÂÀ£º¹Ü½Åͨ¹ýµç×è½ÓµØ£¬Ò²¿ÉÒÔÍⲿ½ÓÉÏÀ»òÏÂÀµç×è)£¬»¹ÓйܽŸ´Óõȹ¦ÄÜ£¬¼´Í¨¹ý¶ÔÄÚ²¿¼Ä´æÆ÷µÄÉèÖÃʹÒý½Å¼È¿ÉÒÔ¹¤×÷ÔÚÒ»°ãģʽ£¬×÷ΪÆÕͨµÄGPIO¿ÚʹÓã¬Ò²¿ÉÒÔ¹¤×÷ÔÚÌØÊâģʽ£¬±ÈÈç×÷ΪÍⲿÖжÏÐźÅÊäÈëÒý½ÅµÈµÈ¡£Èç¹û²»ÉèÖÃGPIOÒý½Å£¬CPU¹¤×÷ʱÓÐÒ»¸ö³õʼ»¯Ä£Ê½£¬¿ÉÒÔ´Ódatasheet£¨Ð¾Æ¬ÊֲᣩÉÏÁ˽⡣¶ÔGPIOµÄ¿ØÖÆÊDZàдÇý¶¯³ÌÐò×î³£¼ûºÍÖØÒªµÄÒ»Ï×÷ÄÚÈÝ¡£
ÔÚLinux2.6.25Äں˴úÂëÖУ¬ÒѾÌṩÁËÕë¶ÔÈýÐÇS3C2410/S3C2440µÈоƬGPIOµÄ¿ØÖÆ£¬ÏÂÃæÀ´·Ö±ð½éÉÜÒ»°ãÈçºÎÅäÖᢹÜÀíGPIO¡£
ÏÂÃæµÄº¯ÊýÊÇÓÃÀ´¸ù¾ÝÐµĹ¦ÄÜÐèÇóÅäÖÃÒ»¸öGPIOÒý½Å£¨¶¨ÒåÔÚarch/arm/plat-s3c24xx/gpio.c£©£º
1 void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function)
2 {
3  ......
GPIO£¨General Purpose Input/OutputµÄËõд£©¾ÍÊÇоƬµÄÒý½Å£¬Òý½ÅÊǿɱà³ÌµÄ¿É¶ÔÒý½ÅµÄ¹¤×÷ģʽ½øÐÐÉèÖãºÊäÈëģʽ(¼ì²âÊäÈëÐźÅ)£¬Êä³öģʽ(Êä³ö0»ò1)£¬¸ß×è״̬(³£ÓÃÓÚADת»»)£¬»¹ÓнûÖ¹»òÔÊÐíÉÏÄÚ²¿ÏÂÀµç×è(ÉÏÀ£º¹Ü½Åͨ¹ýµç×è½Ó¸ßµçƽ£¬ÏÂÀ£º¹Ü½Åͨ¹ýµç×è½ÓµØ£¬Ò²¿ÉÒÔÍⲿ½ÓÉÏÀ»òÏÂÀµç×è)£¬»¹ÓйܽŸ´Óõȹ¦ÄÜ£¬¼´Í¨¹ý¶ÔÄÚ²¿¼Ä´æÆ÷µÄÉèÖÃʹÒý½Å¼È¿ÉÒÔ¹¤×÷ÔÚÒ»°ãģʽ£¬×÷ΪÆÕͨµÄGPIO¿ÚʹÓã¬Ò²¿ÉÒÔ¹¤×÷ÔÚÌØÊâģʽ£¬±ÈÈç×÷ΪÍⲿÖжÏÐźÅÊäÈëÒý½ÅµÈµÈ¡£Èç¹û²»ÉèÖÃGPIOÒý½Å£¬CPU¹¤×÷ʱÓÐÒ»¸ö³õʼ»¯Ä£Ê½£¬¿ÉÒÔ´Ódatasheet£¨Ð¾Æ¬ÊֲᣩÉÏÁ˽⡣¶ÔGPIOµÄ¿ØÖÆÊDZàдÇý¶¯³ÌÐò×î³£¼ûºÍÖØÒªµÄÒ»Ï×÷ÄÚÈÝ¡£
ÔÚLinux2.6.25Äں˴úÂëÖУ¬ÒѾÌṩÁËÕë¶ÔÈýÐÇS3C2410/S3C2440µÈоƬGPIOµÄ¿ØÖÆ£¬ÏÂÃæÀ´·Ö±ð½éÉÜÒ»°ãÈçºÎÅäÖᢹÜÀíGPIO¡£
ÏÂÃæµÄº¯ÊýÊÇÓÃÀ´¸ù¾ÝÐµĹ¦ÄÜÐèÇóÅäÖÃÒ»¸öGPIOÒý½Å£¨¶¨ÒåÔÚarch/arm/plat-s3c24xx/gpio.c£©£º
1 void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function)
2 {
3  ......
1.Ö±½Ó¿´¿´ÓÐûÓÐ/lib64ĿĿ¼µÄ·½·¨¡£64λµÄϵͳ»áÓÐ/lib64ºÍ/libÁ½¸öĿ¼£¬32λֻÓÐ/libÒ»¸ö¡£
2.getconf LONG_BIT
£¨32λµÄϵͳÖÐintÀàÐͺÍlongÀàÐÍÒ»°ã¶¼ÊÇ4×Ö½Ú£¬64λµÄϵͳÖÐintÀàÐÍ»¹ÊÇ4×ֽڵ쬵«ÊÇlongÒѱä³ÉÁË8×Ö½ÚinuxϵͳÖпÉÓÃ"getconf WORD_BIT"ºÍ"getconf LONG_BIT"»ñµÃwordºÍlongµÄλÊý¡£64λϵͳÖÐÓ¦¸Ã·Ö±ðµÃµ½32ºÍ64¡££©
......