ÕªÒª£º¼òÒª½éÉÜÁËTCP£¯IPÐÒ飬¸ø³öÁË»ùÓÚARMǶÈëʽ¸ßËÙÊý¾Ý²É¼¯×°ÖõÄÔ¶³Ì¼à¿ØϵͳµÄʵÏÖ·½°¸¡£ÏµÍ³ÒÔÏÂλ»ú×÷Ϊ¿Í»§¶Ë£¬ÔÚA~f91RM9200ºÍǶÈëʽLinux´î½¨µÄÈíÓ²¼þƽ̨ÉÏÔËÐУ»½«ÉÏλ»ú×÷Ϊ·þÎñÆ÷¶Ë£¬ÓÃVB6£®0¿ª·¢¼à¿Øƽ̨Èí¼þ£»Á½Õßͨ¹ýTCP£¯IPʵÏÖÁ˲ɼ¯Êý¾ÝºÍ¿ØÖÆÃüÁîµÄ´«ÊäÒÔ¼°·þÎñÆ÷¼à¿Øģʽ¡£
Ëæ×ÅÐÅÏ¢»¯µÄ²»¶Ï·¢Õ¹£¬ÔÚ¹¤Òµ×Ô¶¯»¯¡¢µçÁ¦É豸¡¢Í¨ÐŹÜÀí¡¢ÖÇÄÜÖնˡ¢ÖÇÄÜСÇøµÈÁìÓò£¬¶ÔÊý¾Ý²É¼¯µÄʵʱÐÔ¡¢¿É¿¿ÐÔµÄÒªÇóÒ²²»¶ÏµØÌá¸ß¡£ÒÔÍù´«Í³µÄµ¥Æ¬»ú¼Ó²É¼¯¿¨µÄÊý¾Ý²É¼¯×°ÖÃÒѾ²»ÄÜÂú×ãÈËÃÇʹÓõÄÒªÇó¡£Ëæ×Ųɼ¯¿¨µÄ²É¼¯ÆµÂʲ»¶ÏµØÌáÉý£¬ÆäËùÊôƽ̨µÄ¹¤×÷ƵÂÊÒ²Ó¦¸úÉÏʱ´úµÄ²½·¥¡£Í¬Ê±£¬ÔÚijЩÇé¿öÏ£¬×°ÖõIJٿØÈËÔ±²»¿ÉÄܵ½¹¤×÷ÏÖ³¡È¥Ö´ÐУ¬ËùÒÔÓбØÒª¶Ô²É¼¯×°ÖýøÐÐÔ¶³Ì¼à²ìºÍ¿ØÖÆ¡£ÔÚ¸÷ÖÖÉ豸µÄͨÐÅ·½Ê½ÖУ¬ÓÉÓÚÒÔÌ«Íø¾ßÓÐËٶȿ졢ͨÓÃÐԺá¢À©Õ¹ÐÔÇ¿µÈÓŵ㣬ÒÑ13½¥³ÉΪÉ豸֮¼ä½øÐÐͨÐŵÄÖ÷Òª·½Ê½¡£±¾ÎÄÌá³öÁË»ùÓÚARMµÄ¸ßËÙÊý¾Ý²É¼¯×°ÖÃÔ¶³Ì¼à¿Øϵͳ£¬ÔÚʵÏÖ¶ÔÊý¾ÝµÄ¸ßËٲɼ¯µÄͬʱ£¬Äܱ£Ö¤Êý¾ÝµÄ¿É¿¿ÐÔºÍʵʱÐÔ£¬²¢¶Ô¸÷Ö¡Êý¾ÝǶÈëʱ¼ä±ê־ΪºóÐøÊý¾Ý´¦Àí×öºÃ×¼±¸£¬×îºóÄܽ«Êý¾Ý¼°Ê±×¼È·µØ´æ´¢µ½Òƶ¯´æ´¢É豸ºÍ·þÎñÆ÷ÉÏ¡£¸Ã×°ÖðüÀ¨ÏÖ³¡¼à¿ØģʽºÍ·þÎñÆ÷¼à¿Øģʽ¡£
1 ϵͳ¼ò½é
±¾×°ÖÃÓÉÓ²¼þºÍÈí¼þÁ½²¿·Ö×é³É£¬Èçͼ1Ëùʾ¡£ÏµÍ³Ó²¼þÓɸßËÙÊý¾Ý²É¼¯Æ½Ì¨ºÍ²É¼¯Ä£¿é¹¹³É¡£²É¼¯Ä£¿é¸ù¾ÝÉè¼ÆÒªÇ󣬲ÉÓÃDMMÒ»32Ò»AT²É¼¯°å¡£²É¼¯Æ½Ì¨²ÉÓÃATMEL¹«Ë¾A791RM9200×÷ΪÖ÷¿ØоƬ£¬¸½´ø16 kBµÄSDRAMºÍ128 kBµÄROM¡£¸ÃоƬÈÚºÏÁËARM920T ARM Thumb´¦ÀíÆ÷£¬µ±¹¤×÷ƵÂÊΪ180 MHzʱÐÔÄܸߴï200 MIPS¡£´øÓÐ10£¯100 MB Base—TÐÍÒÔÌ«Íø¿¨½Ó¿Ú£¬USB 2£®0È«ËÙ(12 Mbps)Ö÷»ú£¯É豸½Ó¿Ú¡£ÄÚº¬ÄÚ´æ¹ÜÀíµ¥ÔªMMU£¬º¬Óе÷ÊÔͨµÀµÄÄÚ²¿·ÂÕæÆ÷£¬±ãÓÚ¿ª·¢µ÷ÊÔ¡£ÓÉÓÚAT91RM9200¾ßÓй¦ÄÜÈ«¡¢¹¦ºÄµÍºÍ¹¤Òµ¼¶µÈÓŵ㣬¿ÉÒÔʹϵͳÄÜÔËÓõ½¸÷ÖÖ»·¾³ÖС£
ϵͳµÄÏÂλ»úÈí¼þÑ¡ÔñǶÈëʽLinux²Ù×÷ϵͳ¡£Ç¶ÈëʽLinuxÊǽ«ÈÕÒæÁ÷ÐеÄLinux²Ù×÷ϵͳ½øÐвüôÐ޸ģ¬Ê¹Ö®ÄÜÔÚǶÈëʽ¼ÆËã»úϵͳÔËÐеÄÒ»ÖÖ²Ù×÷ϵͳ£¬Ëü¼ÈÓÐÎÞÏ޵Ŀª·ÅÔ´´úÂë×ÊÔ´£¬ÓÖÓÐǶÈËʽ²Ù×÷ϵͳµÄÌØÐÔ¡£Í¨¹ý¶ÔÄں˵ÄÖØÐÂÅäÖᢱàÒ룬¼´¿É½«ÆäÒÆÖ²µ½Aqgl RM9200ÖУ»ÔÙ½¨Á¢BootLoaderºÍÎļþϵͳ£¬ÐγɻùÓÚARMµÄǶÈëʽLinux²Ù×÷ϵͳ£¬×îºóÔÚ´Ëƽ̨ÉÏ¿ª·¢ÔËÓóÌÐò£¬ÊµÏÖ×°Öõĸ÷¸ö¹¦ÄÜ¡£
2 TCP£¯IPÐÒé
ÔÚÒòÌØÍøÉÏ£¬TCP£¯IPÐÒéÿʱÿ¿Ì±£Ö¤ÁËÊý¾ÝµÄ׼ȷ´«Êä¡£²Î¿¼¿ª·Åϵͳ»¥Á¬(OSI)Ä£ÐÍ£¬TCP£¯IPͨ³£²ÉÓÃÒ»ÖÖ¼ò»¯µÄËIJãÄ£ÐÍ£¬·Ö±ðΪ£º
¢Ù Ó¦Óò㡣ÍøÂçÓ¦ÓòãÒªÓÐÒ»¸ö¶¨ÒåÇåÎúµÄ»á»°¹ý³Ì£¬Èçͨ³£Ëù˵µÄHttp¡¢Ftp¡¢TelnetµÈ¡£ÔÚ±¾ÏµÍ³ÖУ¬ÏÂλ»úϵͳ´«µÝÀ´×ÔEthernetºÍÊý¾ÝÖն˵ÄÊý¾Ý£¬Ó¦ÓòãÖ»¶Ô´óµÄÊý¾Ý±¨½øÐдò°ü²ð°ü´¦Àí¡£
¢Ú ´«Êä²ã¡£´«Êä²ãÈÃÍøÂç³ÌÐòͨ¹ýÃ÷È·¶¨ÒåµÄͨµÀ¼°Ä³Ð©ÌØÐÔ»ñÈ¡Êý¾Ý£¬È綨ÒåÍøÂçÁ¬½ÓµÄ¶Ë¿ÚºÅµÈ£¬ÊµÏָòãÐÒéµÄ´«Êä¿ØÖÆÐÒéTCPºÍÓû§Êý¾ÝÐÒéUDP¡£TCP·þÎñÌṩÁËÊý¾ÝÁ÷´«Êä¡¢¿É¿¿ÐÔ¡¢ÓÐЧÁ÷¿ØÖÆ¡¢È«Ë«¹¤²Ù×÷ºÍ¶à·¸´Óü¼ÊõµÈ£¬ÔÚ±¾ÏµÍ³ÖÐʹÓÃTCPÊý¾Ý±¨ÐÒé¡£
¢Û ÍøÂç²ã¡£ÍøÂç²ãÈÃÐÅÏ¢¿ÉÒÔ·¢Ë͵½ÏàÁÚµÄTCP£¯IPÍøÂçÉϵÄÈÎÒ»Ö÷»úÉÏ£¬IPÐÒé¾ÍÊǸò㴫ËÍÊý¾ÝµÄ»úÖÆ¡£Í¬Ê±½¨Á¢ÍøÂç¼äµÄ»¥Á¬£¬ÌṩARPµØÖ·½âÎöÐÒ飬´Ó¶øʵÏÖ´ÓIPµØÖ·µ½Êý¾ÝÁ´Â·ÎïÀíµØÖ·µÄÓ³Ïñ¡£
¢Ü Á´Â·²ã¡£ÓÉ¿ØÖÆͬһÎïÀíÍøÂçÉϵIJ»Í¬»úÆ÷¼äÊý¾Ý´«Ë͵ĵײãÐÒé×é³É£¬ÊµÏÖÕâÒ»²ãµÄÐÒé²¢ÊôÓÚTCP£¯IPÐÒé×é¡£ÔÚ±¾ÏµÍ³ÖÐÕⲿ·Ö¹¦ÄÜÓÉARM¿ØÖÆÍø¿¨Ð¾Æ¬DM9161EʵÏÖ¡£
ÔÚ±¾ÏµÍ³ÖУ¬ÀûÓÃTCP£¯IPÐÒéÖеÄTCP(´«Êä¿ØÖÆÐÒé)¡¢IP(ÍøÂ籨ÎÄÐÒé)¡¢ARP(µØÖ·½âÎöÐÒé)¼°¼òµ¥µÄÓ¦ÓòãÐÒé³É¹¦µØʵÏÖÁËARM×°ÖúͷþÎñ¶ËµÄÍøÂ绥Áª¡£¼ÈÌá¸ßÁËÊý¾Ý´«ÊäµÄËٶȣ¬ÓÖ±£Ö¤ÁËÊý¾Ý´«ÊäµÄÕýÈ·ÐÔ£¬Í¬Ê±Ò²À©Õ¹ÁËÊý¾Ý´«ÊäµÄÓÐЧ°ë¾¶¡£
3 ÏÂλ»úµÄͨÐÅʵÏÖ
ÏÂλ»ú×÷Ϊ¿Í»§¶Ë£¬ËüºÍ·þÎñÆ÷µÄTCP£¯IPͨÐÅÊÇͨ¹ý¶ÔÌ×½Ó×Ö±à³ÌʵÏֵġ£Ì×½Ó×ÖÊÇÍøÂçͨÐŵĻù±¾²Ù×÷µ¥Ôª£¬×îÔçÊÇ×÷ΪBSD¹æ·¶Ìá³öÀ´µÄ£¬ÏÖÒѳÉΪLinux²Ù×÷ϵͳÏÂTCP£¯IPÍøÂç±à³Ì±ê×¼¡£Ì×½Ó×ÖÌṩÁ˲»Í¬Ö÷»ú¼ä½ø³ÌË«ÏòͨÐŵĶ˵㣬ÕâЩ½ø³ÌÔÚͨÐÅÇ°¸÷×Ô½¨Á¢Ò»¸öSocket£¬²¢Í¨¹ý¶ÔSocketµÄ д²Ù×÷ʵÏÖÍøÂçͨÐŹ¦ÄÜ¡£ÏÂÎĽ«ÌÖÂÛµÄWinsockÒ²ÊÇÒ»¸öÓÃÓÚWindowsϵÁвÙ×÷ϵͳµÄSockets°æ±¾ ¡£
ÔÚLinuxÌṩµÄ3ÖÖÌ×½Ó×ÖÖУ¬±¾ÎÄÑ¡ÔñÁ÷ʽÌ×½Ó×Ö¡£Á÷ʽÌ×½Ó×ÖÊÇ×î³£ÓõÄÌ×½Ó×ÖÀàÐÍ£¬Æä´«ÊäÌصãΪ£ºÃæÏòÁ´½Ó¡¢ÎÞ²î´í¡¢·¢ËÍÏȺó˳ÐòÒ»Ö¡¢°ü³¤¶È²»Ï޺ͷÇÖظ´µÄÍøÂçÐÅÏ¢°ü¡£TCP£¯IPÐÒé´ØÖеÄTCPÐÒéʹÓôËÀà½Ó¿Ú¡£ÏÂλ»úÓë·þÎñÆ÷ͨÐÅʵÏÖÈçͼ2Ëùʾ¡£
¢Ù Socket()º¯Êý£ºÓÃÓÚ´´½¨Ò»¸öÌ×½Ó×ÖÃèÊö·û¡£
#include
#include
Socket
— ID=socket(AF_INET£¬SOCK_STREAM£¬0)£»
ff PF—INET OR AF—INET Intemet IP Protocal SOCK—STREAMÑ¡ÔñÁ÷ʽÌ×½Ó×Ö
¢Ú Connect()º¯Êý£ºÓÃÓÚÓëÔ¶¶Ë·þÎñÆ÷½¨Á¢Ò»¸öTCPÁ¬½ÓÇëÇó¡£
Status=connect(Socket—ID£¬(struc sockaddr})&Server—Addr£¬sizeof(struct sockaddr))£»
¡Î Ò»¶¨ÒªÖ¸¶¨·þÎñÆ÷µÄIPµØÖ·ºÍ¶Ë¿ÚºÅ£¬¿É´ø²ÎÊýÔËÐгÌÐòʱָ¶¨£¬Ò²ÓÐĬÈϵÄlPºÍ¶Ë¿ÚºÅ
if(status!= Ò»1)¡Î Ò»1£ºÁ¬½Ó¹ý³Ì³ö´í
{£®ï £®£®}
¢Û Write()º¯Êý£º´ÓÌ×½Ó×Ö»º³åÇøдÊý¾Ý¡£
int Net— Send— SysConfig(int Conn—ID£¬char Cmdname)
¡ÎÏò·þÎñÆ÷·´À¡¹¤×÷״̬¼´Ö´ÐзþÎñÆ÷Ï´ïµÄÃüÁîÇé¿ö
¡ÎConn—IDΪÒѾ½¨Á¢µÄÌ×½Ó×ÖÃèÊö·û
{
status=write(Conn—ID£¬sendbuff£¬len)£»
¡ÎÏò·þÎñÆ÷·¢ËÍÐÅÏ¢
}
×÷ÕߣºÑ¦ÑÞµÈ À´Ô´£º21ICµç×ÓÍø