Soc的Bring Up流程
1、Bring Up流程
SOC (System on a Chip) bring-up是一个复杂的过程,涉及到硬件、固件和软件的集成和验证,以下是一个基于BROM,SPL,UBOOT和Linux的启动流程的概述:
BROM (Boot Read-Only Memory)启动:启动的最初阶段,在这个阶段,系统会执行芯片ROM里面的代码,这部分代码主要用来检查启动模式,包括NOR、Nand、Emmc等,然后从对应的存储介质中加载SPL(Secondary Program Loader)代码。SPL (Secondary Program Loader)启动:SPL属于Uboot的一部分,它的主要作用就是:初始化硬件并加载完整的U-boot,主要体现在初始化时钟、看门狗、DDR、GPIO以及存储外设,最后将U-boot代码加载到DDR中执行。U-Boot启动:U-boot的主要作用是:引导加载Kernel和DTS。U-boot在启动之后,同样初始化Soc硬件资源,然后会计时等待,并执行默认的启动命令,将Kernel和DTS信息从存储介质中读取出来并加载到内存中执行。Kernel启动:在U-Boot加载了内核映像和设备树之后,系统会启动Linux。在这个阶段,系统会初始化各种硬件设备,加载驱动程序并启动用户空间应用程序。
更多干货可见:高级工程师聚集地,助力大家更上一层楼!
2、常见问题
Q:为什么上一个阶段已经初始化了硬件资源,下一个阶段为何重复初始化?
A:
每个阶段的硬件初始化,其目标和需求都不同,硬件配置也会不一样,因此在不同阶段进行不同的初始化。
硬件状态可能会改变,在
SOC启动过程中,硬件状态可能会因为电源管理、时钟管理等原因而改变,这可能需要在每个阶段都重新初始化以确保其正确工作为了保证硬件资源的可靠性,最好每个阶段都重新初始化一次
Q:U-boot加载内核时,会进行重定位的操作,这一操作有何意义?
A:
U-boot的重定位,主要作用是为了 给内核提供一个连续的、大的内存空间,供内核和其他应用程序使用U-boot的加载过程分两个阶段,即:SPL和U-boot,
在
SPL阶段,主要将U-boot代码从Flash中加载到RAM指定位置在
U-boot阶段,U-boot会将自身从RAM的开始部分移动到RAM的末尾,占用高地址空间,从而让低地址空间可以作为一个连续的,大的内存空间供内核和其他应用程序使用。
Q:在Bring Up中,为了保证启动时间,如何裁剪?
A:
启动时间的裁剪是一个重要的步骤,其主要目标是缩短从电源打开到操作系统完全启动的时间。
优化
Bootloader:减小Bootloader的代码大小,减少硬件初始化(只初始化必要硬件设备)等优化
Kernel:减少启动服务数量,优化服务的启动顺序,使用预加载技术等方法来实现。使用快速启动模式:一些
SOC支持快速启动模式,这种模式下,SOC会跳过一些不必要的硬件初始化和自检过程,从而更快地启动。使用休眠和唤醒技术:一些
SOC还支持休眠和唤醒技术,这种技术可以将系统的状态保存到非易失性存储器中,然后关闭系统。当系统再次启动时,可以直接从非易失性存储器中恢复系统的状态,从而更快地启动。

