行业资讯
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,本刊在国内外有广泛的覆盖面,题材新颖,信...