全网最全面最易懂的U-Boot解读

AI摘要

本文介绍了计算机领域“boot”的含义,重点讲解了U-Boot。U-Boot是通用开源引导加载程序,支持多种处理器架构和操作系统。还阐述了其制作、源码结构,对比了TFTP和NFS两种启动方式,分析了开发难度,以及不同情况下烧写U-Boot的操作区别。

一、boot为什么有启动、开机的意思?

"Boot"一词源于英语单词"bootstrap(靴筒后的拉绳)",最初是指通过拉起靴子上的拉绳来穿上靴子。在计算机领域中,"boot"被用来表示计算机系统的启动过程,即将计算机从关机状态转换为可运行操作系统的状态。

计算机的启动过程涉及一系列步骤,其中包括硬件初始化、加载引导程序和操作系统等。当计算机通电或重启时,它会首先执行一些基本的硬件初始化操作,例如检测和配置内存、外围设备等。然后,计算机会加载引导程序(Bootloader),这是一个特殊的软件,负责启动操作系统。

引导程序的主要任务是将操作系统加载到计算机的内存中,并将控制权交给操作系统,使其能够开始执行。引导程序通常存储在计算机的固件中,例如BIOS(基本输入/输出系统)或UEFI(统一可扩展固件接口)。引导程序还可以提供其他功能,如设备驱动程序加载、启动参数设置等。

因此,"boot"一词在计算机领域中用来表示整个启动过程,它涉及从关机状态开始,逐步加载和配置系统组件,最终使得计算机能够运行操作系统并进入可用状态。

 

由上图可以看出,U-Boot是通用的引导程序,对硬件和系统没有要求,支持所有主流架构的芯片,所以,U-Boot是当今最流行的嵌入式引导加载程序。 

二、 U-Boot是什么?

U-Boot是Das U-Boot的简写。 

u-boot全称 Universal Boot Loader,是遵循GPL条款的开放源码项目,U-Boot的作用是系统引导。

U-Boot是一款开源的引导加载程序(Bootloader),可用于嵌入式系统中。它由德国的DENX公司开发,支持多种处理器架构,包括ARM,MIPS,PowerPC等。

百度百科:U-Boot不仅仅支持嵌入式Linux系统的引导,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS, android。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和执着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。

①创始人以及起源: 

Uboot学习(二)之Uboot能够实现哪些功能-腾讯云开发者社区-腾讯云

这里我们简单来了解一下Uboot的由来。Uboot一开始是由一个德国大神Magnus Damm(马格努斯 达姆) 发起的一个项目,这个项目后面被 Wolfgang Denk (沃尔夫冈 登克)转移到了 SourceFore.net 上来了,但是SourceForge.net上不允许以数字来开头的项目命名名称,所以改名为 PPCBoot。PPCBoot 在 2000 年 7 月 19 日 第一次被公开发布出来了;其实, Uboot 从 FADSROM、8xxROM、PPCBOOT逐步发展演化而来的。这期间被很多人使用,甚至被许多Soc(System on Chip的缩写,称为芯片级系统,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。)厂商支持,这更加推动了 Uboot的广泛使用了。最终,Uboot经过多年发展,已经成为业内 bootloader (引导程序)标准了,而且现在大部分的嵌入式设备都会默认使用 Uboot 来作为 bootloader了。

用U-BOOT构建嵌入式系统的引导装载程序 _wolfgang denk_yangfei_1108的博客-优快云博客

U-BOOT是由德国的工程师Wolfgang Denk从8XXROM代码发展而来的,它支持很多处理器,比如PowerPC、ARM、MIPS和x86。目前,U-BOOT源代码在sourceforge网站的社区服务器中,Internet上有一群自由开发人员对其进行维护和开发,它的项目主页是http://sourceforge.net/projects/U-BOOT。U-BOOT的最新版本源代码可以在Sourceforge的CVS服务器中匿名获得。
#cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT login
#cvs -z6 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT / co -P modulename

