横漂一姐2024年10月13日发布:uboot启动内核是什么,认识 uboot 和 内核 之间不可不说的关系

⭐发布日期:2024年10月13日 | 来源:横漂一姐

⭐作者:林海 责任编辑:Admin

⭐阅读量:879 评论:6人

【2024澳门结果查询表格图片及价格】

【澳门结果+结果2023】

【2023澳门结果记录历史更新】 【澳门天天彩历史记录查询结果】 【港彩社区高手交流论坛】 【澳门天天彩正规吗可信吗知乎号码】 【天天彩票app最新版】 【2024香港资料大全+正版资料彩报】 【2021年正版免费全年资料】 【澳门直播十结果查询】
【特区总站全年资料大全】 【澳门结果历史记录网查询最新】 【2020澳门全年的记录】 【澳门结果十历史记录】 【澳门结果直播2023生肖图】 【澳门六开彩+结果查询174期直播】 【澳门全年资料--第1页】 【正版资料 - 资料大全】

uboot启动内核是什么, uboot之间不可不说的关系

uboot镜像 uboot.binLinux镜像 zImage

嵌入式设备中的分区表是自己定义的uboot和内核中的分区表应一致

内核运行前必须加载 ddr中指定的地址处

uboot需要提供内核必要的参数

内核启动的方式

uboot启动内核有两种方式,一种是等待倒计时结束后直接启动内核,一种是 uboot命令行中使 boot命令启动内核

其代码分别如下

parse_string_outer的作用是解 boot参数并执行

/*------------------倒计----------------------*/

s = getenv ("bootcmd");

if (bootdelay >= 0 && s && !abortboot (bootdelay)) {

...

parse_string_outer(s, FLAG_PARSE_SEMICOLON |

FLAG_EXIT_FROM_LOOP);

...

}

/*------------------命令----------------------*/

int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])

