首页 > 其他分享 >操作系统-uboot

操作系统-uboot

时间:2024-07-31 21:24:13浏览次数:14  
标签:uboot 操作系统 启动 system 开发板 内核 linux

上机的第一件事启动计算机,因此从uboot讲起如何启动计算机

什么是uboot

bootloader是计算机开机的一小段代码引导程序,uboot属于其中的一种,uboot主要进行了以下两个方面的工作。

1、首先是完成硬件的初始化,初始化时钟,关闭看门狗、中断、mmu,关闭缓冲,初始化sdram等外设

2、将linux内核映像和根文件系统映像从flash(闪存)磁盘中读到SDRAM中,为内核设置参数,最后启动linux内核

uboot和内核是如何完成参数传递的

1、主要通过r0、r1、r2三个寄存器,r0=0,r1表示机器类型ID,r2传递linux启动需要的相关参数

有起始地址、内存大小、linux内核启动后的挂载方式等

2、设置cpu的工作模式,cpu一共有七种工作模式,要将cpu设置为svc模式(管理模式)

3、要禁止中断、关闭mmu和缓存

为什么要给内核传递参数

因为要让内核知道机器id,内核并不是对于所有的开发板都能完美适配的,随着开发板的不断增加,如果要完全适配则内核需要非常大的空间,因此要让内核知道开发板是哪一个,通过内核参数启动对应的内核。

为什么uboot要关闭缓存

因为uboot在启动过程中,如果有缓存数据,可能会导致从缓存数据中取数据,导致启动异常

image镜像中包含了哪些东西

bootsec、setup、system打包成image文件,如何查看system中的系统调用?

在POSIX查系统调用:可移植操作系统接口 portable oporating system interface of unix中  

标签:uboot,操作系统,启动,system,开发板,内核,linux
From: https://blog.csdn.net/weixin_44297615/article/details/140831047

相关文章

  • VMware Workstation17 安装 Ubuntu 操作系统
    今天给伙伴们分享一下VMwareWorkstation17安装Ubuntu操作系统,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎......
  • VMware Workstation17 安装 Windows 10 操作系统
    今天给伙伴们分享一下VMwareWorkstation17安装Windows10操作系统,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,......
  • 手写操作系统:二级引导程序
    项目简介在上篇博客,我们完成了主引导扇区的编写,在主引导扇区我们初始化了寄存器,加载了二级引导程序到内存地址0x8000处,并跳转至0x8000处执行,在本文我们将继续编写二级引导程序。在二级引导程序将完成以下任务检测内存容量打开A20地址线设置全局段描述符表进入保护模式......
  • FreeRTOS操作系统(详细速通篇)——— 第十五章(完结)
           本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅!目录软件定时器和低功耗模式1软件定时器1.1什么是定时器?1.2软件定时器的优缺点1.3Free......
  • 各常用操作系统官方停止维护计划
    CentOS版本停止完整更新时间停止维护更新时间CentOSStream92027-05-312027-05-31CentOSStream82024-05-312024-05-31CentOS82021-12-312021-12-31CentOS72020-08-062024-06-30CentOS62017-05-102020-11-30官方维护时间请参见Cen......
  • 开放麒麟(openKylin)操作系统部署
    2022年1月1日起CentOS官方已经不再对CentOS8提供服务支持2024年6月30日起CentOS官方已经不再对CentOS7提供服务支持用户需要重新考虑选择新的操作系统,其中开源麒麟作为选项之一麒麟系统官方地址国产操作系统、麒麟操作系统——麒麟软件官方网站安装参考地址openKyli......
  • Linux操作系统下编译、链接过程详解
    gcc和g++的区别:gcc和g++是GNU编译器集合中的两个不同的编译器,它们之间的主要区别在于它们所针对的编程语言以及它们的行为和功能。1.编译器的目标语言:gcc是用于编译C语言的编译器,而g++是用于编译C++语言的编译器。因此它们分别用于编译不同的源代码文件;2.语法支持:gcc和......
  • 从头理清uboot(4)-boot_cmd 的处理
    目录1.默认的bootcmd包含了哪些内容?1.1mmcboot1.2netboot1.3小总结1.4关于bootargs2.boot-linux函数过程2.1结构体简单介绍2.2do_bootz函数分析2.2.1bootz_start函数2.2.2do_bootm_states函数2.2.3do_bootm_linux函数2.2.4boot_jump_linux函数3.一些指令是如何实......
  • 从头理清uboot(3)-main_loop 及 CMD实现
    从头理清uboot(3)-main_loop及CMD实现目录从头理清uboot(3)-main_loop及CMD实现1.main—loop函数2.cmd_process函数分析3.cmd定义流程1.main—loop函数上篇引导启动的分析最后会调用run_main_loop,在其中会循环调用main_loop()函数。见下方:staticintrun_main_loop(v......
  • Memcached跨平台性能解码:操作系统对缓存速度的影响
    Memcached跨平台性能解码:操作系统对缓存速度的影响在分布式缓存系统的设计和部署中,Memcached因其轻量级和高性能而成为首选方案之一。然而,Memcached在不同操作系统上的性能表现可能会有显著差异。本文将深入探讨这些差异的原因,并提供实际的测试方法和代码示例,帮助系统架构......