- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
协议栈文件Lwip.c封装接口:
void Init_lwIP(void)
{
struct ip_addr ip, mask, gw;
static struct netif netif;
uint8_t macaddress[6]={0,0,0,0,0,1}; //根据实际MAC地址赋值
sys_sem_t sem;
/*****TCP/IP 初始化******/
sem = sys_sem_new(0);
tcpip_init(TcpipInitDone, sem);
sys_sem_wait(sem);
sys_sem_free(sem);
#if LWIP_DHCP
ipaddr.addr = 0;
netmask.addr = 0;
gw.addr = 0;
#else
IP4_ADDR(ipaddr, 10, 21, 11, 245);
IP4_ADDR(netmask, 255, 255, 255, 0);
IP4_ADDR(gw, 10, 21, 11, 254);
#endif
Set_MAC_Address(macaddress);
netif_add(netif, ipaddr, netmask, gw, NULL, ethernetif_init, tcpip_input);
netif_set_default(netif);
#if LWIP_DHCP
dhcp_start(netif);
#endif
netif_set_up(netif);
}
/*****等待Tcpip初始化完成*******/
static void TcpipInitDone(void *arg)
{
sys_sem_t *sem;
sem = arg;
sys_sem_signal(*sem);
}
网络接口文件Ethernetif.c封装接口:
全局变量:
uint8_t MACaddr[6];
/*******设置MAC地址,赋值全局变量**********/
void Set_MAC_Address(uint8_t* macadd)
{
MACaddr[0] = macadd[0];
…………………………….
MACaddr[5] = macadd[5];
/****MAC芯片****/
ETH_MACAddressConfig(ETH_MAC_Address0, macadd);
}
/**********初始化网络底层接口*************/
err_t ethernetif_init(struct netif *netif)
{
设置网卡相关属性(填充结构体ethernetif);
注册链路层发送函数low_level_output(给出框架,结合MAC芯片实际情况编写);
ethernetif-ethaddr 指针指向 netif 中保存的网卡 MAC 地址;
网卡初始化low_level_init();
}
注释:该接口无需用户改动。
/*****该函数是实际传输数据包,数据包包含pbuf –payload,pbuf可能是个链表******/
static err_t low_level_output(struct netif *netif, struct pbuf *p)
{
struct pbuf *q;
int frameLen = 0;
u8 *buffer = NULL;
/******声明一个状态保护变量******/
SYS_ARCH_DECL_PROTECT(sr);
/*********Interrupts are disabled through this whole thing to support multi-threading transmit calls. Also this function might be called from an ISR.********/
SYS_ARCH_PROTECT(sr);
buffer = (u8 *)ETH_GetCurrentTxBuffer();
for(q = p; q != NULL; q = q-next)
{
memcpy((u8_t*)buffer[l], q-payload, q-len);
l = l + q-len;
}
ETH_TxPkt_ChainMode(l);
/****退出保护模式***/
SYS_ARCH_UNPROTECT(sr);
retu
您可能关注的文档
- Junier SRX 常用命令.doc
- java试题第一个月.doc
- JTes检查的Java编程规范.doc
- junier交换机配置指南.doc
- jsp+ysql进行简单的增删改查.doc
- K3应收应付系统日常操作.doc
- JX20收费管理系统方案(ID卡).doc
- JSP聊室毕业论文(jsp+javabean).doc
- K4经济模拟2.doc
- kaosi.doc
- 2025年湖北省荆州市洪湖市某国企招聘工作人员若干人备考题库及参考答案详解1套.docx
- 2025年广东省湛江市廉江市某国企招聘工作人员若干人备考题库含答案详解.docx
- 2025年南昌市青山湖区某国企招聘工作人员若干人备考题库参考答案详解.docx
- 2025年内蒙古自治区呼和浩特市回民区某国企招聘工作人员若干人备考题库含答案详解.docx
- 2025年吉林省四平市双辽市某国企招聘工作人员若干人备考题库及答案详解1套.docx
- 2025年吉林省白城市通榆县某国企招聘工作人员若干人备考题库及答案详解一套.docx
- 2025年宜昌市宜都市某国企招聘工作人员若干人备考题库及参考答案详解1套.docx
- 2025年内蒙古自治区赤峰市阿鲁科尔沁旗某国企招聘工作人员若干人备考题库及参考答案详解.docx
- 2025年浙江省湖州市安吉县某国企招聘工作人员若干人备考题库含答案详解.docx
- 2025年内蒙古自治区呼伦贝尔市莫力达瓦达斡尔族自治旗某国企招聘工作人员若干人备考题库含答案详解.docx
文档评论(0)