×÷ΪǶÈëʽϵͳµÄÖØÒª×é³É²¿·Ö£¬ÊýÂë¹Ü£¨Ò²³ÆÎªÆß¶ÎÏÔʾÆ÷£©ÒòÆäÏÔʾֱ¹Û¡¢³É±¾µÍÁ®¶ø¹ã·ºÓ¦ÓÃÓÚ¸÷ÖÖÏÔʾÐèÇóÖÐ
È»¶ø£¬Òª³ä·Ö·¢»ÓÊýÂë¹ÜÔÚLinux»·¾³ÏµÄDZÁ¦£¬¾ÍÐèÒªÒ»¸ö¸ßЧ¡¢¿É¿¿µÄÇý¶¯³ÌÐò
±¾ÎĽ«ÉîÈë̽ÌÖLinuxÊýÂë¹ÜÇý¶¯µÄ¿ª·¢¹ý³Ì£¬´ÓÓ²¼þ½Ó¿Úµ½Èí¼þʵÏÖ£¬È«·½Î»½âÎöÕâÒ»¼¼ÊõÌôÕ½
Ò»¡¢ÊýÂë¹Ü»ù´¡ÓëÓ²¼þ½Ó¿Ú ÊýÂë¹Ü£¬Í¨³£ÓÉ7¸ö»ò¸ü¶àLED¶Î×é³É£¬Í¨¹ý¿ØÖÆÕâЩLED¶ÎµÄÁÁÃðÀ´ÏÔʾÊý×Ö»ò×Öĸ
¸ù¾ÝÇý¶¯·½Ê½µÄ²»Í¬£¬ÊýÂë¹Ü¿É·ÖΪ¹²Ñô¼«ºÍ¹²Òõ¼«Á½ÖÖÀàÐÍ
¹²Ñô¼«ÊýÂë¹ÜµÄ¹«¹²¶Ë½Ó¸ßµçƽ£¬Í¨¹ýÀµÍ¶ÔÓ¦µÄ¶ÎÑ¡ÐźÅÀ´µãÁÁLED£»¶ø¹²Òõ¼«ÔòÏà·´£¬¹«¹²¶Ë½ÓµÍµçƽ£¬Í¨¹ýÀ¸ß¶ÎÑ¡ÐźÅÀ´µãÁÁLED
ÔÚLinux»·¾³Ï¿ª·¢ÊýÂë¹ÜÇý¶¯£¬Ê×ÏÈÐèÒªÃ÷È·ÊýÂë¹ÜÓë΢¿ØÖÆÆ÷£¨ÈçARM Cortex-MϵÁС¢AVRµÈ£©Ö®¼äµÄÓ²¼þ½Ó¿Ú
³£¼ûµÄ½Ó¿Ú·½Ê½°üÀ¨GPIO£¨Í¨ÓÃÊäÈëÊä³ö£©¡¢SPI£¨´®ÐÐÍâÉè½Ó¿Ú£©¡¢I2C£¨Á½Ïß´®Ðнӿڣ©µÈ
ÆäÖУ¬GPIO½Ó¿ÚÒòÆä¼òµ¥Ö±½Ó£¬³ÉΪÐí¶àµÍ³É±¾ÏîÄ¿µÄÊ×Ñ¡
¶þ¡¢LinuxÇý¶¯¿ª·¢»ù´¡ LinuxÄÚºËÌṩÁ˷ḻµÄÉ豸Çý¶¯¿ò¼Ü£¬Ê¹µÃ¿ª·¢ÕßÄܹ»¸ù¾ÝÐèÒª±àÐ´ÌØ¶¨µÄÓ²¼þÇý¶¯³ÌÐò
LinuxÇý¶¯Ä£ÐÍÖ÷Òª·ÖΪ×Ö·ûÉ豸¡¢¿éÉ豸ºÍÍøÂçÉ豸Èý´óÀ࣬¶øÊýÂë¹ÜÇý¶¯Í¨³£¹éÀàΪ×Ö·ûÉ豸
1.×Ö·ûÉ豸Çý¶¯¿ò¼Ü£º×Ö·ûÉ豸ÊÇLinuxÖÐ×î»ù±¾µÄÉ豸ÀàÐÍ£¬ËüÃÇÒÔ×Ö½ÚÁ÷µÄÐÎʽ½øÐÐÊý¾Ý´«Êä
×Ö·ûÉ豸Çý¶¯ÐèҪʵÏÖһϵÁеÄÎļþ²Ù×÷½Ó¿Ú£¬Èç`open`¡¢`read`¡¢`write`¡¢`close`µÈ
2.É豸Ê÷ÓëÉ豸Îļþ£ºÔÚLinuxϵͳÖУ¬Ã¿¸öÓ²¼þÉ豸¶¼¶ÔÓ¦Ò»¸öÉ豸Îļþ£¬Í¨³£Î»ÓÚ`/dev`Ŀ¼ÏÂ
É豸Ê÷£¨Device Tree£©ÊÇÒ»ÖÖÊý¾Ý½á¹¹£¬ÓÃÓÚÃèÊöÓ²¼þÉ豸µÄÅäÖÃÐÅÏ¢£¬ËüÔÚÉ豸³õʼ»¯¹ý³ÌÖÐÆð×ÅÖÁ¹ØÖØÒªµÄ×÷ÓÃ
3.ÄÚ´æÓ³ÉäÓëÖжϴ¦Àí£º¶ÔÓÚÐèÒªÖ±½Ó·ÃÎÊÓ²¼þÄÚ´æ»ò´¦ÀíÓ²¼þÖжϵÄÇý¶¯£¬LinuxÌṩÁËÄÚ´æÓ³É䣨Memory Mapping£©ºÍÖжϹÜÀí»úÖÆ
Èý¡¢ÊýÂë¹ÜÇý¶¯Éè¼ÆË¼Â· ÔÚÉè¼ÆÊýÂë¹ÜÇý¶¯Ê±£¬ÎÒÃÇÐèÒª¿¼ÂÇÒÔϼ¸¸ö¹Ø¼ü·½Ã棺 1.Ó²¼þ³éÏó²ã£ºÎªÁËÔöÇ¿´úÂëµÄ¿ÉÒÆÖ²ÐԺͿÉά»¤ÐÔ£¬Ó¦Éè¼ÆÒ»¸öÓ²¼þ³éÏó²ã£¨HAL£©£¬½«¾ßÌåµÄÓ²¼þ²Ù×÷·â×°ÆðÀ´£¬¶ÔÍâÌṩͳһµÄ½Ó¿Ú
2.ÏÔʾ¿ØÖÆÂß¼£º¸ù¾ÝÊýÂë¹ÜµÄÏÔʾÔÀí£¬±àд¿ØÖÆÂß¼£¬°üÀ¨³õʼ»¯¡¢¶ÎÑ¡ÐźÅÉèÖá¢ÁÁ¶Èµ÷½ÚµÈ
3.×Ö·ûÓ³É䣺ΪÁËÖ§³Ö×Ö·ûÏÔʾ£¬ÐèÒªÉè¼ÆÒ»¸ö×Ö·ûµ½¶ÎÑ¡ÐźŵÄÓ³Éä±í
4.¶àÏß³ÌÓëͬ²½£ºÈç¹ûÊýÂë¹ÜÐèҪͬʱÏÔʾ¶à¸ö¶¯Ì¬±ä»¯µÄÊý¾Ý£¬¿ÉÄÜÐèÒª¿¼ÂǶàÏ̱߳à³ÌºÍͬ²½»úÖÆ£¬ÒÔ±ÜÃâÊý¾Ý¾ºÕùºÍÏÔʾ»ìÂÒ
ËÄ¡¢Çý¶¯ÊµÏÖ²½Öè ÒÔÏÂÊÇÒ»¸ö»ùÓÚGPIO½Ó¿ÚµÄ¼òµ¥ÊýÂë¹ÜÇý¶¯ÊµÏÖ²½Ö裺 1.ÅäÖÃGPIO£º - ÔÚÉ豸Ê÷Öж¨ÒåÊýÂë¹ÜµÄGPIOÒý½Å
- ÔÚÇý¶¯´úÂëÖУ¬Í¨¹ý`of_get_named_gpio`µÈº¯Êý»ñÈ¡GPIO±àºÅ£¬²¢Ê¹ÓÃ`gpio_request`¡¢`gpio_direction_output`µÈº¯ÊýÅäÖÃGPIOΪÊä³öģʽ
2.³õʼ»¯Çý¶¯£º -ʵÏÖ`probe`º¯Êý£¬Íê³ÉGPIOÅäÖá¢×Ö·ûÓ³Éä±í³õʼ»¯µÈ¹¤×÷
- ×¢²á×Ö·ûÉ豸£¬´´½¨É豸Îļþ
3.ʵÏÖÎļþ²Ù×÷½Ó¿Ú£º -`open`£º³õʼ»¯ÏÔʾ״̬
-`write`£º½ÓÊÕÓû§¿Õ¼ä·¢Ë͵ÄÊý¾Ý£¬¸ù¾Ý×Ö·ûÓ³Éä±íÉèÖöÎÑ¡ÐźÅ
-`close`£ºÊÍ·Å×ÊÔ´
4.×Ö·ûÏÔʾÂß¼£º - ±àдһ¸öº¯Êý£¬¸ù¾ÝÊäÈëµÄ×Ö·û²éÕÒ×Ö·ûÓ³Éä±í£¬ÉèÖÃÏàÓ¦µÄGPIOÊä³ö״̬
- ¿¼Âǵ½ÊýÂë¹ÜµÄË¢ÐÂÆµÂÊ£¬¿ÉÄÜÐèҪʹÓö¨Ê±Æ÷»òÖжÏÀ´ÖÜÆÚÐԵظüÐÂÏÔʾÄÚÈÝ
5.²âÊÔÓëµ÷ÊÔ£º - ±àдÓû§¿Õ¼ä²âÊÔ³ÌÐò£¬Í¨¹ý`open`¡¢`write`µÈϵͳµ÷ÓÃÓëÇý¶¯½»»¥
-ʹÓÃ`dmesg`²é¿´ÄÚºËÈÕÖ¾£¬µ÷ÊÔÇý¶¯ÖеĴíÎó
- ʹÓÃʾ²¨Æ÷»òÂß¼·ÖÎöÒǼì²éGPIOÐźţ¬È·±£Ó²¼þ½Ó¿ÚÕýÈ·
Îå¡¢ÐÔÄÜÓÅ»¯ÓëÀ©Õ¹ 1.µÍ¹¦ºÄÉè¼Æ£ºÍ¨¹ýµ÷ÕûGPIOÊä³ö״̬µÄʱ¼ä¼ä¸ô£¬»òÔÚ²»ÐèÒªÏÔʾʱ¹Ø±ÕÊýÂë¹ÜµÄµçÔ´£¬ÊµÏֵ͹¦ºÄÉè¼Æ
2.¶¯Ì¬ÁÁ¶Èµ÷½Ú£ºÀûÓÃPWM£¨Âö³å¿í¶Èµ÷ÖÆ£©¼¼Êõ£¬ÊµÏÖÊýÂë¹ÜÁÁ¶ÈµÄ¶¯Ì¬µ÷½Ú
3.¶à¶ÎÊýÂë¹ÜÖ§³Ö£ºÍ¨¹ýÀ©Õ¹Çý¶¯£¬Ö§³Ö¶à¸öÊýÂë¹ÜµÄ¼¶ÁªÏÔʾ£¬ÊµÏÖ¸ü¸´ÔÓµÄÐÅÏ¢ÏÔʾÐèÇó
4.Óû§¿Õ¼ä½Ó¿ÚÓÅ»¯£ºÌṩ¸ü¸ß²ã´ÎµÄAPI£¬ÈçÖ§³Ö×Ö·û´®Ö±½ÓÏÔʾ¡¢×Ô¶¨Òå×Ö·û¼¯µÈ£¬Ìá¸ßÓû§¿Õ¼äµÄ±à³Ì±ãÀûÐÔ
Áù¡¢½áÂÛ LinuxÊýÂë¹ÜÇý¶¯µÄ¿ª·¢ÊÇÒ»¸öÉæ¼°Ó²¼þ½Ó¿Ú¡¢Äں˱à³Ì¡¢¶àÏß³Ìͬ²½µÈ¶à¸öÁìÓòµÄ×ÛºÏÐÔÈÎÎñ
ͨ¹ýÉîÈëÀí½âÊýÂë¹ÜµÄ¹¤×÷ÔÀí£¬½áºÏLinuxÇý¶¯¿ª·¢µÄ»ù´¡ÖªÊ¶£¬ÎÒÃÇ¿ÉÒÔÉè¼Æ³ö¸ßЧ¡¢¿É¿¿µÄÊýÂë¹ÜÇý¶¯£¬Âú×ã¸÷ÖÖǶÈëʽϵͳµÄÏÔʾÐèÇó
Ëæ×ż¼ÊõµÄ²»¶Ï½ø²½£¬Î´À´µÄÊýÂë¹ÜÇý¶¯½«¸ü¼ÓÖÇÄÜ»¯¡¢Ä£¿é»¯£¬ÎªÇ¶ÈëʽϵͳµÄ·¢Õ¹×¢ÈëеĻîÁ¦
×÷Ϊ¿ª·¢Õߣ¬ÎÒÃÇÓ¦³ÖÐø¹Ø×¢Ð¼¼Êõ¡¢Ð¿ò¼ÜµÄ·¢Õ¹£¬²»¶ÏÌáÉý×Ô¼ºµÄרҵ¼¼ÄÜ£¬ÒÔÊÊÓ¦²»¶Ï±ä»¯µÄÊг¡ÐèÇó