CHƯƠNG 5 TCP/IP STACK
5.4. CẤU HÌNH CHO STACK
5.4.1. Cấu hình cho phần cứng
Hầu như việc cấu hình phần cứng được thực hiện bằng cách thêm dấu // vào trước các dòng lệnh để làm mất tác dụng của những dòng lệnh hoặc bỏ // đi để Mplab thực hiện các dòng lệnh đó, định nghĩa một loạt các macro ở phần đầu của file HardwareProfile.h.
Trong hầu hết các trường hợp, các macro dùng để khởi tạo các mạch demo phải giống như các macro dùng để định nghĩa vi điều khiển sử dụng trong mạch. Trong file HardwareProfile.h mặc định đã bao gồm các project cho một số mạch có sẵn của Microchip, được giới hạn bằng các câu lệnh tiền xử lý. Ví dụ với Explorer 16 sẽ bắt đầu bằng macro "#elif defined (EXPLORER_16)" và tiếp tục cho đến những câu lệnh tiền xử lý cho một mạch demo khác.
5.4.1.1. Tần số
Nhiều hoạt động của TCP/IP phụ thuộc vào thời gian. Để thiết lập giá trị xung clock ta thay thế giá trị của xung clock trong macro trong file HardwareProfile.h:
#define GetSystemClock() xxxxxxxxxxxxxxx Ngồi ra cịn 2 macro thiết lập xung clock khác:
• GetInstructionClock () và GetPeripheralClock () cung cấp tần số lệnh và tần số cho thiết bị ngoại vi của vi điều khiển.
5.4.1.2. Bộ nhớ ngoài
Bộ nhớ ngoài dùng để lưu trữ Web nhúng, Web ở đây định dạng http và http2. Bộ nhớ dùng để lưu trữ có thể có 3 loại: SD/MMD (Memory Card), EEPROM, Flash Serial.
Nếu muốn dùng Web nhúng, ta có thể lưu trữ vào bộ nhớ nội. Lúc ấy, cần tạo một file bộ nhớ của Web định dạng MPFS. Để tạo ra file định dạng MPFS thì Microchip đã đưa ra cơng cụ MPFS2 trong folder /Utilities để chuyển toàn bộ dữ liệu Web thành một file duy nhất. Web phải được đưa vào một folder, đối với trình dịch C18 thì file được xuất ra là MPFSImg2.c.
Để sử dụng Web nhúng trong bộ nhớ nội, trong file TCPIPconfig.h bỏ thiết lập dùng bộ nhớ ngồi, và #include MPFSImg2.c trong chương trình maindemo.c. Đặt lại tên mặc định của Web server là index.htm trong file TCPIPConfig.h.
Bỏ lưu trữ trong EEPROM và Flash memory: //#define MPFS_USE_EEPROM
//#define MPFS_USE_SPI_FLASH
5.4.2. Địa chỉ
5.4.2.1. Địa chỉ MAC
6 byte địa chỉ MAC cung cấp địa chỉ cho lớp giao thức Media Access Control của TCP/IP Stack. Địa chỉ MAC là địa chỉ cố định gắn liền với phần cứng.
Địa chỉ MAC được định nghĩa trong file TCPIPConfig.h. Có 6 macro được định nghĩa trong file này để thiết lập địa chỉ MAC:
#define MY_DEFAULT_MAC_BYTE1 (0x00) #define MY_DEFAULT_MAC_BYTE2 (0x04) #define MY_DEFAULT_MAC_BYTE3 (0xA3) #define MY_DEFAULT_MAC_BYTE4 (0x00) #define MY_DEFAULT_MAC_BYTE5 (0x00) #define MY_DEFAULT_MAC_BYTE6 (0x00)
Tuy nhiên, vi điều khiển PIC 18F67J60 đã được tích hợp sẵn địa chỉ MAC cho nên ta không cần phải quan tâm đến việc thiết lập địa chỉ này.
5.4.2.2. Địa chỉ IP
Địa chỉ IP dùng để định địa chỉ cho các nút mạng trên mạng giao thức Internet. Chúng ta cần cấu hình cho mạch một địa chỉ IP.
Địa chỉ subnet là một mặt nạ bit xác định phạm vi của mạng. Nếu địa chỉ IP của bạn là 192.168.5.100, và bạn chỉ định subnet mask là 255.255.255.0, Stack sẽ cho rằng địa chỉ trong phạm vi 192.168.5.x là trên cùng một subnet mà ta đang có, và các gói tin sẽ được gửi đến bất kỳ một địa chỉ trong mạng này mà không được gửi đến nơi khác.
Gateway mặc định là địa chỉ IP của nút mạng mà nó sẽ gửi gói tin đến nếu như khơng được định hướng đến địa chỉ IP mà ta mong muốn. Ví dụ, nếu địa chỉ IP ta đặt nằm trong mạng con 192.268.5.x, và nếu nó muốn gửi một gói tin đến địa chỉ IP 198.175.253.160 mà khơng biết chính xác phải gửi đến địa chỉ đó như thế nào, nó sẽ gửi đến gateway mặc định.
Có ba phương pháp để thiết lập địa chỉ IP:
- DHCP: Các module DHCP client sẽ cho phép ứng dụng tự động lấy địa chỉ IP từ máy chủ DHCP trên cùng một mạng. Việc làm này sẽ thiết lập lại địa chỉ IP, subnet mask, địa chỉ gateway, và các thơng số cấu hình một số khác trong cấu trúc AppConfig. Để sử dụng DHCP ta phải nạp ba file DHCP.c; DHCPs.c ; DHCP.h và khai báo " #define STACK_USE_DHCP_CLIENT" trong TCPIPConfig.h.
- AutoIP: Module này cho phép ứng dụng chọn một địa chỉ IP và tự xác nhận địa chỉ đó. Để sử dụng AutoIP ta phải nạp hai file AutoIP.c and AutoIP.h và khai báo "#define STACK_USE_AUTO_IP" trong TCPIPConfig.h.
- Địa chỉ IP tĩnh: Việc sử dụng địa chỉ IP tĩnh chỉ hoạt động nếu server được cấu hình để hỗ trợ địa chỉ đó.
Nếu sử dụng DHCP và AutoIP đồng thời thì module AutoIP sẽ phát một địa chỉ trong subnet 169.254.x.x sau đó sẽ cấp một địa chỉ khác trong cùng subnet đến DHCP client được kết nối với board.