¶øÔÚLinuxϵͳÖУ¬Çý¶¯³ÌÐò×÷ΪӲ¼þÓë²Ù×÷ϵͳ֮¼äµÄÇÅÁº£¬°çÑÝ×ÅÖÁ¹ØÖØÒªµÄ½ÇÉ«
ѧϰLinuxÇý¶¯¿ª·¢£¬²»½öÄܹ»ÉîÈëÀí½â²Ù×÷ϵͳµÄÄں˻úÖÆ£¬»¹Äܹ»ÎªÌض¨Ó²¼þ¶¨ÖƸßЧ¡¢¿É¿¿µÄÇý¶¯³ÌÐò
±¾ÎĽ«´ÓLinuxÇý¶¯µÄ»ù±¾¸ÅÄî³ö·¢£¬Öð²½ÉîÈ룬½áºÏʵ¼ù°¸Àý£¬Îª¶ÁÕß³ÊÏÖÒ»·ÝÏ꾡µÄѧϰ±Ê¼Ç
Ò»¡¢LinuxÇý¶¯¿ª·¢ÈëÃÅ 1.1 Çý¶¯µÄ»ù±¾¸ÅÄî LinuxÇý¶¯³ÌÐò£¬¼ò¶øÑÔÖ®£¬¾ÍÊÇÒ»×éÓÃÓÚ¿ØÖÆÓ²¼þÉ豸¡¢ÊµÏÖÓ²¼þÓë²Ù×÷ϵͳ֮¼äͨÐŵÄÈí¼þ´úÂë
Ëüͨ³£°üÀ¨É豸³õʼ»¯¡¢Êý¾Ý´«Êä¡¢´íÎó´¦ÀíµÈ¹¦ÄÜÄ£¿é
ÔÚLinuxϵͳÖУ¬Çý¶¯³ÌÐòÒÔÄ£¿é»¯µÄÐÎʽ´æÔÚ£¬¿ÉÒÔ¶¯Ì¬¼ÓÔØºÍÐ¶ÔØ£¬Õâ´ó´óÌá¸ßÁËϵͳµÄÁé»îÐԺͿÉÀ©Õ¹ÐÔ
1.2 Çý¶¯µÄ·ÖÀà LinuxÇý¶¯´óÖ¿ÉÒÔ·ÖΪÈýÀࣺ×Ö·ûÉ豸Çý¶¯¡¢¿éÉ豸Çý¶¯ºÍÍøÂçÉ豸Çý¶¯
- ×Ö·ûÉ豸Çý¶¯£º´¦ÀíÏñ´®¿Ú¡¢¼üÅÌ¡¢Êó±êµÈ°´×Ö·ûÁ÷´«ÊäÊý¾ÝµÄÉ豸
ÕâЩÉ豸ͨ³£ÒÔÎļþµÄÐÎʽ±»·ÃÎÊ
- ¿éÉ豸Çý¶¯£º´¦ÀíÏñÓ²ÅÌ¡¢UÅ̵ÈÒÔÊý¾Ý¿éΪµ¥Î»´«ÊäÊý¾ÝµÄÉ豸
ÕâЩÉ豸֧³ÖËæ»ú·ÃÎÊ£¬Í¨³£ÓÃÓڴ洢ϵͳ
- ÍøÂçÉ豸Çý¶¯£º´¦ÀíÍøÂçͨÐÅÉ豸£¬ÈçÍø¿¨
ËüÃǸºÔðÊý¾ÝµÄ½ÓÊպͷ¢ËÍ£¬Í¨³£Í¨¹ýÌ×½Ó×Ö½Ó¿ÚÓëÓû§¿Õ¼äͨÐÅ
¶þ¡¢LinuxÄÚºËÓëÇý¶¯¿ª·¢»·¾³´î½¨ 2.1 LinuxÄں˼ò½é LinuxÄÚºËÊDzÙ×÷ϵͳµÄºËÐIJ¿·Ö£¬¸ºÔð¹ÜÀíÓ²¼þ×ÊÔ´¡¢Ìṩ½ø³Ìµ÷¶È¡¢ÄÚ´æ¹ÜÀí¡¢É豸Çý¶¯µÈ¹¦ÄÜ
Á˽âLinuxÄں˵ļܹ¹ºÍ¹¤×÷ÔÀí£¬ÊÇÕÆÎÕÇý¶¯¿ª·¢µÄ»ù´¡
2.2 ¿ª·¢»·¾³´î½¨ - Ñ¡ÔñLinux·¢Ðа棺Ubuntu¡¢FedoraµÈ·¢ÐаæÒòÆä·á¸»µÄÈí¼þ°ü¹ÜÀíºÍÉçÇøÖ§³Ö£¬ÊÇÇý¶¯¿ª·¢µÄÀíÏëÑ¡Ôñ
- °²×°¿ª·¢¹¤¾ß£º°üÀ¨GCC±àÒëÆ÷¡¢Make¹¹½¨¹¤¾ß¡¢GDBµ÷ÊÔÆ÷µÈ
- »ñÈ¡ÄÚºËÔ´Â룺¿ÉÒÔ´ÓLinux¹Ù·½ÍøÕ¾»òGit²Ö¿âÏÂÔØÄÚºËÔ´Âë
- ÅäÖÃÄں˱àÒë»·¾³£ºÊ¹ÓÃmake menuconfigµÈ¹¤¾ßÅäÖÃÄں˱àÒëÑ¡Ïȷ±£°üº¬ËùÐèµÄÇý¶¯¿ª·¢Ö§³Ö
Èý¡¢LinuxÇý¶¯¿ª·¢»ù´¡ 3.1 Çý¶¯Ä£¿éµÄ±àд ÿ¸öLinuxÇý¶¯Ä£¿éͨ³£ÓÉÁ½¸öÖ÷Òª²¿·Ö×é³É£ºÄ£¿é³õʼ»¯ºÍÇåÀíº¯Êý£¬ÒÔ¼°Ä£¿éÐÅÏ¢½á¹¹Ìå
- Ä£¿é³õʼ»¯ºÍÇåÀí£ºmodule_initºÍ`module_exit`ºê·Ö±ð±ê¼ÇÄ£¿éµÄ³õʼ»¯ºÍÇåÀíº¯Êý
ÔÚÄ£¿é¼ÓÔØÊ±£¬³õʼ»¯º¯Êý±»Ö´ÐУ»ÔÚÄ£¿éÐ¶ÔØÊ±£¬ÇåÀíº¯Êý±»Ö´ÐÐ
- Ä£¿éÐÅÏ¢½á¹¹Ì壺MODULE_INFOºê¶¨ÒåÁËÄ£¿éµÄ»ù±¾ÐÅÏ¢£¬Èç×÷Õß¡¢ÃèÊö¡¢°æ±¾µÈ
3.2 ×Ö·ûÉ豸Çý¶¯¿ª·¢ ×Ö·ûÉ豸Çý¶¯µÄ¿ª·¢Éæ¼°É豸µÄ×¢²áÓë×¢Ïú¡¢Îļþ²Ù×÷µÄʵÏֵȹؼü²½Öè
- É豸ע²áÓë×¢Ïú£ºÊ¹ÓÃ`register_chrdev_region`ºÍ`unregister_chrdev_region`º¯ÊýΪÉ豸·ÖÅäºÍÊÍ·ÅÖ÷´ÓÉ豸ºÅ
- Îļþ²Ù×÷ʵÏÖ£º¶¨Ò岢ʵÏÖfile_operations½á¹¹ÌåÖеÄ`open`¡¢`read`¡¢`write`¡¢`release`µÈº¯Êý£¬ÒÔ´¦ÀíÓû§¶ÔÉ豸µÄ²Ù×÷ÇëÇó
3.3 ÄÚ´æ¹ÜÀíÓëÖжϴ¦Àí - ÄÚ´æ¹ÜÀí£ºLinuxÄÚºËÌṩÁ˷ḻµÄÄÚ´æ¹ÜÀíº¯Êý£¬Èç`kmalloc`¡¢`kfree`µÈ£¬ÓÃÓÚ¶¯Ì¬·ÖÅäºÍÊÍ·ÅÄÚ´æ
ºÏÀíµÄÄÚ´æ¹ÜÀí¶ÔÓÚÇý¶¯µÄÎȶ¨ÐÔºÍÐÔÄÜÖÁ¹ØÖØÒª
- Öжϴ¦Àí£ºÖжÏÊÇÓ²¼þÏòCPU·¢Ë͵ÄÒ»ÖÖÐźţ¬ÓÃÓÚ֪ͨCPUÓÐÖØÒªÊ¼þÐèÒª´¦Àí
LinuxÄÚºËͨ¹ýÖжϷþÎñÀý³Ì£¨ISR£©À´´¦ÀíÖжÏ
Çý¶¯¿ª·¢ÕßÐèÒª±àдISRÀ´´¦ÀíÌØ¶¨Ó²¼þµÄÖжÏÇëÇó
ËÄ¡¢Êµ¼ù°¸Àý£ºLEDÇý¶¯¿ª·¢ 4.1 Ó²¼þ×¼±¸ ÒÔÒ»¸ö¼òµ¥µÄLEDµÆÎªÀý£¬¼ÙÉèÆäÁ¬½ÓÔÚÊ÷Ý®ÅɵÄGPIOÒý½ÅÉÏ
4.2 Çý¶¯Éè¼Æ ¶¨ÒåÉ豸ÐÅÏ¢£º°üÀ¨É豸Ãû¡¢Ö÷É豸ºÅµÈ
- ʵÏÖÎļþ²Ù×÷£ºÎªLEDÉ豸ʵÏÖopen¡¢write£¨¿ØÖÆLEDÁÁÃ𣩡¢`release`µÈ²Ù×÷
- GPIO³õʼ»¯Óë²Ù×÷£ºÊ¹ÓÃÊ÷Ý®ÅÉÌṩµÄGPIO¿â³õʼ»¯GPIOÒý½Å£¬²¢Í¨¹ý²Ù×÷GPIOÒý½ÅµÄ¸ßµÍµçƽÀ´¿ØÖÆLEDµÄÁÁÃð
4.3 ±àд´úÂë
include