② 创始人去世

Wolfgang Denk

沃尔夫冈·登克

斯特凡诺·巴比伦的  伦敦的斯巴比奇
Fri Oct 21 17:11:33 CEST 2022

亲爱的U-Boot社区,

我很遗憾地通知你,沃尔夫冈·登克,
上周去世了。我们失去了一个伟大的开发者
好朋友。

我在25年前第一次见到沃尔夫冈,那时我们在
同样的公司。我被雇为顾问(当时
经常使用的)实时操作系统。我没时间介绍我,因为沃尔夫冈
打断我的话:"只要安装Linux!"。我当然知道了。它
是他给我的第一个好建议。很多人也跟着。

沃尔夫冈是当时开源的先驱者和坚定支持者。
当Linux为嵌入式系统启动了它的第一步。在许多情况下
他与客户进行了激烈的讨论,以解释
开放源代码的优势,他拒绝了商业合同
客户违背了他的原则。我们会想念他的。

安息吧,朋友

斯特凡诺·巴比伦的

--
=====================================================================
丹克斯软件工程有限公司,常务董事:沃尔夫冈丹克
慕尼黑,办事处:德国,格罗斯贝尔。
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: 伦敦的斯巴比奇

③denx公司DENX Software Engineering – the Embedded Linux Experts

扩展文章:

站在芯片原厂角度移植最新u-boot 2020.07到jz2440开发板(1)(全部驱动使用设备树与dm设备模型) | 码农家园 【嵌入式】构建嵌入式Linux系统(uboot、内核、文件系统) - 知乎

2 -- uboot的介绍-mingrentian-ChinaUnix博客

1.u-boot的简介

        u-boot 全称Universal Boot Loader, 即通用bootloader,是德国的DENX软件工程中心开发的遵循GPL条款的开源项目,从它的名字就可以看出来u-boot的雄心,不过u-boot现在也确实是嵌入式平台上用的最多的bootloader了,其支持powerpc, arm, mips, x86等等架构(不过我还没有见过用u-boot引导的pc机^_^)。u-boot的下载地址是ftp://ftp.denx.de/pub/u-boot/。

        这里提一下DENX,uboot让DENX享誉全球,以前uboot还在sourceforge发布,不过现在新版本只能在DENX的网站上才能下到了,最新版本是09年3月发布的,除了u-boot之外,他们还开发了比较有名的denx linux(一种嵌入式linux的SDK包,支持平台powerpc, arm, mips,里面有完整的kernel, filesystem, uboot, 目前最新版本的内核为2.6.25),整合的很不错,现在有很多公司都推荐使用denx 的ELDK(Embedded Linux Development Kit ),  有兴趣的朋友可以试试。

2.u-boot的制作

        如果当前的u-boot支持你的平台,制作u-boot是非常简单的,你只需要按照下面的流程进行编译:

     make clean

     make distclean

     make smdk2410_config

     make

        之后得到的u-boot.bin就是你的目标文件,但是仅仅知道上面的几个步骤没有任何意义,因为很多的时候uboot里面并没有你的开发板平台对应的配置项,而只有相似平台的,在这种情况下我们应该如何处理了?这里首先需要介绍一下u-boot的源码结构。

        uboot下面的README和docs中有很多开发和使用文档,其实现在网上的u-boot移植的方法都是按照那些文档来作的,只可惜是英文,读起来比较郁闷,不过有位朋友翻译了README中的一小部分,网址是http://blog.ednchina.com/longhaihai/174867/message.aspx,感兴趣的朋友可以自己去看。

3.u-boot的源码结构

子目录

描述

board

开发板相关

common

通用的函数

cpu

cpu相关,对应不同的架构的cpu,子目录进一步细分了

disk

磁盘驱动和相关的操作代码

doc

开发文档,还有使用文档

lib_generic

通用库函数

lib_xxx

xxx架构下的通用文件

libfdt

