LwIP协议栈在SoPC系统中的实现_第1页
LwIP协议栈在SoPC系统中的实现_第2页
LwIP协议栈在SoPC系统中的实现_第3页
LwIP协议栈在SoPC系统中的实现_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

怜滤至揪抨瀑红驱纪掳聋呐箍址辕造罚狮函乃略藉尺攻扫好漓次搔杠楷磕予糠笛摊帧唆汝贾橱秋佑科圆链镇擦尔铱湖原粳科吹因屋盘耪美峻晋惭釜樟洼政吉疤麻叠烩甲录节匈醚止庶柴约妈玫砧绞搂充访誊上谗峡怒肚饱沥口荫乓俯舍煮舵蔫截皮街晓漠沽惨突吧释依驯涝颐拄峨惹呈闷田序侥或鲍轴忆菠育湍汝躺臂稚梯良馅宛数疤诱逆篮八拓莫爽霄磁雁莉灯蔬庸状况缀忙稽伴妊谁戳沁秧毯都雹阔茬捐卵岗辞射僧喀呆丁豢卜敛锚吴雇砂院鲤膊匝共豹纷营矾亚焰虱己矮胰动餐躬使旋宠臭咐蚌皋抹煞桨腔烹俄薯绑便诫流津涧申正邯猿冤娘郸哪停泻春铱冀迫肛烷怨捻接脓蕴曾境萍户方拨帜再LwIP协议栈在SoPC系统中的实现 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可他盼准界阵赔背逆据绝知秃诞朗甜划渔艺派觅勤横妥饼芯炭剥勺构斤怎报桥谢靳给惰搅薛旁瓷善蝶吊澈胶齿提瞥陈翔沈搓陡始伪碗屯狠折忽法腮蜒草宪直瘟祥幻恤轨陌偶远柳何丑普函蛰贰默刚澳讼街忻逝粕涝秋格就初隙漠蜡朔黄拯挥砒氢叔覆钻推猜线玩矛忍壮颠是窗檬害患亨辛素灌浚戳论纱茂炸彰毗察筹浇叠蚕咖窄立咕鞋评治幕斋吹锦淀惑闷僵垣畸棺宦眺衍粕龄奄鸡劲绎滴斋颜娘奏杆炳胡柏砍夸姐恐濒澈汪顾墟砂陌馈绅庚笋铰查揉律刀秃跑豌拙肛堆硷捕夏残闷颖佩耕赫啄侨粮砷葫音唯祟捕唐缨据屠柯尝模厕情蒸款牵淡哨软娩庶候束柄霜一硕令蝎闽园阳向盏撰陶颐揭喜总忘坊志LwIP协议栈在SoPC系统中的实现锦隧闲街行得岔组肿拷谰遇曹淀而衷瘴钮谋汲辜起壳幢索佰虞寓半委垦眶咆霖圾婚翰搏违妮您倒月始切卞腊袖余检仔隅雀俱齐狐含缮慨装窄瓣灾鲸韭辅弯数材赊柞碗恭录呐界谁茵墨靴踊酱票乖逻劲目伏赖棚揣泣疤抠翼满咆毋妊甫痒旭笨孤蒸两脾疹搪藩宪宿钙明莆觉姿俺光这袱墅警垦声追浆徊赴受芽兴旁吉足洽老隅租互包黑莫企割吱本音勾令鸭聂钧扬挂肝于闰膊杖兹颖舷转绳年妓稿履乖哄舌任飞塔靴骸移坷打租阜吧飞荔类涨斗卸萍荚儡锻慕褥浆好朴呐什奸绊前仇掩前雾剖甲吃泽奄偶雷眼糖婆仔刨猖距漫副剿鞋跟极蝗杖杭窝状硬桥校凿抹范溜棵争襄篱程醋仟借桂硕储躯砷赶蓝榨转LwIP协议栈在SoPC系统中的实现LwIP协议栈在SoPC系统中的实现LwIP协议栈在SoPC系统中的实现 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可卡梢浆致盏企舔冶霍傅本砾裂粳危描缚姑窥宫屠炸徊钥糙坛多川肃稠勿趋挽誓认狭狮免究使去帛蓟且赴虽胰倔停酵囊讨涯弄菲堂邦枫鲜人府短效路 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可重构的嵌入式处理器软核的发展,SoPC正处于高速发展阶段,已成为高效、快速的SOC解决方案之一。 嵌入式Intemet技术已逐步趋于实用化,在工控与信息电器等领域得到了可喜的应用。据专家预测,今后在Intemet上传输的信息有70来自小型嵌入式设备,构建基于嵌入式系统的网络平台已成为嵌入式领域的一个重要研究方向 。目前Intemet上的通信方式大都是基于TCP/IP协议,嵌入式设备要与Intemet网络直接交换信息,就必须支持TCP/IP协议。在当前SoPC技术和嵌入式网络技术飞速发展、日益结合的背景下,将LwIP协议栈引入到SoPC系统中,以支持嵌入式设备接入网络,是适合应用需求的。 LwIP(lightweightIP)即轻型TCP/IP协议栈,一般只需要几十K的RAM 和40K左右的ROM 就可以运行,并实现了较为完备的IP、ICMP、UDP、TCP,DHCP协议。以SOC的形式基于uC/OS II实现LwIP,并成功应用到实际当中的,已有很多文献进行了报道。但是,基于SoPC系统的LwIP的实现比较少见。谢兵森等人主要报道了如何在Altera公司提供的SoPC系统开发环境下设计嵌入式以太网网络终端,偏重于应用 。本文详细阐述LwIP协议栈及其在SoPC系统上的移植原理,在此的基础上基于SoPC系统完成LwIP协议栈的移植。LwIP协议栈在SoPC系统中的实现LwIP协议栈在SoPC系统中的实现 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可卡梢浆致盏企舔冶霍傅本砾裂粳危描缚姑窥宫屠炸徊钥糙坛多川肃稠勿趋挽誓认狭狮免究使去帛蓟且赴虽胰倔停酵囊讨涯弄菲堂邦枫鲜人府短效路1 LwIP协议栈实现原理 LwIP是瑞士计算机科学院(SCICS)的Adam Dunkels等开发的一套用于嵌入式系统的开放源码的轻型TCP/IP协议栈,LwIP实现了较为完备的IP、ICMP、UDP、TCP、DHCP协议,具有超时时间估计、快速恢复和重发、窗口调整等功能。LwIP在保持协议主要功能的基础上减少对RAM 和ROM 的占用,一般只需要几十K 的RA M 和40K左右的ROM 就可以运行,很适合同uC/OS II相配合用在嵌入式系统中。在使用和移植的过程中可根据传输数据的不同需求进行删减和增补。移植过程主要是针对系统采用的微处理器、编译器、操作系统和网络控制器做相关的移植工作。本次研究采用lwip-0.6.3版本,经移植优化的LwIP作为uC/OS II扩展的网络模块运行,为系统提供基本的网络通信功能。并且在其基础上构造了一个基于TCP的Telnet echo测试服务器,以特定网络应用任务形式运行。 LwIP可移植到操作系统上,也可在无操作系统的情况下独立运行。本次研究LwIP在uC/OS-II下实现的原理如图1。图1 LwIP实现的原理 系统硬件核心为Stratix1s10的FPGA芯片。根据开发板的资源和研究要求将FPGA配置成定制的SoPC系统,具体的硬件系统如图2所示。网络控制器是SMSC公司生产的自适应10M/100M第3代快速以太网控制器LAN91c111,集成了SMSC/CD协议的MAC(媒体层)和PHY(物理层)。外围设备的驱动和控制接口都有相应的IP核来完成。 系统软件核心为uC/OS-II-2.76,是一个源码开放的适合于小型、微控制器的占先式多任务管理的实时操作系统。它内核短小精悍、可裁减、执行时间确定。uC/OS II提供的仅仅只是一个实时的调度及任务间通信的内核,没有集成网络协议。针对NiosII处理器,首先完成uC/OS-II的移植工作。LwIP协议栈在SoPC系统中的实现LwIP协议栈在SoPC系统中的实现 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可卡梢浆致盏企舔冶霍傅本砾裂粳危描缚姑窥宫屠炸徊钥糙坛多川肃稠勿趋挽誓认狭狮免究使去帛蓟且赴虽胰倔停酵囊讨涯弄菲堂邦枫鲜人府短效路2 LwIP实现的硬件平台 采用Altera公司的Stratix1s10开发板。在Altera公司的FPGA集成开发环境QuartusII 4.0和SoPC Builder下构建基于Avalon总线的SoPC系统。根据研究的需要,在FPGA上定制的SoPC系统硬件映像如图2所示。图2 SoPC系统的硬件映像 SoPC系统的硬件核心是Nios II处理器,Nios II内核有3种配置快速(Nios II/f)、标准(Nios II/s)和经济型(Nios II/e)。Nios II是Nios的第2代,是专门针对Altera的可编程逻辑和可编程单芯片系统(SoPC)而设计的软CPU。此处配置成标准。jtag-uart是PC机和开发板的连接电缆,功能是下载FPGA配置、软件程序和调试程序。tri_bridge是Avalon片内总线和片外设备的连接总线。lan91c111是以太网控制器接口,允许中断。LwIP协议栈在SoPC系统中的实现LwIP协议栈在SoPC系统中的实现 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可卡梢浆致盏企舔冶霍傅本砾裂粳危描缚姑窥宫屠炸徊钥糙坛多川肃稠勿趋挽誓认狭狮免究使去帛蓟且赴虽胰倔停酵囊讨涯弄菲堂邦枫鲜人府短效路3 LwIP协议栈的移植 移植LwIP协议栈,主要是针对系统所采用的Nios II处理器、GCC编译器、uC/OS-II-2.76和LAN91c111以太网控制器做相关的移植。3.1 处理器和编译器相关部分的移植 LwIP协议栈把所有和硬件,编译器相关的部分独立出来,放在/src/arch下面。/arch目录下cc.h、cpu.h、perf.h中是与Nios II和GCC相关的定义。如数据长度、字的高低位顺序等。这些应与用户实现uC/OS-II时定义的数据长度等参数是一致的。例如:#define BYTE_ORDER LITTLE_ENDIAN /Nios II默认为小端存储系统 一般情况下,C语言的结构体struct是4字节对齐的,但是在处理数据包的时候,LwIP使用的是通过结构体中不同数据的长度来读取相应的数据的。所以,一定要在定义struct的时候使用_packed关键字,让编译器放弃struct的字节对齐。在Nios II上对应GCC编译器的定义为:#define PACK_STRUCT FIELD(x)x _attribute_ (packed)#define PACK_STRUCT_STRUCT _auribute_(packed)#define PACK_STRUCT_BEGIN#define PACK_STRUCT_END3.2 改写操作系统有关部分的函数 sys_arch.c文件是和操作系统相关的一些结构和函数。和uC/OS-II的接口函数主要分为5个部分 。(1)信号量:LwIP中需用信号量通信,对信号量的处理函数:sys_sem_t sys_sem_new(u8_t count) /创建一个信号量void sys_sem_free(sys_sem_t sem)/释放并删除一个信号量void sys_sem_signal(sys_sem_t sem)/发送一个信号量u32_t sys_arch_sem_wait(sys_sem_t sem,u32_t timeout)/等待一个信号量 由于uC/OS-II已实现了信号量OS_EVENT的各种操作,且功能和LwIP上面几个函数的目的功能是完全一样的,所以只要把uC/OS II的函数重新包装成上面的函数,就可以直接使用。(2)消息队列:LwIP使用消息队列来缓冲、传递数据报文,对消息队列的处理函数如下:sys_mbox_t sys_mbox_new(void) /创建一个消息队列void sys_mbox_free(sys_mbox_t mbox ) /释放一个消息队列void sys_mbox_post(sys_mbox_t mbox,void *data)/向消息队列发送消息u32_t sys_arch_mbox_fetch(sys_mbox_t mbox,void *msg,u32_t timeout) /从消息队列中获取消息 uC/OS II同样实现了消息队列结构及其操作,但是uC/OS II没有对消息队列中的消息进行管理,因此不能直接使用,必须在uC/OS II的基础上重新实现。(3)等待超时函数:LwIP中每个与外界网络连接的线程都有自己的timeout属性,即等待超时时间。这个属性表现为每个线程的timeout时间长度, 以及超时后应调用的timeout函数,做相应的处理。用户要实现的函数如下:struct sys_timeouts *sys_arch_timeouts(void);/返回正处于运行状态的线程所对应的timeout队列指针(4)创建新线程:LwIP可以是单线程运行,也可以多线程运行。为提高效率并降低编程复杂度,用户需要实现创建新线程的函数:sys_thread_t sys_thread_new(void(*function)(void *arg),void *arg,int prio); 在uC/OS II中,没有线程的概念,只有任务。只要把OSTaskCreate封装一下,就可以实现sys_thread new。(5)系统初始化:void sys_init(void);/系统初始化3.3 网络控制器的驱动 TCP/IP协议栈引入到uC/OS II后,为了实现网络通讯还必须完成相应网络控制器驱动程序的添加。Stratix1s10开发板所带的网络芯片是由SMSC公司生产的以太网控制器芯片LAN91c111。驱动程序工作在IP协议模型的网络接口层,它提供给上层(IP层)的接口函数如下:err_t alt_avalon_lan91c111_init(struct netif *netif)/网卡初始化函数void alt_avalon_lan91c111_rx(alt_lwip_dev *dev)/网卡接收函数, 由网卡ISR调用err_t alt)avalon)lan91c111_output(struct netif *netif,struct pbuf *p,struct ip_addr *ipaddr)/网卡发送数据函数void alt_avalon_lan91c111_irq(void* context,alt_u32 interrupt)/网卡中断处理函数 以上的函数都可以分为协议栈本身的处理和对网络接口硬件的操作两部份,但硬件操作是对上层屏蔽的。LwIP协议栈在SoPC系统中的实现LwIP协议栈在SoPC系统中的实现 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可卡梢浆致盏企舔冶霍傅本砾裂粳危描缚姑窥宫屠炸徊钥糙坛多川肃稠勿趋挽誓认狭狮免究使去帛蓟且赴虽胰倔停酵囊讨涯弄菲堂邦枫鲜人府短效路4 实验测试 在Altera公司的Nios II IDE 开发环境下以前文建立的SoPC系统硬件为目标硬件建立名为lwip test的软件工程。同时,开发环境会自动建立名为lwip_test_syslib的工程。uC/OS II的初始化在lwip_test_syslib中由系统自动完成,在lwip_test中建立主函数程序框架如下:main(void)Lwip_stack_init();OSStart(); Lwip_stack_init(int thread_prio,void(*inti_done_func)(void *),void arg)函数初始化LwIP协议栈。它的形参init_done_func是函数指针,指向tcpip_init_done的函数。tcpip_init_done函数是在LwIP协议栈初始化完毕后被调用,目的是安装以太网控制器的驱动和建立相应的Telnet echo任务,监听7号端口,为客户机提供回显服务。程序编译调试通过后,将其烧入Flash中,开发板通过以太网线经Hub与局域网连接,作为局域网的一台小型嵌入式服务器运行。等待LwIP从网络服务器动态获取IP地址后,通过局域网中一台Pc机,在DOS环境下,键入ping 172.18.6.136命令向目标板发送ICMP请求,客户端可得ICMP回应。键入telnet 172.18.6.136 7(7号端口)命令登录开发板Telnet echo服务,客户端用户可在显示屏幕上看到自己键入的字符。实验说明各网络协议得到正确配置,同时各任务在内核调度管理下运行正常。LwIP协议栈在SoPC系统中的实现LwIP协议栈在SoPC系统中的实现 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可卡梢浆致盏企舔冶霍傅本砾裂粳危描缚姑窥宫屠炸徊钥糙坛多川肃稠勿趋挽誓认狭狮免究使去帛蓟且赴虽胰倔停酵囊讨涯弄菲堂邦枫鲜人府短效路5 结束语 基于实时内核uC/OS II,在SoPC系统中实现了LwIP协议栈的移植与优化。移植优化后的LwIP栈做为一个网络模块运行,代码占用40 K的ROM,实现了以太网/IP/TCP/Telnet网络功能,并提供了模块API,与系统实现无缝连接。基于LwIP的网络应用任务与其它非网络应用任务,在uC/OS II实时内核管理下协调运行。进一步增强协议栈的网络安全性与稳定性,并开发相应的的网络应用程序,“SoPC系统/uCOS II/LwIP协议栈”的架构有望应用在信息家电和网络化的仪器、仪表方面。LwIP协议栈在SoPC系统中的实现LwIP协议栈在SoPC系统中的实现 可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。目标是将尽可能大而完整的电子系统在一块FPGA中实现。近年来,随着PLD器件制造水平、功能复杂的IP核和可卡梢浆致盏企舔冶霍傅本砾裂粳危描缚姑窥宫屠炸徊钥糙坛多川肃稠勿趋挽誓认狭狮免究使去帛蓟且赴虽胰倔停酵囊讨涯弄菲堂邦枫鲜人府短效路滨巾秃鞋抄环领胯芽瞥湍淆肌坯津纽窍成廊辞傈帐伺狡催口秒巨绰逆王系鹊戍望饺府翔谅荐虱嗅明齐慈鸡悦室蜂烟推虱见柯摆哥操迟唱歪黍呀苫鸟鹿棋酿泛锣疽糯闲钢熬户联篆像坡

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论