首页 > 其他分享 >u-boot bootcmd

u-boot bootcmd

时间:2024-06-07 20:34:32浏览次数:20  
标签:Flash bootcmd boot SPI 内核 Linux bootargs

在U-Boot的环境变量中,`bootcmd` 是一个关键的变量,它定义了当U-Boot启动时应该执行的命令序列。在你给出的 `bootcmd` 中,它执行了一系列的命令来引导Linux内核。我们一步步来分析这个 `bootcmd` 的内容:

1. **setenv bootargs ${bootargs}**


* 这行命令设置(或覆盖)了 `bootargs` 变量的内容。在这里,它只是重新设置了已经存在的 `bootargs` 的值(这实际上是一个无操作,但通常这样的做法是为了确保 `bootargs` 变量包含了所有必要的参数)。
2. **ubi.mtd=root,${nand_pagesize} mtdparts=${mtdparts} fbcon=rotate:${rotate} panel=${panel}**


* 这些参数被附加到 `bootargs` 变量中,用于配置Linux内核的启动参数。
+ `ubi.mtd=root,${nand_pagesize}`:这告诉Linux内核使用UBI(Unsorted Block Images)来从NAND闪存中挂载root文件系统,并指定了NAND的页大小。
+ `mtdparts=${mtdparts}`:定义了MTD(Memory Technology Device)分区的布局。
+ `fbcon=rotate:${rotate} panel=${panel}`:与帧缓冲区控制台相关,指定了显示面板和可能的旋转角度。
3. **sf probe;**


* `sf probe` 命令用于探测SPI Flash设备。这通常是为了确保SPI Flash设备被正确识别并准备好进行后续操作。
4. **sf read ${fdt_addr} dtb;**


* 使用SPI Flash(`sf`)命令从SPI Flash中读取设备树二进制(Device Tree Blob, DTB)文件到内存地址 `${fdt_addr}`。DTB文件描述了Linux内核需要的硬件信息。
5. **nboot kernel;**


* 这是一个自定义命令(不是标准的U-Boot命令),它可能是一个脚本或函数,用于从NAND闪存或其他存储介质中加载Linux内核。
6. **bootm**


* 最后,`bootm` 命令告诉U-Boot从内存中的指定位置引导加载器(在这里是Linux内核)。因为前面的命令已经加载了内核和设备树,所以 `bootm` 现在可以安全地启动Linux内核了。

总结:这个 `bootcmd` 序列首先设置了Linux内核的启动参数,然后探测SPI Flash设备,从SPI Flash中读取设备树二进制文件,加载Linux内核,并最终启动Linux内核。

标签:Flash,bootcmd,boot,SPI,内核,Linux,bootargs
From: https://www.cnblogs.com/zxdplay/p/18237818

相关文章

  • 【计算机毕设文章】基于spring boot的体育场馆设施预约系统
    摘要时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,体育场馆设施预约系统当然不能排除在外。体育场馆设施预约系统是在实际应用和软件工程的开发原理之上,运用java语言以及SpringBoot框架进行开发。首先要进行需求分析,分析出体......
  • vue + springboot 实现Excel模板文件下载
    1、后端实现1.创建用于映射模板的实体类@DatapublicclassSysUserTo{@Pattern(regexp="^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$",message="邮箱格式有误")@Size(max=50,message="邮箱超出50长度&q......
  • Redis-12-SpringBoot集成Redis哨兵模式
    Redis哨兵的配置,参考我这篇文章:Redis-5-高可用1.背景网上搜半天没搜到份好用的,自己整理了下方便以后复制,基于springboot2.6.13。lettucecommons-pool22.集成2.1导入pom<!--spring-redis--><dependency><groupId>org.springframewor......
  • 基于SpringBoot+Vue的网上花店系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于SpringBoot+Vue的校园驿站管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于SpringBoot+Vue的二手手机交易平台的详细设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • Java微服务实战:使用Spring Boot构建高效服务
    引言在当今的软件开发实践中,微服务架构已成为推动快速开发和部署的关键因素之一。与传统的单体应用相比,微服务架构提供了更高的灵活性和可维护性。本文将探讨如何使用Java和SpringBoot来构建一个微服务应用,介绍基本概念,并通过一个简单的例子演示从零开始构建微服务的全过程。......
  • SpringBoot 启动方法
    SpringBoot启动方法入口通常一个简单的SpringBoot基础项目我们会有如下代码@SpringBootApplication@RestController@RequestMapping("/")publicclassApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(Application.class,args......
  • springboot-异步使用
    创建配置类,开启异步和创建线程packagecom.chulx.demo1.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.scheduling.annotation.EnableAsync;importorg.springframe......
  • 执行 flux bootstrap 时 ansible 超时
    我正在使用HyperledgerBevel管理HyperledgerFabric2.2网络。到目前为止,它一直运行正常,但我在执行游戏本时没有尝试执行一些维护操作。ansible-playbookplatforms/shared/configuration/site.yaml-e"@./build/network-iprd-qa.yaml";这个方法曾经有效,但现在当fl......