支持平台设备树的库, 基于open firmware结构,一般不会用到

driver

各类设备的驱动,根据平台配置会编译不同的驱动

fs

文件系统

include

头文件和开发板的配置文件

net

网络子系统

nand_spl

支持从nand flash启动,但支持的cpu的种类也不是很多

onenand_ipl   

支持从onenand(三星公司开发的结合了nand和nor技术的flash)启动的代码

post

上电自检程序

tools      

制作S-Record(motorola 制定的一种烧写格式,很简单),u-boot镜像等的工具

example

一些可以在u-boot上运行的小示例程序

api

一些扩展应用的独立的api

api_example

api的示例程序

        看了上面的源码目录结构,不知你是否发现,它跟内核的目录结构有一定的相似,仔细想想就不难明白,其实u-boot就是一个嵌入式系统,他跟那些大的,复杂的系统本质上并没有区别,都是可以让一个平台正常的工作,有驱动,文件系统,网络子系统,post,也有运行其上的应用程序等等,只是他只支持单进程,不能提供像linux中的复杂调度机制,虽然也有上面那些子系统,但是整个结构很简单,只能实现最基本的功能。这就是u-boot。它按照一定的规则将那些复杂的系统给启动起来,复杂的工作全都交给上面的来做,仅此而已。

    但是虽说相对linux kernel u-boot很简单,它却是研究嵌入式系统的很好的选择,如果你能研究清楚他的结构,对你理解整个嵌入式系统的原理会很有帮助的,同时,你也可以想想为什么说我们把它的那部分启动代码放到内核中去是可以做到的,放到u-boot的前面和放到kernel的前面从本质上是没有区别的

扩展1:

TFTP启动和NFS启动都需要使用网络连接,通常需要使用网线进行物理连接。

对于TFTP启动,TFTP(Trivial File Transfer Protocol)是一种基于UDP的简单文件传输协议,它通过网络传输内核镜像或其他文件到目标设备进行启动。为了进行TFTP启动,目标设备需要与TFTP服务器通过网络连接,并使用网线将它们连接在一起,以进行文件传输。

对于NFS启动,NFS(Network File System)是一种在网络上共享文件系统的协议。在NFS启动中,目标设备需要通过网络连接到NFS服务器,并进行文件系统的挂载。这也需要使用网线将目标设备和NFS服务器物理连接在一起,以便进行网络通信和文件系统访问。

需要注意的是,对于TFTP启动和NFS启动,网络连接不仅限于有线连接,也可以使用无线网络连接,例如通过Wi-Fi进行网络通信。但无论是有线连接还是无线连接,都需要确保网络连接的可靠性和稳定性,以保证文件传输和挂载的正确进行。

扩展2:

TFTP (远程/网络内核) 使用 U-Boot 和 NFS (远程/网络用户空间) 使用 U-Boot 是 U-Boot 引导加载程序中两种不同的启动方式。

TFTP (Trivial File Transfer Protocol) 是一种简单的文件传输协议,用于通过网络将文件从服务器传输到客户端。在 U-Boot 中,使用 TFTP 启动意味着 U-Boot 从网络中下载内核镜像(通常是 Linux 内核)到嵌入式设备的内存中,然后将控制权转交给该内核运行,实现系统的启动。这种方式适用于基于网络的系统,可以快速、方便地更新和调试内核。

NFS (Network File System) 是一种网络文件系统协议,允许远程主机通过网络访问和共享文件。在 U-Boot 中,使用 NFS 启动意味着 U-Boot 通过网络挂载远程服务器上的根文件系统,然后将控制权转交给该根文件系统中的用户空间程序,实现系统的启动。这种方式适用于需要远程访问文件系统的场景,可以实现灵活的文件共享和集中管理。

这两种方式的主要区别在于启动过程中涉及的内容。TFTP 启动主要关注内核的下载和运行,内核负责设备的初始化和系统的管理;而 NFS 启动主要关注根文件系统的挂载和用户空间的启动,用户空间负责应用程序的执行和系统的功能。因此,TFTP 启动更加适用于只需关注内核的嵌入式系统,而 NFS 启动更适用于需要远程文件系统和用户空间功能的嵌入式系统。

