系统开发 (五) 启动流程

RK3568笔记3:开发板启动流程 并不是 U-Boot 的一部分,而是一个精简的引导加载程序,通常由 U-Boot 提供支持和构建。如果 U-Boot 配置了 SPL(如 U-Boot SPL),那么它们就可以协同工作:SPL 进行初步引导,U-Boot 负责后续完整的引导和系统启动。是第二阶段的 Bootloader,通常运行在 DDR 中,负责完成启动过程的剩余部分。的启动,初始化一些基本硬件,并从存储设备加载第二阶段 Bootloader(U-Boot)。的启动,完成硬件的完整初始化,加载操作系统内核,最终启动操作系统。 阅读详情

一 概览

先来看android 系统架构图

从下至上大概分五层 其中 HAL 及AndroidRuntime 在android 高版本中的层级结构及关联有较大的变化

android系统从上电启动到进入luanch界面的流程和逐层向下依赖的层级结构有很强的关联性

系统启动

1  引导

当电源键按下时引导芯片代码从预定义的地方(固化在ROM)开始执行。加载引导程序BootLoader(它负责初始化硬件设备,为最终调用操作系统做好准备。)到RAM中,然后执行。

2 内核启动  (提供底层硬件访问 系统调用) 

它负责整个硬件的驱动,以及提供各种系统所需的核心功能,内核启动  (提供底层硬件访问 系统调用) 后调用 run_init_process运行init进程 Kernel 启动的第一个用户级进程 Kernel 

3 启动init进程  主要提供四大功能 至此android framework环境启动完毕

  • 作为守护进程  (处理子进程终结 )

  • 解析和执行init.rc文件 (配置系统环境,建立文件系统挂载点,及注册系统服务列表 启动各种子进程等)

  • 生成设备驱动节点 (静态或动态设备节点 热拔插  虚拟binder节点)

  • 属性服务 (保存系统运行时所需环境变量类似window注册表)

注意此图中的 servicemanager 是由 int.rc脚本 中 AIL 脚本执行  

service servicemanager /system/bin/servicemanager 
usersystem
...
onrestart restart zygote
onrestart restart media

4 从3中服务列别种启动app_progress 启动zygote进程

 在Android中,zygote是一个native进程,是Android系统上所有应用进程的父进程,是整个系统创建新进程的核心进程。

zygote进程在内部会先启动 虚拟机,继而加载一些必要的系统资源和系统类,建立socket服务端 runSelectLoopMode 监听app进程连接通信。通过fork的方式,启动system_server嫡长子进程 

5 system_server 启动  本地系统服务(audio flinger surface camera...)及java系统服务(AMS PMS...)

SystemServer是Android系统的一个核心进程,它是由zygote进程创建的,因此在android的启动过程中位于zygote之后。android的所有服务循环都是建立在 SystemServer之上的。在SystemServer中,将可以看到它建立了android中的大部分服务,并通过ServerManager的add_service方法把这些服务注册到(加入)到了ServiceManager的svclist中。从而完成ServcieManager对服务的管理。

深入NuttX内核:手把手调试分析其五阶段启动流程(以STM32F4 Discovery板为例) 本文以STM32F4 Discovery板为例,深入解析NuttX内核的五阶段启动流程,包括硬件初始化、运行时环境建立、任务管理系统初始化等关键步骤。通过GDB调试工具和OpenOCD配置,手把手指导开发者完成开发环境搭建,并提供实用的调试技巧与问题排查方法,帮助读者全面掌握NuttX启动机制。 阅读详情

相关推荐

从零到一:Petalinux系统启动流程深度解析与自定义脚本的巧妙嵌入

本文深度解析Petalinux系统从硬件上电到用户空间初始化的完整启动流程,涵盖FPGA初始化、Bootloader引导、内核启动和init系统等关键阶段。重点讲解如何在System V init和systemd中巧妙嵌入自定义脚本,提供实用教程和最佳实践,帮助开发者实现系统定制化和优化启动性能。

e1f2g的博客 802

【系统移植】开发板的启动过程(认识uboot)

【系统移植】开发板的启动过程(认识uboot)

challenglistic的博客 2654

鸿蒙OpenHarmony【整机启动流程】子系统启动恢复

系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动:

asd95279527p的博客 1730

Linux开发板启动流程

Linux 系统从软件角度看启动流程可以分为四个部分:引导加载程序(Bootloader) 、 Linux 内核、文件系统、应用程序。正常启动过程中,Bootloader首先运行,然后它将内核复制到内存中(也有些内核可以在固态存储设备上直接运行), 并且在内存某个固定的地址设置好要传递给内核的参数,最后运行内核。内核启动之后,它会挂接( mount)根文件系统(“Rootfilesystem”),启动文件系统中的应用程序。

MrWangHao的博客 2667

Android/inux系统开机启动流程

芯片上电解复位后执行第一段程序的执行地址指向0x00000000或0xffff0000,这段程序被称为Bootrom loader,该段程序在芯片制造过程中固化到其内部的ROM空间,只读不可修改

QQ135102692的博客 3717

ESP32学习五-启动流程

一级引导程序是固化在ROM中的。从flash的0x1000偏移地址处加载boot程序。二级引导程序,就是bootloader程序,从flash的0x8000处加载分区表。根据分区表运行应用程序。bootloader程序在esp-idf/components/bootloader/subproject/main/bootloader_start.c文件中。1.一级引导从flash的0x1000处加载bootloader程序。2.bootlader程序在中。运行call_start_cpu0函数。并。

qq_26226375的博客 3751

驱动开发基础知识必修-(一)嵌入式开发板的启动过程

驱动开发必修-嵌入式开发板的启动过程简介从Debug入手启动过程功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 简介 GEC6818 S5P6818 Cortex-A53 ARM GEC6818 —>一个开发板的名字

qq_42233843的博客 2816

鸿蒙开发实战(OpenHarmony)整机启动流程

系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动:

WEZC156465的博客 2292

【Embedded Development】BootROM的详细分析以及Linux开发板的上电启动流程初步分析

它首先读取存储介质中的“IVT(Image Vector Table,镜像向量表)”,通过IVT定位到SPL(二级引导程序)的地址,将SPL加载到片内OCRAM(片上静态RAM)中执行,随后移交控制权。此外,SPL还会初始化简单的电源管理模块,确保硬件供电稳定。需要说明的是,若开发板硬件简单(如DRAM初始化逻辑简单、U-Boot体积小),也可省略SPL阶段,由BootROM直接加载完整U-Boot(如部分STM32MP157开发板),但主流中高端Linux开发板均会保留SPL以提升兼容性。

qq_73648789的博客 1226

Android的启动流程分析

Android的启动流程分析

Android应用开发工程师 2090

risc-v系统启动流程

riscv 系统启动

zhangqing2002的博客 2192

项目开发基础知识:从概念到落地的全流程指南

项目开发是一项有目标、有计划、有组织的系统性工作,核心是将需求转化为可落地的产品(如软件、APP、网站、硬件产品等)。无论是互联网行业的软件开发,还是传统行业的工程类项目,其核心逻辑和基础流程都存在共通性。本文将从核心概念、全流程阶段、关键角色、核心原则、常用工具等基础维度,梳理项目开发的必备知识,帮助新手快速建立对项目开发的整体认知。

2600_94936330的博客 714

RK平台开发(内核篇):Linux内核启动全流程精讲(从BootROM到用户空间)

技术总结RK3568的启动流程如同建造摩天大楼,需要经历政府审批(BootROM)、施工队入场(BL2)、物业安保(ATF)、设计师规划(U-Boot)、装修施工(Linux内核)、住户入住(用户空间)六个关键阶段。每个阶段都有严格的技术规范和调试方法。互动话题你在RK3568开发中遇到过哪些启动问题?对哪个技术环节最感兴趣?欢迎评论区讨论!

xhxh510573522125的博客 270

Android系统的完整启动流程:从硬件上电到应用启动

Android系统的完整启动流程:从硬件上电到应用启动

似霰的博客 3299

NuttX开发环境搭建及启动流程

NuttX开发环境搭建及启动流程

我的博客 3645

龙芯LS2K1000内核启动全流程解析

摘要:本文基于龙芯LS2K1000 LA平台,结合底层驱动代码(tgt_machdep.c、subr_autoconf.c、ioconf.c、init_main.c、configure函数),从硬件上电到系统正常运行,逐环节拆解内核启动流程,重点剖析SATA硬盘识别、USB设备枚举、网卡从PCI识别到IP配置、显示系统启动的完整链路,兼顾代码细节与硬件逻辑,适合嵌入式Linux/BSD内核开发者、龙芯平台调试人员参考。

weixin_44932366的博客 225

【入门到实战】OpenHarmony南向子系统开发:启动流程

启动恢复子系统上下文.......

Androidbye的博客 1110

开发板启动流程

开发板启动流程的ppt介绍,包括各种启动方式,是初学者了解开发流程的很好的ppt

上一篇: 系统开发四 模拟器操作
下一篇: 隐私合规 权限解耦
江太翁
博客等级 码龄15年 271粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值