历史上的今天
返回首页

历史上的今天

今天是:2026年02月02日(星期一)

正在发生

2023年02月02日 | 基于三星S3C44B0芯片实现VxWorks网络接口的软硬件设计

2023-02-02 来源:elecfans

VxWorks操作系统以其高度的可靠性、优秀的实时性、灵活的可裁减性等优势在嵌入式系统中备受关注,广泛应用于许多行业;而随着网络技术的发展,嵌入式技术与网络技术的结合已成必然。VxWorks是最早在其内核中加入TCP/IP协议的嵌入式实时操作系统。如何设计基于VxWorks的网络接口,是摆在嵌入式开发人员面前的首要课题。本设计以三星公司的ARM7(S3C44B0)为核心CPU,开发了VxWorks下的网络接口,包括硬件设计和软件实现两个部分。


1、 硬件设计

核心CPU采用三星公司的S3C44B0。S3C44B0采用ARM7TDMI内核,它通过提供全面的、通用的片上外设,大大减少了系统电路除处理器以外的元器件配置,降低了系统成本。 网络接口芯片采用Realtek公司生产的RTL8019AS。它是一款高度集成的以太网控制器,不仅集成了MAC(介质访问控制)子层和物理层的性能,而且与NE2000兼容,具有软件可移植性强以及价格低廉等优点。


S3C4480与RTL8019AS的硬件接口原理如图1所示。从图1中可以看出,RTL8019AS的使能端连到S3C44B0的nGCS3,因此它的地址映射在系统的Bank3上,基地址为0x06000000。RTL8019AS支持8位/16位数据总线,在本电路中采用16位方式。

基于三星S3C44B0芯片实现VxWorks网络接口的软硬件设计

RTL8019AS共有32个输入/输出地址,对应地址偏移量为0x00~0x1f。现分别说明如下:

①0x00~0x0f的16个地址,为寄存器地址。

②0x10~0xl7的8个地址,为数据读写端口地址。它们都是一样的,每个都可以用来做数据读写端口,只要用其中一个就可以了。

③0x18~0x1f的8个地址,为复位端口。它们的功能都是一样的。但需要注意,实际上只有0x18、0x1a、0x1c、0xle这几个复位端口是有效的,其他不要使用;因为有些兼容卡不支持0xl9、0xlb、Oxld等奇数地址的复位。

在软件设计时,尤其要注意以下两点:

①RTL8019AS的地址线从SA0~SA4依次连到S3C4480的ADDR1~ADDR5上,因此,RTL8019的寄存器地址要左移1位。

②RTL8019AS使用EXINT1中断,且上升沿触发。


2 、软件实现

2.1 VxWorks的网络协议栈和MUX接口

VxWorks中的网络协议栈叫作“SENS(Scalable En-hanced Network STack)”,即可裁减增强网络协议栈。SENS是基于4.4BSDTCP/IP协议栈发展而来的。它包含了许多4.4BSDTCP/IP协议栈没有的协议;而且SENS在实现一些协议功能时增加了许多新特性。如在IP协议实现时增加了多播功能。SENS协议栈层次如图2所示。

SENS的基本特征与传统的TCP/IP网络协议栈相似,但从图2中可以看出,SENS最大的特点是在数据链路层和网络协议层之间多了MUX层。在SENS中网络接口的驱动程序叫作“END(Enhanced Network Driver)”,即增强型网络驱动程序,它处于数据链路层。IP层和TCP/UDP层合称为“网络协议层”。在数据链路层和网络协议层之间有应用程序接口(API),这个接口在SENS中叫作“MUX(MulTIplexer)接口”。MUX接口如图3所示。MUX接口起到隔离网络驱动程序与网络协议的作用。在老式的BSD4.3的驱动模式下,网络驱动程序和协议是紧密联结的,无论协议还是驱动程序都需要了解对方的数据结构。而在新的基于MUX的模式下,驱动程序和协议并不需要了解对方。它们通过MUX接口来通信。例如,在收到一个包后,网络驱动程序并不直接访问协议的数据结构;相反,当准备将数据传给协议层时,它调用一个MUX提供的函数,该函数处理把数据传给协议层的细节。这使得添加一个新的驱动程序或协议十分容易。MUX实现了下面的一套函数集:muxBind()、muxUn-bind()、muxDevLoad()、muxDevUnload()、muxReceive()、muxError()、muxSend()、muxTxRestartRtn()、muxM castAddrDel()、muxMcastAddrGet()、mux-PollSend()、muxMcastAddrAdd()、muxPollReceive()、muxIoctrl()。网络驱动程序和协议都要调用上面的函数,不需要为它们添加任何附加代码。

2.2 END设备驱动程序装载过程

