核数据采集系统中的100Mbps以太网控制模块
扫描二维码
随时随地手机看文章
摘要:介绍清华同方核数据采集系统中的100Mbps以太网控制模块的硬件、软件设计,以及以太网控制模块的发展和未来。该模块是基于32位高性能的ColdFire5307微处理器设计的,运行嵌入式操作系统uClinux,完成基于以太网的数据采集任务。
关键词:ColdFire 以太网控制模块 bootloader uClinux 嵌入式操作系统
清华同方公司的核数据采集系统中的数据收集和发送的通信控制模块,以前是基于CAN总线设计开发的,也有效可靠地完成了以前的数据采集任务,在威视集装箱检测系统中发挥了应有的作用。但是随着前端数据量的急剧增加,CAN总线的许多缺点,大大限制了系统的通信能力,同时以往的8位处理模块也无法胜任大量数据的缓存和发送任务。因此,我们为同方核数据采集系统设计了100Mbps以太网接口的32位嵌入式控制模块,成功地完成了系统中高速通信控制功能。
1 100Mbps以太网与CAN总线的对比
100Mbps以太网接口相比CAN总线接口,在数据传输速度、传输距离、软件可靠性、控制软件开发的难度,及以后的可扩展性等各个方面,都有很大的优势,因此,在通信能力要求较高的系统中采用100Mbps以太网替代CAN总线的优势是显然的。
2 100Mbps以太网控制模块的硬件架构
100Mbps以太网控制模块的硬件设计比较复杂,包括的外设也比较多,不过主要是以ColdFire5307微处理器和以太网通信芯片ASIX88796L为核心的,如图1所示。
(1)ColdFire5307
ColdFire系列微处理器是Motorola公司面向嵌入式工业控制系统的高性能32位微处理器。它具有很好的32位架构,是Motorola公司延续M68K产品线的替代产品,继承了M68K系列优秀的指令集成设计和CISC架构的优点,并融入了RISC架构的优点,在速度和架构之间得到很好的平衡,非常适合于工业现场控制。ColdFire5307是ColdFire家族的第3代产品,除了内部的32位微处理器以外,还带有一个算术累加单元,用于完成数字信号处理系统中常用的累加和累乘等常见数字信号处理算法等。ColdFire微处理器上可以运行流行的实时操作系统,像VxWorks和Nucleus等。但是最为可靠和常见的,是运行uClinux操作系统。
(2)100Mbps以太网芯片及其电路部分
ASIX公司的ASIX88796L是NE2000兼容的、16位数据总线接口的、10M/100Mbps自适应的以太网通信芯片。之所以选择ASIX88796L,主要原因是它极高的性价比和NE2000兼容的架构。NE2000是非常好的以太网MAC层构架,也是非常成熟的架构。NE2000架构以太网接口芯片的驱动和应用也是非常成熟的,在uClinux操作系统下也可以比较容易应用。
ASIX88796L的内部带有8K字的SRAM作为发送和接收以太网数据的缓冲器。另外,ASIX88796L内部带有10M/100Mbps的以太网物理层接口(PHY),可以直接和以太网隔离变压器连接以后接RJ45接口。
ASIX88796L芯片支持80186总线、M68K总线和8051总线。我们使用它的M68K总线模式来和ColdFire5307接口。这种模式的选择可以通过ASIX88796L的模式选择引脚CPU1:0进行:当CPU1:0设置为0b10时,选择Motorola的M68K总线,这个时候ASIX88796L的引脚和ColdFire5307的引脚。
这种连接就使得ASIX88796L挂在了ColdFire5307的外部总线上,可以通过片选信号5来访问外设ASIX88796L。其中BE0和BE1是16位数据线的高低字节单独的选择信号,它们使得ColdFire5307可以单独读写ASIX88796L的8位寄存器,而不需要一次访问16位寄存器。
(3)SDRAM电路部分
作为32位高性能嵌入式微控制器,ColdFire5307内部自带DRAM控制器,可以外接EDO的DRAM和同步DRAM(也就是SDRAM)。因为EDO DRAM在嵌入式系统中已经不常使用,因此在100Mbps以太网控制模块中使用了价格低廉、容量巨大的SDRAM。这种SDRAM和PC上使用的SDRAM内存条上面的SDRAM芯片是同样的,因此价格很低,非常适合系统使用。
100Mbps以太网控制模块中使用了2片4M×16位的SDRAM拼成4M×32位的SDRAM,这样就有了16MB的RAM空间。使用的SDRAM是现代公司的HY57V641620。每片SDRAM由4个1M×16位的内部Bank组成,这个Bank的选择由SDRAM的外部引脚BA0和BA1来完成,在我们的模块中BA0和BA1都连接在ColdFire5307的高端地址线上;其它信号和ColdFire都一一对应。UDQM和LDQM是SDRAM的高低字节片选信号,因为每片SDRAM都是16位架构,所以将两片SDRAM拼在一起变成32位时,其它信号线对两片SDRAM来说都是共用的,唯有数据线和这两个信号不是共用的。这两个信号应该分别接ClldFire的CAS0、CAS1和CAS2、CAS3。
(4)其它电路部分
100Mbps以太网控制模块的硬件设计还包括:4MB16位总线宽度Flash存储器、Real Time Clock、CPLD总线扩展等。Flash存储器主要用于存储程序代码和数据,其中下面要提到的bootloader及uClinux就是存放在Flash存储器中;Real Time Clock实时时钟接口电路可以给模块提供准确的时间信息;CPLD主要用于总线扩展。它们具体的电路连接比较简单,这里就不再作详细说明。
3 100Mbps以太网控制模块的软件架构
100Mbps以太网控制模块的软件开发是基于uClinux操作系统的,模块架构如图2所示。
bootloader用来完成系统启动和操作系统加载的工作。在8位单片机中,一般没有bootloader的概念。因为8位单片机系统的架构比较简单,系统复位以后就会运行ROM中的代码;而32位单片机本身需要初始化的内容很多。因为软件工作人员只需要关心开发操作系统和应用代码,硬件和底层软件工程师就必须提供初始化系统和下载操作系统以及应用代码的一个机制,就形成了bootloader,功能和PC机上常用的BIOS(Basic Input Output System)的功能是一样的。图3的bootloader是使用Motorola的dBUG为模板,参照其它bootloader而形成的。嵌入式操作系统uClinux在CodFire硬件平台上的下载及运行都是通过bootloader完成的。
正如前面提到的,模块的软件设计是基于uClinux操作系统的。这是因为uClinux操作系统是面向像ColdFire5307这种内部没有内存管理单元(MMU)的嵌入式微处理器的。它具有很好的扩充性和延续性,非常适合作为ColdFire系列操作处理器的操作系统。另外,uClinux操作系统源代码公开,是面向全世界开发工程师的免费操作系统;它支持最新的技术和器件,非常有利于软件的开发。
要使用uClinux操作系统进行软件开发,必须先对uClinux进行编译,并移植到ColdFire硬件平台上。UClinux的编译需要三个步骤。
(1)配置内核
命令就用make menuconfig。(在/uClinux-dist/目录下。)
首先是选择target,就是使用的芯片和板子。我们选用的是Cadre-III的板子,因为这和ColdFire5307硬件架构最接近。然后是选择内核。Gerg的内核包都同时包架构最接近。然后是选择内核。Gerg的内核包都同时包含了2.0.x和2.4.x两个内核。这两个内核各有好处,2.4.x支持的平台可能多些,但一些应用调试会很累(比如ppp);而2.0.x的内核支持的平台可能少些(比如vz328),但调试应用问题极少。
其它的配置就要看系统的需要。不明白的可以参照Documentation/和linux-2.0.x/Documentation/或linux-2.4.x/Documentation/下的文档,最重要的当然还是Configure.help。
(2)Make dep
配置完以后需要先使用make dep命令。这个命令会按照用户选择的配置架构,对每一个目录生成特定的makefile文件。
(3)Make
最后使用make命令生成目标代码。如果成功,在uClinux-dist下有一个images目录。下面有四个文件:
image.elf——ELF格式含调试信息和romfs的uClinux,可以在Linux环境下用gdb装载调试运行;
romfs.bin——romfs的二进制文件;
linux.bin——linux.bin和romfs.bin合并而成,并多了4字节的校验,这个文件的内容通过bootloader下载到RAM里后就可以直接从入口运行了。在我们的以太网控制模块中,这个文件会被下载到RAM里的0x20000地址处,这样设置了PC从0x20000开始运行就可以了。通过bootloader还可以将image.bin从RAM与到Flash中,避免掉电丢失。
这样就将uClinux移植到了ColFire硬件平台上。这时,系统启动后经过初始化,ColdFire5307的bootloader会自动加载运行uClinux操作系统。UClinux操作系统在初始化定义的硬件接口下,可以访问ASIX88796L。
在uClinux操作系统下为新的100Mbps以太网添加驱动也比较简单。关键的文件有两个:一个是uClinux/linux/drivers/net/目录下的ne.c文件;另一个文件是uClinux/linux/include/asm-m68knommu/目录下面的mcfne.h文件。其中mcfne.h文件主要定义端口的读写,也就是一些底层的读写操作;而ne.c文件是NE2000系列以太网接口芯片在uClinux操作系统下驱动的具体实现。对二者略微修改,就可以完成100Mbps以太网驱动的添加工作。
至此,uClinux操作系统就在ColdFire硬件平台上跑起来了,并且 安装好了100Mbps以太网的驱动,可以在上面进行具体的软件开发了。
4 100Mbps以太网控制系统的发展和未来
软件方面:随着uClinux内核的不断升级,将采用更新的内核来更好的支持多线程,提高软件的综合性能,并且完善应用代码。
硬件方面:将会采用具有更高速度和性能的V4sColdFire内核的ColdFire系列微处理器来设计硬件模块,比如ColdFire5470等。这些微处理器不但有更高的速度,而且内部带有FPU(浮点运算单元)和集成的MAC(以太网MAC层控制器),并且带有PCI控制器等。我们采用新的内核的微处理器可以使得数据采集的传输速度达到100Mbps的高速传输,使用PCI也使得我们的嵌入式模块可以和VME总线的桥芯片连接起来作为低成本的VME总线控制设备。这些都是系统将要发展的方向。另外可以将以太网控制器的速度扩展到1Gbps,这将会使系统的传输能力大幅度提高。