当前位置: 首页 > news >正文

STM32八股【11】-----Linux Bootloader (U-Boot)

参考U-Boot

U-Boot是什么

嵌入式Linux系统需要一个bootloader来加载系统
U-boot就是一个通用开源的嵌入式Linux bootloader
主要实现的功能:

  • 初始化硬件资源(如内存、串口、存储器等)
  • 从存储介质加载Linux内核到内存中
  • 传递启动参数给内核
  • 启动Linux内核

从U-Boot到Linux的具体执行步骤

具体步骤分为汇编和c两部分

一阶段 汇编

初始化时钟系统
关闭看门狗(防止系统误复位)
关闭中断
启动指令Cache(ICache)
关闭数据Cache与TLB
关闭MMU
初始化SDRAM(用于加载后续程序)
初始化NAND Flash
代码重定位(将U-Boot代码搬运至SDRAM中运行)

二阶段 C语言阶段

初始化串口(便于调试)
打印启动信息
检测内存映射情况
从存储介质读取Linux内核镜像和根文件系统(initrd)将内核映象和根文件系统映象从 Flash上读到SDRAM空间中
设置内核启动参数
跳转到Linux内核执行入口(直接修改PC指针指向Linux内核位置)

http://www.xdnf.cn/news/635131.html

相关文章:

  • 嵌入式STM32学习—— 定时器中断(应用-利用定时器中断实现LED亮一秒灭一秒)
  • Q1:Go协程、Channel通道 被close后,读会带来什么问题?
  • ABP VNext + Webhook:订阅与异步回调
  • 6个跨境电商独立站平台
  • C++23 元编程工具新特性探索
  • 开发AR导航助手:ARKit+Unity+Mapbox全流程实战教程
  • 【Python 命名元祖】collections.namedtuple 学习指南
  • 反序列化之Wakeup方法绕过
  • Dify 本地源码安装教程
  • 【漫话机器学习系列】277.梯度裁剪(Gradient Clipping)
  • Redis数据安全分析
  • Java——优先级队列(堆)
  • 前沿探索之Kuikly框架
  • Java 虚拟机(JVM)原理与实战:打造高效稳定的运行环境
  • YOLOV8涨点技巧之空间通道协作注意力(SCCA)-应用于自动驾驶领域
  • 【公式】MathType公式右编号对齐
  • C/C++ 结构体:. 与 -> 的区别与用法及其STM32中的使用
  • 2025.5.25总结
  • Windows 11 [close recent file browsing history]
  • 对WireShark 中的UDP抓包数据进行解析
  • win11 禁用/恢复 内置笔记本键盘(保证管用)
  • 嵌入式软件--DAY8 IIC通讯下 硬件实现
  • 解决WPF短暂的白色闪烁(白色闪屏)
  • 从智能提效到产品赋能的架构实践
  • Pycharm and Flask 的学习心得(9)
  • PCB 通孔是电容性的,但不一定是电容器
  • CSS相关知识
  • 基于PyTorch的残差网络图像分类实现指南
  • 如何理解Pytorch中前向传播的计算过程
  • 小土堆pytorch--神经网络搭建小实战Sequential的使用