在VxWorks中,END设备驱动程序装载过程可以分为3个步骤,即指定END设备,装载END设备和启动END设备。END设备的指定是通过数组endDevTbl[ ]来完成的,该数组描述了系统中的所有网络设备的装载人口点及其相关参数。系统调用MUX设备装载函数mux-DevLoad()来装载END设备,调用MUX设备启动函数muxDevStart()来启动END设备。网络设备驱动程序的装载过程如图4所示。系统通过usrRoot()函数来调用usrNeTInit()函数完成MUX的初始化,装载网络设备表endDevTbl[ ]中描述的所有设备,并将IP协议绑定到网络引导设备上等。


当网络设备产生中断时,VxWorks调用驱动程序先前注册的中断服务程序。中断服务程序应做尽可能少的工作,以完成将数据包从本地网络设备送出/取出的操作。


2.3 文件配置

由于RTL8019兼容NE2000网卡芯片,只需要在其基础上完成必要的修改。首先将Tornado2.2\target\src\drv\end目录下的ne2000End.c和Tornado2.2\target\h\dry\end目录下的ne2000End.h拷贝到bsp目录下,然后修改以下文件。

(1) 修改ne2000End.C

①修改头文件包含目录;

②sysIntConnect修改为intConnect;

③sysLanIntenable修改为intEnable,并修改返回类型void为STATUS。

(2) 修改ne2000End.h

将寄存器地址左移1位,如:

#define ENE_RSTART(0x01《《1)

(3) 修改config.h

添加网络宏定义:

①#define INCLUDE_NETWORK

②#define INCLUDE_END

③#ifdef INCLUDE_END

#undef INCLUDE_SNGKS32C_END

#define INCLUDE_NE2000_END

#endif/*INCLUDE_END*/[page]

(4) 修改configNet.h

在endDevTbl[ ]表中添加新的装载函数(其函数命名格式为xxLoad( ))入口点及相关参数。

(5) 修改Makefile

添加MACH_EXTRA=ne2000End.o

(6) 修改sysLib.c

①添加MAC地址定义:

unsigned char ne2000EnetAddr[]=ETHERNET_MAC_ADRS;

②添加 sysInByte、sysOutByte、syslnWordString和sysOutWordString函数。

③在sysHwInit()中添加CPU端口初始化:

④在sysHwInit()中添加RTL8019芯片的复位和初始化函数。相关代码如下(有关寄存器的宏定义请参照RTL8019数据手册)


3、结 语

本文在VxWorks嵌入式实时操作系统下,提出了网络接口的解决方案,即以ARM7(S3C44B0)为核心CPU,控制网络控制器TRL8019实现网络通信。本文首先简单介绍了几款主要芯片,给出了硬件原理图;然后简要分析了VxWorks下的网络协议和驱动装载过程;最后,针对此网络接口,详细列出了VxWorks下文件配置过程,提供了部分软件源程序,对开发人员有一定的参考价值。


推荐阅读

史海拾趣

Analog Modules Inc公司的发展小趣事

Analog Modules Inc. 是一家总部位于美国马萨诸塞州的公司,专注于设计和生产高性能模拟电子模块和系统,为军事、航空航天、医疗和工业等领域提供解决方案。以下是 Analog Modules Inc. 公司发展的相关故事:

  1. 创立与初期阶段:Analog Modules Inc. 成立于1970年,由一群电子工程师创办。公司最初的目标是满足军事和航天领域对高性能模拟电子模块的需求。在成立初期,公司致力于开发和生产高精度的模拟信号处理模块和系统,以满足客户对于高可靠性和高性能的要求。

  2. 技术创新与产品优化:Analog Modules Inc. 在技术方面不断进行创新,并持续优化其产品线。公司的产品涵盖了广泛的领域,包括模拟信号处理、数据采集、激光驱动、通信和雷达等。这些产品具有高精度、高可靠性和耐用性,得到了客户的广泛认可和信赖。

  3. 市场拓展与全球业务:随着业务的不断发展,Analog Modules Inc. 将市场重点逐渐扩展到了全球范围。公司与全球各地的客户建立了长期稳定的合作关系,拓展了产品的销售渠道和市场份额。同时,公司还积极参与国际展会和行业交流活动,提升了品牌知名度和影响力。

  4. 应用领域与客户合作:Analog Modules Inc. 的产品广泛应用于军事、航空航天、医疗和工业等多个领域。公司与各类客户进行紧密合作,包括政府军方、航空航天机构、医疗设备制造商和工业自动化企业等。通过与客户的合作,公司不断了解市场需求,提供定制化的解决方案,满足客户的特定需求。

  5. 持续发展与未来展望:Analog Modules Inc. 将继续致力于技术创新和产品研发,以满足不断变化的市场需求。公司将继续加强与客户和合作伙伴的合作关系,不断拓展业务领域,进一步提升产品性能和服务水平。在未来,Analog Modules Inc. 将继续保持行业领先地位,为客户提供更加优质和可靠的解决方案。

DBM REFLEX公司的发展小趣事

