¹Ø¼ü´Ê£ºmega128оƬ TCP£¯IPÐÒéÕ»
ʱ¼ä£º2021-08-30 09:56:14 À´Ô´£ºÍøÂç
¡°¶ÔÓÚǶÈëʽϵͳ¶øÑÔ£¬¿¼Âǵ½TCP/IPÐÒéµÄ¸´ÔÓÐÔÒÔ¼°Ç¶Èëʽϵͳ×ÔÉí×ÊÔ´µÄÓÐÏÞ£¬¶ÔTCP/IPµÄʵÏÖ²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊÂÇé¡£ÔÚÒ»Ð©ÌØÊⳡºÏ£¬±ÈÈçÒªÇóʵʱÐÔ»òÕßÊý¾ÝµÄ°²È«ÐÔ£¬ÊµÏÖTCP/IPÐÒéʱ»¹ÐèÒªÌØ±ð¼ÓÒÔ¿¼ÂÇ¡£ÏÂÃæÒÔATMEL¹«Ë¾µÄmega128оƬΪӲ¼þƽ̨£¬¾ßÌå̸̸TCP/IPÐÒéµÄʵÏÖ¡£
¡±×÷ÕߣºÏîÃô£¬Íõѧ¾ü
¶ÔÓÚǶÈëʽϵͳ¶øÑÔ£¬¿¼Âǵ½TCP/IPÐÒéµÄ¸´ÔÓÐÔÒÔ¼°Ç¶Èëʽϵͳ×ÔÉí×ÊÔ´µÄÓÐÏÞ£¬¶ÔTCP/IPµÄʵÏÖ²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊÂÇé¡£ÔÚÒ»Ð©ÌØÊⳡºÏ£¬±ÈÈçÒªÇóʵʱÐÔ»òÕßÊý¾ÝµÄ°²È«ÐÔ£¬ÊµÏÖTCP/IPÐÒéʱ»¹ÐèÒªÌØ±ð¼ÓÒÔ¿¼ÂÇ¡£ÏÂÃæÒÔATMEL¹«Ë¾µÄmega128оƬΪӲ¼þƽ̨£¬¾ßÌå̸̸TCP/IPÐÒéµÄʵÏÖ¡£
ATmega128оƬµÄÌØµã
Atmega128ÊÇATMEL¹«Ë¾ÍƳöµÄÒ»¿î»ùÓÚAVR RISC½á¹¹µÄµÍ¹¦ºÄ¡¢¸ßÐÔÄܵÄ8λ΢¿ØÖÆÆ÷оƬ¡£Í¨¹ýÔÚÒ»¸öʱÖÓÖÜÆÚÄÚÖ´ÐÐÒ»ÌõÖ¸ÁAtmega128¿ÉÒÔÈ¡µÃ1MIPS/MHzµÄÐÔÄÜ¡£´ËÍ⣬¸ÃоƬ»¹¾ßÓбȽϷḻµÄƬÉÏ×ÊÔ´¡£¶ø×î´ó¿ÉÍâÀ©µÄ64KÊý¾Ý´æ´¢Æ÷¿ÉÒÔʹµÃÓгäÔ£µÄ¿Õ¼äÀ´´¦ÀíÒÔÌ«Êý¾Ý°ü¡£
±¾·½°¸Ö»ÍâÀ©32K RAM£¬Ê£ÓàµÄ¸ßµØÖ·¿Õ¼äÁô¸øÍø¿¨Ð¾Æ¬¡£Íø¿¨Ð¾Æ¬Ö÷Òª¹¦ÄÜÊÇÔÚÎïÀí²ã½øÐÐÒÔÌ«Êý¾Ý°üµÄÊÕ·¢£¬ÒÔ¼°ÔÚÁ´Â·²ã½øÐÐÐźŵıà/½âÂë¡£±¾·½°¸Íø¿¨Ð¾Æ¬Ñ¡ÓÃRTL8019AS£¬ËüÊÇÕë¶ÔPC»úµÄISA×ÜÏßÉè¼ÆµÄ¡£
Ó²¼þ½Ó¿Úµç·Éè¼Æ
Atmega128¶Ô8019ASµÄÇý¶¯Ö÷ÒªÊÇͨ¹ý²Ù×Ý8019ASÄÚ²¿¼Ä´æÆ÷À´Íê³ÉµÄ£¬ÕâЩ¼Ä´æÆ÷Ó³ÉäÔÚAtmega128µÄI/O¶Ë¿ÚÉÏ¡£Òò´Ë£¬¶Ô8019ASµÄ²Ù×÷Ò²¼ÈÊǶÔAtmega128µÄI/O¶Ë¿Ú²Ù×÷¡£Éè¼ÆÊ±¿ÉÒÔ½«ÕâЩI/OµØÖ·¶¨Î»µ½300H¡°31FH¡£ÓÉÓÚAtmega128ÍâÀ©ÁË32KµÄRAM£¬ËùÒÔÕâÀï´æÔÚÆ¬Ñ¡µÄÎÊÌâ¡£¿¼Âǵ½Íø¿¨Ð¾Æ¬8019ASµØÖ·Ïߵĸß15λÊǹ̶¨²»±äµÄ£¬¿ÉÒÔÀûÓÃAtmega128µÄµØÖ·ÏßµÄ×î¸ßλA15À´½øÐÐÆ¬Ñ¡£ºµ±A15=1ʱ£¬Ñ¡ÖÐ8019AS£»µ±A15=0ʱ£¬Ñ¡ÖÐ24C256¡£
8019ASÍøÂç½Ó¿Ú¿ØÖÆÆ÷ÌṩÁËÈýÖÖÓëϵͳÖ÷CPUµÄ½Ó¿Ú·½Ê½£ºÌøÏß·½Ê½¡¢PnP·½Ê½£¬ÒÔ¼°RT·½Ê½¡£ÎªÁ˼õÉÙÓ²¼þ×ÊÔ´£¬¸üÖ±½ÓµØ¿ØÖÆÐ¾Æ¬£¬½«8019ASµÄ65½Å¡°JP¡±½Ó¸ßµçƽ£¬Ñ¡ÔñÌøÏß·½Ê½¡£
Èí¼þÄ£¿éµÄÉè¼Æ
Íø¿¨Ð¾Æ¬8019ASµÄÇý¶¯
ÔÚ¾ßÌåÉè¼ÆÊµÏÖTCP/IPÐÒéջ֮ǰ£¬»¹Òª½â¾öÒ»¸öÎÊÌ⣺¶Ô8019ASµÄÇý¶¯¡£´Ó³ÌÐòÔ±µÄ½Ç¶È¿´£¬8019AS¹¤×÷Á÷³Ì²¢²»¸´ÔÓ¡£¼ò¶øÑÔÖ®¾ÍÊÇ8019ASÍê³ÉÊý¾Ý°üºÍµçÐźÅÖ®¼äµÄÏ໥ת»»£¬ÒÔÌ«ÍøÐÒéÓÉоƬӲ¼þ×Ô¶¯Íê³É¡£Òò´Ë£¬Çý¶¯³ÌÐòÐèÒªÍê³ÉµÄÈÎÎñÖ÷ÒªÊÇ£ºÐ¾Æ¬³õʼ»¯¡¢ÊÕ°ü¡¢·¢°ü¡£±¾·½°¸ÔÚÐÒéÕ»ÖÐͨ¹ýÉè¼ÆÈý¸ö×Óº¯ÊýÀ´·Ö±ðÍê³ÉÉÏÊöÈý¸öÈÎÎñ£¬8019Init £¨void£©¡¢8019SendProc £¨unsigned char TaskNo£©¡¢8019 ReceiveProc£¨void£©¡£
ÈçǰËùÊö£¬¶Ô8019ASµÄ²Ù×÷ʵ¼ÊÉÏÊÇͨ¹ý²Ù×ÝÆäÄÚ²¿¼Ä´æÆ÷ÒÔ¼°DMA¶Ë¿ÚÀ´ÊµÏֵġ£Òò´ËÔÚ³ÌÐòʵÏÖÖУ¬´óÁ¿µØ³öÏÖÁ˶Ô8019ASÄÚ²¿¼Ä´æÆ÷µÄ¶Áд²Ù×÷¡£ËùÒÔ¿ÉÒÔ¶¨Òå2¸ö´ø²ÎÊýµÄºêÀ´¼ò»¯¶Ô8019ASµÄ²Ù×÷¡£reg±íʾ8019ASÄÚ²¿¼Ä´æÆ÷µÄÆ«ÒÆÁ¿£¬dateÊǽ«±»Ð´ÈëµÄÊý¾Ý£¬ÈçÏÂËùʾ£º
#define£¿ nic_read £¨reg£©£¿£¿£¿£¿£¿£¿ *£¨base + £¨reg£© £©
#define£¿ nic_write £¨reg£¬ date£©£¿ *£¨base + £¨reg£©£© = date
TCP/IPÐÒéÕ»µÄʵÏÖ
TCP/IPÐÒé×åÊÇÒ»×鲻ͬ²ã´ÎÉϵĶà¸öÐÒéµÄ×éºÏ¡£¸ù¾ÝÐÒéµÄ²ã´Î½á¹¹£¬±¾·½°¸°²ÅÅËĸöÐÒéÄ£¿éÀ´·Ö±ðʵÏÖTCP/IPÐÒéµÄ²»Í¬¹¦ÄÜ¡£¼´³ýÁËÊý¾ÝÁ´Â·²ã£¨ÎïÀí²ã£©µÄ³ÌÐòÄ£¿é£¬Ò²¼´Ç°ÃæËùÊö8019ASµÄÇý¶¯Ä£¿éÖ®Í⣬»¹°üÀ¨ARP²ãÄ£¿é¡¢IP²ãÄ£¿é¡¢ICMP²ãÄ£¿éÒÔ¼°TCP²ãÄ£¿é¡£µ±È»£¬»¹¿ÉÒÔ¶àÔö¼ÓÒ»¸öÓ¦ÓòãµÄÄ£¿é£¬ÀýÈçHTTPÄ£¿é¡£ÏÂÃæÖðÒ»½éÉܸ÷¸öÐÒéÄ£¿éµÄ¹¦ÄÜ¡£
ARPÄ£¿é
ARPÄ£¿éÍê³ÉµÄÖ÷Òª¹¦ÄÜÊǽ«Ò»¸öIPµØÖ·ÓëÆäÎïÀíµØÖ·¹ØÁªÆðÀ´¡£Í¬Ê±£¬ÎªÁËÌá¸ßÍøÂç´«ÊäËٶȺÍЧÂÊ£¬±ÜÃâÔÚÿ´Î·¢ËÍÊý¾Ýʱ¶¼Òª·¢ËÍARPÇëÇó°üÀ´»ñµÃÄ¿µÄMACµØÖ·£¬»¹ÒªÎ¬»¤Ò»¸ö³£ÓõÄARP¸ßËÙ»º´æ¡£ÕâЩ¹¦ÄÜ¿ÉÒÔÓÉÁ½¸öº¯ÊýÀ´ÊµÏÖ¡£ARPReceive ProcÓÃÓÚ´¦ÀíÀ´×ÔÍøÂçµÄARPÇëÇóºÍARPÏìÓ¦£»ARPSendProcÓÃÓÚ·¢ËÍARPÇëÇó°üÀ´Ñ°ÕÒ¶ÔÓ¦ÓÚIPµØÖ·µÄÎïÀíµØÖ·¡£
IPÄ£¿é
IPÐÒéµÄÖ÷Òª¹¦ÄÜÊÇʹÊý¾Ý°ü¿ÉÒÔ·ÖÆ¬·¢ÍùÈκÎÍøÂ磬¶øÇÒÒ²ÄÜÕýÈ·½ÓÊÕ¡£·Ö±ðÓÉÁ½¸öº¯ÊýÍê³É¡£IPReceiveProc¸ºÔð´¦ÀíÊÕµ½µÄIPÊý¾Ý°ü£¬Èç¹ûÊÇÒ»¸ö·ÖƬµÄ°ü£¬Ëü»¹¸ºÔð×é×°£¬×îºó¸ù¾ÝIP°üÍ·×ֶεÄÄÚÈÝ£¬½«IPÊý¾Ý´«µÝµ½ÉϲãÐÒéÄ£¿é£»IPSendProc¸ºÔð½«ÉϲãËÍÏÂÀ´µÄ¡¢ÐèÒª·¢Ë͵ÄÊý¾Ý°üÌí¼ÓÒ»¸öIP°üÍ·£¬È»ºóÖØÐ·â×°ÆðÀ´·¢ËÍÏÂÈ¥¡£
ICMPÄ£¿é
ÓÉÓÚIPÐÒéûÓвî´í±¨¸æºÍ²î´í¾ÀÕý»úÖÆ£¬ICMPÐÒéÓëIPÐÒéÅäºÏʹÓÃÃÖ²¹ÁËÉÏÊöÁ½¸öȱµã¡£ÎªÁËʹʵÏÖµÄTCP/IPÐÒéÕ»¾ß±¸Ò»¶¨µÄ²î´íÕï¶Ï¹¦ÄÜ£¬ICMPÄ£¿éʵÏÖÁ˶ԻØËÍÇëÇóÏûÏ¢²úÉúÒ»¸ö»ØËÍÓ¦´ð¡£Í¨¹ýµ÷ÓÃPingÃüÁî¾Í¿ÉÒÔ¼òµ¥²âÊÔÖ÷»úµÄ¿É¿¿ÐÔ¡£ÉÏÊö¹¦ÄÜ·Ö±ðÓÉICMPReceiveProcºÍICMPSendProcº¯ÊýÍê³É¡£
TCPÄ£¿é
ÔÚ±¾Éè¼ÆµÄÐÒéÕ»ÖУ¬Í¨¹ýÒ»¸öÓÐÏÞ״̬»úÀ´ÊµÏÖTCPÐÒ飬ÓÃÒ»¸öÈÎÎñ¿ØÖƿ飨TCB£©À´¼Ç¼¿Í»§ºÍ·þÎñÆ÷µÄÁ¬½ÓÐÅÏ¢¡£ËäÈ»TCPÐÒéÊÇÕû¸öÐÒéÕ»ÖÐ×ÔÓµÄÒ»¸öÐÒ飬µ«ÊǶÔÍâÃæµÄ½Ó¿Ú»¹ÊÇÖ»ÓÐÁ½¸ö£ºTCPReceiveProcºÍTCPSendProcº¯Êý¡£
TCP/IPÐÒéÕ»µÄÈÎÎñµ÷¶È
ͨ¹ý¶ÔÒÔÉϸ÷²ãÐÒéÈÎÎñµÄ·ÖÎö£¬¿ÉÒÔ³éÏó³öËüÃǹ²Í¬µÄÌØµã¡£TCP/IPÐÒéµÄÿ¸öÄ£¿éÖ»Íê³ÉÏàÓ¦ÐÒéµÄÈÎÎñ£¬¶øÈÎÎñͨ³£Ö»ÓÐÁ½¸ö£º¶Ôµ×²ãËÍÉÏÀ´µÄÊý¾Ý°ü½øÐд¦Àí£¬ÒÔ¼°½«Éϲ㴫ÏÂÀ´µÄÊý¾Ý°üÔÙ½øÐб¾²ãµÄ·â×°£¬È»ºó¼ÌÐø½»ÏÂÈ¥¡£ËùÒÔÎÞÂÛARP¡¢IP¡¢ICMP¡¢TCPÄÄÒ»¸öÐÒ飬ËüÃÇÿһ²ã¶ÔÍâ¶¼Ö»ÓÐÁ½¸ö½Ó¿Ú£ºÊÕÊý¾Ý°ü¡¢·¢Êý¾Ý°ü¡£
ΪÁË×î´óÏ޶ȵÄÄ£¿é»¯³ÌÐòÉè¼Æ£¬±ãÓÚÈÕºóµÄÒÆÖ²£¬¿ÉÒÔ²ÉÓÃÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆË¼Â·À´¾ßÌåʵÏÖTCP/IPÐÒé¡£¿¼Âǵ½Ö§³Ö¶àÓû§ÒÔ¼°¶àÈÎÎñ£¬Ê×ÏÈÔÚAtmega128µÄÍⲿ32K RAMÄÚ¿ª±ÙÈô¸É¸öÊý¾Ý£¨ÈÎÎñ£©»º³åÇø£¬»º³åÇøµÄ´óСÒÔÄÜ·ÅÈëÒ»¸ö×î´óÒÔÌ«Êý¾Ý°üΪ׼£¬¼´1514¸ö×Ö½Ú¡£ÒÔºóÐèÒª´¦ÀíµÄËùÓÐÊý¾Ý°ü¶¼·ÅÔÚÕâЩ»º³åÇøÄÚ£¬¸÷¸ö»º³åÇø¸ù¾ÝÄÚ²¿´æÈëµÄ²»Í¬ÀàÐÍÊý¾Ý°üÀ´ÉèÖûº³åÇøµÄ±êÖ¾¡£ÉÏÃæ¸÷ÐÒé²ã½Ó¿Úº¯ÊýÄڵIJÎÊýTaskNo¾Í±íʾµ±Ç°Êý¾Ý°üËùÔڵĻº³åÇøºÅ¡£
Õû¸ö³ÌÐòµÄ´¦ÀíÁ÷³ÌÈçÏ£ºÊÕÊý¾Ýʱ£¬8019AS²»¶Ï½«ÒÔÌ«Êý¾Ý°ü´ÓÎïÀí²ãÊÕÉÏÀ´·ÅÈëÊÂÏÈ¿ª±ÙºÃµÄÈÎÒ»¸ö»º³åÇøÄÚ£¬×÷Ϊһ¸ö´ý´¦ÀíµÄÈÎÎñ£¬²¢¸ù¾ÝÊý¾Ý°üµÄ°üÍ·ÐÅÏ¢±êÖ¾´ËÈÎÎñΪARPÊÕÈÎÎñ»òIPÊÕÈÎÎñ¡£Ö÷³ÌÐòɨÃè¸÷¸ö»º³åÇø£¬Èç·¢ÏÖÓÐIPÊÕÊý¾Ý°ü£¨ÈÎÎñ£©ÐèÒª´¦Àí£¬ÓÚÊǸù¾ÝÈÎÎñµÄÀàÐÍ£¨IPÊÕ£©µ÷ÓÃÏàÓ¦´¦Àí½ø³ÌIPReceiveProc£¨£©¡£´¦ÀíÍê³Éºó£¬½«´ËÊý¾Ý°ü»òÈÎÎñ¸ù¾Ý°üÍ·ÐÅÏ¢ÖØÐ±ê־ΪICMPÊÕ»òTCPÊÕ¡£Ö÷³ÌÐò¼ÌÐøÉ¨Ã裬Ôٴε÷ÓÃÏàÓ¦ÐÒéÄ£¿é´¦Àí»º³åÇøÄÚµÄÈÎÎñÈçTCPReceiveProc£¨£©£¬Ö±ÖÁ½«Êý¾Ý½»µ½×îÉϲãµÄÓ¦ÓóÌÐò¡£·¢Êý¾Ýʱ£¬Á÷³ÌÓëÊÕÊý¾Ý¹ý³ÌÏà·´¡£
ÓÉÓÚÕû¸öÐÒéÕ»²ÉÓÃÁËÄ£¿é»¯µÄÉè¼Æ£¬ÔÚ¾ßÌåʹÓõÄʱºò¿ÉÒÔ¸ù¾ÝÐèÒª£¬ºÜÈÝÒ׵ؼÓÔØÏàÓ¦µÄÄ£¿é£¬Íê³ÉÏàÓ¦µÄ¹¦ÄÜ¡£±ÈÈç¿ÉÒÔ°´ÕÕͬÑùµÄ½á¹¹£¬ÔÙ¼ÓÔØHTTPÄ£¿é£¬ÔÚоƬÄÚʵÏÖWEB SERVER¡£Í¬Ñù£¬ÔÚһЩҪÇóʵʱÐԵij¡ºÏ£¬ÓÉÓÚ·¢Ë͵ÄÊý¾Ý°üÊÇ×÷Ϊһ¸öÈÎÎñÀ´¹ÜÀíµÄ£¬Òò´Ë¿ÉÒÔºÜÈÝÒ׵ظøÕâЩÊý¾Ý°ü£¨»òÈÎÎñ£©¸³ÓèÒ»¸ö½Ï¸ßµÄÓÅÏȼ¶£¬ÔÚ½øÐÐÈÎÎñµ÷¶Èʱ£¬ÓÅÏÈ´¦ÀíÕâЩÈÎÎñ¡£ÕâÑù£¬ÔÚ¶àÓû§Çé¿öÏ£¬¶ÔʵʱÐÔÒ²¿ÉÒÔÓÐÒ»¶¨¸ÄÉÆ¡£
½áÓï
ʵÏÖµç×ÓÉ豸»òÕßϵͳµÄÍøÂ绯£¬Ê¹Ö®¾ß±¸ÍøÂ繦ÄÜ£¬Ä¿Ç°µÄ½â¾ö·½°¸Í¨³£ÓÐÁ½ÖÖ¡£³ýÁËÖ±½ÓÔÚϵͳÄÚ²¿ÊµÏÖTCP/IPÐÒéÖ®Í⣬»¹¿ÉÒÔ¿¼ÂÇʹÓÃרÓÃоƬÀ´Íê³Éµ¥Æ¬»úÓëÍø¹Ø¼äµÄÐÒéת»»¡£±ÈÈçÎ人Á¦Ô´¹«Ë¾¿ª·¢µÄWebchipÍøÂç½Ó¿ÚоƬPS-2000¡£µ«ÊÇרÓÃоƬµÄʹÓ㬲»µ«Ôö¼ÓÁËϵͳµÄ³É±¾£¬¶øÇÒ²»Áé»î¡£µ±È»£¬Èç¹ûÔÚϵͳÄÚ²¿Ö±½ÓʵÏÖTCP/IPÐÒ飬ҲÓÐ×ÔÉíµÄȱµã¡£Ò»ÊÇÐèÒª½Ï´óÈÝÁ¿µÄ³ÌÐò´æ´¢Æ÷¡£¶þÊǶÔÓ¦ÓÃϵͳµÄÉè¼Æ¹¤³ÌʦҲ¾ßÓиü¸ßµÄÒªÇó£¬Èç±ØÐëÊìϤTCP/IPÐÒé¼°ÆäÏà¹ØµÄ½Ó¿Ú¡£ÇÒÈí¼þÉè¼ÆµÄ¹¤×÷Á¿Ò²½Ï´ó¡£ËùÒÔÔÚʵ¼ÊÓ¦ÓÃÖУ¬¾ßÌåÑ¡ÔñÄÄÒ»ÖÖ·½°¸»¹ÐèÒª¸ù¾Ý¾ßÌåÇé¿ö×ö³ö²»Í¬µÄÑ¡Ôñ¡£
·ÖÏíµ½£º
²ÂÄãϲ»¶