ZYNQ - 嵌入式Linux开发 -09- Uboot介绍

简介: ZYNQ - 嵌入式Linux开发 -09- Uboot介绍

写在前面


本文主要对U-Boot介绍进行介绍,并讲述了U-Boot和FSBL之间的关系。

U-Boot介绍


U-Boot的作用


U-boot全称是Universal Boot Loader,是一个通用的启动、引导程序。他的主要作用是启动引导Linux内核或者其他内核。支持多种操作系统,如NetBSD,Vxworks,QNX,RTEMS,ARTOS,Lynxos,android;同时支持多种硬件平台处理器,如arc,m68k,microblaze,mips,nds32,nios2。

它在完成启动内核之前,他的镜像文件通常存储在开发板的SD卡或者QSPI的这些外部存储设备中,在使用时一定要将内核镜像文件拷贝到DDR内存当中,所以U-boot需要将内核镜像文件从SD卡或者外存中读取出来,并且拷贝到DDR中,所以在U-Boot程序中包含了SD卡或者QSPI等设备的驱动程序。同时还需要DDR的驱动程序,因为在拷贝到DDR之前将DDR进行初始化。

U-Boot的本质


U-Boot的本质是一个开源的裸机程序,这个裸机程序程序比较复杂,这个跟他的功能有关系,支持功能比较多。

U-Boot的功能

包含了SD卡或者QSPI等设备的驱动程序,还包含其他的总线协议的驱动程序,除此之外还包含文件系统和网络相关的协议等部分。

U-Boot的分类


主要分为以下几类,一类是U-Boot官方提供的U-Boot源码,一类是Soc厂商提供的U-Boot源码,还有开发板厂商进行移植的Soc厂商提供的U-Boot源码。

U-Boot和FSBL之间的关系


U-Boot的作用主要是用于启动Linux内核,FSBL是开发板在开机上电之后运行的第一段代码,作用就是去启动u-boot (在嵌入式1inux系统,ZYNQ平台)

如果想启动开发板进行逻辑程序应用开发,我们要先制作一个启动文件Boot.BIN这个启动文件一般包括fsbl +用户裸机程序+ bit。

那么在静态情况下,BOOT . BIN是存放在QSPI或者SD卡里边的系统启动之后,FSBL代码会第一一个运行,它的作用是去引导、启动用户裸机程序。首先要将用户裸机程序从BOOT.BIN这个组合文件将读取出来并且存放到DDR内存,再起启动用户的裸机程序。

fsbl代码需要能够满足以下几个条件:

  1. fsbl代码有SD卡或者QSPI设备的驱动程序。
  2. fsbl代码要能够初始化DDR芯片。

在嵌入式Linux系统当中,对于zynq平台来说,BOOT. BIN结构如下:

BOOT.BIN = fsbl + u-boot + bitstream

目录
相关文章
|
9天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
61 13
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
116 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
存储 Linux 开发工具
如何进行Linux内核开发【ChatGPT】
如何进行Linux内核开发【ChatGPT】
|
4月前
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
60 6
|
3月前
|
Linux
用QEMU模拟运行uboot从SD卡启动Linux
用QEMU模拟运行uboot从SD卡启动Linux
|
4月前
|
消息中间件 算法 Unix
Linux设备驱动开发详解1
Linux设备驱动开发详解
62 5
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
153 3
|
4月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
219 0
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
107 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
377 6