基于S3C2440A的嵌入式U-BOOT千兆网络功能设计

发布者:CW13236066525最新更新时间:2012-07-31 来源: 21ic 关键字:S3C2440A  U-BOOT  千兆网络 手机看文章 扫描二维码
随时随地手机看文章

U—BooT支持网络功能,在下载操作系统内核和大的文件系统时,比其它不支持网络的引导加载程序速度更快、更方便。目前U—BOOT仅支持10M/100M的网络功能,随着科学技术发展,千兆网络功能必将大量应用在嵌入式系统中。本文介绍了一种让U—BOOT支持千兆网络功能的方法,可以使U—BOOT功能更加强大,使用更加方便。

U—BOOT简介

U—BOOT的全称是Universal Boot Loader,它遵循GPL条款的开放源码项目,支持多种处理器,如ARM、PowerPC、MIPS等,也支持Linux、VxWorks、QNX、RTEMS、ARTOS、LynxOS等嵌入式操作系统。

U-BOOT包含两种不同的工作模式:启动加载模式和下载模式。启动加载模式也称为自主模式,即U—BOOT从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,这种模式是U—BOOT的正常工作模式。下载模式就是在开发或生产过程中,U—BOOT通过网络连接等通信手段从主机下载操作系统内核和文件系统等到目标机的RAM中,然后再写到目标机上的FLASH类固态存储设备中。U—BOOT允许用户在这两种工作模式间进行切换,系统启动时会延时等待一段时间,如果这时用户没有按键,U—BOOT就默认进入启动加载模式。

U—BOOT代码采用一种高度模块化的编程方式,可以很方便地在不同的硬件平台上进行移植。U—BOOT下包含多个目录,如图1所示。其中BOARD目录下存放了所有其支持的目标板子目录,比如BOARD/SMDK2440/就是本文将要用到的目标板;COMMON目录是与体系结构无关的文件,实现各种命令的C文件;CPU目录存放了其支持的CPU类型,比如arm920t、mips、mpc8260和nios等,每个特定的子目录中都包括cpu.c和interrupt.c、start.s;DRIVERS目录存放了各种外设接口的驱动程序,其中就包含本文用到的千兆网络的驱动程序;FS目录存放了一些文件系统,U—BOOT现在支持cramfs、fat、fdos、jffs2和registerfs;net目录存放的是与网络有关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现,INCLUDE目录存放了一些相关头文件,还有对各种硬件平台支持的汇编文件、系统的配置文件和对文件系统支持的文件。



硬件平台

本文使用的硬件平台是基于S3C2440A的开发板和基于非PCI千兆以太网控制芯片AX88180的嵌入式网卡,如图2所示。S3C2440A是ARM920T核的16/32位RISC嵌入式微处理器,运行频率高达500MHz,开发板上有64M NAND闪存、64M SDRAM;网卡由MAC芯片AX88180、PHY芯片88E1111、RJ45等电路组成;S3C2440A目标板与网卡之间采用目标板32位扩展总线相连接,在产品设计时也可以将这两部分设计在同一块板上。




驱动程序

在U-BOOT中嵌入千兆网络功能需要设计千兆网卡驱动程序,并在U—BOOT中进行移植,在相应的硬件平台上实现通过千兆网口下载等功能。网卡驱动程序主要由初始化程序eth_init(bd_t*bd)、关闭网络设备程序eth_halt(void)、发送数据包程序eth_send(volatilevoid*packet,intlength)、接收数据包程序inteth_rx(void)等组成。初始化程序的工作主要是配置和初始化硬件,在初始化程序里可以完成对网络控制芯片AX88180和PHY芯片的配置,比如将接口设置为1000Mbps、全双工模式等。数据发送就是将上层协议打包好的数据放在发送数据缓冲区,然后由网卡发送到网络上;数据接收就是在网卡接收到网络传来的数据包产生中断后,从缓冲区将数据取出交给上层协议程序进行解包处理。中断服务程序处理网卡发送数据包后、接收到数据包后产生的中断以及PHY产生的中断等。

网卡初始化程序如下:

