Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 71 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
71
Dung lượng
1,47 MB
Nội dung
MỤC LỤC Lời mở đầu Chương 1: Tổng Quan Về TCP/IP 1.1 Giới Thiệu 1.2 Tổng quát 1.2.1 Tầng Giao Diện Mạng (Network Interface Layer) 1.2.2 Tầng Liên Mạng (Internet Layer) 1.2.3 Tầng Giao Vận (Transport Layer) 1.2.4 Tầng ứng dụng (Application Layer) 1.2.5 Địa IP 1.2.6 Địa IP Public Địa IP Private 1.2.6.1 IP Public 1.2.6.2 IP Private 1.2.7 Lớp địa 1.2.8 Subnet Mask 10 1.2.9 Default Gateway 11 1.3 TCP/IP cho vi điều khiển 12 1.3.1 TCP/IP stack 12 1.3.2 Hardwired TCP/IP 14 1.3.2.1 Giới thiệu chip Ethernet W5100 14 1.3.2.1.1 Sơ đồ chân 15 1.3.2.1.2 Miêu tả số ghi 16 1.3.2.1.3 Miêu tả chức 17 1.3.2.1.4 Truyền thông liệu 17 1.3.2.1.5 Thông tin ứng dụng 19 Chương 2: Vi Điều Khiển 22 2.1 Tìm hiểu vi điều khiển AVR-Micro Atmega64L 22 2.1.1 Mô tả chung AVR 22 2.1.2 Tính Atmega64L 22 2.1.3 Sơ đồ chân 24 2.1.4 Các khối Atmega64L 27 2.1.4.1.Lõi CPU Atmega64L 27 2.1.4.2 Bộ nhớ Atmega64L 31 2.1.4.3 Nguồn xung hệ thống 33 2.1.4.4 Ngắt phần cứng Atmega64L 33 2.1.4.5.Bộ đếm/định thời Atmega64L: 34 2.1.4.5.Bộ biến đổi tương tự sang số ADC 35 2.1.4.6.Bộ truyền nhận nối tiếp USART 37 Chương 3: Thực Nghiệm 39 3.1 Thiết kế phần cứng 39 3.2 Xây dựng phần mềm 42 3.2.1.Viết chương trình cho vi điều khiển Atmega64L 42 KẾT LUẬN Error! Bookmark not defined TÀI LIỆU THAM KHẢO 46 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ Lời mở đầu Trong thời đại ngày nay, bùng nổ cách mạng cơng nghệ thơng tin diễn nhanh chóng phạm vi tồn cầu Cơng nghệ thơng tin làm thay đổi mặt đời sống người, biến giới thành nhà chung Tất nước vùng lãnh thổ giới liên kết với thông qua mạng Internet Internet phát triển nhanh chóng trở thành phương tiện giao tiếp với tốc độ nhanh, hiệu với giá thành rẻ Internet làm sống người cải thiện nhiều, nhanh thuận tiện Hiện nay, Internet khơng đáp ứng nhu cầu tìm kiếm thơng tin, giải trí… mà cịn thực trở thành phương tiện giúp người trao đổi, mua bán Điều thực có ý nghĩa, giúp giảm bớt chi phí kinh doanh giảm chi phí vận chuyển trung gian, chi phí giao dịch… đặt biệt giúp giúp tiết kiệm thời gian để người đầu tư vào hoạt động khác Do đó, người ngồi nhà để tìm kiếm thơng tin theo ý muốn Nắm bắt ứng dụng to lớn Internet mà ngày nhà sản xuất chíp thiết kế nhiều loại chíp tích hợp nhiều ứng dụng liên quan tới mạng Do vậy, khóa luận này, tơi chọn đề tài “Nghiên cứu ứng dụng chíp điều khiển ethernet W5100”, tìm hiểu số ứng dụng chíp liên quan tới mạng Qua đây, xin gửi lời cảm ơn chân thành đến TS.Nguyễn Thăng Long người hướng dẫn, bảo nhiệt tình giúp tơi hồn thành khóa luận Hà nội, ngày 24 tháng năm 2008 Sinh viên Nguyễn Thanh Hiệp Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ Chương 1: Tổng Quan Về TCP/IP 1.1 Giới Thiệu Để máy máy tính liên lạc với qua mạng, chúng phải sử dụng ngơn ngữ hay cịn gọi giao thức (Protocol) Giao thức hệ luật chuẩn cho phép máy tính mạng liên lạc với TCP/IP viết tắt Transmission Control Protocol (Giao thức Điều Khiển Truyền Thông) / Internet Protocol (Giao thức Internet) TCP/IP không gồm giao thức mà thực tế tập hợp nhiều giao thức Chúng ta gọi Hệ Giao Thức hay Bộ Giao Thức (Suite Of Protocols) 1.2 Tổng quát Để cho máy tính trao đổi liệu với TCP/IP sử dụng mô hình truyền thơng tầng hay cịn gọi Mơ Hình DoD (Mơ hình Bộ Quốc Phịng Mỹ) Các tầng mơ hình (Theo thứ tự từ xuống): + Tầng Ứng Dụng (Application Layer) + Tầng Giao Vận (Transport Layer) + Tầng Liên Mạng (Internet Layer) + Tầng Giao Diện Mạng (Network Interface Layer) Mỗi giao thức Họ TCP/IP thuộc tầng Ta tìm hiểu tầng 1.2.1.Tầng Giao Diện Mạng (Network Interface Layer) Tầng Giao Diện Mạng có trách nhiệm đưa liệu tới nhận liệu từ phương tiện truyền dẫn Tầng gồm thiết bị phần cứng vật lí chẳng hạn Card Mạng Cáp Mạng Card Mạng chẳng hạn card Ethernet chứa số HEX 12 kí tự (00-1837-03-C0-F4) gọi Địa Chỉ MAC (Media Access Control) hay Địa Chỉ Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ Truy Nhập Phương Tiện MAC đóng vai trị quan trọng việc gán địa truyền liệu số giao thức tiêu biểu thuộc tầng gồm : + ATM (Asynchronous Transfer Mode) + Ethernet + Token Ring + FDDI (Fiber Distributed Data Interface) + Frame Relay 1.2.1 Tầng Liên Mạng (Internet Layer) Nằm bên tầng giao diện mạng Tầng có chức gán địa chỉ, đóng gói định tuyến (Route) liệu giao thức quan trọng tầng gồm: + IP (Internet Protocol): Có chức gán địa cho liệu trước truyền định tuyến chúng tới đích + ARP (Address Resolution Protocol): Có chức biên dịch địa IP máy đích thành địa MAC + ICMP (Internet Control Message Protocol): Có chức thơng báo lỗi trường hợp truyền liệu bị hỏng + IGMP (Internet Group Management Protocol): Có chức điều khiển truyền đa hướng (Multicast) 1.2.2 Tầng Giao Vận (Transport Layer) Có trách nhiệm thiết lập phiên truyền thơng máy tính quy định cách truyền liệu giao thức tầng gồm: + UDP (User Datagram Protocol): Cịn gọi Giao Thức Gói Người Dùng UDP cung cấp kênh truyền thông phi kết nối nên khơng đảm bảo truyền liệu cách tin cậy Các ứng dụng dùng UDP thường truyền gói có kích thước nhỏ, độ tin cậy liệu phụ thuộc vào ứng dụng Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ + TCP (Transmission Control Protocol): Ngược lại với UDP, TCP cung cấp kênh truyền thông hướng kết nối đảm bảo truyền liệu cách tin cậy TCP thường truyền gói tin có kích thước lớn u cầu phía nhận xác nhận gói tin nhận 1.2.4 ứng dụng (Application Layer) Tầng Gồm nhiều giao thức cung cấp cho ứng dụng người dùng Được sử dụng để định dạng trao đổi thông tin người dùng số giao thức thông dụng tầng là: + DHCP (Dynamic Host Configuration Protocol): Giao Thức Cấu Hình Trạm Động + DNS (Domain Name System): Hệ Thống Tên Miền + SNMP (Simple Network Management Protocol): Giao Thức Quản Lý Mạng Đơn Giản + FTP (File Transfer Protocol): Giao Thức Truyền Tập Tin + TFTP (Trivial File Transfer Protocol): Giao Thức Truyền Tập Tin Bình Thường + SMTP (Simple Mail Transfer Protocol): Giao Thức Truyền Thư Đơn Giản Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ Hình1:Bảng sau mơ tả khái quát Bộ Giao Thức TCP/IP 1.2.5 Địa IP Mỗi máy mạng TCP/IP hay gọi trạm TCP/IP nhận dạng địa IP logic Mỗi trạm hay thiết bị mạng sử dụng TCP/IP để truyền thơng cần có địa IP Địa IP cho biết vị trí hệ thống mạng giống địa xác định nhà đường Tương tự khu dân cư Địa IP phải toàn cầu phải viết định dạng chuẩn Mỗi địa IP chia thành phần : Phần địa mạng (Net ID) Phần địa trạm (Host ID) + Net ID: Dùng để nhận dạng hệ thống khu vực vật lý gọi Phân Đoạn (Segment) Mọi hệ thống Phân Đoạn phải có Địa Chỉ Mạng Phần địa phải số mạng có + Host ID: Dùng để nhận dạng trạm làm việc, máy chủ, Router trạm TCP/IP phân đoạn Phần địa trạm phải mạng Giống địa bưu điện gồm phần: MÃ BƯU ĐIỆN – SỐ NHÀ, TÊN ĐƯỜNG Địa IP gồm phần: NET ID – HOST ID + Phần đầu tiên, NET ID nhận dạng mạng mà máy tính nối tới, tất máy tính mạng phải có NET ID giống nhà quận phải có MÃ BƯU ĐIỆN Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ + Phần thứ hai, HOST ID xác định máy tính, router thiết bị mạng khác mạng HOST ID phải mạng giống SỐ NHÀ, TÊN ĐƯỜNG phải quận Hai máy tính có HOST ID NET ID chúng khác nhau, giống hai ĐƯỜNG tên chúng thuộc quận khác Sự kết hợp NET ID HOST ID phải cho phép nhận dạng máy tính riêng biệt Các địa IP có chiều dài 32bit chia thành dãy Mỗi dãy gồm 8bit (1Byte), Byte phân cách = dấu “.”, Byte giá trị nằm khoảng từ 0-255 Cách biểu diễn gọi “Kí hiệu thập phân dấu chấm” (Dotted-Decimal Notation) người sử dụng nhớ địa cách dễ dàng Tuy nhiên xử lý thông tin máy tính lại sử dụng Hệ Nhị Phân (Binary) tín hiệu chúng sử dụng để truyền thơng có trạng thái Bật (1) Tắt (0) Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ Trong Byte , bit gán giá trị Nếu Bit đặt gán giá trị 0, Bit đặt chuyển đổi thành giá trị thập phân Bit thấp Byte tương ứng với 1, Bit cao tương ứng với 128 Vậy giá trị lớn Byte 255 tương ứng với trường hợp Bit đặt Ví dụ: Ta đổi địa sau: 10101100 00010000 00000101 01111101 sang dạng Kí Hiệu Thập Phân Dấu Chấm 1.2.6 Địa IP Public Địa IP Private 1.2.6.1 IP Public Mỗi địa IP Internet Để Network có địa ngồi Internet, Internet Assigned Numbers Authority (IANA) chia khoảng địa không dự trữ thành phần nhỏ ủy thác trách nhiệm phân phối địa cho tổ chức Đăng Kí Miền khắp giới Những tổ chức Asia-Pacific Network Information Center (APNIC), American Registry for Internet Numbers (ARIN), and Réseaux IP Européens Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ (RIPE NCC) Những tổ chức phân phối khối địa đến số nhà Internet Service Provider (ISP) lớn ISP lớn sau gán khối nhỏ cho đại lý ISP nhỏ ISP cấp IP Public cho máy tính bạn để máy tính kết nối trực tiếp đến ISP Các địa cấp cách tự động dến máy tính máy tính kết nối địa tĩnh đường line bạn thuê riêng hay tài khoàn Dial-up 1.2.6.2 IP Private IANA dự trữ địa IP mà địa không sử dụng Internet Những địa IP Private sử dụng cho Host yêu cầu có IP để kết nối khơng cần thấy mạng Public Ví dụ, user kết nối máy tính mạng TCP/IP nhà ko cần cấp địa IP Public cho Host User lấy khoảng IP bảng để cung cấp địa cho Host mạng Những host có địa IP Private kết nối đến Internet cách sử dụng Proxy Server hay máy tính chạy Windows Server 2003 cấu Network Address Translation (NAT) Server Windows Server 2003 tích hợp chức Internet Connection Sharing (ICS) để cung cấp dịch vụ NAT đơn giản cho Client mạng Private 1.2.7 Lớp địa Có lớp địa IP để tạo mạng có kích thước khác gồm: Lớp A, Lớp B, Lớp C, Lớp D, Lớp E TCP/IP hỗ trợ gán địa lớp A, lớp B, lớp C cho trạm Các lớp có chiều dài phần NET ID HOST ID khác nên số lượng Mạng số lượng Trạm mạng khác Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ + Lớp A: Được gán cho Mạng có kích thước cực lớn Trong lớp địa Byte xác định NET ID, Bit cao Byte đặt Byte lại xác định Host ID Do lớp A cấp cho 126 Mạng với 16.777.214 Trạm Mạng + Lớp B: Được gán cho Mạng có kích thước vừa lớn Trong lớp địa Byte xác định NET ID, Bit cao Byte đặt Byte cịn lại xác định Host ID Do lớp B cấp cho 16.384 Mạng với 65.534 Trạm Mạng + Lớp C: Được gán cho Mạng có kích thước nhỏ Trong lớp địa Byte xác định NET ID, Bit cao Byte đặt 1 Byte cuối xác định Host ID Do lớp C cấp cho 2.097.152 Mạng với 254 Trạm Mạng + Lớp D: Các địa lớp sử dụng cho Truyền Đa Hướng (Multicast) nhóm Multicast chứa nhiều Trạm Trong lớp Bit cao Byte đặt 1 0, Bit cịn lại định nghĩa nhóm Multicast Địa lớp D không chia thành Net ID Host ID Các gói(Packets) Multicast truyền tới nhóm Trạm cụ thể có Trạm đăng kí vào nhóm nhận gói + Lớp E: Là lớp địa thực nghiệm, khơng thiết kế cho mục đích sử dụng chung Lớp E dự phịng cho ứng dụng tương lai Các Bit cao Byte đặt 1 1 Tổng số IP sử dụng : 3.720.314.628 Nguyễn Thanh Hiệp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ pRIPMSG->chaddr[5] = SRC_MAC_ADDR[5]; /* MAGIC_COOKIE */ pRIPMSG->OPT[i++] = (u_char)((MAGIC_COOKIE >> 24) & 0xFF); pRIPMSG->OPT[i++] = (u_char)((MAGIC_COOKIE >> 16) & 0xFF); pRIPMSG->OPT[i++] = (u_char)((MAGIC_COOKIE >> 8) & 0xFF); pRIPMSG->OPT[i++] = (u_char)(MAGIC_COOKIE & 0xFF); /* Option Request Param */ pRIPMSG->OPT[i++] = dhcpMessageType; pRIPMSG->OPT[i++] = 0x01; pRIPMSG->OPT[i++] = ((!msgtype) ? DHCP_RELEASE : DHCP_DECLINE); pRIPMSG->OPT[i++] = dhcpClientIdentifier; pRIPMSG->OPT[i++] = 0x07; pRIPMSG->OPT[i++] = 0x01; pRIPMSG->OPT[i++] = SRC_MAC_ADDR[0]; pRIPMSG->OPT[i++] = SRC_MAC_ADDR[1]; pRIPMSG->OPT[i++] = SRC_MAC_ADDR[2]; pRIPMSG->OPT[i++] = SRC_MAC_ADDR[3]; pRIPMSG->OPT[i++] = SRC_MAC_ADDR[4]; pRIPMSG->OPT[i++] = SRC_MAC_ADDR[5]; pRIPMSG->OPT[i++] = dhcpServerIdentifier; pRIPMSG->OPT[i++] = 0x04; pRIPMSG->OPT[i++] = DHCP_SIP[0]; pRIPMSG->OPT[i++] = DHCP_SIP[1]; pRIPMSG->OPT[i++] = DHCP_SIP[2]; pRIPMSG->OPT[i++] = DHCP_SIP[3]; if(msgtype) { pRIPMSG->OPT[i++] = dhcpRequestedIPaddr; Nguyễn Thanh Hiệp 56 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ pRIPMSG->OPT[i++] = 0x04; pRIPMSG->OPT[i++] = GET_SIP[0]; pRIPMSG->OPT[i++] = GET_SIP[1]; pRIPMSG->OPT[i++] = GET_SIP[2]; pRIPMSG->OPT[i++] = GET_SIP[3]; pRIPMSG->OPT[i++] = endOption; DPRINTLN("sent DHCP_DECLINE"); } else { pRIPMSG->OPT[i++] = endOption; DPRINTLN("sent DHCP_RELEASE"); } if(!msgtype) { ip[0] = DHCP_SIP[0]; ip[1] = DHCP_SIP[1]; ip[2] = DHCP_SIP[2]; ip[3] = DHCP_SIP[3]; } else { ip[0] = 255; ip[1] = 255; ip[2] = 255; ip[3] = 255; } if(0 == sendto(s, (u_char *)pRIPMSG, sizeof(RIP_MSG), ip, DHCP_SERVER_PORT)) { PRINTLN("DHCP : Fatal Error(2)."); if ( dhcp_ip_conflict != ) (*dhcp_ip_conflict)(); } Nguyễn Thanh Hiệp 57 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ } // -static char parseDHCPMSG( SOCKET s, /**< socket number */ u_int length /**< a size data to receive */ ) { u_char svr_addr[6]; u_int svr_port; pRIPMSG = (RIP_MSG*)RX_BUF; u_int len; u_char * p; u_char * e; u_char type, opt_len; len = recvfrom(s, (u_char *)pRIPMSG, length, svr_addr, &svr_port); #ifdef DHCP_DUBUG PRINTLN("DHCP_SIP:%d.%d.%d.%d",DHCP_SIP[0],DHCP_SIP[1],DH CP_SIP[2],DHCP_SIP[3]); #endif if(pRIPMSG->op != DHCP_BOOTREPLY) { PRINTLN("DHCP : NO DHCP MSG"); } else { if (svr_port == DHCP_SERVER_PORT) { if(memcmp(pRIPMSG->chaddr,SRC_MAC_ADDR,6) != || pRIPMSG->xid != htonl(DHCP_XID)) Nguyễn Thanh Hiệp 58 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ { PRINTLN("No My DHCP Message This message is ignored."); #ifdef DCHP_DEBUG PRINTLN("\tSRC_MAC_ADDR(%02X.%02X.%02X.",SRC_MAC_ADDR [0],SRC_MAC_ADDR[1],SRC_MAC_ADDR[2]); PRINTLN("%02X.%02X.%02X)",SRC_MAC_ADDR[3],SRC_MAC_ADD R[4],SRC_MAC_ADDR[5]); #endif return 0; } if( *((u_long*)DHCP_SIP) != 0x00000000 ) { if( *((u_long*)DHCP_REAL_SIP) != *((u_long*)svr_addr) && *((u_long*)DHCP_SIP) != *((u_long*)svr_addr) ) { #ifdef DHCP_DEBUG PRINTLN("Another DHCP sever send a response message This is ignored."); #endif return 0; } } memcpy(GET_SIP,pRIPMSG->yiaddr,4); PRINTLN("DHCP MSG received "); type = 0; p = (u_char *)(&pRIPMSG->op); p = p + 240; Nguyễn Thanh Hiệp 59 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ e = p + (len - 240); PRINTLN("p : 0x%08X e : 0x%08X len : %d\r\n", (u_int)p, (u_int)e, len); while ( p < e ) { switch ( *p++ ) { case endOption : return type; break; case padOption : break; case dhcpMessageType : opt_len = *p++; type = *p; PRINTLN("dhcpMessageType : %x", type); break; case subnetMask : opt_len =* p++; memcpy(GET_SN_MASK,p,4); PRINTLN("subnetMask : "); PRINTLN("%d.%d.%d.%d",GET_SN_MASK[0],GET_SN_MASK[1],GET _SN_MASK[2],GET_SN_MASK[3]); break; case routersOnSubnet : opt_len = *p++; memcpy(GET_GW_IP,p,4); PRINTLN("routersOnSubnet : "); break; Nguyễn Thanh Hiệp 60 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ case dns : opt_len = *p++; memcpy(GET_DNS_IP,p,4); break; case dhcpIPaddrLeaseTime : opt_len = *p++; lease_time.lVal = ntohl(*((u_long*)p)); break; case dhcpServerIdentifier : opt_len = *p++; if( *((u_long*)DHCP_SIP) == || *((u_long*)DHCP_REAL_SIP) == *((u_long*)svr_addr) || *((u_long*)DHCP_SIP) == *((u_long*)svr_addr) ) { memcpy(DHCP_SIP,p,4); memcpy(DHCP_REAL_SIP,svr_addr,4); #ifdef DHCP_DEBUG PRINTLN("My dhcpServerIdentifier : "); PRINTLN("%d.%d.%d.%d", DHCP_SIP[0], DHCP_SIP[1], DHCP_SIP[2], DHCP_SIP[3]); #endif } else { PRINTLN("Another dhcpServerIdentifier : "); PRINTLN("\tMY(%d.%d.%d.%d) ", DHCP_SIP[0], DHCP_SIP[1], DHCP_SIP[2], DHCP_SIP[3]); } break; default : Nguyễn Thanh Hiệp 61 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ opt_len = *p++; PRINTLN("opt_len : %d", opt_len); break; } // switch p+=opt_len; } // while } // if } return 0; } // -void check_DHCP_state( SOCKET s /**< socket number */ ) { u_int len; u_char type; type = 0; if( s < MAX_SOCK_NUM && getSn_SR(s)!=SOCK_CLOSED) { if ((len = getSn_RX_RSR(s)) > 0) { type = parseDHCPMSG(s, len); } } else if(!socket(s, Sn_MR_UDP, DHCP_CLIENT_PORT, 0x00)) { PRINTLN("Fail to create the DHCPC_SOCK(%d)"); } switch ( dhcp_state ) { Nguyễn Thanh Hiệp 62 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ case STATE_DHCP_DISCOVER : if (type == DHCP_OFFER) { reset_DHCP_time(); send_DHCP_REQUEST(s); dhcp_state = STATE_DHCP_REQUEST; } else check_DHCP_Timeout(); break; case STATE_DHCP_REQUEST : if (type == DHCP_ACK) { reset_DHCP_time(); if (check_leasedIP()) { set_DHCP_network(); dhcp_state = STATE_DHCP_LEASED; } else { dhcp_state = STATE_DHCP_DISCOVER; } } else if (type == DHCP_NAK) { reset_DHCP_time(); dhcp_state = STATE_DHCP_DISCOVER; } else check_DHCP_Timeout(); break; case STATE_DHCP_LEASED : if ((lease_time.lVal != 0xffffffff) && ((lease_time.lVal/2) < dhcp_time)) Nguyễn Thanh Hiệp 63 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ { type = 0; memcpy(OLD_SIP,GET_SIP,4); DHCP_XID++; send_DHCP_REQUEST(s); dhcp_state = STATE_DHCP_REREQUEST; PRINTLN("state : STATE_DHCP_REREQUEST"); reset_DHCP_time(); } break; case STATE_DHCP_REREQUEST : if (type == DHCP_ACK) { if(memcmp(OLD_SIP,GET_SIP,4)!=0) { if ( dhcp_ip_update != ) (*dhcp_ip_update)(); } else { PRINTLN("state : STATE_DHCP_LEASED : same IP"); } reset_DHCP_time(); dhcp_state = STATE_DHCP_LEASED; } else if (type == DHCP_NAK) { reset_DHCP_time(); dhcp_state = STATE_DHCP_DISCOVER; } else check_DHCP_Timeout(); break; Nguyễn Thanh Hiệp 64 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ case STATE_DHCP_RELEASE : break; default : break; } } // -static void check_DHCP_Timeout(void) { if (retry_count < MAX_DHCP_RETRY) { if (next_dhcp_time < dhcp_time) { dhcp_time = 0; next_dhcp_time = dhcp_time + DHCP_WAIT_TIME; retry_count++; switch ( dhcp_state ) { case STATE_DHCP_DISCOVER : send_DHCP_DISCOVER(DHCPC_SOCK); break; case STATE_DHCP_REQUEST : send_DHCP_REQUEST(DHCPC_SOCK); break; case STATE_DHCP_REREQUEST : STATE_DHCP_REREQUEST"); send_DHCP_REQUEST(DHCPC_SOCK); break; default : Nguyễn Thanh Hiệp 65 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ break; } } } else { reset_DHCP_time(); DHCP_timeout = 1; send_DHCP_DISCOVER(DHCPC_SOCK); dhcp_state = STATE_DHCP_DISCOVER; } } // static void set_DHCP_network(void) { iinchip_init(); setGAR(GET_GW_IP); setSUBR(GET_SN_MASK); setSIPR(GET_SIP); #ifdef DEF_IINCHIP_INT setIMR(0xEF); #endif sysinit(0x55, 0x55); } // -static char check_leasedIP(void) { u_int a; a = sendto(DHCPC_SOCK, "CHECK_IP_CONFLICT", 17, GET_SIP, 5000); if ( a> 0) Nguyễn Thanh Hiệp 66 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ { PRINTLN(" Conflict>"); send_DHCP_RELEASE_DECLINE(DHCPC_SOCK,1); if ( dhcp_ip_conflict != ) (*dhcp_ip_conflict)(); return 0; } return 1; } // -u_int getIP_DHCPS() { send_DHCP_DISCOVER(DHCPC_SOCK); dhcp_state = STATE_DHCP_DISCOVER; reset_DHCP_time(); set_timer(DHCP_CHECK_TIMER2, DHCP_timer_handler); DHCP_timeout = 0; while (dhcp_state != STATE_DHCP_LEASED) { if (DHCP_timeout == 1) { kill_timer(DHCP_CHECK_TIMER2); return 0; } check_DHCP_state(DHCPC_SOCK); } return 1; } // -static void DHCP_timer_handler(void) Nguyễn Thanh Hiệp 67 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ { dhcp_time++; } // -void init_dhcp_client( SOCKET s, */ void(*ip_update)(void), is updated */ void(*ip_conflict)(void) is conflict */ /**< Socket number for the DHCP client /**< handler called when the leased IP address /**< handler called when the leased IP address ) { if(!ip_update) dhcp_ip_update = set_DHCP_network; else dhcp_ip_update = ip_update; if(!ip_conflict) dhcp_ip_conflict = proc_ip_conflict; else dhcp_ip_conflict = ip_conflict; init_dhcpc_ch(s); } // -static void proc_ip_conflict(void) { PRINTLN( "The IP Address from DHCP server is CONFLICT!!!\r\n" "Retry to get a IP address from DHCP server\r\n"); } // -u_int init_dhcpc_ch(SOCKET s) { u_int ret; DHCP_XID = 0x12345678; memset(GET_SIP,0,4); memset(GET_GW_IP,0,4); Nguyễn Thanh Hiệp 68 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ memset(GET_SN_MASK,0,4); iinchip_init(); setSIPR(GET_SIP); setSHAR(SRC_MAC_ADDR); #ifdef DEF_IINCHIP_INT setIMR(0xEF); #endif sysinit(0x55, 0x55); #ifdef DHCP_DEBUG { u_int i; for (i = 0; i < 5; i++) PRINT1("0x%02X.", SRC_MAC_ADDR[i]); } #endif if(!socket(s, Sn_MR_UDP, DHCP_CLIENT_PORT, 0x00)) { PRINTLN("fail "); ret = 0; } else { PRINTLN("ok "); ret = 1; } DHCPC_SOCK = s; return ret; } Nguyễn Thanh Hiệp 69 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐH Cơng Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp _ Nguyễn Thanh Hiệp 70 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... bắt ứng dụng to lớn Internet mà ngày nhà sản xuất chíp thiết kế nhiều loại chíp tích hợp nhiều ứng dụng liên quan tới mạng Do vậy, khóa luận này, tơi chọn đề tài ? ?Nghiên cứu ứng dụng chíp điều khiển. .. ứng dụng Từ ứng dụng điều khiển, đo lường Vi điều khiển AVR coi máy vi tính tích hợp chíp đơn AVR vi điều khiển bit ( không thuộc họ vi điều khiển xử lý số DSP ) thiết kế hướng vào mục đích điều. .. số cơng việc sau: Tìm hiều ứng dụng vi điều khiển Atmega64L điều khiển đo lường, phương pháp tích hợp giao tiếp thơng qua SPI Nắm rõ hoạt động, ứng dụng chíp ethernet W5100 thơng qua module WIZ810MJ