CycloneTCP协议栈移植与使用简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Arda Technology
Arda Tech P.F.FU 2014-12-19 Ver 0.1
#elif defined(USE_XXXXXX)
#include "os_port_xxxxxx.h"
NicType type;//控制器类型。0:以太网接口,1:PPP接口,2:6LowPan接口
NicInit init;//控制器初始化函数指针
NicTick tick;//控制器周期性事务处理函数指针
NicEnableIrq enableIrq;//打开控制器中断函数指针
NicDisableIrq disableIrq;//关闭控制器中断函数指针
NicEventHandler eventHandler;//控制器中断响应函数指针,这个是下半段的中断处理部分。
NicSetMacFilter setMacFilter;//配置多播MAC地址过滤函数指针
NicSendPacket sendPacket;//发送包函数指针
NicWritePhyReg writePhyReg;//写PHY寄存器函数指针
NicReadPhyReg readPhyReg;//读PHY寄存器函数指针
bool_t autoPadding;//是否支持自动填充
bool_t autoCrcGen;//是否支持自动生成CRC校验码
bool_t autoCrcCheck;//是否支持自动检查CRC错误
NicSendControlFrame sendControlFrame;//发送控制帧函数指针
NicReceiveControlFrame receiveControlFrame;//接收控制帧函数指针
NicPurgeTxBuffer purgeTxBuffer;//清除发送缓冲函数指针
NicPurgeRxBuffer purgeRxBuffer;//清除接受缓存函数指针
xxxxEthInitGpio(...)//用于在init中初始化GPIO。
xxxxEthInitDmaDesc(...)//用于在init中初始化DMA任务描述符列表。
XXXX_Handler(...)//用于MAC中断的上半段处理。
xxxxEthReceivePacket(...)//用于在eventHandler中收包,把数据从dma的缓冲复制到外部缓冲。xxxxEthCalcCrc(...)//计算CRC值,这个函数基本上是固定的。
xxxxEthDumpPhyReg(...)//用于调试的打印PHY寄存器列表值。
PhyInit init ;//物理层初始化函数指针
PhyTick tick ;//周期性事务处理函数指针 PhyEnableIrq enableIrq ;//打开物理层中断 PhyDisableIrq disableIrq ;//关闭物理层中断 PhyEventHandler eventHandler ;//物理层中断处理函数
#include"core/tcp_ip_stack.h"//必须要有的协议栈头文件
#include"drivers/tm4c129x_eth.h"//MAC驱动头文件,如果用了片外PHY,还要包含PHY的驱动头文件#include"dhcp/dhcp_client.h"//使用DHCP的话需要此头文件
#include"ipv6/slaac.h"//使用IPV6本地短地址的话需要此头文件
#include"common/debug.h"//如果你用了CycloneTCP的调试输出函数,则需要包含此头文件
//Application configuration
#define APP_MAC_ADDR"00-11-22-33-44-55"//定义MAC地址
#define APP_USE_DHCP ENABLED//DHCP开关,使用DHCP
#define APP_IPV4_HOST_ADDR"192.168.1.20"//静态地址时的IPV4 IP
#define APP_IPV4_SUBNET_MASK"255.255.255.0"//静态地址时的IPV4 子网掩码
#define APP_IPV4_DEFAULT_GATEWAY"192.168.1.1"//静态地址时的IPV4 网关IP
#define APP_IPV4_PRIMARY_DNS"8.8.8.8"//静态地址时的IPV4 主DNS IP
#define APP_IPV4_SECONDARY_DNS"8.8.4.4"//静态地址时的IPV4 从DNS IP
#define APP_USE_SLAAC DISABLED//SLAAC开关,禁用SLAAC
#define APP_IPV6_LINK_LOCAL_ADDR"fe80::407"
#define APP_IPV6_PREFIX"2001:db8::"
#define APP_IPV6_PREFIX_LENGTH 64
#define APP_IPV6_GLOBAL_ADDR"2001:db8::407"
#define APP_IPV6_ROUTER"fe80::1"
#define APP_IPV6_PRIMARY_DNS"2001:4860:4860::8888"
#define APP_IPV6_SECONDARY_DNS"2001:4860:4860::8844"
//Constant definitions
#define APP_SERVER_NAME""//应用层访问的地址
#define APP_SERVER_PORT 80//应用层访问的端口
#define APP_REQUEST_URI"/test.php"//应用层访问的远端文件路径
DhcpClientSettings dhcpClientSettings;//DHCP客户端配置DhcpClientCtx dhcpClientContext;//DHCP客户端上下文,运行时变量SlaacSettings slaacSettings;//短地址配置
SlaacContext slaacContext;//短地址上下文,运行时变量
error_t error;
NetInterface *interface;//网络接口结构指针
MacAddr macAddr;//MAC地址变量
#if (APP_USE_DHCP == DISABLED)
Ipv4Addr ipv4Addr;//IPV4地址变量
#endif
#if (APP_USE_SLAAC == DISABLED)
Ipv6Addr ipv6Addr;//IPV6地址变量
#endif
//Start-up message
TRACE_INFO("\r\n");
TRACE_INFO("***********************************\r\n");
TRACE_INFO("*** CycloneTCP HTTP Client Demo ***\r\n");