int eth_init(bd_t*bd)
{
memset(&axlocal,0,sizeof(AX88180_PRIVATE));
RESET_MAC;
DISABLE_INTERRUPT;
WRITE_MACREG(CMD,WAKEMOD);
tmp16=bd->bi_enetaddr;
macid0_val=(tmp16<<8) │ bd>bi_enetaddr[0];
tmp16=bd->bi_enetaddr;
macid1_val=(tmp16<<8)│ bd>bi_enetaddr;
tmp16=bd->bi_enetaddr;
macid2_val=(tmpl6<<8)│ bd>bi_enetaddr;
WRITE_MACREG(MACID0,macid0_val);
WRITE_MACREG(MACID1,macid1_val);
WRITE_MACREG(MACID2,macid2_val);[page]

ax88180_PHY_initial();
ax88180_meida_config();
WRITE_MACREG(RXFILTER,DEFAULT_RXFILTER);
INT TXRX VARIABLES;
READ_MACREG(ISR,tmp_regval);
PRINTK(INIT_MSG,”ax88180;The interrupt status="0x"%081x\n”.tmp_regval);
if(tmp_regval)
WRITE_MACREG(ISR,tmp_regval);
WRITE_MACREO(CMD,RXEN │ TXEN │ WAKEMOD);
return0;}

驱动移植

驱动移植是在基于S3C2440A硬件平台的U—BooT中添加驱动程序代码和相关配置,具体如下:

1.在drivers/目录中添加网口设备驱动程序ax88180.c和ax88180.h。

2.在lib_arm/board.C中相应位置(参考CS8900)添加如下代码:

#ifdef CONFIG_DRIVER_AX88180
extern Void ax88180_get_enetaddr(uchar*addr);
#endif
#ifdef CONFIG_DRIVER_AX88180
ax88180_get_enetaddr(gd一>bd>bi_enetaddr);
#endif

3.在include/configs/smdk2440.h中相应位置(参考CS8900)添加如下代码:

#define CONFIG_DRIVER_AX88180 1 #define AX88180_BASE
Ox08000000

4.最后在drivers/Makefile中加入ax88180.o,重新编译生成U—BooT即可。

结语

U-BOOT广泛应用在嵌入式系统中,本文阐述的方法可以使U-BOOT功能更强大、使用更方便,文中介绍的硬件平台给嵌入式系统千兆网络功能的设计提供了一定的指导。本设计虽然基于S3C2440A平台,对其它类似的系统也有很好的借鉴作用,本文介绍的方法已经在产品中得到应用,效果良好。

 

关键字:S3C2440A  U-BOOT  千兆网络 引用地址:基于S3C2440A的嵌入式U-BOOT千兆网络功能设计

上一篇:使用嵌入式处理器对可编程逻辑器件重编程
下一篇:S3C2440的camera接口特性及WinCE 下的驱动

推荐阅读最新更新时间:2024-03-16 13:04