需要注意的是,两种启动方式并不是互斥的,可以根据具体需求选择适合的方式,甚至可以结合使用,例如先使用 TFTP 下载内核,然后使用 NFS 挂载根文件系统。

扩展3:

就性能而言,TFTP启动和NFS启动在几个方面可能存在区别:

  1. 传输速度:TFTP通常比NFS更快,因为TFTP是一种简单的文件传输协议,仅提供基本的文件传输功能。它使用UDP协议进行传输,没有复杂的认证和授权过程,因此传输速度相对较快。而NFS使用TCP协议进行传输,它提供更多的功能和特性,但相对于TFTP而言,可能会带来更多的开销和传输延迟。

  2. 存储空间占用:TFTP启动通常需要一个较小的内核镜像,因为它只涉及到内核的下载和运行。这可以节省存储空间,并且加快了启动过程。相比之下,NFS启动需要挂载完整的根文件系统,包括用户空间程序和库文件,可能需要更大的存储空间。

  3. 启动时间:由于TFTP启动仅涉及内核的下载和运行,启动时间通常较短。而NFS启动需要挂载远程的根文件系统,可能需要更多的网络交互和文件系统操作,启动时间可能会稍长一些。

需注意的是,性能方面的差异可能会受到网络带宽、远程服务器性能、文件系统大小等因素的影响。实际性能差异会因具体的系统配置和环境而异,因此在选择启动方式时,需要根据实际需求和系统限制进行评估和测试。

扩展4:

下面是TFTP启动和NFS启动在实际工作场景中的一些示例:

TFTP启动的实际工作场景:

  1. 嵌入式设备固件更新:在嵌入式设备的生产环境中,使用TFTP启动可以方便地将新的固件或软件更新下载到设备中,以更新设备的功能和修复漏洞。
  2. 网络启动和远程调试:在开发和调试过程中,使用TFTP启动可以通过网络快速下载和启动内核,用于调试和测试新的功能和驱动程序。
  3. 系统恢复和故障排除:当嵌入式系统遇到问题或发生故障时,使用TFTP启动可以方便地加载备份的内核镜像,以便进行系统恢复和故障排查。

NFS启动的实际工作场景:

  1. 服务器集群和分布式系统:在服务器集群和分布式系统中,使用NFS启动可以实现根文件系统的共享和集中管理,简化了服务器的配置和维护。
  2. 远程开发和测试环境:对于需要在远程服务器上进行开发和测试的场景,使用NFS启动可以通过挂载远程的根文件系统,方便地共享代码和资源,并进行远程调试和测试。
  3. 虚拟化环境:在虚拟化环境中,使用NFS启动可以将虚拟机的根文件系统存储在共享的NFS服务器上,实现虚拟机的快速启动和动态迁移。

扩展5:

U-Boot和Linux都是开源项目,各自有其特定的开发难度。然而,无法简单地说一个项目的开发难度比另一个项目更大,因为这涉及到多个因素和个人观点。

U-Boot是一个用于嵌入式系统的开源引导加载程序,主要负责初始化硬件、加载操作系统以及提供基本的系统启动功能。U-Boot的开发难度在于需要理解和处理各种硬件平台的细节和特性,包括处理器架构、外设、内存管理等。此外,U-Boot还需要与各种外部设备和协议进行交互,如存储设备、网络接口等。因此,对于开发者来说,熟悉硬件和底层系统知识是理解和贡献U-Boot的关键。

Linux是一个广泛使用的开源操作系统内核,具有复杂性和多样性。它支持多种硬件架构和设备,并提供丰富的功能和子系统,涵盖了内存管理、进程调度、文件系统、网络堆栈等众多领域。Linux的开发难度在于理解和掌握庞大的代码库、复杂的内核架构和子系统之间的相互关系。此外,Linux内核开发还需要考虑到对不同硬件平台的支持、性能优化、稳定性和安全性等方面的挑战。

