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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    S32G398 u-boot OCOTP 编程保险丝仅在复位后激活是为什么?

    cmp\' 失败,但在\'reset\'后成功。 有没有另一种方法可以 u-boot 会话更新 efuse 值?
    发表于 04-08 06:05

    一种基于电压监控器与内置自检机制的汽车摄像头功能安全设计方法

    本期,为大家带来的是《功能安全应用中使用电压监控器监控电压轨》,介绍了一种基于电压监控器与内置自检机制的汽车摄像头功能安全设计
    的头像 发表于 03-13 09:19 1.3w次阅读
    <b class='flag-5'>一种</b>基于电压监控器与内置自检机制的汽车摄像头<b class='flag-5'>功能</b>安全设计<b class='flag-5'>方法</b>

    如何使 i.MX93 上的 U-Boot SPL 和 ATF/BL31输出静音呢?

    到外部网络设备时,U-Boot SPL 和 ATF/BL31 启动消息会回显到外部设备的控制台。如果外部设备也启动,它可以将这些字符解释为输入命令,从而可能损坏其引导加载程序或配置。 我成功静音的内容
    发表于 03-09 08:28

    深入解析U-Boot image.c:RK平台镜像处理核心逻辑

    瑞芯微(RK)平台的嵌入式开发U-Boot作为核心的启动加载程序,负责完成镜像解析、校验、加载等关键流程。而image.c正是U-Boot
    的头像 发表于 02-24 16:46 1798次阅读
    深入解析<b class='flag-5'>U-Boot</b> image.c:RK平台镜像处理核心逻辑

    玩转U-Boot bdinfo:嵌入式bsp开发者的定制、扩展与裁剪实战指南

    作为嵌入式开发者,U-Boot 是我们调试、适配板卡的核心工具,而 bdinfo 命令更是板级信息调试的“利器”——它能直观打印内存布局、Flash 信息、网络配置、时钟频率等核心参数。但原厂
    的头像 发表于 02-24 15:26 843次阅读
    玩转<b class='flag-5'>U-Boot</b> bdinfo:<b class='flag-5'>嵌入</b>式bsp开发者的定制、扩展与裁剪实战指南

    U-Boot 引导加载程序 TFTP 超时的奇怪解决方法

    U-Boot 引导加载程序 TFTP 超时的奇怪解决方法 (Star64 JH7110 RISC-V SBC)
    发表于 02-24 07:01

    U-Boot SPL核心文件spl.c深度解析:从启动流程到调试优化

    嵌入式系统开发U-Boot 的 SPL(Secondary Program Loader)扮演着至关重要的角色,它是系统上电后执行的第
    的头像 发表于 02-05 14:08 432次阅读
    <b class='flag-5'>U-Boot</b> SPL核心文件spl.c深度解析:从启动流程到调试优化

    深入解析U-Boot TPL代码:嵌入式启动的“第棒”背后的秘密

    嵌入式系统启动过程,从按下电源键到操作系统开始运行,中间藏着系列精密的初始化步骤。今天我们就来拆解 Rockchip 平台 U-Boot
    的头像 发表于 02-05 14:07 1300次阅读
    深入解析<b class='flag-5'>U-Boot</b> TPL代码:<b class='flag-5'>嵌入</b>式启动的“第<b class='flag-5'>一</b>棒”背后的秘密

    深入解析U-Boot命令处理核心文件:功能、调试与开发价值

    嵌入式系统开发U-Boot 作为主流的引导加载程序,其命令处理、交互逻辑和自动启动流程是核心功能模块。本文将围绕command.c、c
    的头像 发表于 02-03 15:44 994次阅读
    深入解析<b class='flag-5'>U-Boot</b>命令处理核心文件:<b class='flag-5'>功能</b>、调试与开发价值

    深入解析U-Boot核心文件board_f.c:知识点、调试要点与开发价值

    嵌入式系统开发U-Boot 作为应用最广泛的引导程序,其底层初始化逻辑直接决定了硬件启动的稳定性与可靠性。
    的头像 发表于 02-03 15:38 865次阅读
    深入解析<b class='flag-5'>U-Boot</b>核心文件board_f.c:知识点、调试要点与开发价值

    解析Rockchip平台U-Boot核心文件:boot_rkimg.c到底做了什么?

    嵌入式开发U-Boot 作为引导程序的 “中流砥柱”,负责初始化硬件、加载内核并启动系统。对于 Rockchip 平台的设备(如常见的开发板、智能终端),
    的头像 发表于 02-03 15:29 951次阅读
    解析Rockchip平台<b class='flag-5'>U-Boot</b>核心文件:<b class='flag-5'>boot</b>_rkimg.c到底做了什么?

    深入理解 RK3506 U-Boot 重定位:从代码到原理

    嵌入式系统U-Boot 作为引导加载程序,其启动流程的核心环节之就是 重定位(Relocation) 。对于 RK3506 这类基于
    的头像 发表于 11-28 07:05 984次阅读
    深入理解 RK3506 <b class='flag-5'>U-Boot</b> 重定位:从代码到原理

    一种带通滤波器无位置传感器转子检测的应用

    摘 要:论文研究了一种直流无刷电机的无位置传感器的转子位置的硬件电路检测方法。结合传统“反电动势\"方法,分析并设计了一种新的带通滤波器延时检测电路。该电路不仅可以抑制高频分量和消除直
    发表于 08-04 14:56

    飞凌嵌入式ElfBoard ELF 1板卡-uboot编译u-boot/u-boot.bin/u-boot.imx

    u-boot文件就是编译流程章节讲的,链接器将链接各.o文件之后生成的.elf文件,该文件包含了大量的调试信息、地址信息和注释信息,不能被直接执行,需要转换成为可执行的u-boot.bin文件,而
    发表于 05-22 11:24

    飞凌嵌入式ElfBoard ELF 1板卡-Uboot

    上节中讲到U-Boot是BootLoader的一种U-Boot全称为Universal Boot Loader,即通用的BootLoader,所谓通用就是指它适用于多种
    发表于 05-22 10:44