|  客服中心  |  合作联系
搜刊网
学术热点
行业资讯
TCP/IP协议栈在嵌入式实时操作系统中的移植与实现
发布时间:2023-10-16 来源: 访问:


   //1.复位BDMASTAT寄存器并从接收帧描述符中取得数据包地址和长度

BDMASTAT = bdma_status | S_BRxRDF;

__pbFrom = (unsigned char *)fd_ptr->FrameDataPtr + 2;

Len =  (UWORD)(fd_ptr->StatusAndFrameLength & 0xffff) - 4 ;

//2.将数据包从BDMA缓冲区拷贝到LwIP中的pbuf中

memcpy(pbTo , __pbFrom, Len);

//3.复位接收帧描述符

fd_ptr = (struct FrameDesc *)grx_ptr;

fd_ptr->StatusAndFrameLength = 0x0;

fd_ptr->FrameDataPtr |= BDMA_owner;

grx_ptr = (unsigned long)(fd_ptr->NextFrameDescriptor);

    //4.检查MACRXSTAT中的标志位,有错则复位

rx_status = MACRXSTAT & (Overflow | RxPar);

if (rx_status) { 

    MACRXSTAT = rx_status;

    BDMARXCON = gBDMARXCON;

    MACRXCON  = gMACRXCON;

}

(3)建立数据包发送函数

   发送数据帧主要通过对BDMA和MAC控制器的发送寄存器相应位使能来完成,应注意对数据帧长度检查和发送帧描述符进行复位:

//1.检查发送数据长度   

if(__ulTotalLenToWrite > ETH_FRAME_LEN){ /* 不能大于1514 */

    return 0;

}

if (__ulTotalLenToWrite < 60) {/* 小于60需进行填充*/

    for (i = __ulTotalLenToWrite; i < 60; i++)

    tx_fb_data[i] = 0x00;

}

//2.设置发送帧描述符

fd_ptr->Reserved = (Padding | CRCMode | FrameDataPtrInc

| LittleEndian | WA00 | MACTxIntEn);

fd_ptr->StatusAndFrameLength = (__ulTotalLenToWrite & 0xFFFF);

fd_ptr->FrameDataPtr |= BDMA_owner;

//3.设置MAC和BDMA控制寄存器发送使能

BDMATXCON = gBDMATXCON;

MACTXCON = gMACTXCON;

//4.复位发送帧描述符

gtx_ptr = (unsigned long)(fd_ptr->NextFrameDescriptor);

(4)建立BDMA接收中断的中断服务程序

在uC/OS操作系统中已经使用了中断向量中的IRQ中断(定时器0中断)作为操作系统时钟节拍,中断服务程序为OSTickISR,移植LwIP时需在其中增加BDMA接收中断的判断指令,在OSTickISR中添加的汇编程序如下:

LDR     r0, INTPND                ;取中断悬挂寄存器到r0

LDR     r0, [r0]

TST     r0, #0x20000            ;判断BDMA接收中断

BNE    handler_event_lwip        ;跳转到handler_event_lwip

如果是BDMA接收中断则跳转到handler_event_lwip标号处执行:

handler_event_lwip

BL    OSIntEnter                ;根据uC/OS规则对中断进行相应处理

BL    LwipIntISR                ;跳转到LwIP的中断服务程序

    ;LwIP的中断服务程序中会发送接收信号量,因此应对任务进行一次调度

BL    OSIntExit

LDR    r0, =OSIntCtxSwFlag

LDR     r1, [r0]

CMP    r1, #1

BEQ    _IntCtxSw                     ; 跳转到_IntCtxSw进行任务切换

    ;无优先级更高的任务时,弹出堆栈,回到原任务

LDMFD     sp!, {r4}               ; 从堆栈返回原任务寄存器状态

MSR         spsr_cxsf, r4

LDMFD        sp!, {r0-r12, pc}^

