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

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

    评论

    相关推荐

    LDO嵌入式系统的应用 常见LDO故障及解决方法

    LDO嵌入式系统的应用 LDO(Low Dropout Regulator,低降压线性稳压器)是一种常用的电源管理集成电路,它在嵌入式系
    的头像 发表于 12-13 09:08 337次阅读

    如何在Petalinux下Patch u-boot源码

    软件开发过程我们经常遇到用 Patch 来传递和更新代码的场景。本文以个端到端的例子来演示 Petalinux 使用过程,如何给
    的头像 发表于 12-04 16:26 1022次阅读
    如何在Petalinux下Patch <b class='flag-5'>u-boot</b>源码

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

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

    一种半动态环境的定位方法

    非静态环境中进行地图绘制和定位是机器人学的基本问题。之前的方法大多关注静态和高度动态的物体,但在半动态环境,如果不考虑低动态物体(如停放的汽车和行人),可能会导致定位失败。我们提出了语义建图
    的头像 发表于 09-30 14:40 264次阅读
    <b class='flag-5'>一种</b>半动态环境<b class='flag-5'>中</b>的定位<b class='flag-5'>方法</b>

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

    一种利用wireshark对远程服务器/路由器网络抓包方法
    的头像 发表于 09-21 08:03 2853次阅读
    <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 1886次阅读

    stm32boot0和boot1对应哪个p引脚

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

    千兆网络上行下行标准

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

    机器视觉嵌入的应用

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

    基于助听器开发的一种高效的语音增强神经网络

    受限的微控制器单元(microcontroller units,MCU)上,内存和计算能力有限。在这项工作,我们使用模型压缩技术来弥补这差距。我们HW上对RNN施加约束,并描述了一种方法
    发表于 06-07 11:29

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

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

    PHP数组的使用方法

    PHP数组的使用方法! PHP是一种广泛使用的网络编程语言,它的数组功能非常强大且灵活。数组是一种
    的头像 发表于 01-12 15:11 547次阅读

    【米尔-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.8w次阅读