Soc的Bring Up流程的更多相关文章
- SoC的软件开发流程,主要包含一些Linux下的操作命令
该笔记主要记录SoC的软件开发流程,主要包含一些Linux下的操作命令 1. 编写design file .c .h 2. 编写makefile 可执行文件名,交叉编译环境,compile fl ...
- Xilinx Zynq-7000 嵌入式系统设计与实现
Xilinx Zynq-7000 嵌入式系统设计与实现 基于ARM Cortex-A9双核处理器和Vivado的设计方法 目录 第1章Zynq-7000 SoC设计导论 1.1全可编程片上系统基础知识 ...
- 浅析SIEM、态势感知平台、安全运营中心
近年来SIEM.态势感知平台.安全运营中心等概念炒的火热,有的人认为这都是安全管理产品,这些产品就是一回事,有人认为还是有所区分.那么到底什么是SIEM.什么是态势感知平台.什么是安全运营中心,他们之 ...
- 常见SOC启动流程分析
本文以s5pv210这款SOC为例,分析了其启动流程 在s5pv210的SOC内部,存在着一个内部的ROM和一个内部的RAM 这个内部的ROM叫做 IROM,它是norflash的一种.其不同于板子上 ...
- 高通Camera bring up软件流程【转】
本文转载自:http://blog.csdn.net/liwei16611/article/details/51279658 高通camera bring up分为两种类型:YUV和bayerbrin ...
- I.MX6 PHY fixup 调用流程 hacking
/********************************************************************************** * I.MX6 PHY fixu ...
- Devices Tree加载流程
DT.IMG布局 hdr zImage Ramdisk.img DT.img 其中DT.img由DTBTOOL打包所有编译生成的dtb生成:布局如下: DT header dt_entry_0 dt_ ...
- uboot的配置流程分析
简单介绍一下uboot的基本配置流程.和绝大多数源码编译安装一样,uboot在执行make之前需要执行make XXXconfig来配置相关信息,而且uboot本身是针对多种平台的bootloader ...
- DPA 9.1.85 升级到DPA 10.0.352流程
SolarWinds DPA的升级其实是一件非常简单的事情,这里介绍一下从DPA 9.1.95升级到 DPA 10.0.352版本的流程.为什么要升级呢? DPA给用户发的邮件已经写的非常清楚了(如下 ...
- Altera SoC与Matlab的联合---第一步 软件安装与硬件测试
参考设计:http://cn.mathworks.com/help/hdlcoder/examples/getting-started-with-hardware-software-codesign- ...
随机推荐
- SqlSugar本地缓存查询实现方式
有C#的国产ORM SqlSugar 好久了,实在话还不错,不过毕竟是早期产物不能过分要求规范化,有些项目查询语句需要用到缓存,官方是redis,我写了个本地缓存借助ConcurrentBag,因为有 ...
- Mysql报错:Specified key was too long; max key length is 767 bytes
1.show variables like 'innodb_large_prefix'; show variables like 'innodb_file_format'; 修改为如下配置: set ...
- linux系统下python中的tkinter库
打开终端,输入如下命令: sudo apt-get update sudo apt-get install python3-tk
- Cilium系列-11-启用带宽管理器
系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...
- 【Leaflet专题篇】L.tileLayer图层顺序问题
1 问题复现 使用L.tileLayer加载底图(A.B.C)并使用layerControl管理.在用L.tileLayer.wms添加wms服务(D),当切换ABC时会压盖D视频中右下角的wms服务 ...
- quarkus依赖注入之七:生命周期回调
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇的知识点是bean的生命周期回调:在be ...
- [nginx]lua读取请求体
前言 nginx默认不读取请求体的数据,但可以通过$request_body内置变量来获取.$request_body存在内存中,如果它的字节大小超过nginx配置的client_body_buffe ...
- R2在全渠道业务线的落地
随着业务的增长,系统的高频率迭代,质量保障工作迫切需要引入更加科学高效的测试方法来助力业务高质量的交付.长城项目一期测试中,全渠道质量团队引入技术平台部R2技术,极大的提升了项目交付的质量.因此,本文 ...
- 园子的脱困努力-云厂商合作:领取阿里云免费ECS试用资源,部署Java Web环境,送小礼品
在园子脱困的关键时期,每一笔收入都很重要,一边在会员救园,一边我们要努力把握每一个商务合作机会,争取早日走出困境. 之前园子维持生存的收入主要来自于与云厂商的合作,但去年由于云厂商推广策略的调整,这块 ...
- 【日常踩坑】修复 chrome 打不开微信或者部分第三方应用内链接
目录 默认浏览器为 chrome 时,打不开微信或者部分第三方应用内链接(或者没有反应) 修复问题:卸载 KGChromePlugin 参考资料 默认浏览器为 chrome 时,打不开微信或者部分第三 ...