ÕªÒª£ºÎªÁ˽â¾ö´«Í³Êý¾Ý´«ÓÜϵͳ±¿ÖØ¡¢·±Ëö¡¢Ôì¼Û¸ß¡¢À©Õ¹ÐÔ²îµÈȱµã£¬Éè¼ÆÁËÒ»ÖÖ»ùÓÚARMµÄ±ãЯʽÎÞÏß´«Êäϵͳ£¬¿ÉÁé»îµØÓëÊý¾Ý²É¼¯É豸½øÐÐÔ¶¾àÀëÊý¾Ý´«Êä¡£¸Ãϵͳ¿É½øÐÐÔ¶¾àÀëÎÞÏß´«Ê䣬²¢¶ÔÊý¾Ý½øÐÐÏÔʾ¡¢´æ´¢¡¢´¦ÀíµÈ£¬»¹ÄÜͨ¹ýÒÔÌ«Íø°ÑÊý¾Ý´«Êäµ½ÈκÎÄÜÁ¬½ÓÒÔÌ«ÍøµÄµØ·½¡£ÔÚÊÒÍâ¿Õ¿õ»·¾³Ï£¬Í¨ÐžàÀë¿É´ï800m£¬½ÓÊÕµ½µÄÊý¾Ý׼ȷÂÊ´ïµ½100%¡£
ÒýÑÔ
Ëæ×ŲâÊÔϵͳµÄ²»¶Ï·¢Õ¹£¬¶ÔÊý¾Ý´«ÊäϵͳÓÐÁ˸ü¸ßµÄÒªÇ󣬴«Í³µÄÊý¾Ý´«Êäϵͳ´ó¶à²ÉÓÃÓÐÏß·½Ê½£¬Êý¾ÝµÄ½ÓÊÕÖÕ¶ËʹÓÃPC»ú¡£Ëæ×ÅÎÞÏßͨÐż¼ÊõµÄ·¢Õ¹£¬ÈËÃÇ¿ªÊ¼ÓÃÎÞÏßÀ´È¡´úÓÐÏß¡£µ«Ä¿Ç°µÄÎÞÏßÁìÓò»¹´æÔÚһЩÎÊÌ⣬ÈçÍøÂçƵ¶ÎÊܵ½ÏÞÖÆ£¬Í¨Ðż«Ò×Êܵ½Íâ½ç¸ÉÈÅ£¬Í¨ÐÅÖпÉÄܳöÏÖ¶ª°ü»òÎóÂ룬ÌìÏ߸߶Ȳ»ÄÜÌ«µÍµÈ¡£
±¾Éè¼ÆʵÏÖÁËÒ»ÖÖ»ùÓÚARMµÄ±ãЯʽÎÞÏß´«Êäϵͳ£¬Ïà±ÈÓڱʼDZ¾£¬¸ÃϵͳÌå»ýС¡¢ÖØÁ¿Çᣬ¿É±ãЯ£¬µ±Í¨ÐÅÊܵ½ÏÞÖÆʱ£¬¿Éµ÷ÕûͨОàÀ룬´Ó¶øʹÎÞÏß´«ÊäϵͳÐÔÄÜ´ïµ½×î¼Ñ¡£
1 Ó²¼þ½á¹¹
ARMϵͳÖ÷ÒªÓÉARM´¦ÀíÆ÷¡¢SRAM¡¢SDRAM¡¢Flash¡¢LCDÒÔ¼°Ò»Ð©ÍâΧ½Ó¿Ú×é³É£¬Ö÷ÒªµÄÍâΧ½Ó¿ÚÓÐUSB½Ó¿Ú¡¢´®¿Ú¡¢GPIO¿Ú¡¢SD¿¨½Ó¿Ú¡¢SPI½Ó¿Ú¡¢camera½Ó¿ÚµÈ¡£ARMϵͳµÄÓ²¼þ½á¹¹Èçͼ1Ëùʾ£¬ËüÃÇÊÇͨ¹ýAHBϵͳ×ÜÏߺÍAPBÍâΧ×ÜÏßÀ´½øÐÐͨÐÅ¡£
²âÊÔϵͳÀïÒѾ¼¯³ÉÁËÎÞÏßÄ£¿é£¬Ö»ÒªÔÚARMϵͳÖмÓÈëÎÞÏßÄ£¿é±ã¿ÉʵÏÖARMÖÕ¶ËÓë²âÊÔϵͳµÄÎÞÏßÊý¾Ý´«Ê䡣ΪÁËÊý¾Ý½ÓÊÕÖն˾ßÓбãЯ¡¢Áé»î¡¢¿¹¸ÉÈÅÇ¿ÒÔ¼°·½±ãÌæ»»ÎÞÏßÄ£¿éµÈÓŵ㣬ÎÞÏßÄ£¿éÓëARMÖն˲ÉÓÃUSB½Ó¿ÚÀ´¶Ô½Ó¡£ÏµÍ³»ù±¾½á¹¹Èçͼ2Ëùʾ¡£
2 USB¼°Linux USBÇý¶¯
2.1 USBµÄ»ù±¾ÔÀí
USBÊÇÒ»ÖÖ¿ìËÙ¡¢Ë«ÏòµÄ´®Ðнӿڣ¬Ëü²ÉÓÃ×ÜÏßÍØÆ˽ṹ£¬ÆäÖ÷¿ØÖÆÆ÷ͨ¹ýUSB¼¯ÏßÆ÷¿ÉÀ©Õ¹Ö÷»úµÄsub¶Ë¿Ú¡£USB¾ßÓÐ4ÖÖ´«Ê䷽ʽ£º¿ØÖÆ´«Êä¡¢Öжϴ«Êä¡¢ÅúÁ¿´«Êä¡¢µÈʱ´«Êä¡£ÆäÊý¾ÝµÄͨÐÅÊÇË«ÏòµÄ£¬Êý¾Ý´ÓÖ÷»ú´«ÏòUSBÉ豸³ÆÏÂÐÐͨÐÅ£¬Êý¾Ý´ÓUSBÉ豸´«ÏòÖ÷»ú³ÆÉÏÐÐͨÐÅ¡£¿ØÖÆȨÊÇÔÚhost·½£¬²»Ö§³ÖÉ豸¼äµÄÖ±½ÓͨÐÅ¡£
USBÉ豸ÊÇÓɽӿںͶ˵㹹³ÉµÄ£¬¶ËµãÊÇUSBͨÐÅ×î»ù±¾µÄÐÎʽ£¬ËüÖ»ÄÜÍùÒ»¸ö·½Ïò´«ËÍÊý¾Ý¡£½Ó¿ÚÊÇÓÃÀ´°ó¶¨µ½É豸Éϵģ¬Ò»¸ö½Ó¿ÚÖ»´¦ÀíÒ»ÖÖUSBÂß¼Á¬½Ó¡£Ò»¸öUSBÉ豸¿ÉÒÔÓжà¸ö½Ó¿Ú£¬²»Í¬µÄ½Ó¿Ú¿ÉÒÔ´ú±í²»Í¬µÄ¹¦ÄÜ¡£USBÇý¶¯³ÌÐòÊǰ󶨵½½Ó¿ÚÉϵġ£´ËÍ⣬һ¸öUSBÉ豸ͨ³£ÓÖÓжà¸öÅäÖõģ¬¶øÇÒ¿ÉÒÔÔÚÅäÖÃÖ®¼äÇл»ÒԸıäÉ豸µÄ״̬£»µ«ÊÇÒ»¸öʱ¿ÌÖ»Äܼ¤»îÒ»¸öÅäÖã¬Ò»¸öÅäÖÃͨ³£¾ßÓÐÒ»¸ö»òÕ߸ü¶àµÄ½Ó¿Ú£¬Èçͼ3Ëùʾ¡£
2.2 »ùÓÚLinuxµÄUSBÇý¶¯
ÓÉÓÚÊý¾Ý¼Ç¼µÄUSB½Ó¿Ú²ÉÓÃFTDI¹«Ë¾¿ª·¢µÄFT245 USBоƬ£¬Äܵ¥Ð¾Æ¬ÊµÏÖ²¢ÐÐFIFO»º´æÇøµÄË«ÏòÊý¾Ý´«Ê䣬ÇÒÖ§³ÖVCP(ÐéÄâ´®¿Ú)¹¦ÄÜ¡£±¾ÎÄÒÔʵ¼ÊÓ¦Óóö·¢£¬Õë¶ÔFT245оƬ½éÉÜLinux»·¾³ÏµÄUSBÇý¶¯³ÌÐò¡£
ÔÚLinuxµÄÄÚºËÔ´ÂëÖÐÓÐÒ»¸öUSBÇý¶¯µÄ¿ò¼Ü³ÌÐò£¬ÎļþÃûΪusb-skeleton.c£¬Ä¿Â¼ÔÚ/drivers/usbÏ£¬´ó¶àÊýµÄUSBÇý¶¯¶¼ÊÇÔÚÕâ¸ö¿ò¼ÜµÄ»ù´¡ÉÏÐ޸ĵġ£ÕâÀïÕë¶ÔFT245оƬÐÞ¸ÄÕâ¸öUSBÇý¶¯µÄ¿ò¼Ü³ÌÐò¡£
USBÇý¶¯³ÌÐòÖÐÓÐÁ½¸öºê£º
ÕâÁ½¸öºêµÄÖµÊÇUSBоƬÖÆÔìÉÌËùÌṩµÄ£¬VIDÊÇоƬÖÆÔìÉÌID£¬PIDÊÇоƬµÄʶ±ðÂ룬²»Í¬³§É̲»Í¬ÐͺŵÄUSBоƬµÄVIDºÍPIDÊDz»Í¬µÄ£¬FT245оƬµÄVID=0x0403£¬PID=0x6001¡£¡¢
file_operationÊÇÇý¶¯³ÌÐòÖÐÒ»¸öºÜÖØÒªµÄÀ࣬Ëü¶¨ÒåÁËÒ»×é³£¼ûÎļþI/Oº¯Êý£¬¶øÕâЩº¯ÊýµÄʹÓÃÀàËÆÓÚÆÕͨÎļþµÄI/O²Ù×÷¡£³ÌÐòÈçÏ£º
ÕâÀﶨÒåµÄº¯ÊýÊÇUSBÇý¶¯³ÌÐòµÄÈë¿Úµã£¬Òª´ò¿ªUSBÉ豸ʱ£¬Ê¹ÓÃϵͳº¯ÊýOpen()£¬ÏµÍ³¾Í»á×Ô¶¯µ÷ÓÃÇý¶¯ÖеÄft245_open()º¯Êý¡£ÆäËûº¯ÊýÀàËÆ£¬Èçwrite()¶ÔÓ¦ft245_write()£¬rcad()¶ÔÓ¦ft245_rcad()£¬close()¶ÔÓ¦ft245_release()¡£
3 »ùÓÚUSB½Ó¿ÚµÄÎÞÏßÄ£¿é
¶Ì¾àÀëÎÞÏß´«Êä¼¼Êõ¹ã·ºµØÓ¦ÓÃÓÚ¸÷¸öÁìÓò£¬²¢³ÉΪÈËÃǹ¤×÷ºÍÉú»îÖв»¿É»òȱµÄÒ»²¿·Ö£¬ÓÉÓÚËüÓëÓÐÏßÏà±ÈÓкܶàÓŵ㣺·½±ãʹÓᢵ͹¦ºÄ¡¢±ãÓÚЯ´ø¡¢ÎÞÐèÏßÀµÄÊø¸¿µÈ¡£±í1ÊǼ¸ÖÖ´«Êä¼¼ÊõµÄÓÅȱµã¡£¸ù¾Ý¾ßÌåÓ¦Óû·¾³Ñ¡ÓÃÌض¨µÄÎÞÏß´«Ê䷽ʽ¡£
ÓÉÓڵ͹¦ÂÊÔ¶¾àÀëÎÞÏßͨÐż¼Êõ¾ßÓд«Êä¾àÀëÔ¶¡¢ËٶȿìµÈÓŵ㣬·ûºÏÔ¶¾àÀë¿ìËÙ´«ÊäµÄÐèÒª£¬ËùÒÔ²ÉÓõ͹¦ÂÊÔ¶¾àÀëÎÞÏßģʽ¡£¸ÃÎÞÏßÄ£¿é²ÉÓñê×¼µÍ¹¦ÂÊÔ¶¾àÀëÉäƵоƬnRF24L01£¬Í¨ÐŽӿÚʹÓÃFTDI¹«Ë¾Ñз¢µÄUSB2.0оƬFT245£¬Î¢¿ØÖÆÆ÷ÊDzÉÓþ«¼òÖ¸ÁµÄPICµ¥Æ¬»ú¡£ÎÞÏßÄ£¿éϵͳ¿òͼÈçͼ4Ëùʾ¡£
4 ʵÑé½á¹ûÓë·ÖÎö
ѹÁ¦²âÊԼǼÒÇÍ·²¿½Ó¸ß¾«¶ÈѹÁ¦´«¸ÐÆ÷£¬ÄÚ²¿¼¯³ÉÎÞÏßÄ£¿é£¬ÌìÏßʹÓÃ΢´øÌìÏß¡£ARM¿ª·¢°åʹÓÃLinux×÷Ϊ²Ù×÷ϵͳ£¬Ê¹ÓÃQT×÷Ϊ¿ª·¢Èí¼þ£¬ÖÆ×÷Êý¾Ý¶ÁÈ¡¼°ÏÔʾ³ÌÐò£¬Íê³ÉÊý¾ÝµÄÎÞÏß´«Êä¼°ÏÔʾÈÎÎñ¡£¸Ãϵͳ¿ÉÈ¡´ú±Ê¼Ç±¾Íê³ÉÒ°ÍâµÄÎÞÏßÊý¾Ý´«ÊäÈÎÎñ¡£USB½Ó¿ÚµÄÎÞÏßÄ£¿éÓëÌìÏߣ¬ÔÚ¿Õ¿õ»·¾³Ï´«Êä¾àÀë×îÔ¶¿É´ï800m¡£ÔÚ²»Í¬µÄζȡ¢Êª¶È¡¢ÒÔ¼°²»Í¬µÄ¿Õ¿õ»·¾³Ï¾¹ý¶à´ÎʵÑ飬ʹÓÃÎÞÏß´«Êäϵͳ¶ÁÈ¡µÄÊý¾ÝÓëPC»úÏÂʹÓÃUSBÊý¾ÝÏ߶ÁÈ¡µÄÊý¾ÝÍêÈ«Ïàͬ£¬ËùÒÔʵÑé±íÃ÷¸ÃϵͳÉè¼ÆÊÇÕýÈ·¡¢¿ÉÐеġ£
½áÓï
ÓÉÓÚǶÈëʽÉ豸ÔÚ²âÊÔϵͳÖÐÓÐ×ÅÖÖÖÖÓŵ㣬ԽÀ´Ô½Êܵ½ÈËÃǵÄÇàíù¡£´ËÍ⣬Ëæ×Ŷ̾àÀëÎÞÏß´«ÊäµÄ·¢Õ¹£¬¸ø±ãЯʽÎÞÏß´«ÊäÉ豸´øÀ´ÁËеÄÉú»ú¡£±¾ÎĽéÉܵĻùÓÚARMµÄÎÞÏß´«Êäϵͳ¸ù¾Ýʵ¼ÊÓ¦Óóö·¢£¬¿Ë·þÁË´«Í³µÄÊý¾Ý´«Êäϵͳ±¿ÖØ¡¢·Ñʱ¡¢·ÑÁ¦µÄȱµã£¬ÇÒ½ÓÊÕµ½µÄÊý¾Ý¿É½øÐв¨ÐÎÏÔʾ¡¢Êý¾Ý´æ´¢¡¢Êý¾Ý´¦ÀíµÈ¡£´ËÍ⣬ÓÉÓÚARMϵͳǿ´óµÄÍøÂ繦ÄÜ£¬¿Éͨ¹ýÒÔÌ«Íø°ÑÊý¾Ý´«Êäµ½ÈκÎÓÐÒÔÌ«ÍøµÄµØ·½£¬¾ßÓÐÒ»¶¨µÄ´´ÐÂÐÔ¡£
×÷ÕߣºÕÔ¾ê ÔøÇ¿ Àî¸ÄÀû ÑîÞ± À´Ô´£ºÏÖ´úµç×Ó¼¼Êõ