总体而言,U-Boot和Linux都是复杂的开源项目,它们的开发难度取决于开发者的经验、背景知识和所涉及的具体任务。对于某些开发者来说,熟悉硬件和底层系统可能更具挑战性,而对于其他开发者来说,理解和贡献复杂的操作系统内核可能更具挑战性。因此,无法一概而论哪个项目的开发难度更大,而应根据具体情况和个人兴趣来评估。

扩展6:裸板烧写U-Boot以及先进入u-boot环境的情况下烧写新的u-boot,操作方式有什么区别?

在裸板烧写U-Boot和在已经进入 U-Boot 环境下烧写新的 U-Boot,操作方式有一些区别。下面我将简要说明这两种情况下的操作方式:

  1. 裸板烧写 U-Boot:

    • 准备烧写工具:通常需要使用专门的烧写工具,如 JTAG 调试器或者特定的烧写工具,用于将 U-Boot 程序烧写到裸板的存储器中。
    • 连接烧写工具:将烧写工具与裸板连接,通常是通过 JTAG 接口或者其他特定的接口。
    • 配置烧写工具:根据具体的烧写工具和裸板的硬件规格,配置相关的参数,如目标设备地址、烧写速率等。
    • 烧写 U-Boot:使用烧写工具加载 U-Boot 的二进制文件,并将其烧写到裸板的存储器中。这通常涉及将二进制文件加载到适当的存储器地址,并执行相应的烧写命令。
  2. 进入 U-Boot 环境后烧写新的 U-Boot:

    • 准备新的 U-Boot 二进制文件:首先,需要准备新的 U-Boot 二进制文件,该文件可能是经过编译或者配置的新版本 U-Boot。
    • 连接到目标设备:通过串口、网络或其他适当的接口,将计算机连接到已经运行旧版 U-Boot 的目标设备。
    • 进入 U-Boot Shell:通过串口终端等方式进入 U-Boot Shell,这样你就可以执行 U-Boot 提供的命令和功能。
    • 烧写新的 U-Boot:在 U-Boot Shell 中,使用相关的烧写命令或工具加载新的 U-Boot 二进制文件,并将其写入裸板的存储器中。具体的命令和工具可能因 U-Boot 版本而异,可以参考 U-Boot 的文档或命令行帮助来执行相应的操作。

需要注意的是,烧写 U-Boot 时需要小心操作,确保正确的二进制文件被写入正确的地址,以避免意外损坏设备。同时,不同的硬件平台和 U-Boot 版本可能会有不同的操作方式和命令。因此,在操作之前,建议仔细阅读相关的文档和指南,并确保你对操作有充分的理解和准备。

linux下利用kermit烧写u-boot - Jekyll Theme

u-boot命令详解 将命令挡在一个集合,设置环境变量,然后通过run执行。 阅读详情

相关推荐

从硬件原理到实践:深度解析SA8155P的FAST_BOOT_SELECT引脚与EDL模式关系

本文深度解析了SA8155P芯片的冷启动流程,重点剖析了FAST_BOOT_SELECT引脚(SOC_BTCFG_FAST_BOOT_0/1_1P8)的硬件原理与电平配置逻辑。通过分析引脚电气特性、配置编码与采样时序,阐明了其如何作为硬件钥匙,在冷启动瞬间决定芯片是进入正常系统加载还是强制进入EDL模式,为硬件调试与固件更新提供了底层实践指导。

weixin_29159441的博客 115

uboot介绍:介绍uboot的基本概念、用法和实现方式

uboot介绍

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1万+

i.MX安全启动实战:从HABv4到AHAB的密钥生成、签名与调试全解析

