Soc的Bring Up流程

复制代码

1、Bring Up流程

SOC (System on a Chip) bring-up是一个复杂的过程,涉及到硬件、固件和软件的集成和验证,以下是一个基于BROMSPLUBOOTLinux的启动流程的概述:

  1. BROM (Boot Read-Only Memory)启动 :启动的最初阶段,在这个阶段,系统会执行芯片ROM里面的代码,这部分代码主要用来检查启动模式,包括NORNandEmmc等,然后从对应的存储介质中加载SPL(Secondary Program Loader)代码。

  2. SPL (Secondary Program Loader)启动SPL属于Uboot的一部分,它的主要作用就是:初始化硬件并加载完整的U-boot ,主要体现在初始化时钟、看门狗、DDRGPIO以及存储外设,最后将U-boot代码加载到DDR中执行。

  3. U-Boot启动U-boot的主要作用是:引导加载KernelDTSU-boot在启动之后,同样初始化Soc硬件资源,然后会计时等待,并执行默认的启动命令,将KernelDTS信息从存储介质中读取出来并加载到内存中执行。

  4. Kernel启动 :在U-Boot加载了内核映像和设备树之后,系统会启动Linux。在这个阶段,系统会初始化各种硬件设备,加载驱动程序并启动用户空间应用程序。

更多干货可见:高级工程师聚集地,助力大家更上一层楼!

2、常见问题

Q:为什么上一个阶段已经初始化了硬件资源,下一个阶段为何重复初始化?

A

  1. 每个阶段的硬件初始化,其目标和需求都不同,硬件配置也会不一样,因此在不同阶段进行不同的初始化。

  2. 硬件状态可能会改变,在SOC启动过程中,硬件状态可能会因为电源管理、时钟管理等原因而改变,这可能需要在每个阶段都重新初始化以确保其正确工作

  3. 为了保证硬件资源的可靠性,最好每个阶段都重新初始化一次

QU-boot加载内核时,会进行重定位的操作,这一操作有何意义?

A

  1. U-boot的重定位,主要作用是为了 给内核提供一个连续的、大的内存空间,供内核和其他应用程序使用

  2. U-boot的加载过程分两个阶段,即:SPLU-boot

  • SPL阶段,主要将U-boot代码从Flash中加载到RAM指定位置

  • U-boot阶段,U-boot会将自身从RAM的开始部分移动到RAM的末尾,占用高地址空间,从而让低地址空间可以作为一个连续的,大的内存空间供内核和其他应用程序使用。

Q:在Bring Up中,为了保证启动时间,如何裁剪?

A

启动时间的裁剪是一个重要的步骤,其主要目标是缩短从电源打开到操作系统完全启动的时间。

  1. 优化Bootloader:减小Bootloader的代码大小,减少硬件初始化(只初始化必要硬件设备)等

  2. 优化Kernel:减少启动服务数量,优化服务的启动顺序,使用预加载技术等方法来实现。

  3. 使用快速启动模式:一些SOC支持快速启动模式,这种模式下,SOC会跳过一些不必要的硬件初始化和自检过程,从而更快地启动。

  4. 使用休眠和唤醒技术:一些SOC还支持休眠和唤醒技术,这种技术可以将系统的状态保存到非易失性存储器中,然后关闭系统。当系统再次启动时,可以直接从非易失性存储器中恢复系统的状态,从而更快地启动。

相关推荐
十年编程老舅9 小时前
读懂 MCU 启动:从上电到程序运行全链路
单片机·嵌入式硬件·mcu·嵌入式·cpu·嵌入式开发·ram
dozenyaoyida18 小时前
RISC-V嵌入式开发:彻底解决“undefined reference to isatty“错误全攻略
经验分享·c·cmake·嵌入式开发·isatty·没有定义问题
wotaifuzao4 天前
指针和中断不是魔法:用第一性原理看穿嵌入式底层(万字解析)
stm32·嵌入式开发·内存模型·c语言指针·arm架构·中断机制·rtos内核
武汉唯众智创5 天前
全栈物联网实训平台拆解:通信协议+边缘AI+实战源码
人工智能·物联网·嵌入式开发·物联网实训平台·高校实训·python物联网
2601_958352906 天前
A-68双麦波束模组深度解析:90dB降噪、60°夹角、3-5米拾音,一篇讲透
人工智能·语音识别·嵌入式开发·音频降噪·回音消除
啊哈哈哈16 天前
Modbus 协议官方规范资料包:中文翻译版 / 英文原版 / 中英对照版
串口通信·modbus·嵌入式开发·工业通信·plc通信·上位机开发·协议规范
山木嵌入式7 天前
【嵌入式】裸机VS RTOS 核心对比+落地选型指南
freertos·嵌入式开发·rtos·裸机编程
上海合宙LuatOS7 天前
Air8000多网通信- RNDIS/ECM
物联网·lua·嵌入式开发·多网通信
Tronlong创龙7 天前
基于 RV1126B 评估板的 Linux 系统开发详解(一)
开发板·嵌入式开发·硬件开发·工业控制
BW.SU9 天前
PackagingTool 嵌入式资源打包合并工具
单片机·二进制·嵌入式开发·资源合并软件·图片打包