笔记整理—uboot启动过程(6)env_init与init_sequence总结

news2024/9/20 7:46:54

        上一章说到uboot的BL2部分板级初始化,这一章将继续对uboot的环境变量初始化内容进行说明。

        env_init,顾名思义这是与环境变量相关的初始化。env_init有许多个,因为uboot支持不同的启动介质(不同的芯片或开发板)。其中inand_x210使用的是Env_movi(通过宏配置实现,x210_sd.h)。

        主要进行了内存中的uboot的环境变量做了基本的初始化与相关判断(有没有现成的环境变量可用)。由于环境变量还没有从sd卡到DDR的relocate,所以当前环境变量处于不可用的状态(在调用了env_relocate才进行了环境变量从sd到DDR的过程),重定位之前的环境变量只能不使用或者去sd卡中使用。

        init_baudrate初始化串口通信波特率。

        get_env_r读取环境变量的值。

        读出来的字符串,用simple_strtoul函数来转为数字,然后放到bd->bi->baudrate。对于x210而言,init_bandrate得不到正确的环境变量值会使用默认宏其值为115200,也就是设置串口波特率为115200(优先使用环境变量)。

        serial_init初始化串口通信(start.S中已在lowlevel_init初始化过了,所以对于x210而言是在进行一次for循环的空转)。

        console_init_f控制台_初始化_第一次;意为控制台的第一次初始化,下面的代码还会出现console_init_r也就是控制台的第二次初始化。由于代码有一定的复杂性,所以不得不选择多次初始化。当第一次初始化完成后会将gd->have->console赋值为1。

        dis_play_banner串口输出uboot标志(banner)。将会打印一些version_string,通过printf打印的,本质上还是使用的puts()完成的打印。用串口发送的与控制台无关。

        虽然二者都用到了串口输出,但是控制台用的是stdio的puts()发送,最后用serial_putc。但是控制台是一个软件虚拟出来的设备这个设备有一个专用的通信函数,最终映射到硬件(串口)上。

        软件是做了优化和缓冲的,有缓冲机制的加入就会减小cpu的占用。缓冲机制最大的用户就是LCD屏幕。

        对了U_BOOT_VERSION是在Makefile中定义的。

        print_cpuinfo将会打印设备是时钟什么的,相关数据是通过计算得出的而不是设定死的。

        cheak_board检测当前开发板是什么板子,并打印信息。

        init_func_i2c初始化i2c总线,但对于x210而言uboot部分是用不上i2c的所以是for循环空转(软/硬)都不使用。

        dram_init:DDR初始化。初始化gd相关的DDR部分,因为之前已经在lowlevel_init中成功了。

bi_dram[n].start=第n片内存起始
bi_dram[n].size=第n片内存的大小

bi_dram[]是一个结构体数组

        display_dram_config打印dram配置信息。

        指令bdinfo可打印硬件相关信息。

        总结一下init_sequence干了什么,基本上都是gd->bd中的初始化。

cpu_init    空转
board_init    网卡初配置与机器码、内核传参、ddr传址
initerrupt_init    定时器timer4(10ms一次)
env_init    没什么东西
init_baudrate    波特率设置gd->bd->bi->baudrate
serial_init    串口初始化(空转)
console_init_f    控制台一阶段初始化
display_banner    打印启动信息
print_cpuinfo    cpu相关信息
cheak_board    打印开发板名称
init_func_i2c    i2c初始化(空转)
dram_init    DDR信息初始化
display_dram_config    打印dram配置信息

        插入一些flash相关信息:CFG_NO_FLASH。Nandflash简称为Nand,Norflash简称flash。所以flash_init执行的是Norflash的初始化。display_flash_config打印相关信息。但对于X210开发板而言是没有Norflash的,其虽然显示8M,但实际上没干活,为什么没有这个东西还要进行保留,是为了代码结构的稳定性。

        CONFIG_VFD虚拟显示(LCD相关)但没有进行这个宏的配置,这是uboot的自带软件框架,我们先不使用它。CONFIG_LCD原因同上暂时不用。

        本章我们说明了uboot的env_init干了什么,并对包括前文在内的init_sequence进行了总结性的说明,下一章将对malloc部分进行初始化的讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android - 音频参数合入

音频参数宏观来看分为两部分,audio和music。不管是哪个平台都需要分别合入这两部分。 A10 music参数 相关工程师调试后会提供 audio_para 文件,将该文件替换至对应工程下的文件编译即可 例: device/sprd/sharkle/sl8541e_1h10_32b/rootdir/system/et…

练习题 — for循环:数一数有几个字母a? 加油呀

昨天的知识点今天复习了一遍,感觉效果还不错奥! 案例题:数一数有几个字母a? count 0 name "itheima is a brand of itcast" for x in name:if x "a":count 1 print(count)#4 完结 🎉 继续更…

不会用AI?那是你不懂提示词工程!一文读懂提示词,三个原则轻松使用AI

现在市场充斥着大量的AI工具,但是大概80%的人都是把他当作一个搜索引擎,最近小编接到很多后台私信,总结了一下: 1、AI根本没用; 2、AI给出的东西,就是模版; 3、AI给不了想要的内容 这里就有…

PCB中焊盘的注意事项

