基于DSP的嵌入式Ethernet接入方案设计
更新时间:2023-07-28 14:38:01 阅读量: 实用文档 文档下载
- 嵌入式DSP推荐度:
- 相关推荐
第日届京、津、沪、渝反套国城市有线电视技术研讨套论文集
一35一
基于DSP的嵌入式Ethernet接入方案设计
中国传媒大学信.电工程学院曹岱鸿王金涛
摘要:介绍了以DSP为核心具有以太网接El的嵌入式系统的硬件电路组成和软件设计方j矗。对系统的硬件设计进行了介绍.详细地介绍了网络控制器LAN9118的工作原理及散宇信号处理器TMS320C6713。介绍了嵌入式TCP/IP协议栈LwJP和实时操作系统1JC/OS—II在DSP上的移植方法。
关键词:嵌入式Ethemet
IJC/OS一¨LwIP
DSP
1
引言
在Intemet技术应用日益广泛的今天,嵌入式的产品需要支持网络的功能,而网络是最方便和最有效的传
输方式。TCP/IP是目前一种广泛采用的网络协议,是一套把因特网上的各种系统连接起来的协议组,已经成为事实上的最常用的网络协议。本文利用Ⅱ公司的TMS320C6713芯片和v,C/OS-II嵌入式操作系统和加载LwlP
的TCP/IP协议栈来实现以太网的接人。
2系统总体结构
系统层次结构
本课题研究的以太网通信系统大致分为上图所示的5个层次,由下向上分别为:硬件层、设备驱动层、操作
系统、网络模块和用户代码。
系统硬件电路,包括DSP系统和以太网控制芯片LAN9118的接口电路,是系统的物理基础。
快速以太网驱动程序处于硬件抽象层,本身虽为软件,但与硬件结合紧密,为操作系统提供了访问快速以
太网控制芯片LAN9118或改变其工作行为的系统调用。
斗c/os—II操作系统处于系统内核,为用户代码统一管理系统软硬件资源,提供用户所需的底层服务。
TCP/IP协议栈软件为p,C/OS一Ⅱ操作系统扩展了网络通信能力。
用户代码处理特定的应用程序细节,可以直接使用TCP/IP协议模块提供的API函数,开发基于以太网
的通信项目。
3系统硬件框图
一36一
第口届京、津、沪、渝及全国城市有线电视技术研讨会论文集
在系统中我们选择了DSP上CE0、CEl接SDILAM,CEl接FLASH,CE3接LAN9118。系统的整体框架图如
下:
TMS320C6713和LAN9118的接口如下图
TMs320C6713
L~N9118
ED[31:olEA{21:9】EA[8:21
ARE#
D口l:伽A[7:I】
RD#
AWE#CE坤
EXTINT4
ARDY
WR#CS#
mQ
PME
4
TMS320C6713数字信号处理器简介
Ⅱ公司推出的6000系列处理器TMS320C6713,运算功能强,片内存储空间大,完全支持浮点;相应的DSK
开发板功能强大,有丰富的外设接口,并有如下主要特性:
(1)超长指令字(vLiw)结构
装载/存储结构;指令包以减小代码长度;100%条件指令以提高执行速度;
(2)CPU主要特性
内部包含4KByte的1级程序缓存,4KByte的l级数据缓存,256KByte的内部存储器,可以动态分配其中的64KByte作为程序和数据共享的2级缓存;8个独立的功能单元(包括两个乘法器,6个算术逻辑单元ALU);8个定点运算单元,6个浮点运算单元;32个32位寄存器;主频高达225MHz,1800MIPS/1350MnDPs(1M
FLOPS------每秒约100万次浮点操作);3.3ns指令周期;32位寻址空间;可寻址32、16、8位数据,16通道ED.
MA:
(3)存储器及外围设备
32位的片外存储器接口(EMIF);2个32位定时器,4个开关量SW;16MByte片外存储器SDRAM;
512KByteFLASH:
第日届京、璋、沪、渝反全国城市有线电视技术研讨奋论文集
一37—
5
pC/OS-II操作系统概述及移植要点
嵌入式的操作系统肛C/OS—II是一个完整的,可移植、固化、剪裁的占先式实时多任务内核RTOS,其性能和
安全性可以与商业产品竞争。斗C/OS—II是用ANSIC语言编写的,包含一小部分汇编语言代码,使之可供不同架构的微处理器使用。p,C/OS—II的特点是源代码公开,你只需买一本书(文献3),附带的光盘就可得到V2.52
版本的源代码。而且对学校和教育的使用是完全免费的,商业应用的费用也相对较低。
要使¨C/OS-II正常运行于不同的处理器上,那么处理器必须满足以下的要求:①处理器的c编译器能产生可重人型代码
②处理器支持中断,并且能产生定时中断(通常为10-100Hz)③用c语言就可以开关中断
④处理器能支持一定数量的数据存储硬件堆栈(可能是几千字节)
⑤处理器有将堆栈指针以及其它CPU寄存器的内容读出,并存储到堆栈或内存中去的指令。
一般的移植步骤如下:
①深入了解所采用的系统的核心②分析所采用的c语言开发环境的特点③编写移植代码④进行移植的测试
⑤针对项目的开发平台,封装服务函数
下图说明了wC/OS-II的结构以及它与硬件的关系
v,C/OS-II
(与处理器无关的代码)
OS_CORECOSMBOXCOS_MEMCOS_SEM.C
IJ_C/OS-II.C
啦,OS一Ⅱ.C
Os-Qc
OS_TASK-C
0SⅧEC
当你拿到斗C/OS—II的源代码后,打开文件与平台相关的移植代码仅存在于0s_CPu』.ASM、0s_cPU_C.
C、Os_cPU.H这三个文件中。在OS-cPU.H中包括了用#define语句定义的、与处理器相关的常数、宏以及数据类型.这部分的修改相对比较容易,具体见文献3的第十三章,在OS_CPU_C.C文件中有lO个函数需要用户用
C语言来编写OSTaskStklnit();OSTaskCreateHook();OSTaskDeLHook();OSTaskSwHook();OSTaskMleHook();
OSTaskStatHook();OSTimeTickHook();OSInitHookBegln();OSlnitHookEnd();OSTCBInitHook()。其中第一个函
数的编写较其它的函数来说复杂一些。OS_CPu—A.ASM文件中是四个用汇编语言写成的函数是移植过程中最难写的部分OSStartHighRdy();OSCtxSwO;OSIntCtxSw();OSTieklSR()。这些代码的编写可以参考树种的移植例子,也可以登录tJJC/OS—II的官方的网站www.uCOS—II.corn找出相关的移植代码,笔者在移植过程中参看了清华大学曾鸣的代码和在TMS320C62x上移植的代码。可参考文献[8】。
一38一
第口届京、津、沪、渝及全国城市有线电视技术碍讨会论文集
6
LwIP协议栈概述及移植要点
InstituteofComputer
LwlP(LishtWeight
IP
Protoc01)是瑞士计算机科学院(SwedishScience)的Adam
Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/1P协议栈。1wIP既可以移植到操作系统上,又可以在无操作系统的情况下独立的运行。LwIP实现的重点是在保持TCP/IP协议主要功能的基础上减少对RAM的占用,一般它只需要几十K的RAM和40K左右的ROM就可以运行,这使LwIP适台在低端嵌入式系统中使用。LwIP的特性如下:
(1)支持多网络接口下的IP转发(2)支持ICMP协议
(3)包括实验性扩展的UDP(用户数据报协议)
(4)包括阻塞控制,RTr估算和快速恢复和转发的TCP(传输控制协议)(5)提供专门的内部回调接口(RawxPi)用于提高应用程序性能(6)可选择的Berkeley接121API(多线程情况下)(7)在最新的版本中支持PPP
(8)新版本中增加了IPfragment的支持(9)支持DHCP协议,动态分配IP地址
6,1
与操作系统相关部分
在include文件夹里有建立两个文件夹arch和netff,在netif文件夹里写一个与laa9118if.e文件对应的头
文件langll8if.h,进行函数的声明。在ayeh里有5个头文件,分别是ec.h作系统的头文件OS_CPU.H的定义是~样的。如下:
typedef
unsignedcharu8t;
init.hlib.h
perf.hsys_arch.h。
在cc.h中是一些与编译器有关的数据信息的定义,如数据的长度,字的高低位顺序等。这与在移植斗C/OS-II操
typedeftypedoftypedef
signedchar
sS_t;
t;
unsignedshortul6signed
shortint
sl6_t;
typedef
typedef
unsigned
signedint
u32j;
s32_t;
在lib_arch.c文件中IMP协议栈中用到了8个外部函数,这些函数通常与用户使用的系统或编译器有关。
因此留给用户自己实现。如下:
u16_thtons(u16_tn);u16._tntohs(u16_tn);u32__thtonl(u32_3n);u32jntohl(u32jn);
intint
//16位数据高低字节交换
//32位数据大小头对调
strlen(eonstchar}sIr);//返回字符串长度
stmcmp(coastchar*strl,constchar+str2,intlea);∥字符串比较bcopy(eonstvoid*sFe,void*dest,intlen);
void
∥内存数据块之间的互相拷贝
voidbzero(void*data,intn);//内存中指定长度的数据块清零
在sys_arch.e文件中的内容是与操作系统相关的一些结构和函数,主要分四个部分(1)sys_sem_t信号量
IMP中需要使用信号量通信,所以在sys_arch中应实现信号量结构体和处理函数:
算口届京、津、沪、瀹反全国城市有线电视技术研讨会论文集
struct
一39一
sys_sem_t
sys_sem_new((sys__senl_free()sys..8em—signal()
//创建一个信号量结构//释放一个信号量结构
//发送信号量
sys_arch_sere_wait()//请求信号量
由于v.C/OSII已经实现了信号量0S_EVENT的各种操作,并且功能和LwlP上面几个函数的目的功能是完全一样的,所以只要把trC/OSII的函数重新包装成上面的函数,就可以直接使用了。
(2)sys_mbox_t消息
1wlP使用消息队列来缓冲、传递数据撮文,因此要在sys_arch中实现消息队列结构sys_mbox_t,以及相应的
操作函数:
sys_mbox_new()sys_mbox_free()sys_nrbox_post()sys_arch_mbox_fetch()
∥创建一个消息队列
//释放一个消息队列
//向消息队列发送消息
//从消息队列中获取消息
tmC/OSII同样实现了消息队列结构OSQ及其操作,但是v..C/OSII没有对消息队列中的消息进行管理,因此不能直接使用,必须在IJJC/OSII的基础上重新实现。为了实现对消息的管理,我们定义了以下结构:
typedefstruct
I
OS_EVENT*pQ;
void*pvQEntries[MAX_QUEUE_ENTRIES];
lsys_mbox_t;
在以上结构中,包括OS__EVENT类型的队列指针(PQ)和队列内的消息(pvQEntries)igg部分,对队列本身的管理利用斗C/OSII自己的OSQ操作完成,然后使用I^C/OSII中的内存管理模块实现对消息的创建、使用、删除回收,两部分综合起来形成了LwlP的消息队列功能。
(3)sys_amh_timeout函数
LwIP中每个与外界网络连接的线程都有自己的timeout属性,即等待超时时问。这个属性表现为每个线程
都对应一个sys_timeout结构体队列,包括这个线程的timeout时间长度,以及超时后应调用的timeout函数,该函数会做一些释放连接,回收资源的工作。如果一个线程对应的sys_timeout为gl(NULL),说明该线程对连接做
永久的等待。
timeout结构体已经由LwIP自己在sys.h中定义好了,而且对结构体队列的数据操作也由LwIP负责,我们
所要实现的是如下函数:
struct
sys_fimeouts}sys_arch_timeouts(void)
这个函数的功能是返回目前正处于运行态的线程所对应的timeout队列指针。timeout队列属于线程的属
性,因此是Os相关的函数,只能由用户实现o
(4)sys_thread_new创建新线程
LwIP可以是单线程运行,即只有一个tcpip线程(tcpip_Ihread),负责处理所有的tcp/ucp连接,各种网络程
序都通过tcpip线程与网络交互。但LwIP也可以多线程运行,以提高效率,降低编程复杂度。这时就需要用户实
现创建新线程的函数:
voidsys_thread_new(void(+thread)(void+ars),void+arg);
在pC/OSII中.没有线程(thread)的概念,只有任务(Task)。它已经提供了创建新任务的系统API调用OSTaskCreate,因此只要把OSTaskCreate封装一下,就可以实现sys_thread_.new。需要注意的是LwIP中的thread并没有I^C/OSII中优先级的概念,实现时要由用户事先为LwIP中创建的线程分配好优先级。6.2网络设备驱动程序与LwlP的接口
在源代码的LwIP文件夹中有两个文件夹src和doe,在移植时,增加一个arch文件夹,在此文件夹里写人
一40一
第口届京、津、沪、渝反全国城市有线电视技术研讨会论文集
两个C语言的源文件lib_arch.c和sysarch.c,并建立两个文件夹include和netif,在netif文件夹里写一个C的
源文件lan9118if.e这个源文件是写与网络控制芯片有关的操作。在LwIP中可以有多个网络的接口,每个网络接口都对应了一个structnetif,这个netif定义如下:
struct
netif{
netif+next;
struct
char
name[21;
intIlum;
structstructstruet
ip_addrip_addr;ip_addrnetmask;
ip_addrgw;
pbuf+P,struet
void(8input)(structint(+output)(struct
strttet
netif+inp);
4
netif+netif,structpbuf
P,
ip_addr
4
ipdaddr);
void+state;
);
这个netif包含了相应网络接口的属性,收发函数。LwIP调用netif的方法netif->input()和netif->output()
进行以太网包的收、发等操作。在以太刚的的的芯片的驱动程序主要做的就是芯片的初始化,收、发和中断处理
函数。驱动程序是在IP协议模型的网络接口层,它提供给上一层(IP)的接口函数如下:
①网卡的初始化函数
void
ethemetif_init(structnetif*netif);
②网卡接收函数,从网络接口接收以太网数据包并把其中的IP报文向IP层发送,在中断方式下由网卡
ISR调用
void
ethemetif...input(stmetethemefif_output(stntctethernetif_isr(void);
netif+netif);
③网卡发送函数,给IP曾传过来的IP报文加上以太网包头并通过网络接El发送
err
t
nefif+netif,structpbuf+P.
struet
ip_addr*ipaddr);)④网卡中断处理函数ISR
void
LwlP的网络驱动有一定的模型,/sre/netif/ethemefiLc文件即为驱动的模板,用户为自己的网络设备实现驱动时应参照此模板。
6.3
LwlP的数据流程
LwlP的数据流程主要分为接收和发送两种情况。
接收数据时:数据包从一个网络接口被吸收,如果网络接口驱动通过low_teveljnput函数读到这个数据包,
简单的区分是ARP包还是IP包。如果是ARP包,将调用ARP的功能处理这个包。如果是一个IP包,将把数据
包发送给ipinput函数处理。ip_input函数将数据包进行简单的处理(如计算校验和)后,分析该包是发送到本
机的正常数据包,ip_input则根据包的分类,分别发送给udp_input、tcp_input、iemp_input函数处理。如果是发送
给UDP或TCP协议的数据包,UDP、TCP协议的处理函数将进行相应的处理,最后发送给应用程序。
发送数据时:当应用程序要发送一个数据包的时候,它将调用UDP或TCP协议处理udpsender或
top_wrlte函数发送一个数据包,UDP或TCP协议的处理函数接到数据后,将对数据进行打包、分段,然后发送给IP层的ip_output_if函数(需要的时候,将调用iproute函数进行路由选择),该函数把数据打包、封装,然后调用
网络接口驱动函数传给网络接口。
第m届京、津、沪、瀹反全国城市有线电视技术研讨会论文集
一41—
7以太网控制芯片LAN9118
LAN9118是SMSC公司生产的一款高性能的10/IOOM以太网控制芯片。内部集成了以太网MAC控制器和以太网PHY控制器,并且它带有类似于SRAM的存储器接13。一个高性能的主机总线接口提供了与大多数的16位或32位的微处理器或控制器的可靠连接。
LAN9118集成了一个支持IEEE802.3的物理层,为的是支持针对双绞线的以太网的应用。这个物理层可以配置成100Mbps或者是10Mbps,可以是全双工的或是半双工的模式。
在MAC里传输和接收数据的路径是独立的,所以,它可以工作在高速的全双工的模式下。数据路径通过独立的总线连接到PIO接口上,待传输的数据和发送接收的状态字也是通过这些总线来传送的。还有第三条内部总线是用来访问MAC控制寄存器的,它是主机通过PIO接口来进行的。MAC后面是介质独立接口MlI(Media
[ndependent
Interface)连接到内部的10/100PHY的,MAC的控制状态寄存器通过内部的串行管理接口总线
Management
SMI(SerialInterface)来访问PHY的内部寄存器的。MAC里的MAC接口层MIL(MAC
Interface
I丑yer)包括一个2K字节的传输FIFO和128字节的接收F;FO,它们和TX/RXFIFOs是独立的。MAC里的FIFO是不可以直接被主机接口来访问的。
TX/RX
FIFO是用来对MAC的数据进行缓存的,它是主机接口和MAC之间传输、接收数据和状态信息
的通道。这个FIFO的发送和接收数据的通道也是独立的,并且它的大小是可配置的。
LAN9118提供了一个可配置的中断,它允许用户根据应用来优化操作。中断的类型和缓存的类型可以根据外部的中断处理来配置。
主机总线接口提供了和FIFO的接1:3,它也是LAN9118控制状态寄存器的接口。这个总线接口是和嵌人式系统连接的主要的总线,支持16位或32位的总线传输,内部的数据宽是32位的,它即可以与大端模式处理器连接也可以与小端模式的处理器连接,而且不管外部的数据总线是16位的还是32位的。包括四个主要的功能模块,分别是:IO/IOOM接口HBI,框图如下。
ethernetPHY、10/100M
ethemetMAC、Rx/rxFIFOs、主机总线
一42一
第四届京、津、沪、渝反会国城市有线电视技术研讨会论文集
8结束语
基于DSP的嵌入式Internet的多媒体应用越来越来受到关注,也是未来发展的趋势。本文设计的方案实现
了一个嵌入式系统的以太网接人功能,可以应用到语音的传输和远程的图象的数据的传输中。
参考文献
l李方慧等著.1Ms320c6000系列DSPs原理与应用.北京:电子工业出版杜,20032江思敏.TMS320c6000DSP应用开发教程.北京:机械工业出版杜,2005
34
Jean
J.L矗b獬啦著,邵贝贝等译,嵌入式实时操作系统p正./os-Ⅱ,北京:北京航空航天大学出版社.2003
D.Reed.3com公司泽.TCP/Ip基础.北京:电子工业出版社
com
Kenneth
5橱晔.实时操作系统O上./OS_1I下TCPAP协议栈的实现,www.skyeye
6曾呜.清华大学,p,C/OS--H实时操作系统在嵌人式平台上进行移植的一般方莹和技巧
7
TLTMS320C6713BFloating-printⅨ画t8Islp越PI∞eB鲫(Rev.A)
8ⅡReset
9lO
CircuitfortheTMs320C6000DSP
TI.TMs320C6713HardwareTL
Desi帮eCsRe60m'oeGllide
ExtentdFlash
1MS320c6000EmF
EMIF
to
Me咖ry
Iatexfaee(Rev.A)
1l_11.TMS320C6000121314
to腑emal血m血岫0II辱SRAM
TI.TM¥320C6000DsPEstemalMemoryAdam
Interrace(EMIF)ReferenceGuide(Rev.E)
S蛆ck
Denkels,DesitcaandImplementationoftheLwIPTCp/IP
L^N9118Family
n嵋r哪蛐Refeaenee
htlp://savannah.枷印u-0rg恻ect“1wip/
Guidc,www.咖虬eom
基于DSP的嵌入式Ethernet接入方案设计
作者:作者单位:
曹岱鸿, 王金涛
中国传媒大学信息工程学院
本文链接:/Conference_6266138.aspx
正在阅读:
北理大学计算机实验基础 实验四实验报告表08-28
人力资源战略与规划(作业)05-14
创业故事创业大学生创业02-19
建筑工程施工安全资料管理规程表格(全套) - 图文12-07
六年级语文周周练11(1)10-06
鄂教版四上学期语文复习资料及各单元试题06-20
入党转正自我鉴定模板怎么写12-11
猪年宝宝起名 猪年女孩起什么名字好02-22
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 方案设计
- 嵌入式
- 接入
- Ethernet
- 基于
- DSP