通用计算机数据链路层自定义帧的实现,可应用于解决嵌入式网络设备的远程设置问题,改进了过去嵌入式网络设备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) 客观存在的两种应用模式
嵌入式计算机系统起源于微型机时代,但很快...
摘要:
我是一个初学者,最近想买一块开发板,可是现在市面上的ARM9开发板简直是眼花缭乱,不知道应该怎么挑选,请各位有经验的给推荐一款,价位不要太高,最好带LCD的,功能多一些,配套资料多。多谢了!
个人建议:个人买不划算,开发板说起来支队学校学生实验有用。再没有任何用处了。还不如找一个高嵌入式的公司去锻炼,那样才最快。如真的想买我感觉深圳龙人嵌入式事业部研发的arm9系列2410开发板不...
摘要:
嵌入式开发板就是半导体行业分工合作的载体之一,它为开发产品的厂商提供基本的底层硬件、系统和驱动等资源,使得用户不需要再投入人力和时间来完成这些底层的工作。目前市面上的开发板,多种多样而且价格差异也很大,那么选择开发板的时候,应该注意哪些方面,才能够保证自己的项目能够顺利地完成?本文将就这个问题,从嵌入式开发板行业情况、嵌入式开发板的功能与作用等方面来向用户提供一些信息和建议。
Tag :...
摘要:
前一段时间做了arm的一些开发,主要是编写了arm的启动软件和移植了uCOS-II到arm7。我的这个心得很初级,都是一些很基本的东西。现在拿出来和大家分享,希望对一些初学者有帮助。由于这些东西发paper实在是没有价值,但是我感觉可以作为arm开发的入门。由于我的水平和经验有限,错误也是难免的。但是假如不拿出来和大家分享,就算有错误我也发现不了,是么?呵呵。我现试试发连载的第一篇,看看有多...
摘要:
ARM9开发板入门:对S3C2410数据手册中DMA部分的解读
深圳龙人计算机嵌入式系统开发中心专业提供嵌入式开发技术服务和嵌入式产品如ARM9开发板和XScale开发板、ARM9核心板、ARM9学习板、ARM工控板及ARM仿真器ARM开发工具等。
之所以要介绍DMA,因为它对性能太重要了!只有活用了DMA,CPU的性能才能上去!S3c2410有四个DMA,每个DMA支持工作方...
摘要:
嵌入式系统开发技术:嵌入式应用软件任务划分的原则
本文龙人计算机凭借多年的嵌入式系统开发经验给出了划分任务的3个原则,分别是“对同一个外设的访问放在一个任务中”、“通过任务分割提高系统的实时性”和“软件工程中的‘解耦原则’用于任务的划分”。实践证明,这些任务划分的原则是行之有效的。另外,...
摘要:
嵌入式开发技术:wince驱动开发学习笔记
文章整理:深圳龙人计算机嵌入式系统开发中心
首先是wince驱动的分类问题。按照书上讲的说CE下驱动分成单体驱动和分层驱动,而看到另一种说法是本机驱动和流式驱动。经过microsun大哥的指点,把这两种分类法分开了。在这里引用一下:
“单体与分层只是从代码的形式上做的分类.分层驱动代码上分为PDD与MDD,一般的微软已...
摘要:
基于Xscale PXA270 ROM系统模块的手持GPS方案设计
龙人针对嵌入式产品开发过程中主要设计步骤,调试手段和技术障碍,将Xscale, ARM,MIPS或ARM+DSP等内核的高速嵌入式处理器的核心系统及关键部件集成设计为系统模块的方式,统称“RiSC-On-Module”,简称ROM。对每一款采用”Ri...
摘要:
ARM9开发学习-S3C2410开发板上的串口通信编程
一、S3C2410开发板上的串口通信编程的目的
串口通信我们并不陌生,我们经常用串口来进行数据传输,可并不清楚它是如何工作
的。那这一节龙人计算机嵌入式事业部就带领你来揭开 ARM S3c2410 UART(Universal Asynchronous Receiver...
摘要:
ARM9开发学习-S3C2410开发板上的串口通信编程
一、S3C2410开发板上的串口通信编程的目的
串口通信我们并不陌生,我们经常用串口来进行数据传输,可并不清楚它是如何工作
的。那这一节龙人计算机嵌入式事业部就带领你来揭开 ARM S3c2410 UART(Universal Asynchronous Receiver...
摘要:
做arm9(2410 开发板 ) 的嵌入式开发 的一些经历
arm9 arm9 开发板 2410 开发板 嵌入式开发 嵌入式系统
做 arm9 开发板的嵌入式系统开发有一段时间, 写篇文章想和嵌入式 开发、嵌入式系统 爱好者做个简单的交流。
自己做一个龙珠的板子来玩uCli...
摘要:
基于S3C2410 开发板 与Linux 的 ARM9嵌入式系统 开发
S3C2410 开发板 ARM9 ARM9开发板 嵌入式系统 嵌入式 开发
针对在嵌入式市场上颇具竞争力的ARM9处理器——S3C2410和开放源码的Linux操作系统, 龙人计算机 在此为您讲述嵌入式系统的概念、软硬件的开发和...
摘要:
三星S3C44b0开发板-ARM7 开发板- ARM7- 龙人嵌入式
S3C44b0开发板 ARM7 开发板 ARM7 ARM 开发板 嵌入式开发
【产品名称】三星S3C44b0开发板(3.0)
【产品规格】ARM7
【产品单位】每套
【所属类别】ARM7开发板
【使用说明】产品详细规格说明
...
摘要:
S3C2440A开发板主要特点:S3C2440A开发板是深圳 龙人计算机 嵌入式系统开发有限公司开发设计制造的,S3C2440A是工业级工作温度范围,适合于苛刻的场合。S3C2440A主频高达400MHz,最高可达533MHz,低功耗,高性能,开发板适合于PDA,便携媒体播放器,卫星导航仪等多媒体终端开发评估。同时可以作为嵌入式操作系统和嵌入式硬件设计教学。目前市场大量产品采用该芯片,价格便...
摘要:
嵌入式行业情况
嵌入式开发板的原型,可以说是各大芯片厂商在推出芯片的时候,提供给用户的参考设计。很正常,半导体厂商在推广自己芯片的时候,单单拿芯片给用户看是没有任何吸引力的,一定要给用户看到具体的电路板,具体的接口,能够给客户一个具体的印象,才能够保证推广的效果;半导体厂商给出这些参考设计,也是让用户在设计的时候有一个参考,加快他们产品设计和上市的进度。
无论是8位、1...