Uboot功能

这篇具有很好参考价值的文章主要介绍了Uboot功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Uboot功能

Uboot(Universal bootloader)就是一个裸机程序,用于启动内核。不过相较于单片机程序更加复杂

相关知识补充

  1. Uboot:Universal bootloader
  2. XIPCPU可以直接发出地址信号读取Flash/RAM,执行指令(可以看成直接在Flash/RAM中运行);此类Flash/RAM称为XIP设备
    XIP:有时程序从SD卡启动,CPU无法直接读取SD卡,需要通过emmc控制器访问SD卡。则SD卡为非XIP设备

启动过程

  1. 运行Uboot,目的是启动内核:读Flash,将内核代码拷贝到RAM
    带来了一个问题,一般单片机的RAM使用的是SRAM,比较小,无需初始化即可使用。而嵌入式Linux的内存一般比较大,使用DDR。那么就需要初始化内存。
    Uboot的工作

    1. 初始化内存
    2. 初始化其他硬件:初始化时钟,然后是Flash
    3. 将内核拷贝到RAM
    4. 启动内核
  2. 启动内核:目的是为了启动应用程序
    内核的工作:

    1. R/W硬件驱动,比如Flash(U盘,网络,LCD,输入输出设备)驱动程序
    2. R/W文件,文件系统
    3. 找到启动APP
  3. 为了适配所有设备,防止引入许多冗余的配置文件,在Uboot中引入设备树。文件目录中有一个dtb文件夹
    Uboot = Uboot.bin + 某个dtb文件

支持非XIP设备启动(SD卡启动,串口启动)的过程

由于CPU无法直接从SD卡(非XIP设备)读到程序(指令),但是当前又需要CPUSD卡启动程序。出现了矛盾,因此引入了BRom(BootRom)-CPU可以直接访问。
完整启动过程:

  1. CPU读BootRom,运行BootRom代码
  2. BootRom工作:Copy:将SD卡上的Uboot拷贝到RAM运行

总结

Uboot启动流程

XIP设备

CPU直接访问Flash,读取Uboot代码并执行(相当于直接再FLASH上运行):初始化内存,初始化硬件,将Flash上的内核代码拷贝到RAM。启动内核文章来源地址https://www.toymoban.com/news/detail-841935.html

非XIP设备

  1. 首先CPU执行BootRom代码,将SD卡(非XIP)上的Uboot拷贝到RAM
  2. 执行Uboot代码:初始化硬件(不再初始化内存,程序本身就在RAM中),将Flash上的内核代码拷贝到RAM。启动内核

到了这里,关于Uboot功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DevExpress Universal 20.2 破解

    1) 首先卸载原有成功的、不成功的破解文件,或者用 2) 断开互联网 3) 安装DevExpress,完成后不要打开程序或者VS 4) 关闭VS 5) 打开破解文件DevExpress_Universal_破解.exe 6) 找到相应的VS版本和DEV版本,点击破解 7) 打开DevExpress_修复.exe替换以下文件(有的能找到,有的找不到就算了)

    2024年02月11日
    浏览(39)
  • iOS-配置Universal Links通用链接

    1、开启Associated Domains服务 登录苹果开发者网站,在 Certificates, Identifiers Profiles 页面左侧选择 Identifiers ,右侧选择对应的 App ID ,点击进入配置详情页,开启 Associated Domains 服务; 2、更新Profile文件(配置文件) 在 Certificates, Identifiers Profiles 页面左侧选择 Profiles ,右侧选择对

    2024年02月11日
    浏览(35)
  • Uniapp IOS universal link 配置流程

    Universal Link是苹果再WWDC 2015上提出的iOS 9的新特性,是一种仅限于苹果设备的特别深度链接协议,能通过打开一个Https链接来直接启动您的客户端应用。开始之前,确保你有一个Https协议的域名,下面我们就看看在uniapp中如何正确配置。 ♥️ 步骤一:新建 apple-app-site-associatio

    2024年02月08日
    浏览(44)
  • iOS Universal Links(通用链接)详细教程

    一:Universal Links是用来做什么的? iOS9.0推出的用于应用之间跳转的一种机, 通过一个https的链接启动app。如果手机有安装需要启动的app,可实现无缝跳转。如果没有安装,会打开网页。 实现场景:微信链接无缝跳转App, 网页链接无缝跳转App 移动端iOS实现: 1:找到app的Bu

    2024年03月15日
    浏览(39)
  • 由于应用universal link 校验不通过(ios分享)

    app苹果分享的时候校验不通过 解决方法:登录微信开放平台 点击自己的应用 下拉查看应用平台这里没有ios的,就要新增ios的 在上拉基本信息那里去点击修改进去新的页面不用管, 下拉点击保存,下一步 这样就可以勾选新增ios的了, Bundle id是你打包的时候 可以看到的填写

    2024年02月11日
    浏览(49)
  • S32Kxxx bootloader之LIN bootloader

    了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序)。 上一次发布博文到如今既然已一年有余, 开始着手写今天这篇博文, 有着一种久违的感觉。 今天要给大家介绍的是S32K116 的LIN bootloader, 这个LIN boo

    2024年02月13日
    浏览(40)
  • c#如何使用 USB(Universal Serial Bus)进行通信

    在C#中,可以使用System.Management命名空间下的ManagementObjectSearcher和ManagementObject类,通过WMI(Windows Management Instrumentation)API来实现USB通信。这种方式可以通过USB设备的设备ID、厂商ID等信息来寻找并打开USB设备,并进行数据读写。 以下是一个简单的USB通信示例代码:

    2024年02月02日
    浏览(42)
  • S32Kxxx bootloader 之 LIN UDS bootloader

    了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序)。 LIN 总线是汽车ECU使用比较多的一种总线, 车灯, 车门, 汽车空调控制面板等等ECU都有在使用. 而这些ECU离线升级时, 就需要使用到LIN bootloader, OEM厂商都

    2024年02月08日
    浏览(42)
  • STM32 UDS Bootloader开发-下位机篇-bootloader软件(3)

    上一篇文章中主要介绍了UDS服务相关的内容。本文接着介绍flash操作的相关修改,及bootloader调试过程中的问题及修改点。 /

    2024年02月12日
    浏览(40)
  • STM32 UDS Bootloader开发-下位机篇-bootloader软件(2)

    之前一篇文章中介绍了跟跳转,CAN驱动,定时器的配置代码。本文继续介绍Bootloader中的UDS协议栈。 Bootloader参考github大神SummerFalls的UDS_S32K

    2024年02月08日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包