我的推荐
我的图片 (共1张)
我的文章

通用计算机数据链路层自定义帧的实现,可应用于解决嵌入式网络设备的远程设置问题,改进了过去嵌入式网络设备IP地址使用直接烧写或串口本地配置等方法。该方案的特点是绕开了套接字编程,直接将上位机与下位机的通信建立在数据链路层的基础之上。相对于依靠上层协议通信,在数据链路层直接通信,可以避开上层协议的约束,从而达到对网络数据更直接和灵活处理的目的。
一、帧格式的定义
通过对数据链路层帧格式的分析,不难发现在数据链路层包含了能惟一标识一台主机的MAC地址。不需要ARP协议做IP和MAC地址映射,进而实现未知目的IP的链路层通信。为了满足实现对嵌人式网关的远程设置要求,可根据Ethernet协议标准定义帧格式,且命名为RSF帧:
目的MAC地址,6字节;
源MAC地址,6字节;
帧类型(RSF=0801 IP=0800 ARP=0806 RARF=8035),2字节;
OP操作选项(RSF query=01,RSF setIp=02,RSFreplyr=03),2字节;
目的port,2字节;
发送端MAC地址,6字节;
发送端IP地址,4字节;
目的MAC地址,6字节;
目的IP地址,4字节;
设置结果,1字节。
该帧格式的定义类似于TCP/IP协议栈中的ARP协议帧,包含了以太网头14个字节。帧类型,在该字段802项目定义的有效长的值与以太网的有效类型值无一相同,这样可以区分这两种帧的格式,这里设定该帧类型为0801,以区别于已定义的帧类型;OP操作码,RSF query=01表示服务器发送的数据包用于查询网络中的嵌入式网络设备的MAc地址,RsF setlp=02表示服务器发送的数据包用于设置嵌入式网络设备的IP地址,RsF reply=03用于设置信息的返回;端口号是目的端预设置的端口号:剩下的20字节为发送端和目的端的IP和MAC地址。
二、上位机部分
由于该方案旨在利用数据链路层协议来解决对嵌入式网关的IP远程设置问题,就必然要求上位机编程要绕过位于第4层与第5层问的套接字编程接口(socket)。幸运的是,位于第2与第3层间的NDIs(网络驱动器接口)提供了访问网络底层的能力。其优点在于屏蔽了下层各种网卡的差别,为上层提供了一个完备NDIS库,可以完成原始数据包的捕获,数据包的过滤,以及原始数据包的发送等强大的功能。另外,意大利的Fulvio Riss0、LorisDegioanni等专家开发了一个Windows平台下免费公共的网络访问系统,并提供Winpcap开发包,方便地提供了一个访问网络底层的接口。寻找到访问网络底层的编程接口后,只需要定义相应的数据包结构,并调用库中发包函数就能完成原始数据包的接收和发送功能。这里只给出关键的数据结构的定义代码。
以太网头的数据结构:
Typedef structtag DLCHeader {
unsigned char DesMAC[6]; //以太网目的地址
unsigned char srcMAC[6]; //以太网源地址
unsigned short Etherype; //帧类型
);
RSF帧结构:
typedef struct tagRSFFrame
{unsigned short opcode; //操作码
unsigned short Prot //目标端口号
unsigned char Send_HW_Addr[6];//发送端以太网地址
unsigned long Send_Prot_Addr; //发送端IP地址
unsigned char Targ_HW_Addr[6];//目的以太网地址
unsigned long Targ_Prot_Addr; //目的lP地址
unsigned char ReturnValue //设置结果
};
RSF包结构:
typedef struct tagRSFPacket{
DLCHEADER dlcHeader;
RSFFRAME rsfFrame;
};
三、下位机部分
嵌入式网关的实现关键在于TCP/IP协议栈的实现。目前主要有TCP/IP的软移植(如ulP TCP/IP的移植)、硬移植(主要由专业芯片实现)和嵌入式系统自带TCP/IP协议栈。如果是利用嵌入式系统来实现嵌人式网关,就必须对操作系统内核驱动作相应的改动。这里只重点介绍TCP/IP在微处理器上软移植的情况。在这种情况,只要在数据链路层模块中添加帧的识别和处理功能模块,就可以获得数据帧中的IP地址等数据,并对本地IP进行设置。具体设置是调用对EEPROM的读写程序模块来完成的,关键代码如下:
void eth_rcve(UCHAR xdata*inbuf)//数据链路层接收模块
{ ……
switch(etb->frame-type)
{ ……
CASE RSF_PACKET://在原协议栈中添加自定义协议调用修改本地IP模块; break;
CASE ARP_PACKET:调用ARP处理模块; break;
……
}
}
void eth_send(UCHAR xdata*outbuf,UCHAR*hwaddr,UINT ptype,UINT Ien)//数据链路层发送模块
{……}
摘要:  嵌入式2410X ARM9 开发板生产过程经过ISO9001国际质量管理体系认证,并进行严格电磁,温度,高压脉冲等测试,性能稳定,可代替部分工控单板机,也可用作开发板。 本产品预装mizi-linux+最新版Qtopia,整个文件系统采用YAFFS文件系统(比jffs2具有更好的Flash保护机制,使用寿命更长!速度更快!),达62M可读写空间! • 提供Pro...
摘要: ARM系列微处理器作为全球16/32 位RISC处理器市场的领先者,在许多领 域内得到了成功的应用。近年来,ARM在国内的应用也得到了飞速的发展,越来越多的公司和工程师在基于ARM 的平台上面开发自己的产品。 嵌入式系统 嵌入式开发 arm 嵌入式程序开发 与传统的4/8 位单片机相比,ARM 的性能和处理能力当然是遥遥领先的,但与之相应,ARM 的系统设计复杂度和难度,较之传...
摘要: 嵌入式系统的嵌入式应用特点,决定了它的多学科交叉特点。作为计算机的内含,要求计算机领域人员介入其体系结构、软件技术、工程应用方面的研究。然而,了解对象系统的控制要求,实现系统控制模式必须具备对象领域的专业知识。因此,从嵌入式系统发展的历史过程,以及嵌入式应用的多样性中,可以了解到客观上形成的两种应用模式。 (1) 客观存在的两种应用模式 嵌入式计算机系统起源于微型机时代,但很快...
嵌入式DMC-S3C2410-P型开发板  (2008/09/19 09:47)
摘要: 我是一个初学者,最近想买一块开发板,可是现在市面上的ARM9开发板简直是眼花缭乱,不知道应该怎么挑选,请各位有经验的给推荐一款,价位不要太高,最好带LCD的,功能多一些,配套资料多。多谢了! 个人建议:个人买不划算,开发板说起来支队学校学生实验有用。再没有任何用处了。还不如找一个高嵌入式的公司去锻炼,那样才最快。如真的想买我感觉深圳龙人嵌入式事业部研发的arm9系列2410开发板不...
摘要: 嵌入式开发板就是半导体行业分工合作的载体之一,它为开发产品的厂商提供基本的底层硬件、系统和驱动等资源,使得用户不需要再投入人力和时间来完成这些底层的工作。目前市面上的开发板,多种多样而且价格差异也很大,那么选择开发板的时候,应该注意哪些方面,才能够保证自己的项目能够顺利地完成?本文将就这个问题,从嵌入式开发板行业情况、嵌入式开发板的功能与作用等方面来向用户提供一些信息和建议。 Tag :...
摘要: 前一段时间做了arm的一些开发,主要是编写了arm的启动软件和移植了uCOS-II到arm7。我的这个心得很初级,都是一些很基本的东西。现在拿出来和大家分享,希望对一些初学者有帮助。由于这些东西发paper实在是没有价值,但是我感觉可以作为arm开发的入门。由于我的水平和经验有限,错误也是难免的。但是假如不拿出来和大家分享,就算有错误我也发现不了,是么?呵呵。我现试试发连载的第一篇,看看有多...











无显示 无显示
博主信息
龙人计算机作为最专业的嵌入式系统开发商和ARM开发板供应商专业提供以三星S3C2440、S3C2410和S3C44B0处理器为核心的ARM9开发板及ARM7开发板并提供工业PDA、手持POS、GPS等各种嵌入式终端设备的ARM解决方案。网址:http://www.armodm.com
加关注
打个招呼
我的商铺
  • 访问量:7220
  • 文章数:18
  • 评论数:13
  • 创建日期:2008-03-15 14:29:42
RSS订阅
个人资料
最新博文
最新评论
最近访客
我的文章分类
最近更新博客
友情链接
编辑推荐