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

网站建设运营合同深圳seo关键词优化外包公司

网站建设运营合同,深圳seo关键词优化外包公司,建筑人才网官网登录,专门做预言的网站Linux系统移植⑨:uboot启动流程详解-bootz启动Linux过程 bootz 是 U-Boot 中用于启动 Linux 内核的命令,专为处理 zImage(压缩内核映像) 设计。 启动 Linux 的完整过程: 1. 加载内核与相关文件 U-Boot 先将以下文件…

Linux系统移植⑨:uboot启动流程详解-bootz启动Linux过程

bootz 是 U-Boot 中用于启动 Linux 内核的命令,专为处理 zImage(压缩内核映像) 设计。


启动 Linux 的完整过程:

1. 加载内核与相关文件

U-Boot 先将以下文件加载到内存指定地址:

  • zImage:压缩的 Linux 内核映像(位于内存地址 KERNEL_ADDR)。
  • 设备树二进制文件(DTB):硬件描述文件(位于 FDT_ADDR)。
  • initramfs(可选):初始内存文件系统(位于 INITRD_ADDR)。

2. 执行 bootz 命令

bootz [内核地址] [initramfs地址]:[大小] [设备树地址]

  • 启动命令

    bootz ${KERNEL_ADDR} ${INITRD_ADDR}:${INITRD_SIZE} ${FDT_ADDR}

    若无需 initramfs:
    bootz ${KERNEL_ADDR} - ${FDT_ADDR}

3. zImage 自解压

  • U-Boot 跳转到 KERNEL_ADDR,执行 zImage 头部的小型解压程序。
  • 解压程序将内核解压到预设的 物理内存地址(如 ARM 架构通常为 0x8000)。

4. 传递启动参数

U-Boot 通过寄存器/设备树传递关键参数:

架构寄存器参数说明
ARMr00(保留)
r1机器 ID(旧)或 0xFFFFFFFF(新)
r2设备树地址(FDT_ADDR
RISC-Va0设备树地址
a10(保留)

设备树(DTB) 包含 CPU、内存、外设等硬件信息,内核据此初始化硬件。


5. 内核初始化

Linux 内核接管后执行:

  1. 硬件初始化:基于 DTB 设置 CPU、内存控制器、时钟等。
  2. 驱动加载:识别并初始化存储、网络等设备驱动。
  3. 挂载根文件系统
    • 若有 initramfs,将其作为临时根文件系统。
    • 否则直接挂载 root= 参数指定的文件系统(如 /dev/mmcblk0p2)。

6. 用户空间启动

  1. 内核启动第一个用户进程 /init(位于 initramfs 或根文件系统)。
  2. init 进程加载系统服务(如 systemd 或 SysVinit)。
  3. 最终进入登录界面或指定应用。

关键依赖

  • zImage 格式:必须为 gzip 压缩的 Image 文件(非 uImage)。
  • 设备树支持:现代内核强制要求 DTB(无 DTB 的内核无法启动)。
  • 地址对齐:内核/DTB 的加载地址需符合 CPU 架构要求(如 ARM 需 4KB 对齐)。

do_bootz源码如下:

在这里插入图片描述

其内部主要函数调用关系如下:

do_bootz
-> bootz_start
-> do_bootm_states 阶段为BOOTM_STATE_START
-> bootm_start 对images全局变量清零,
-> images->ep = 0X80800000
->bootz_setup 判断zImage是否正确
-> bootm_find_images
-> boot_get_fdt 找到设备树,然后将设备树起始地址和长度,写入到images的ft_addr和ft_len成员变量中。
-> bootm_disable_interrupts 关闭中断相关
-> images.os.os = IH_OS_LINUX; 表示要启动Linux系统
-> do_bootm_states 状态BOOTM_STATE_OS_PREP 、BOOTM_STATE_OS_FAKE_GO 、BOOTM_STATE_OS_GO,
-> bootm_os_get_boot_func 查找Linux内核启动函数。找到Linux内核启动函数do_bootm_linux,赋值给boot_fn。
-> boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images); 就是do_bootm_linux。
-> boot_prep_linux 启动之前的一些工作,对于使用设备树来说,他会将Bootargs传递给Linux内核,通过设备树完成。也就是向Linux内核传参。
-> boot_selected_os BOOTM_STATE_OS_GO, do_bootm_linux
-> do_bootm_linux,BOOTM_STATE_OS_GO
-> boot_jump_linux
-> machid= gd->bd->bi_arch_number;
-> void (kernel_entry)(int zero, int arch, uint params);
-> kernel_entry = (void (
)(int, int, uint))images->ep; 0X80800000。
-> announce_and_cleanup 输出Starting kernel……
-> kernel_entry(0, machid, r2); 启动Linux内核。 Uboot的最终使命,启动Linux内核。

在这里插入图片描述

http://www.dtcms.com/wzjs/473900.html

相关文章:

  • 公司网站设计规划网络seo招聘
  • 安全的营销型网站制作网站开发流程是什么
  • 如何攻击织梦做的网站方法网络营销技能大赛优秀作品
  • 关于酒店网站规划建设方案书百度基木鱼建站
  • 嘉兴简单建站重庆森林影评
  • 珠海做网站价格网站如何被搜索引擎收录
  • php做网站答辩问题文章优化软件
  • 樟树有哪几个网站做爆药库优化什么建立生育支持政策体系
  • 个人网站app外贸怎么找客户资源
  • 织梦本地安装网站合肥百度推广排名优化
  • 传统网站有没有建设必要性网络营销有哪些内容
  • 婚恋网站建设公司排名百度关键词关键词大全
  • 郑州哪里有做网站的seo网站推广优化就找微源优化
  • 有没有个人网站甘肃百度推广电话
  • 蔡文胜做的个人网站外包推广公司
  • 公司网址注册一般需要多少钱江北seo
  • 哪里有免费的网站模板下载网络营销现状分析
  • asp网站开发pdf商铺营销推广方案
  • 宜兴宜兴建设局网站免费域名注册服务网站
  • 用vs与dw做网站天津seo标准
  • 上海新闻网首页seo推广服务
  • 长沙诚信做网站网页设计制作网站模板
  • 连城县建设局网站谷歌推广开户多少费用
  • 重庆网站制作企业培训机构在哪个平台找
  • 网站建设案例要多少钱贵阳网站建设
  • wordpress 成功案例关键词优化的策略
  • 怎么建立个人网站今日新闻摘抄十条
  • 能利用双股铜芯电话线做网站吗营销和运营的区别是什么
  • wordpress语言插件qx郑州seo哪家专业
  • 2网站建设谷歌seo靠谱吗