在嵌入式系统安全领域,安全启动(Secure Boot)是构建设备信任根的核心机制,其原理基于公钥基础设施(PKI)和硬件信任锚。通过非对称加密算法,芯片在启动时逐级验证引导代码的数字签名,确保其完整性与来源可信,从而防御固件篡改攻击。这项技术对于保障物联网、工业控制等关键设备的系统安全具有重要价值。在实际工程中,以NXP i.MX系列处理器为例,开发者需要掌握从生成SRK哈希、编译带安全特性的U-Boot到提取镜像布局信息并进行签名的完整流程。其中,针对HABv4和AHAB两种架构的差异,以及加密启动等高

weixin_30307921的博客 315

u-boot详解

Uboot获取: 首先就是uboot官网。缺点就是支持少,比如某一款具体芯片驱动等不完善。uboot官网下载地址 SOC厂商会从uboot官网下载某一个版本的uboot,然后在这个版本的uboot上加入相应的SOC以及驱动。这就是SOC厂商定制版的uboot。NXP官方的I.MX6ULL EVK板子, 做开发板的厂商,开发板会参考SOC厂商的板子。开发板必然会和官方的板子不一样。因此开发板厂商又会去修改SOC厂商做好的uboot,以适应自己的板子。 ......

chengcao123的博客 1万+

嵌入式Linux内核烧录与启动全解析:从PowerPC Sandpoint到现代实践

嵌入式Linux系统开发中,内核烧录与启动是连接硬件与操作系统的关键环节。其核心原理在于引导加载器(如U-Boot、DINK32)负责硬件初始化、将内核镜像加载到指定内存地址,并完成控制权移交。这一过程的技术价值在于实现软件系统的硬件固化,使设备能够脱离开发环境独立上电运行,这对于工业控制、网络通信等需要高可靠性的嵌入式产品至关重要。典型的应用场景包括评估板原型验证、产品化部署以及现场设备升级。以经典的Freescale PowerPC Sandpoint平台为例,通过其内置的DINK32工具链,开发者可以

weixin_30417487的博客 370

U-Boot 之二 零基础编译、详解 Image 镜像及 DTB 文件

要使用 U-Boot,首先要确定 U-Boot 是否支持我们的使用芯片(开发板)。这就需要查看 ./config 目录下有没有对应的配置文件,或者说有没有类似的配置文件。如果直接有(对于一些通用的平台,U-Boot 已经添加好了一些默认配置),那么恭喜可以省事很多;如果没有(如果是自己画的板子,指定是没有),后续就牵扯到自己移植修改代码。具体步骤如下: 新增 MCU 的设备树文件:arch\

技术干货 1万+

Uboot

uboot

举子人间 7709

Spring Boot进阶(99):提升效率!使用 Spring Boot 整合 GitLab 优化你的团队协作流程!

提升效率!使用 Spring Boot 整合 GitLab 优化你的团队协作流程!

**My Coding Family** 9739

【ShardingSphere】全网最细最全5.x版本 ShardingSphere 保姆级源码详解

【ShardingSphere】全网最细最全5.x版本 ShardingSphere 保姆级源码详解

Hanson的博客 4983

AGM Supra软件从零到一:国产CPLD工程创建全流程拆解

本文详细拆解了AGM Supra软件从零开始创建国产CPLD工程的全流程,包括开发环境配置、工程创建、Quartus项目转换、TCL脚本执行与编译等关键步骤。特别强调了中文路径避坑、器件型号选择等实用技巧,帮助开发者高效完成CPLD开发任务。

weixin_29158413的博客 410

DASH 流媒体协议(Dynamic Adaptive Streaming over HTTP)概述——起源、MPD文件解析、相关项目

简单介绍DASH的起源与发展、MPD文件简要解析、相关项目,以及常见流媒体协议的比较

farewellyi的博客 6888

Spring Boot:最全SpringBoot启动流程原理分析(全网最全最完善)

