DE2平台应用分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DE2平台应用分析

  代码4.17 在用户线程启动之前完成协议栈的初始化。 #include includes.h #include alt_LWIP_dev.h int main () { ... LWIP_stack_init(TCPIP_THREAD_PRIO, init_done_func, 0); ... OSStart(); ... return 0; }   lwip_stack_init()函数在这里完成的是LWIP协议栈的初始化,其函数原型为 void lwip_stack_init(int thread_prio, void (* init_done_ func) (void *), void *arg)   此函数并没有返回值,函数中三个参数的作用见表4.9。   2) ?init_done_func()函数   init_done_func()函数的原型为void init_done_func(void* arg)。此函数会在协议栈初始化的时候被调用,因此在程序中必须编写此函数的函数实体。同时,在函数中必须调用lwip_devices_init()来完成网络设备的初始化,如果初始化成功,则启动用户的TCP/IP任务,示例程序如代码4.18;如果网络接口初始化不成功,则表明没有网络硬件或者网络硬件不能初始化。很多原因会导致网络初始化不成功,比如没有与网络连接或者无法获得MAC地址等。另外,必须使用sys_thread_new()函数新建一个任务,并通过socket接口完成用户所需的各种网络操作。   代码4.18 ini_done_func()示例。 #include stdio.h #include LWIP/sys.h #include alt_LWIP_dev.h #include includes.h /* IP协议栈激活之后调用此函数 */ static void tcpip_init_done(void *arg) { int temp; if (LWIP_devices_init(ETHER_PRIO)) { /*如果初始化成功,则启动一个用户任务*/ temp = sys_thread_new(user_thread_func, NULL, USER_THREAD_PRIO); if (!temp) { perror(Cant add the application threads”); OSTaskDel(OS_PRIO_SELF); } } else { perror(Cant initialize any interface. Closing down.\n); OSTaskDel(OS_PRIO_SELF); } return; }   3) ?lwip_devices_init()函数   lwip_devices_init()函数的原型为int lwip_devices_init(int rx_thread_prio),用以完成对网络设备的初始化,初始化成功后会返回非负数值,否则返回?1。在这个函数中,系统会自动调用get_mac_addr()和get_ip_addr()两个函数完成MAC地址和IP地址的设定,这两个函数并非系统函数,用户在程序中必须提供这两个函数的实体。   4) ?get_mac_addr()与get_ip_addr()函数   get_mac_addr()和get_ip_addr()函数在系统完成网络设备初始化时被系统函数调用。这两个函数需要由用户编写函数实体,这使用户设定MAC地址和IP地址的方式非常灵活。比如,有些系统中把MAC地址存储在FLASH之中,而另一些系统则把MAC地址存放在片上存储器之中。这两个函数所引入的参数均为在LWIP协议栈内部所使用的一个数据结构,用户并不需要了解这些数据结构的细节,而只需要了解如何设定MAC地址和IP地址。   get_mac_addr()函数原型为:err_t gat_mac_addr(alt_lwip_dev* lwip_dev)。在get_mac_addr()函数中,通过对alt_lwip_dev数据结构中的如下变量赋值来实现对于MAC地址的设定:   (1) ?unsigned char lwip_dev-netif-hwaddr_len,用以设定MAC地址的长度,一般设为6。   (2) unsigned char lwip_dev-netif-hwaddr[0-5],用以设定设备的MAC地址。   代码4.19为get_mac_addr()函数实现的程序示例。   代码4.19 get_mac_addr()函数实现的程序示例。 #inclu

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档