老古开发网首页
导航:老古开发网首页文章索引索引第2885页文章分类技术文章第30页→[一种在U—BooT中嵌入千兆网络功能的方法]
| -文章搜索 - 最新文章 - |

第48033篇:一种在U—BooT中嵌入千兆网络功能的方法

发布时间:2007年3月12日 点击次数:232
来源:   作者:
 

山东大学鸥玛研究所 赵小朴 宋华 浪潮集团超越数控 李莉

    引言

    U-BOOT是德国DENX小组开发的用于多种嵌入式微处理器的引导加载程序,它是系统上电后运行的第一段程序代码,用于初始化目标板硬件,为嵌入式操作系统提供目标板硬件配置信息,并装载、引导和运行嵌入式操作系统等。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[1];

    macid0_val=(tmp16<<8) │ bd>bi_enetaddr[0];

    tmp16=bd->bi_enetaddr[3];

    macid1_val=(tmp16<<8)│ bd>bi_enetaddr[2];

    tmp16=bd->bi_enetaddr[5];

    macid2_val=(tmpl6<<8)│ bd>bi_enetaddr[4];

    WRITE_MACREG(MACID0,macid0_val);

    WRITE_MACREG(MACID1,macid1_val);

    WRITE_MACREG(MACID2,macid2_val);

    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平台,对其它类似的系统也有很好的借鉴作用,本文介绍的方法已经在产品中得到应用,效果良好。


欢迎进入老古论坛进行讨论
[技术文章] 相关文章:
LPC2000系列的CAN总线验收滤波器应用
简介:
西南交通大学 曹均平 王长林 CAN(Controller Area NetWork)总线,即控制器局域网总线,是由德国Bosch公司于1982年开发和推出的最早用于汽车内部测量与执行部件之间的数据通信协议。在20多年的历史中,CAN总线在许多领域得到了应用,是到目前为止唯一有国际标准的现场总线。 CAN现场总线按照国际标准化组织ISO提出的"开放系统互联(OSI)"参考模式,实现其中的物理层、数据链路层......

在同一条I2C总线上挂接多个DS1859器件的方法
DS26303短程线路接口单元与IDT82V2048的比较
ITPM在雷达发射机高压电源中的应用
AMBE-2000TM声码器在数字加密电话中的应用
 
下一个:[新品快递]国半射频功率检波器LMV221具宽温度范围发射功率稳定特性
简介:
美国国家半导体公司(National Semiconductor Corporation)宣布推出业界首款保证在不同温度下仍能保证准确测量的射频功率检波器LMV221,确保第三代(3G)移动电话可以灵活控制射频功率。 美国国家半导体的LMV221射频功率检波器可以准确控制射频发射功率,确保发射功率可在广阔的温度范围内保持稳定,而且在广阔的动态范围内也准确无误。这款芯片适用于不同的频带,覆盖范围介于50MHz与3.......

上一个:[综合电子]SEP3203处理器的FPGA数据通信接口设计

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:47毫秒