我们启动一个springboot项目,最简单的就是配置一个springboot启动类,然后运行即可代码语言:javascript代码运行次数:0运行AI代码解释通过上面的代码,我们可以看出springboot启动的关键主要有两个地方,第一个就是@SpringBootApplication注解第二个就是 SpringApplication.run(SpringBoot.class, args);springboot原理。

weixin_44917365的博客 340

Windows/Linux双平台实战:QtCreator构建套件配置全攻略(含GCC/G++/GDB/CMake)

本文详细介绍了在Windows和Linux双平台下配置QtCreator构建套件的完整流程,涵盖GCC/G++、GDB和CMake等核心工具链的设置技巧。通过分步指导和实用示例,帮助开发者解决跨平台开发中的配置难题,提升Qt应用开发效率。特别针对QtCreator新手和需要在多平台切换的开发者提供了全面的配置指南。

weixin_28836507的博客 471

Spring Boot 机制二:配置属性绑定 Binder 源码解析(ConfigurationProperties 全链路)

场景注解特点普通 BeanSetter 绑定构造器绑定不可变对象,强类型安全集合 / ListBinder 支持支持 [0],[1] 索引MapBinder 支持key=value 形式占位符${…}PropertySourcesPlaceholdersResolver 解析类型转换支持 Duration, Enum, String → 数字等。

Java、Python、AI、前沿技术等领域的技术总结和经验分享。 4769

MAPPO实战:从理论到代码的协作智能体训练指南

本文详细介绍了MAPPO算法在多智能体协作训练中的实战应用,从理论基础到代码实现全面解析。通过对比PPO与MAPPO的差异,深入讲解CTDE框架、网络架构设计、参数调优等关键环节,并提供实际项目中的调参经验和常见问题解决方案,帮助开发者快速掌握这一强化学习前沿技术。

weixin_42561040的博客 265

《大明王朝1566》中,朝廷财政危机无法解决的根源分析

财政困局中的财富最终流向三重黑洞:​皇室挥霍​(如嘉靖炼丹修殿)、特权阶层贪腐​(严党年入百万两盐税)、制度性损耗​(宗室供养、低效官僚)。更深层的“钱”其实是被禁锢在道德化治理的牢笼中——当国家用“黄河长江皆可为用”的权术思维替代制度性改革时,财政危机便成为帝制王朝无法逃脱的宿命。

为了小家奋斗 1971

嵌入式Boot Loader核心原理与实战:从PowerPC到ARM的启动设计精髓

Boot Loader是嵌入式系统上电后执行的第一段代码,负责完成硬件初始化、内存配置和操作系统加载等核心任务。其工作原理基于CPU的固定复位向量和内存映射机制,通过读取存储设备中的代码完成自举。在技术价值上,一个设计良好的Boot Loader实现了配置与代码分离、支持多重加载通道(如TFTP网络加载和串口加载),并内置了Fallback模式等鲁棒性设计,是确保系统可靠启动和便于远程维护的关键。这些设计思想广泛应用于从工业控制到网络设备的各类嵌入式场景。本文以经典的PlanetCore Boot Load

443

基于Q-learning的无人机三维路径规划(含完整C++代码)

基于Q-learning的无人机三维路径规划(含完整C++代码)

weixin_54186646的博客 1万+

Rufus 使用指南:免费免安装,一次做出 BIOS 和 UEFI 都能引导的 U 盘

Rufus 是一款免费的单文件 U 盘启动盘工具,GPL v3 许可,双击 exe 即用、免安装;把系统 ISO 写进 U 盘,就能被 BIOS 和 UEFI 引导。本文带你从选盘到写入走一遍,每一步都有可验证的成功信号。 ## 装不上系统、验不了镜像:这四类糟心事它都能处理 ### 老机器没有 TPM 2.0 也能装 Windows 11 你的机器没有 TPM 2.0 或安全启动,官方安装

gitblog_00499的博客 82

别再只怪贴片厂了!从MLCC内部裂纹,看懂物料质量与工艺应力的博弈