4 在uC/OS中初始化LWIP并测试
完成上述移植工作后,就可以在uC/OS中建立LwIP任务并设置IP和MAC地址。因为使用了操作系统的信号量和消息队列,初始化LwIP应在uC/OS主任务启动后进行,在ADS中编译工程文件后下载到FLASH中运行,和PC台式机的网络接口连接后,可用ping命令对LwIP进行测试,在命令窗口中可以看到LwIP的reply响应,移植结果表明LwIP已经工作正常。

5 结束语
目前嵌入式系统的网络通信需求逐渐普遍,针对嵌入式系统软硬件资源极其有限的特点,本文研究了将LwIP移植到uC/OS和S3C4510平台的网络通信方案,根据uC/OS和S3C4510处理器的具体特点对源代码进行修改,在占用较少硬件资源的情况下实现了S3C4510上的TCP/IP数据包的收发,完成了嵌入式系统的网络通信功能。

本文详细阐述了LwIP的移植流程,并分析了关键步骤的程序源代码,为嵌入式系统的网络通信提供了一种硬件资源占用较少的可行方案。

参考文献:
[1]JEAN.J.LABROSSE. μC/OS-II源代码公开的实时嵌入式操作系统[M]. 北京:中国电力出版社,2001

[2]Samsung S3C4510B datasheet[Z].     http://www.samsung.com

[3] Adam Dunkels. Design and Implementation of the LwIP TCP/IP Stack[Z].

http://www.sics.se/~adam/

[4]李驹光. ARM应用系统开发详解. 北京:清华大学出版社,2003

[5]彭龑. 基于单片机嵌入式TCP/IP上网的设计与实现[J]. 四川理工学院学报,2007,20(5):1-5
相关文章
热门资讯
摘要:9月28日-29日,《两岸关系》杂志社社长任勉一行3人来漯河临颍就陈星聚杯太极拳比赛筹备工作情况进行调...
精品推荐
摘要:摘 要:健康的心理素质是健康人的必备素质。在学科教学中进行心理健康的教育,是心理健康教育的重要途径...
热门期刊
火花火花
《火花》杂志,于1958年经国家新闻出版总署批准正式创刊,CN:14-1037/I,本刊在国内外有广泛的覆盖面,题材新颖,信...
解放军理论学习解放军理论学习
《解放军理论学习》杂志,于2001年经国家新闻出版总署批准正式创刊,CN:11-5384/D,本刊在国内外有广泛的覆盖面...
中外医学研究中外医学研究
《中外医学研究》杂志,于2003年经国家新闻出版总署批准正式创刊,CN:23-1555/R,本刊在国内外有广泛的覆盖面,题...
中华文化画报中华文化画报
《中华文化画报》(月刊)创刊于1993年,是由中国艺术研究院主办。是一本图文并茂地解读中华传统文化艺术、展示...
黑龙江水利科技黑龙江水利科技
《黑龙江水利科技》杂志,于1973年经国家新闻出版总署批准正式创刊,CN:23-1269/TV,本刊在国内外有广泛的覆盖面...
野草野草
《野草》杂志,于1985年经国家新闻出版总署批准正式创刊,CN:33-1038/I,本刊在国内外有广泛的覆盖面,题材新颖,信...

友情链接
中教杯 国家新闻出版总署 中国知网 万方数据 维普网 中国科学院 中国国家图书馆 央视英文版 中国留学网 中青网 中国国家人才网 中国经济网 中国日报网 中国新闻网 中国学术期刊网
关于我们
平台简介
诚聘英才
企业文化
竞争优势
版权信息
服务条款
客服承诺
常见问题
版权声明
合作加盟
期刊加盟
广告服务
联系我们
网站导航
期刊大全
论文下载
课题申报
学术会议
编辑QQ
编辑联络
2007-2023
中文学术期刊检索机构
bianjibu777@qq.com
联系我们

版权所有©2007- 2023 中国学术期刊网(qikanw.com) All Rights Reserved 京ICP备2021008252号
本站是学术论文网络平台,若期刊网有侵犯您的版权,请及时与期刊网客服取得联系,联系信箱: bianjibu777@qq.com    
中国学术期刊网