0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教大家一种在U—BooT中嵌入千兆网络功能的方法

电子工程师 来源:华仔 作者:华仔 2021-03-04 17:39 次阅读

U-BOOT是德国DENX小组开发的用于多种嵌入式微处理器的引导加载程序,它是系统上电后运行的第一段程序代码,用于初始化目标板硬件,为嵌入式操作系统提供目标板硬件配置信息,并装载、引导和运行嵌入式操作系统等。U—BooT支持网络功能,在下载操作系统内核和大的文件系统时,比其它不支持网络的引导加载程序速度更快、更方便。目前U—BOOT仅支持10M/100M的网络功能,随着科学技术发展,千兆网络功能必将大量应用在嵌入式系统中。本文介绍了一种让U—BOOT支持千兆网络功能的方法,可以使U—BOOT功能更加强大,使用更加方便。

U—BOOT简介

U—BOOT的全称是Universal Boot Loader,它遵循GPL条款的开放源码项目,支持多种处理器,如ARM、PowerPC、MIPS等,也支持LinuxVxWorks、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、全双工模式等。数据发送就是将上层协议打

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    一种简单高效配置FPGA的方法

    本文描述了一种简单高效配置FPGA的方法,该方法利用微处理器从串行外围接口(SPI)闪存配置FPGA设备。这种方法减少了硬件组件、板空间和成本。
    的头像 发表于 10-24 14:57 294次阅读
    <b class='flag-5'>一种</b>简单高效配置FPGA的<b class='flag-5'>方法</b>

    ti814x-ddr3-init-u-boot

    电子发烧友网站提供《ti814x-ddr3-init-u-boot.pdf》资料免费下载
    发表于 10-12 10:38 0次下载
    ti814x-ddr3-init-<b class='flag-5'>u-boot</b>

    一种利用wireshark对远程服务器/路由器网络抓包方法

    一种利用wireshark对远程服务器/路由器网络抓包方法
    的头像 发表于 09-21 08:03 1777次阅读
    <b class='flag-5'>一种</b>利用wireshark对远程服务器/路由器<b class='flag-5'>网络</b>抓包<b class='flag-5'>方法</b>

    STM32引脚BOOT1在哪里

    STM32是STMicroelectronics(意法半导体)推出的系列32位微控制器,广泛应用于嵌入式系统设计。关于STM32的BOOT1引脚,它主要与系统的启动模式有关。 BOOT
    的头像 发表于 08-22 09:43 1339次阅读

    stm32boot0和boot1对应哪个p引脚

    STM32系列微控制器是一种广泛应用于嵌入式系统领域的32位微控制器。STM32系列微控制器BOOT0和
    的头像 发表于 08-22 09:40 2176次阅读

    千兆网络上行下行标准

    : 理论上的标准 下行速率:千兆网络的下行速率理论上应达到1000Mbps(兆比特每秒),也常被称为1Gbps(吉比特每秒)。通信行业千兆
    的头像 发表于 07-22 09:49 4372次阅读

    机器视觉嵌入的应用

    机器视觉嵌入式系统的应用是个广泛而深入的话题,涉及到许多不同的领域和技术。 机器视觉嵌入
    的头像 发表于 07-16 10:30 428次阅读

    介绍一种嵌入式Linux的录音降噪方案

    降噪不仅只能从硬件入手,本文为您介绍一种嵌入式Linux的录音降噪方案。该方案完全依靠软件实现,最大程度上降低投入。
    的头像 发表于 05-21 11:52 516次阅读

    【米尔-TIAM62开发板-接替335x-试用评测】+(五)手把手玩转U-Boot控制CPU管脚

    使用GPIO管脚的嵌入式工程师,就仿佛经历了场“科技魔法秀”。 U-Boot,你可以使用GPIO(General Purpose In
    发表于 01-08 10:02

    stm32boot0和boot1怎么接

    STM32微控制器BOOT0和BOOT1是用于控制启动模式和引导加载程序的引脚。启动模式决定了从哪个存储器中加载程序执行,而引导加载程序是
    的头像 发表于 12-27 10:22 1.7w次阅读

    u-boot汇编启动阶段的相关操作介绍

    u-boot汇编启动阶段对系统的些初始化 当cpu交由u-boot接管进入u-boot后, 首先会到_start符号处开始执行初始化,
    的头像 发表于 12-07 11:22 561次阅读

    u-boot armv8链接脚本

    u-boot armv8链接脚本 进行源码分析之前,首先看看u-boot的链接脚本,通过链接脚本可以从整体了解u-boot的组成,并且
    的头像 发表于 12-07 11:19 569次阅读

    u-boot源码的编译配置方式

    ppc-linux-gnu-等等; • u-boot有几个配置是需要由对应board配置的。SYS_ARCH,SYS_CPU,SYS_SOC,SYS_BOARD,SYS_VENDOR,SYS_CONFIG_NAME; •
    的头像 发表于 12-07 11:12 991次阅读

    linux网络配置的3种方法

    Linux是一种流行的操作系统,广泛应用于服务器和网络设备。Linux系统提供了多种方法来配置网络连接,使得
    的头像 发表于 11-27 14:33 4210次阅读

    含受控源网络戴维宁等效电路的一种求解方法

    电子发烧友网站提供《含受控源网络戴维宁等效电路的一种求解方法.pdf》资料免费下载
    发表于 11-18 11:52 0次下载
    含受控源<b class='flag-5'>网络</b>戴维宁等效电路的<b class='flag-5'>一种</b>求解<b class='flag-5'>方法</b>