本文深入分析了MLCC内部裂纹的失效原因,提供了从裂纹形态学到生产全流程的失效风险地图的完整分析框架。通过实战案例和检测技术组合,帮助工程师精准锁定MLCC失效背后的真凶,优化物料质量和工艺应力管理。

weixin_33122947的博客 293

银河麒麟编译libjpeg库并配置qt环境

银河麒麟下编译libjpeg库并配置qt环境验证

小米的修行之路 1015

基于springboot武设专业解读系统小程序

💗博主介绍:✌全网粉丝10W+,优快云特邀作者、博客专家、优快云新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗👇🏻精彩专栏 推荐订阅👇🏻2025-2026年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐✅2025-2026年最值得选的Java毕业设计选题大全:500个热门选题推荐✅Java毕业设计项目精品实战案例《3000套》微信小程序毕业设计项目精品案例《3000套》

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 871

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NXP Layerscape安全启动实战:从信任链构建到Blob加密部署

安全启动是嵌入式系统构建可信计算基石的通用技术,其核心原理在于建立从硬件信任根到操作系统的逐级验证信任链。通过密码学方法,每一级引导代码在运行前都需验证下一级的完整性与真实性,确保系统加载的代码未经篡改。这项技术对于抵御供应链攻击、保护知识产权具有关键价值,广泛应用于网络处理器、工业控制及边缘AI设备等场景。在NXP Layerscape平台中,该机制通过熔丝(Fuse)、ISBC、ESBC及BL3x等组件实现,并可通过Blob封装技术为内核等关键镜像提供机密性保护,有效防止逆向工程。本文结合工程实践,深入

537

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

BunkerWeb:一体化开源Web安全网关部署与配置实战指南

Web应用防火墙(WAF)和反向代理是构建现代Web应用安全架构的核心组件,它们通过在应用层对HTTP/HTTPS流量进行深度检测和过滤,有效防御SQL注入、跨站脚本(XSS)等常见攻击。其技术原理在于将安全规则引擎与高性能的Web服务器(如Nginx)深度集成,在请求处理的生命周期中实时分析、拦截恶意流量,从而收敛攻击面,简化传统多组件安全方案的复杂运维。这种一体化的设计带来了显著的技术价值:它不仅降低了因组件间通信带来的性能损耗,还通过统一的环境变量或配置文件管理,极大地提升了安全策略部署的敏捷性和一致

weixin_30530939的博客 395

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

基于 Spring Boot + Vue3 的【城市多功能智慧路灯杆微环境感知多维协同与按需自适应节电中台】设计与实现(含PRD/三端高保真源码/大屏)

基于 Spring Boot + Vue3 的【城市多功能智慧路灯杆微环境感知多维协同与按需自适应节电中台】设计与实现(含PRD/三端高保真源码/大屏) **Direct Answer:** 本系统紧扣住建部、工信部<strong>《推进新型城市基础设施建设的指导意见》</strong>与国家城市生命线安全工程<strong>城市道路照明设施与多功能智慧智能杆专项任务</strong>,专为

qwert 293

轻量Java开发工作流:从IDEA优化到VS Code+Spring Boot实战

Java开发环境的‘轻量’本质,不是简单删减功能,而是对启动机制、后台服务与工具链耦合度的系统性重构。其技术原理根植于JVM启动优化、Language Server Protocol(LSP)解耦架构及构建工具可观测性设计;核心价值在于降低资源开销、提升响应确定性、增强配置可审计性;典型应用场景覆盖Spring Boot多模块开发、CI/CD环境复现与离线教学部署。本文聚焦Java + Spring Boot开发者真实痛点,结合IDEA后台服务切除术与VS Code专业化扩展组合(即Lithe-Java S

weixin_34357928的博客 348
上一篇: ARM架构CPU的体系结构及接口技术
下一篇: VMware虚拟机 Linux系统 Ubuntu 16.04 硬盘/磁盘扩容
Robin.Su
博客等级 码龄7年 818粉丝 80原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值