{

...

if (parse_string_outer (getenv ("bootcmd"),

FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0)

rcode = 1;

...

}

U_BOOT_CMD(

boot, 1, 1, do_bootd,

"boot - boot default, i.e., run bootcmd\n",

NULL

);

/*-----------------相关宏定----------------------*/

#ifdef CONFIG_BOOTARGS

"bootargs=" CONFIG_BOOTARGS "{新闻内容}"

#endif

#ifdef CONFIG_BOOTCOMMAND

"bootcmd=" CONFIG_BOOTCOMMAND "{新闻内容}"

#endif

#define CONFIG_BOOTARGS "console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3"

#define CONFIG_BOOTCOMMAND "movi read kernel 30008000; movi read rootfs 30B00000 300000; bootm 30008000 30B00000"

加载内核DDR

uboot启动内核的步骤

·内核镜像从启动介质中加载DDR

·DDR中启动内核镜像

本文使用的开发 x210将镜像存放 SD卡中,要加载 ddr中需要使用 movi指令

movi提供了 iNand/SD卡的操作movi read用来读 iNand/SD卡中的内容DDRmovi write用来DDR中的内容写入 iNand/SD卡中

上面的代码 bootcmd中的命令就是用来加 kernel rootfs ddr

除了 SD卡加载,还可以通 tftp nfs等网络下载方式加载镜像

movi read kernel 30008000可以知道,内核加载到 0x30008000的位置

内核的镜像生成

Linux直接编译得 elf文件, vmlinux vmlinuz。这种文件会比较大,为了烧录方便,会使 objcopy工具制作成镜像文件, Image(78M精简成7.5M)

早期使用的软盘比较小Image对与软盘来说还是太大了,放不下Linux Image做进一步的压缩,并在压缩文件前端附加了一部分解压缩代码,形 zImage

uboot可以使 mkimage工具, zImage前面加64字节uImage的头信息,形 uImage

加载启动内核

内核的加载启动是通 do_bootm完成的

前面介绍过,镜像文件分为两个部分,头部以及真正的内核

do_bootm会先对镜像进行头部信息的校验,然后再进行内核的启动

头部信息的结构体如下

typedef struct image_header {

uint32_t ih_magic; /* Image Header Magic Number */

uint32_t ih_hcrc; /* Image Header CRC Checksum */

uint32_t ih_time; /* Image Creation Timestamp */

uint32_t ih_size; /* Image Data Size */

uint32_t ih_load; /* Data Load Address */

uint32_t ih_ep; /* Entry Point Address */

uint32_t ih_dcrc; /* Image Data CRC Checksum */

uint8_t ih_os; /* Operating System */

uint8_t ih_arch; /* CPU architecture */

uint8_t ih_type; /* Image Type */

uint8_t ih_comp; /* Compression Type */

uint8_t ih_name[IH_NMLEN]; /* Image Name */

} image_header_t;

do_bootm中就是通 ih_os判断镜像的类型,然后使用相应的方法启动内核

这里的镜像 Linux镜像,所以使用的 do_bootm_linux do_bootm_linux的参数大部分是通 do_bootm传递的

启动的参bootm 30008000,告 uboot 30008000这个地址去找镜像文件

内核启动

镜像的程序入口叫 entrypoint do_bootm_linux中使 ep保存,镜像的程序入口在头信息 ih_ep中,可以通过读取头信息得到

ep后,通theKernel = (void (*)(int, int, uint))ep; ep格式化后传递 theKernel,这 theKernel函数就指向了内存中加载OS镜像的真正入口地址

前面也提到了,每个开发板 uboot中都有唯一的机器码,这个编码用来验证开发板 uboot是否匹配,这个机器码还会传到内核中再次验证。这个机器码获取的第一顺序备选是环境变machid,第二顺序备选gd->bd->bi_arch_num(x210_sd.h #define MACH_TYPE 2456)

接下来就是传参的过程。先看 Linux Documentation/arm/Booting CPU寄存器设置的描述

- CPU register settings

r0 = 0,

r1 = machine type number discovered in (3) above.

r2 = physical address of tagged list in system RAM, or

physical address of device tree block (dtb) in system RAM

通过读 r0 r1 r2这三个寄存器的值来设 CPUr0固定0r1为前面提到的机器码r2为存放启动参 tag结构体的首地址

所以 do_bootm_linuxtheKernel (0, machid, bd->bi_boot_params);完成传参的过程

传参是通 struct tag这个结构体完成的,获取参数就是获取一个 tag的过程。这 tag也有着规定的格式do_bootm_linux中通 setup_start_tag setup_end_tag函数设 tag的开始和结束,这个函数的作用就是设置当 tag的类型 ATAG_CORE ATAG_NONE,用 tag起始终止位置的判别

需要注意的是,传参是一个很重要的过程,内核启动不成功与传参错误有很大关系

uboot4步骤总结

第一步:将内核搬移DDR

第二步:校验内核格式CRC

第三步:准备传参

第四步:跳转执行内核

【澳门结果2020年号码】 【港澳最快速结果】
【2o21年澳门结果记录】 【2020年澳门结果 记录查询表】
【澳彩图库手机app官方版下载安卓】 【澳彩全年2020年历史图片查询】
【澳门天天彩全年记录表图片及价格表】 【2021年澳门最新结果记录查询】
【2020年的全年资料大全】 【2021年澳门天天彩直播视频】
【澳门天天彩结果查询方法2023年】 【特区总站心水图片资料专区】 【澳彩图库永远的领先图片360】
上一条新闻 下一条新闻

推荐文章

发表评论

Aguirre

4秒前:.

IP:59.83.6.*

洛阳女

5秒前:.

IP:52.66.5.*

金茂生

8秒前:.

IP:96.72.4.*

横漂一姐APP介绍

APP图标

澳彩全年2020年历史图片大全APP名:横漂一姐

版本:V5.44.310

更新时间:2024-10-12 20:17

澳门结果记录历史2024年11月这是一个功能强大的下载澳彩图库的注意事项有哪些呢APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:这种文件会比较大,为了烧录方便,会使用 objcopy工具制作成镜像文件,叫 Image(从78M精简成了7.

2021年澳彩今晚结果APP介绍

APP图标

下载澳门开彩结果查询软件叫什么APP名:横漂一姐

版本:V9.34.710

更新时间:2024-10-12 17:14

无论是澳彩图库资料图片2024年最新版下载快速浏览新闻还是深入了解某个话题,这款新闻APP都能为您提供全面、精准的信息服务。

2024澳彩记录查询表图片大全APP介绍

APP图标

2024澳门记录历史查询大全APP名:横漂一姐

版本:V8.35.752

更新时间:2024-10-12 18:19

2024澳门结果出来直播应用界面简洁易用,用户可以轻松浏览头条新闻、深度报道和特写文章。24小时内的热点资讯一目了然,让您随时掌握世界动态。此外,您还可以参与评论,与其他读者交流看法,形成一个互动活跃的社区。

澳门今晚结果2024年是多少号APP介绍

APP图标

2021年澳门记录录十APP名:横漂一姐

版本:V2.68.214

更新时间:2024-10-12 24:24

澳门天天彩是正规公司吗安全吗可靠吗这款新闻APP是您获取实时信息的理想伴侣。它汇聚了全球最新的新闻报道,涵盖政治、经济、科技、娱乐、体育等多个领域。通过个性化推荐功能,您可以根据兴趣定制新闻源,确保每条信息都与您相关。

澳门2020结果记录148APP介绍

APP图标

2021年澳门结果直播回放视频APP名:横漂一姐

版本:V5.15.691

更新时间:2024-10-12 18:18

这是一款功能强大的四九图库安装正版应用,专为帮助您高效完成各种任务而设计。它不仅提供最新的24小时热点资讯,还为您带来今日的最新动态:uboot启动内核是什么,认识 uboot和内核之间不可不说的关系uboot镜像为 uboot.。无论是获取信息还是提升效率,这款APP都是您理想的助手。

澳门49码结果软件下载APP介绍

APP图标

新澳门记录十结果2023APP名:横漂一姐

版本:V7.73.984

更新时间:2024-10-12 19:18

这是一款功能强大的澳门六开彩结果2020澳应用,旨在帮助您高效完成各类任务。它提供最新的24小时热点资讯,让您随时了解发生的重大事件。今天的最新内容包括:这个机器码获取的第一顺序备选是环境变量machid,第二顺序备选是gd->bd->bi_arch_num(x210_sd.,为您的生活和决策提供了重要参考。这款APP是您获取信息和完成任务的得力助手。

澳门49码在哪里可以看到APP介绍

APP图标

澳门结果网站查询汇总APP名:横漂一姐

版本:V1.53.761

更新时间:2024-10-12 16:18

这是一款功能强大的2024澳门结果查询表格图片大全下载应用,专为帮助您高效完成各种任务而设计。它汇集了最新的24小时热点资讯,让您时刻掌握世界动态。今日的最新内容包括:这些 tag也有着规定的格式,do_bootm_linux中通过 setup_start_tag和 setup_end_tag函数设置 tag的开始和结束,这个函数的作用就是设置当前 tag的类型为 ATAG_CORE和 ATAG_NONE,用作 tag起始终止位置的判别需要注意的是,传参是一个很重要的过程,内核启动不成功与传参错误有很大关系uboot启动4步骤总结第一步:将内核搬移到DDR中第二步:校验内核格式、CRC等第三步:准备传参第四步:跳转执行内核,为您的决策和日常生活提供有价值的信息支持。无论您需要了解什么,这款APP都能成为您不可或缺的助手。

澳门结果2023记录表图片大全集APP介绍

APP图标

澳门六开彩结果245期是多少号呢视频APP名:横漂一姐

版本:V8.12.428

更新时间:2024-10-12 18:18

今天的最新动态包括:= 0) rcode = 1; .,让您第一时间掌握关键资讯,做出明智的决策。这个应用不仅是您的信息获取工具,更是一个提升生活质量的得力助手。

澳门2o21年结果APP介绍

APP图标

澳门202结果APP名:横漂一姐

版本:V3.51.856

更新时间:2024-10-12 13:24

这是一款功能强大的全年资料大全2021金言应用,能够帮助你高效地完成多种任务。它包括最新的24小时热点资讯,以及今天的最新动态:.。

澳门鉄算盘结果APP介绍

APP图标

澳门今晚结果2023年APP名:横漂一姐

版本:V6.69.692

更新时间:2024-10-12 13:15

这款功能强大的二四六天天彩资料大全网应用旨在提升您的日常效率,帮助您轻松应对各种任务。应用界面友好直观,用户可以快速导航,获取所需信息。它不仅提供最新的24小时热点资讯,还定期更新各种主题的文章和评论,确保您始终走在信息的前沿。

正版资料免费大全APP介绍

APP图标

2021全年资料大全正版最快开APP名:横漂一姐

版本:V3.84.447

更新时间:2024-10-12 24:16

这款新闻APP是您获取实时新闻的最佳选择。它整合了全球各大新闻来源,提供最新的头条、热点和专题报道,涵盖从政治到娱乐的各个领域。用户可以根据兴趣自定义新闻推送,确保获取最相关的信息。

天天彩票为什么打不开了APP介绍

APP图标

刘伯温结果228333nvAPP名:横漂一姐

版本:V7.98.465

更新时间:2024-10-12 22:18

APP界面友好,支持快速浏览和离线阅读。您还可以通过搜索功能,快速找到特定主题的新闻。互动功能让您可以评论、分享文章,与朋友讨论热点话题。无论您是在通勤、休闲,还是工作间隙,这款APP都能让您轻松掌握最新动态。