这种不要在焊盘边上打过孔,不然焊盘损坏修都没法修: 把连接焊盘的飞线拉远点,再打过孔:

Qml中实现多视图,多图像源(QImage / QPixmap)

转自: Qml中实现多视图,多图像源(QImage / QPixmap)_engine.addimageprovider-CSDN博客 【写在前面】 在 Qml 中,实现多视图很容易,无非是多个 Image 而已。 但是,如果需要动态刷新,则变得困难。 再或者&a…

Icepak与RHSC-ET耦合计算Die温度场

目录 1 背景介绍 2 工作流程 2.1 概述 2.2 几何处理 2.3 电热耦合计算温度场 2.4 输出HTC 2.5 RHSC-ET读入HTC 3 求解及总结 以下内容截取自该篇资料 几何处理 • 通过stp文件导入系统散热结构 • 修复几何模型,液冷抽出流体 • 模型简化 电热耦合计算…

Android高级UI --- canvas

前言 我们先来聊聊,在我们生活中如何绘制一张如下的图。 我们需要两样东西来绘制: 一张纸(Android 中的 canvas):用来承载我们绘制的内容。一支笔(Android 中的 paint):负责绘制内…

SpringBoot3核心特性-Web开发

目录 传送门前言一、WebMvcAutoConfiguration原理1、生效条件2、效果3、WebMvcConfigurer接口4、静态资源规则源码5、EnableWebMvcConfiguration 源码6、为什么容器中放一个WebMvcConfigurer就能配置底层行为7、WebMvcConfigurationSupport 二、Web场景1、自动配置2、默认效果 …

自动化构建工具Gulp

第三方模块-Gulp 解释 基于node平台开发的前端构建工具 将机械化操作编写成任务,由一条命令来触发执行,提高开发效率 主要能做什么 项目上线:html、css、js文件的压缩合并语法转换:es6、less等语言的转化公共文件抽离修改文件…

替代液压比例放大器首选

比例阀放大器的选用应考虑诸多因素,如系统需求、放大器的兼容性、调节性、附加功能、安全特性、供应商支持和环境适应性等。 系统性能要求明确 压力与流量: 根据液压系统所需的压力和流量来确定放大器的性能指标,以确保比例阀能得到充分的功率支持。 …

2024/8/26 英语每日一段

Apple and Google have had nearly unchecked power over mobile apps in ways that raise prices for some of what you buy, block you from trying clever ideas, push app makers to do scuzzy things to make money, and impose Apple’s and Google’s wishes on all us.…

如何用Java SpringBoot+Vue开发高效OA办公管理系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

三品船舶PLM解决方案详情 三品PLM软件在船舶制造行业应用优势

自2024年起,船舶行业PLM(产品全生命周期管理)技术步入关键发展阶段。国产化工业软件领域积极倡导生态合作,推广统一技术底座下的合作开发模式,整合国内外成熟的工业软件技术与应用资源,旨在全面提升国内船舶…

【Bigtop】利用Bigtop3.2.0编译大数据组件RPM包

利用Bigtop3.2.0编译大数据组件RPM包 前言正文Mvn本地目录的修改FlinkKafkagrgit版本手动准备gradle的文件 前言 原文参考:Bigtop 从0开始 参考了上述的博文自己尝试了编译组件,过程还是遇到很多问题,一一记录,方便后人。 Bigt…

【方案】智慧排水系统解决方案(doc原件)

一、项目建设目标 二、项目主要内容 三、项目建设方案 1.GIS管理子系统 (1) 数据管理和访问 (2) 地图操作功能 (3) 地图查询定位功能 (4) 其他功能 2.工程管理子系统 (1&…

免费分享!算法备案流程以及所需资料

免费分享!算法备案流程以及所需资料 在国内,随着《生成式人工智能服务管理暂行办法》的出台,这一规定明确指出,任何面向中国公众提供具备舆论影响力或社会动员潜力的生成式AI服务,都必须经过严格的算法备案程序。 这就…

有关于算法备案的五大误区

有关于算法备案的五大误区 在这个数据为王的时代,算法已然成为推动社会前进的隐形巨轮。从搜索框中的每一次点击,到购物车里的每一件商品推荐,再到朋友圈里刷屏的动态,算法的身影无处不在,悄无声息地编织着我们的数字生…

云HIS系统,利用云计算平台的技术优势,建立统一的健康档案和电子存储平台,实现医疗数据共享与交换

云HIS系统源码,医院信息管理系统源码,医疗云HIS源码 基于云计算技术的B/S架构的HIS系统,为医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。系统利用云计…

项目经理都在用的五款项目管理工具(建议收藏)

在项目管理中,选择合适的工具对于确保项目成功至关重要。 以下是几款备受项目经理青睐的项目管理软件: 1、进度猫 进度猫是一款基于云端的项目管理工具,以其轻量级、直观和易操作的特点受到项目经理的青睐。它提供了丰富的功能和灵活的操…

如何安装和高级 AMP for WP

当 WordPress 是支持 AMP 的 WEB 站点时,主要通过两个插件支持 AMP。 一个是AMP插件。 这个插件也参与谷歌的开发,并被确认为AMP项目的官方插件。 我最初也安装了这个AMP插件,但我不知道是否能够共存的常规网站和AMP兼容网站,很难…