DBM REFLEX深知品质是企业的生命线。因此,公司建立了严格的品质管理体系,从原材料采购到生产过程的每一个环节都进行严格的把控。公司还引进了先进的检测设备和技术,确保每一件产品都符合高品质的标准。这种对品质的执着追求,使DBM REFLEX的产品在市场上赢得了客户的信赖和认可。

Fujisoku Corporation公司的发展小趣事

在电子行业的早期,一家名为“未来电子”的公司(虚构名称,代指类似Fujisoku Corporation的企业)通过自主研发,成功突破了半导体材料的瓶颈,开发出了一种新型的高效能硅基材料。这一创新不仅大幅提升了芯片的性能和稳定性,还降低了生产成本,使“未来电子”迅速在半导体市场崭露头角。公司凭借这一技术优势,不断推出具有竞争力的电子产品,逐步建立起行业领先地位。

Goodwork Semiconductor ( GW )公司的发展小趣事
在通信基站、数据中心等场合,可控硅交流稳压器能够保护通信设备免受电压波动的影响,提高通信系统的稳定性和可靠性。
CONEC公司的发展小趣事

在电子行业中,技术的突破和创新是企业持续发展的关键。CONEC深知这一点,因此不断投入研发资源,力求在技术上取得突破。通过多年的努力,公司在某些关键技术领域取得了重要进展,如高速数据传输、低损耗材料应用等。这些技术突破不仅提升了公司的产品性能和质量,也使其在行业中保持了领先地位。

Hirose公司的发展小趣事

为了进一步提升公司的竞争力和市场影响力,CONEC开始了国际化布局。1990年,康耐加拿大公司的成立,标志着公司迈出了国际化的重要一步。随后,CONEC在德国、捷克共和国、美国和波兰等地设立分公司或生产基地,形成了全球性的生产和销售网络。同时,公司还积极寻求与全球领先的电子企业和技术机构的战略合作,共同推动电子行业的发展。

问答坊 | AI 解惑

准备DIY一个CC2430仿真器

始用CC2430搞Zigbee了,看到有SmartRF04EB的电路和hex资料,并且刚拿到一个国内公司做的仿真器 上面异常简单,除了C8051F320和LDO就是几个电阻容了。还有没有兄弟有兴趣的,一起搞搞Zigbee  从taobao上买了3片F320,先试试。下载线用http://ww ...…

查看全部问答>

经济型车基础音响改装锦囊

在一般人心目中,汽车音响改装向来是阔佬们的游戏,各大音响改装店门前停靠着的保时捷卡宴、宝马X5等豪车样板,似乎就证明了这一观点并不为过。而对于飞度、捷达以至昌河微面这类车型,难免会有商家产生区别对待的心理。      &nbs ...…

查看全部问答>

一种低耗的热释电人体感应模块

GH-718人体感应模块 ■应用范围           ■ 安防产品             ■ 人体感应玩具         ■ 人体感应灯具    ...…

查看全部问答>

CC2430+CC2591 2.4G超远低功率的无线模块

CC2430+CC2591 模块是在CC2430模块上扩展了CC2591 CC2430+CC2591模块是第一个符合ZigBee 的SOC芯片CC2430精心设计的加PA+LNA无线收发模块;工作载频为2.4GHZ,采用扩频技术,另CC2430器件的性能已超过了IEEE802.15.4规范的要求;同时还具有优异的选择 ...…

查看全部问答>

关于单片机的困惑

     学习单片机后,如果要做什么项目,是不是也要学习传感器之类的东西呢?具体的问题用具体的传感器。 还有就是PLC和单片机有关系嘛?     刚学完简单的单片机。也就是定时器, 键盘,AD/DA, 数码管等。不知道下 ...…

查看全部问答>

求一份学习路线图

本人想学有关底层的东西,就是为以后考研做准备,但不知道那个大学的研究生对os 的研究好。 想在这里求两件事: 1)os 学好的的路线图(列出书也可以)2)说说那个大学的os 研究好一点。…

查看全部问答>

关于Eboot添加USB下载功能 给假期疲劳的调剂 见者有分

硬件 友善 MINI2440    做了个BSP已经实现网络下载   客户要求实现DNW+USB下载   在网上down了个 三星原厂的CE5.0bsp%2C包括eboot,nboot,kernel,driver。实现了kitl,directdraw驱动+eboot有usb下载功能__2440b ...…

查看全部问答>

有高手用过MF52的吗,找特性曲线找了好几天了

电阻-电压曲线有没有人知道怎么获取啊?…

查看全部问答>

如何安装WINCE和XP的双操作系统?急!

我买的是SONY的笔记本,预装XP HOME版,现在想装WINCE实现双启动.请各位赐教!我的CE 是盗版的!谢谢各位高手!!…

查看全部问答>

求个EP3C10E144开发板点ILI9325和9327驱动芯片的程序

求个EP3C10E144开发板点ILI9325和9327驱动芯片的程序  附上9320的驱动   EP3的驱动I/O如下图  …

查看全部问答>