u-boot移植(十三)---代码修改---裁剪及环境变量 一
一、内核裁剪   内核的裁剪首先就是修改我们的配置文件,即 include/configs/jz2440.h 文件,里面定义的很多宏,我们也许用不上的就要去掉。 1 /* 2 * (C) Copyright 2002 3 * Sysgo Real-Time Solutions, GmbH www.elinos.com 4 * Marius Groeger mgroeger@sysgo.de 5 * Gary Jennejohn garyj@denx.de 6 * David Mueller d.mueller@elsoft.ch 7 * 8 * Configuation settings for the
[单片机]
<font color='red'>u-boot</font>移植(十三)---代码修改---裁剪及环境变量 一
【嵌入式】从零开始移植U-boot到mini2440(一)——U-boot编译篇
U-boot版本:2020/5/2 编译环境:Ubuntu 16.04 arm-none-eabi-gcc version 4.9.3 20150529 (prerelease) (15:4.9.3+svn231177-1) 运行环境:mini2440(s3c2440,arm920t) 代码仓库:git@github.com:JingyeLi/u-boot_2440.git commit hash:45516b370859b022b9bf2c9fb87318b1fa2d34a3 GitHub上下载最新的u-boot git@github.com:u-boot/u-boot.git 实际上最新的u-boot(好像是从2017年开
[单片机]
u-boot-2009.08在mini2440上的移植 增加yaffs2文件系统
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 5.1,添加Yaffs2镜像烧写功能 由于现在很多使用Nand Flash 的系统,在Linux 下都用Yaffs2作为存储数据的文件系统,甚至是根文件系统。所以在BootLoader 下能够烧写Yaffs2 映像文件变得很必要。对于Yaffs2 映像烧写的支持其实
[单片机]
U-Boot移植(3)增加对S3C2440的支持
6、S3C2440是S3C2410的改进版,它们的操作基本相似,只是在系统时钟的设置、NAND Flash控制器的操作等方面有一些小差别。。而下面我要做的就是令一个U-Boot二进制代码既可以在S3C2410上运行,也可以在S3C2440上运行。 虽说我的板也是S3C2410的,但是增加S3C2440的U-Boot练习,可以提高我们的能力,为后面的学习打下基础。 GSTATUS1寄存器的值:0x32410000表示S3C2410,0x32410002表示S3C2440。 S3C2410:FCLK=200MHZ;S3C2440:FCLK=400MHZ,UCLK=48MHZ; 搞清楚之
[单片机]
<font color='red'>U-Boot</font>移植(3)增加对S3C2440的支持
Windows下u-boot-2011.03在Mini2440移植详解(5)
增加Nand Flash ECC的支持 又参考了网址http://blog.csdn.net/fulinus/article/details/8737129 修改相关文件: 1.u-boot-2011.03driversmtdnands3c2440_nand.c 2.u-boot-2011.03includeconfigsmini2440.h 一开始一直不能确定的是:nand- ecc.size 和nand- ecc.bytes到底是多少?板子上带的Nand Flash是:K9F1208U0B:64MB,8位。每1页包含512字节的main数据区和16字节的spare数据区。main区用于存储数据,spare区
[单片机]
Windows下u-boot-2011.03在Mini2440移植详解(5)
25千兆以太网怎样让网络更快更智能
eeworld网消息,直到最近,万兆以太网(10GbE)依然是高性能数据中心标准服务器和架顶式(ToR)交换机的速度规范。然而,在过去几年中,很多因素都促使数据中心的带宽需求越来越高,这包括物联网(IoT)设备数据爆炸式的增长,在线视频流的激增,以及需要支持吞吐量越来越大的服务器和存储解决方案等。数据中心正面临网络数据大量增长这一事实,很显然,即使10GbE速度也不够,因此,很多公司正在考虑采用速度更高的以太网来满足当前和未来的带宽需求,问题是采用25GbE、40GbE还是100GbE。本文将探讨在向更高速度迈进的过程中,对于要求成本和性能相对平衡的公司而言,为什么25GbE是最佳的以太网速度。 在25GbE IEEE标准化解决方
[网络通信]
U-Boot在FL2440上移植(四)----支持网卡DM9000和烧写yaffs文件系统
一 支持网卡芯片DM9000 在driver下,有网卡驱动DM9000x.c 和 DM9000x.h DM9000接在BANK4,位宽16 在include/configs/TX2440.h中设置网卡基地址: 在56行处,将CS8900的定义改成: #define CONFIG_DRIVER_DM9000 1 #define CONFIG_DM9000_BASE 0x20000300 #define DM9000_IO CONFIG_DM9000_BASE #define DM9000_DATA (CONFIG_DM9000_BASE + 4) #define CONFIG_DM9000_USE_16BIT
[单片机]
千兆网络接口在S3C2440A系统中的应用
嵌入式系统广泛应用在工业测控、智能仪表、智能家庭等很多领域。随着嵌入式系统应用范围的不断扩展及网络应用的日益普及,使得越来越多的嵌入式系统需要网络功能。三星公司S3C2440A是国内应用较多的嵌入式微处理器之一,在S3C2440A应用系统中,目前只支持10/100M的网络接口,有很大的实用价值,既可以拓展S3C2440A的应用领域,也可以给其它嵌入式系统高速接入网络提供一种简单易行的参考。 设计方案 本系统主要由S3C2440A、存储器、AX88180、千兆PHY芯片88E1111、嵌入式Linux、网络驱动程序等组成(见图1)。嵌入式Linux内核负责系统任务的管理并集成TCP/IP协议,方便实现网络功能控制。S3C2440
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved