Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >系统启动时间优化方案--基于米尔MYD-YG2LX开发板

系统启动时间优化方案--基于米尔MYD-YG2LX开发板

原创
作者头像
用户10591265
发布于 2025-05-09 11:15:42
发布于 2025-05-09 11:15:42
7300
代码可运行
举报
文章被收录于专栏:米尔电子米尔电子
运行总次数:0
代码可运行

1.概述

MYD-YG2LX采用瑞萨RZ/G2L作为核心处理器,该处理器搭载双核Cortex-A55@1.2GHz+Cortex-M33@200MHz处理器,其内部集成高性能3D加速引擎Mail-G31 GPU(500MHz)和视频处理单元(支持H.264硬件编解码),16位的DDR4-1600 / DDR3L-1333内存控制器、千兆以太网控制器、USB、CAN、SD卡、MIPI-CSI等外设接口,在工业、医疗、电力等行业都得到广泛的应用。

米尔基于瑞萨RZ/G2L开发板
米尔基于瑞萨RZ/G2L开发板

本文主要介绍基于MYD-YG2LX开发板进行系统启动时间优化的调试案例,一般启动方式有去掉常规uboot,直接使用SPL加载内核和保留常规uboot加载内核的方式,MYD-YG2LX目前使用的是保留常规uboot的方法启动,启动时间20s+,接下来介绍的主要包括TFA、Uboot、Kernel文件系统时间优化。

2.硬件资源

  • USB-TTL调试串口线一根
  • MYD-YG2LX开发板一块
  • 12V电源适配器一个

3.软件资源

  • Linux虚拟机
  • 米尔提供的SDK交叉工具链
  • Linux5.10.83

4.环境准备

进行调试之前,需要安装好Linux虚拟机等相关开发环境,具体可以参考《MYD-YG2LX_Linux软件开发指南》的2.0章节。

5.启动时间优化

5.1.1. TFA优化

TFA引导启动的log主要有以下,如果我们认为不是太美观,可以到TFA源码中使用grep命令去搜索关键的信息打印,然后把相关的打印去掉,这可能需要花点功夫去寻找。

例如(grep -rn “BL2:”)搜索到关键的文件(以下图示只是其中的一个地方),然后屏蔽即可。

另外,需要检查源码下面的这个寄存器有没有设置,有则忽略,没有则需要打开,这样会减少系统在启动中的时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
static void cpu_cpg_setup(void)
{
while ((mmio_read_32(CPG_CLKSTATUS) & CLKSTATUS_DIVPL1_STS) != 0x00000000);
mmio_write_32(CPG_PL1_DDIV, PL1_DDIV_DIVPL1_SET_WEN | PL1_DDIV_DIVPL1_SET_1_1);
while ((mmio_read_32(CPG_CLKSTATUS) & CLKSTATUS_DIVPL1_STS) != 0x00000000);
}
void cpg_early_setup(void)
{
  cpu_cpg_setup();
cpg_ctrl_clkrst(&early_setup_tbl[0], ARRAY_SIZE(early_setup_tbl));
}

最后编译TFA以及更新即可。

5.1.2. Uboot优化

正常的启动log如下,我们需要对这部分进行优化,优化可以从下面3个点出发。

  • 裁剪uboot,减少uboot大小。

MYD-YG2LX平台的2G DDR配置文件在configs/myc-rzg2l_defconfig,1G DDR的配置文件在configs/myc-rzg2l_ddr1gb_defconfig,可以在这个配置文件中屏蔽掉一些自己不需要的功能,这个需要根据实际情况删除不需要的功能,例如:

  • 移除bootdelay的倒计时时间

bootdelay一般默认都是2-3s,移除可以直接修改include/configs/myc-rzg2l.h文件,例如:

  • 关闭uboot的打印log

关闭uboot相关的日志打印,可以到uboot的源码路径下搜索关键的信息,然后进行屏蔽即可(以下图示只是其中的一个地方),例如:

最后编译与更新uboot即可。

5.1.3. Kernel优化

Kernel典型的修改主要有以下:

  • 简单:通过在 cmdline 中添加 quiet 来减少控制台消息
  • 适度:通过移除驱动程序、文件系统、子系统来精简内核,从减少内核解压或加载的时间
  • 适度:通过移除未使用的硬件接口精简设备树
  • 棘手:开始优化行为不良的驱动程序,这是一个相对复杂和困难的任务。优化驱动程序可以提高其性能、稳定性和兼容性,从而改善系统的整体表现。然而,如果驱动程序的行为不良,例如出现崩溃、卡顿或冲突等问题,那么进行优化就会变得更加棘手和挑战。这需要深入分析和修复驱动程序的问题,调整其代码和算法,以使其更加高效和可靠。
  • 使用Bootgraph分析内核启动的调用时间,移除花费时间长的驱动和优化需要使用的驱动

总之优化还算是一项蛮复杂的项目,我们此次主要从以下几点优化:

  • 去掉kernel的打印等级,需要到内核源码下屏蔽掉log属性和到uboot源码下把log等级升高,内核修改如下:

Uboot修改如下:

  • 关掉kernel不需要的一些外设资源,缩小内核大小(需要根据自己的情况来进行修改)

可以到设备树中屏蔽掉一些不需要的接口和到内核配置文件中屏蔽掉一些不需要的驱动配置,例如:

  • 使用Bootgraph分析内核启动的调用时间,移除花费时间长的驱动和优化需要使用的驱动。

首先需要在uboot加上时间戳和init debug调用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setenv bootargs 'rw rootwait earlycon root=/dev/mmcblk0p2 printk.time=1 initcall_debug=1'

然后启动内核,采集启动log,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dmesg > boot-kernel.log

返回内核源码目录,进入内核源码scripts目录,只需下面命令,生成直观图形,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./bootgraph.pl boot-kernel.log > boot-kernel.svg

然后打开boot.svg查看花费时间最大的驱动调用,没用的就关闭,需要用的就优化。

最后编译以及更新内核即可。

5.1.4. 文件系统优化

MYD-YG2LX的文件系统是基于yocto构建的,关于yocto如何构建可以参考《MYD-YG2LX_Linux软件开发指南》的3.0章节。

文件系统主要使用下面这3个命令就可以找到花费时间最多的服务,然后可以根据实际情况优化。当然也可以把所有的服务以图形的形式表现出来,这样更加直观,采用systemd-analyze plot > boot.svg 可以把每个服务启动顺序和消耗时间显示出来,针对这些服务,移除掉不需要的或者调整服务之间的启动顺序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl list-unit-files --state=enabled #查看所有开机自启的服务
systemd-analyze blame #查看服务的初始化时间
systemd-analyze critical-chain #查看启动花费时间最多的

5.1.5. 启动测试

经过以上的优化后可以打包一个sd卡刷机包并刷到板子的emmc,关于如何打包可以参考《MYD-YG2LX_Linux软件开发指南》的4.3章节,最后再启动测试,执行systemd-analyze即可看到启动时间,效果如下:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
启动时间过长:系统启动时间过长
首先,记录系统的启动时间,以便后续对比优化效果。可以使用 systemd-analyze 工具来查看启动时间:
是山河呀
2025/02/04
2800
Linux 启动时间优化实战,2.41 秒启动应用!
劳动节,更个文吧,祝大家都劳有所获。 今天看了一个关于启动优化的讲座,简单总结一下。 本文的目标是尝试一些比较简单有效的方法,并不会覆盖所有的优化技巧。感兴趣的伙伴可以关注我视频号,后面准备用直播的方式和大家交流。 目标系统 硬件: Beagle Bone Black (Cortex A8) USB 摄像头 + LCD 软件: Linux 5.1 + Buildroot rootfs FFmpeg,用于采集视频并解码到 LCD。 点击查看大图 当前启动时间: 从上电到 LCD 显示第一帧图像:9.4
刘盼
2022/05/05
3.6K0
Linux 启动时间优化实战,2.41 秒启动应用!
全志 Linux 系统启动优化 启动优化速度方式 优化启动流程 优化uboot 优化kernel等
启动速度是嵌入式产品一个重要的性能指标,更快的启动速度会让客户有更好的使用体验,在某
韦东山
2022/12/28
4.2K0
全志 Linux 系统启动优化 启动优化速度方式 优化启动流程 优化uboot 优化kernel等
构建一个适合stm32mp157系列开发板的嵌入式Linux系统
Linux平台上有许多开源的嵌入式linux系统构建框架(框架的意思就是工具),这些框架极大的方便了开发者进行嵌入式系统的定制化构建,目前比较常见的有OpenWrt, Buildroot, Yocto,等等。其中Buildroot功能强大,使用简单,而且采用了类似于linux kernel的配置和编译框架,所以受到广大嵌入式开发人员的欢迎。
韦东山
2020/10/14
5.2K0
国产工业CPU平台,米尔基于全志T507-H开发板的实时性分析与测试
全志科技T5系列是一个高性能四核 CortexTM–A53 处理器,适用于新一代汽车市场。T5系列符合汽车 AEC – Q100 测试要求。该芯片集成四核 CortexTM–A53 CPU、G31MP2 GPU、32 位 DDR3/LPDDR3/DDR4/LRDDR4 动态随机存储器。
阿志小管家
2024/02/02
2160
国产工业CPU平台,米尔基于全志T507-H开发板的实时性分析与测试
NVIDIA Jetson Orin nano开发套件启动时间太久?
有人在NVIDIA官方论坛上反应NVIDIA Jetson Orin NANO开发套件启动时间太久?如何缩短这个时间呢?
GPUS Lady
2023/05/29
8350
NVIDIA Jetson Orin nano开发套件启动时间太久?
双目视觉处理系统开发实例-基于米尔安路国产DR1M90开发板
本系统基于米尔MYC-YM90X构建,基于安路飞龙DR1M90处理器,搭载安路DR1 FPGA SOC 创新型异构计算平台,充分发挥其双核Cortex-A35处理器与可编程逻辑(PL)单元的协同优势。通过AXI4-Stream总线构建的高速数据通道(峰值带宽可达12.8GB/s),实现ARM与FPGA间的纳秒级(ns)延迟交互,较传统方案提升了3倍的传输效率,极大地提升了系统整体性能。
用户10591265
2025/02/21
1050
双目视觉处理系统开发实例-基于米尔安路国产DR1M90开发板
Linux启动时间优化-内核和用户空间启动优化实践
从内核timestamp 0.000000作为内核启动起点,到free_initmem()输出"Freeing init memory"作为内核启动的终点。
233333
2023/07/09
1.1K0
Linux启动时间优化-内核和用户空间启动优化实践
快速启动开发板
将开发板配套的两根typec线,一根 直接连接至 开发板 OTG烧录接口 另一头连接至电脑的USB接口,开发板默认有系统,接通otg电源线就会通电并直接启动。
韦东山
2024/08/24
2310
快速启动开发板
【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上
博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813
韩曙亮
2023/03/27
2.1K0
【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上
全志 Tina Linux 系统软件 开发指南 sdk源码编译操作 深入理解Tina-sdk编译框架 支持百问网T113 D1-H哪吒 DongshanPI-D1s V853-Pro等开发板
编写目的:本文档作为Allwinner Tina Linux系统平台开发指南,旨在帮助软件开发工程师、技术支持工程师快速上手,熟悉Tina Linux系统的开发及调试流程。
韦东山
2022/12/28
5.3K0
全志 Tina Linux 系统软件 开发指南 sdk源码编译操作 深入理解Tina-sdk编译框架 支持百问网T113 D1-H哪吒 DongshanPI-D1s V853-Pro等开发板
systemd服务管理详解与子命令一览
描述:系统启动和服务器守护进程管理器,负责在系统启动或运行时激活系统资源,并且管理服务器进程和其它进程,可以说他是Linux的小伙伴系统启动时候最先都是运行的systemd;
全栈工程师修炼指南
2022/09/28
2.2K0
systemd服务管理详解与子命令一览
【Linux】《how linux work》第六章 用户空间如何启动
The point where the kernel starts its first user-space process, init, is significant—not just because that’s where the memory and CPU are finally ready for normal system operation, but because that’s where you can see how the rest of the system builds up as a whole. Prior to this point, the kernel executes a well-controlled path of execution defined by a relatively small number of software developers. User space is far more modular. It’s much easier to see what goes into the user space startup and operation. For the adventurous, it’s also relatively easy to change the user space startup because doing so requires no low-level programming.
阿东
2024/04/10
3280
【Linux】《how linux work》第六章 用户空间如何启动
hi3516dv300芯片手册_hi3518ev300
当前版本作者联系方式(长期有效):E-mail: WindForest@yeah.net
全栈程序员站长
2022/11/09
4.1K0
hi3516dv300芯片手册_hi3518ev300
Tina_Linux_OTA_开发指南
OTA 是Over The Air 的简称,顾名思义就是通过无线网络从服务器上下载更新文件对本地系统或文件进行升级,便于客户为其用户及时更新系统和应用以提供更
韦东山
2023/02/25
4.6K0
全志 Tina Linux 系统资源配置 开发指南 支持百问网T113 D1-H哪吒 DongshanPI-D1s V853-Pro等开发板
Tina Linux SDK的根目录下,执行make menuconfig命令可进入Tina Linux的配置界面。
韦东山
2022/12/28
9.4K0
全志 Tina Linux 系统资源配置 开发指南 支持百问网T113 D1-H哪吒 DongshanPI-D1s V853-Pro等开发板
Tina Linux 存储开发指南
介绍TinaLinux Flash,分区,文件系统等存储相关信息,指导方案的开发定制。
韦东山
2023/02/25
3.2K0
Android系统启动——5 zyogte进程(Java篇)
上一篇文章,我们知道在AndroidRuntime.cpp的start()函数里面是调用的Zygoteinit类的main()函数,那我们就继续研究
隔壁老李头
2018/08/30
2.4K0
Android系统启动——5 zyogte进程(Java篇)
5万字、97 张图总结操作系统核心知识点
这不是一篇教你如何创建一个操作系统的文章,相反,这是一篇指导性文章,教你从几个方面来理解操作系统。首先你需要知道你为什么要看这篇文章以及为什么要学习操作系统。
cxuan
2020/07/17
1.9K0
5万字、97 张图总结操作系统核心知识点
常用电脑资料速查
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
2.5K0
推荐阅读
相关推荐
启动时间过长:系统启动时间过长
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验