tag 标签: 开发板

相关博文
  • 2025-6-13 16:56
    2 次阅读|
    0 个评论
    最近我发现一个有趣的开发板。 这个开发板集合了ARM核心,NPU核心甚至还有FPGA核心。 它就是米尔新出的 YM 90 X 开发板。 它基于 安路科技 所打造的芯片 上海安路信息科技于2021年在 上交所科创板上市,是A股首家专注于FPGA业务的上市公司。 YM90X开发板用的就是安路的SALDRAGON1( 飞龙1 ,以下简称 DR1)系列 FPSoC 。 FPSoC就是将ARM、NPU和JPU处理器和安路FPGA可编程逻辑核心组合在一颗芯片上,通过高带宽总线互联。 类似于AMD的ZYNQ 。 DR1用的是 两颗Cortex-A35 ,最大运行频率 1GHz ,Cortex-A35核心 性能类似于Cortex-A53 ,Cortex-A35同样频率下,能达到80~100%的性能。执行相同任务的情况下Cortex-A35仅消耗Cortex-A53 68%的电量,效率高很多。 带有 0.4TOPS NPU,支持 JPEG编解码 。带有 外部看门狗 。 FPGA带有 95K个LUTs ,这个规模已经相当不错了。 配置上带有 1GB DDR3 内存, 8GB eMMC , 32MB QSPI Flash 。 米尔YM90X的核心板尺寸 50x52mm 采用 LCC+LGA 封装焊盘,有324个引脚, 200个IO 接口,采用12层高密度PCB设计,沉金工艺,无铅焊锡,有独立的接地信号层。提供工业级和商业级核心板。 扩展底板接口非常丰富,有 4个40Pin排针 扩展接口,1个40Pin树莓派扩展接口。还有JTAG接口,电池接口,电源开关。 两个千兆网口 , USB2.0 接口, HDMI 接口 。 12V 电源接口,官方搭配的是 12V3A 的电源。 还有MicroSD卡槽, LCD显示接口 。 系统和软件方面,米尔提供的依然是两种,一个是以Yocto构建的精简版本镜像以及一个全功能镜像。还有丰富的FPGA开发资源。 FPGA有安路提供的TangDynasty以及FutureDynasty IDE。 总的来说我觉得这个开发板还是相当值得买的。 特别是如果你有FPGA设计需求的话。 要知道目前市场上没有ARM核心的FPGA开发板核心板,目前也得三四百块钱,而这个有ARM双核,甚至还有个0.4TOPS的NPU, 价格也差不多。那这个 性价比还是挺给力的 。 而且还有工业级版本可选,米尔的稳定性和做工都还是不错的,最近我发现 米尔的开发板资料获取也更简单了 ,在他们的网站上注册账号绑定SN和PN码可以直接下载所有资料,比较方便。比之前方便不少。
  • 2025-6-6 15:33
    0 个评论
    AM62x处理器作为TI新一代高性能、低功耗处理器,在工业控制、人机交互、边缘计算等领域有着广泛应用。飞凌嵌入式基于AM62x处理器设计开发的OK62xx-C开发板为开发者提供了丰富的硬件接口资源。本文将针对开发过程中可能遇到的各类接口问题,提供系统化的排查思路和解决方案,帮助开发者快速定位并解决问题。 一、通用排查思路 在硬件调试过程中,系统化的排查方法能够显著提高效率。以下是针对飞凌嵌入式AM62x开发板的通用排查流程: 1.芯片一致性验证: 首先确保所用功能芯片与参考设计原理图完全一致。若芯片型号不同,可能需要进行驱动移植工作,包括修改设备树配置和驱动程序。 2.基础信号检查: 对于功能验证失败的模块,应依次检查: 电源电压是否在允许范围内; 复位信号时序是否符合要求; 时钟信号频率和幅值是否正常。 3.交叉测试: 通过替换核心板或底板的方式,快速定位问题所在位置,判断是核心板的问题还是底板的问题。 4.信号完整性检查: 测量引脚电平是否符合预期; 检查数据信号是否有正常输出; 确认信号空闲状态是否正常。 5.焊接质量检查: 排查焊接问题,阻容器件是否存在虚焊、连焊、漏焊、错焊等问题; 排查器件焊接的方向,是否存在如焊接的器件1脚和底板的1脚标识不对应问题。 6.引脚复用确认: 通过查阅AM62x技术参考手册,确认所用引脚的功能复用配置是否正确,特别要注意启动相关引脚的默认功能。 二、系统不启动问题排查 当OK62xx-C开发板无法正常启动时,可按照以下步骤排查: 1.关键信号检查: 测量VCC_3V3_SYS_PG(RD60)信号,确保电源正常; 检查所有电源轨电压是否在允许范围内; 验证复位信号时序是否符合处理器要求。 2.启动配置检查: 确认底板设计中对GPMC总线相关启动项引脚做了正确的上下拉处理; 特别注意连接FPGA等外设时,不能影响启动配置电平; 核对boot模式选择引脚的电平状态。 3.I2C总线冲突排查: RU50、RU52为I2C0总线,核心板可能已挂载多个设备; 确保底板不悬空这些引脚,同时其他功能不重复使用I2C0; 检查I2C总线上拉电阻是否正常。 4.交叉测试: 更换核心板或底板,确认是否是个例问题。 三、I2C接口问题排查 I2C总线常见问题及解决方法: 1.基础配置检查: 确认SCL和SDA线均有上拉电阻; 检查同组I2C总线下挂载设备的地址是否有冲突。 2.信号质量分析: 测量空闲状态是否为高电平; 观察数据传输时波形是否完整,是否存在过冲或振铃; 使用逻辑分析仪捕获完整通信过程。 3.阻抗匹配调整: 若波形上升沿缓慢,可减小上拉电阻值; 若低电平过高,可增大上拉电阻值。 4.诊断工具使用: 可通过I2Ctool工具查看总线上是否挂载设备: i2cdetect-l //检测系统上有几组I2C i2cdetect- r -y2 //检测I2C第二组总线上的挂载的设备 四、SPI接口问题排查 SPI通信故障排查要点: 1.硬件连接确认: MOSI和MISO必须交叉连接; 确认片选信号连接正确且未被其他功能复用; 检查SPI时钟线是否连通。 2.模式配置验证: 确认主从设备的CPOL和CPHA设置一致; 检查时钟频率是否在设备支持范围内; 验证数据位宽设置是否正确。 3.信号测量: 使用示波器测量时钟信号质量; 观察数据线在片选有效期间的信号变化; 检查空闲状态下各信号线的电平状态。 五、USB接口问题排查 USB接口(2.0/4G/5G)常见问题: 1.电源检查: 测量USB_VBUS_3V3信号是否为稳定的1.8V; 确认VBUS电流供给能力满足设备需求。 2.信号连接确认: 确认USB的发送信号串联了AC耦合电容。 3.USB特殊注意事项: 一般USB设备端的发送信号已经添加了AC耦合电容,因此接收端不需要再次添加耦合电容; 建议使用差分探头测量高速信号完整性。 六、SDIO问题排查 1.电平配置检查: SDIO接口的引脚电平与传输速度有关,默认工作电压为3.3V,高速模式需切换至1.8V; SDIO信号不可通过电平转换芯片,必须直接连接。 2.信号完整性优化: 确认SDIO总线做了等长处理。 3.上拉电阻配置: 根据规范配置适当的上拉电阻; 检查卡检测引脚的电平状态。 以上就是小编为大家整理的OK62xx-C开发板在开发过程中常见的问题类型以及排查思路。由于篇幅有限,本文先为大家介绍通用思路、不启动问题、I2C接口问题、SPI接口问题、USB问题 和 SDIO问题共6大类型, 后续还将介绍LVDS、PCIe、UART、CAN等等接口的问题以及解决思路,希望大家持续关注。
  • 2025-5-10 14:45
    59 次阅读|
    0 个评论
    Qt是基于C++ 的跨平台开源应用程序开发框架,专注于图形用户界面和非GUI程序的构建。它提供丰富的GUI控件库和高级功能模块(如网络通信、数据库访问、多媒体处理),并采用独特的信号与槽机制实现高效组件通信。支持OpenGL、Vulkan等图形接口,以及针对嵌入式系统的EGLFS无窗口模式和LinuxFB帧缓冲等,开发者可根据目标平台选择灵活的渲染策略。 本文基于触觉智能RK3506星闪开发板Ubuntu系统进行演示,配套RK3506核心板(3核A7@1.5GHz+M0@200MHz多核异构) 宽温级5 9元/ 工 业级6 8元 ,一片也是含税批量价~ Ubuntu SDK安装与环境搭建 SDK安装 网盘下载路径:Linux4.软件资料QT-SDK/Ubuntu 资料链接请进入触觉智能官网,或联系客服13423856106获取。 注意: 1. QT-SDK 采用交叉编译,所以要在 X86_64 电脑上使用 SDK,不要将 SDK 下载到板子上。 2. 编译环境请使用 Ubuntu22.04(真机或 docker 容器),如果使用其他版本可能导致编译出错。 3. 不要在虚拟机共享文件夹以及非英文目录存放、解压QT-SDK。 下载SDK后,首先校验MD5值,命令如下: $ md5sum rk3506-ubuntu22_qt5-sdk.tar.gz 解压QT-SDK,命令如下: $ sudo tar -zxvf rk3506-ubuntu22_qt5-sdk.tar.gz -C ./ 交叉编译环境搭建 进入qt sdk目录下,执行install_sdk.sh脚本,进行安装和搭建交叉编译环境,具体如下: $ cd ./rk3506-ubuntu22_qt5-sdk $ sudo ./install_sdk.sh $ ./env.sh $ source ~/.bashrc 搭建环境后,查看qmake版本和交叉编译工具链版本: $ arm-none-linux-gnueabihf-gcc -v Using built-in specs. COLLECT_GCC =arm-none-linux-gnueabihf-gcc COLLECT_LTO_WRAPPER =/ home /industio/ evb3506 /arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf/ bin /../ libexec /gcc/ arm - none - linux - gnueabihf /11.3.1/ lto - wrapper Target: arm-none-linux-gnueabihf Configured with: /data/jenkins/workspace/GNU-toolchain/arm-11/src/gcc/configure --target=arm-none-linux-gnueabihf --prefix= --with-sysroot=/arm-none-linux-gnueabihf/libc --with-build-sysroot=/data/jenkins/workspace/GNU-toolchain/arm-11/build-arm-none-linux-gnueabihf/install//arm-none-linux-gnueabihf/libc --with-bugurl=https://bugs.linaro.org/ --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/data/jenkins/workspace/GNU-toolchain/arm-11/build-arm-none-linux-gnueabihf/host-tools --with-mpfr=/data/jenkins/workspace/GNU-toolchain/arm-11/build-arm-none-linux-gnueabihf/host-tools --with-mpc=/data/jenkins/workspace/GNU-toolchain/arm-11/build-arm-none-linux-gnueabihf/host-tools --with-isl=/data/jenkins/workspace/GNU-toolchain/arm-11/build-arm-none-linux-gnueabihf/host-tools --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-mode=thumb --with-arch=armv7-a --with-pkgversion= 'Arm GNU Toolchain 11.3.Rel1' Thread mod el: posix Supported LTO compression algorithms: zlib gcc version 11 . 3 . 1 20220712 (Arm GNU Toolchain 11 . 3 .Rel1) $ qmake -v QMake version 3 . 1 Using Qt version 5.15.8 in /opt/rk3506/rk3506_ubuntu22_5.15/ext/lib 注意:根据安装路径的不同,导致qmake和arm-none-linux-gnueabihf-gcc的路径也是不同的。 Qt交叉编译 Qt源码demo 将Qt demo 解压到当前路径下,命令如下: $ mkdir -p ./qt-demo tar -xvf moveblocks.tar.gz -C ./qt-demo $ cd qt-demo $ ls main .cpp moveblocks .pro 交叉编译 命令如下: $ qmake ./ $ make $ make install $ ls main .cpp Makefile moveblocks moveblocks .pro 由此可见编译后生成moveblocks可执行程序,可以通过ssh等方式将可执行程序传到开发板中运行。 Qt验证 将demo传到开发板上,命令如下: $ adb push Z:\moveblocks /tmp 运行demo,命令如下: $ chmod a+x /tmp/moveblocks $ /tmp/moveblocks 结果展示:
  • 2025-5-10 14:36
    0 个评论
    LVGL是一个免费的轻量级开源图形库。具有丰富部件与高级图形特性,支持多种输入设备和多国语言,独立于硬件之外的开源图形库。LVGL的配置主要区别在于渲染后端的选择,目前可选DRM直接送显以及通过SDL送显。目前RK3506平台可支持SDL送显。 本文基于触觉智能RK3506星闪开发板进行演示,配套RK3506核心板(3核A7@1.5GHz+M0@200MHz多核异构) 含税价5 9元 ,一片也是批量含税价~ 配置LVGL Buildroot配置 基础配置保存路径: $sdk/buildroot/configs/rockchip_rk3506_defconfig # Buildroot相关配置 # include "base/base.config" # include "chips/rk3506_arm.config" # include "fs/vfat.config" # include "wifibt/bt.config" # include "wifibt/wireless.config" # include "multimedia/audio.config" # include "wifibt/bt.config" # include "wifibt/wireless.config" # include "lvgl/lvgl_rkadk.config" # include "lvgl/rk_demo.config" # include "fs/ntfs.config" ... LVGL配置 基础配置保存路径: $sdk/buildroot/configs/rockchip/lvgl/v8 $ ls buildroot/configs/rockchip/lvgl/v8 base. config lvgl_drm. config lvgl_rkadk. config lvgl_sdl. config LVGL DEMO 源码⽬录结构 源码路径:SDK/app/lvgl_demo/ $tree -L 1 . #i ├── amp_monitor ├── cJSON # cJSON源码 ├── CMakeLists .txt ├── common ├── flexbus ├── gallery ├── lv_demo # 基础示例程序,运行官方DEMO ├── lvgl8 # 默认使用lvgl8 ├── lvgl9 ├── motor_demo ├── rk_demo # RK显控DEMO,包含智能家居、家电显控、楼宇对讲、系统设置等DEMO ├── sys # 时间戳,trace debug等 └── tools rk_demo代码说明 源码路径:SDK/app/lvgl_demo/rk_demo 主要作为一个示例程序,演示如何将官方的DEMO运行起来。以下说明略过一些无关的代码,仅挑选需要关注的代码进行说明。 static void lvgl_init ( void ) { /* 一切LVGL应用的开始 */ lv_port_init (); ... check_scr (); } ... int main ( int argc, char **argv) { signal (SIGINT, sigterm_handler); struct sched_param param; int max_priority; max_priority = sched_get_priority_max(SCHED_FIFO) ; param.sched_priority = max_priority ; if ( sched_setscheduler ( 0 , SCHED_FIFO, param) == - 1 ) { perror ("sched_setscheduler failed"); } /* 根据配置选择对应的DEMO初始化,绘制对应UI */ #ifROCKIT_EN RK_MPI_SYS_Init (); # endif #ifWIFIBT_EN run_wifibt_server (); # endif lvgl_init (); app_init (); rk_demo_init (); while (!quit) { /* 调用LVGL任务处理函数,LVGL所有的事件、绘制、送显等都在该接口内完成 */ lv_task_handler (); usleep ( 100 ); } #ifROCKIT_EN RK_MPI_SYS_Exit (); # endif return0; } 源码编译说明 修改源码后,重新编译之前删除之前的的lvgl_demo: $rm -rf SDK /buildroot/output /rockchip_rk3506/build /lvgl_demo/ -rf 重新编译buildroot: $ ./build.sh buildroot DEMO编译说明 触觉智能RK3506资料网盘中有提供的lvgl的demo,以下是编译方法以及demo运行方法。 解压 命令如下: $ mkdir demo $ unzip lvgl_demo. zip -d demo/ $ cd demo/lvgl_demo 修改与编译 修改交叉编译工具链: $ cat Makefile # # Makefile # #CC ?= gcc CC = /home/rk3506/rk3506_linux-250211/rk3506_linux6.1/buildroot/output/rockchip_rk3506/host/bin/arm-buildroot-linux-gnueabihf-gcc LVGL_DIR_NAME ?= lvgl LVGL_DIR ?= ${ shell pwd} CFLAGS ?= -O3 -g0 -I$(LVGL_DIR)/ -Wall -Wshadow -Wundef -Wmissing-prototypes -W no -discarded-qualifiers -Wall -Wextra -W no -unused-function -W no - error =strict-prototypes -Wpointer-arith -fno-strict-aliasing -W no - error =cpp -Wuninitialized -Wmaybe-uninitialized -W no -unused-parameter -W no -missing-field-initializers -Wtype-limits -Wsizeof-pointer-memaccess -W no -format-nonliteral -W no -cast-qual -Wunreachable-code -W no -switch-default -Wreturn-type -Wmultichar -Wformat-security -W no -ignored-qualifiers -W no - error =pedantic -W no -sign-compare -W no - error =missing-prototypes -Wdouble-promotion -Wclobbered -Wdeprecated -Wempty-body -Wtype-limits -Wshift-negative-value -Wstack-usage= 2048 -W no -unused-value -W no -unused-parameter -W no -missing-field-initializers -Wuninitialized -Wmaybe-uninitialized -Wall -Wextra -W no -unused-parameter -W no -missing-field-initializers -Wtype-limits -Wsizeof-pointer-memaccess -W no -format-nonliteral -Wpointer-arith -W no -cast-qual -Wmissing-prototypes -Wunreachable-code -W no -switch-default -Wreturn-type -Wmultichar -W no -discarded-qualifiers -Wformat-security -W no -ignored-qualifiers -W no -sign-compare LDFLAGS ?= -lm BIN = demo #Collect the files to compile MAINSRC = ./main.c include $(LVGL_DIR) /lvgl/lvgl.mk include $(LVGL_DIR) /lv_drivers/lv_drivers.mk # CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c OBJEXT ?= .o AOBJS = $(ASRCS:.S=$(OBJEXT)) COBJS = $(CSRCS:.c=$(OBJEXT)) MAINOBJ = $(MAINSRC:.c=$(OBJEXT)) SRCS = $(ASRCS) $(CSRCS) $(MAINSRC) OBJS = $(AOBJS) $(COBJS) # # MAINOBJ - OBJFILES all : default %.o: %.c @ $(CC) $(CFLAGS) -c $ -o $@ @ echo "CC$" default : $( AOBJS )$( COBJS )$( MAINOBJ ) $( CC ) -o $( BIN )$( MAINOBJ )$( AOBJS )$( COBJS )$( LDFLAGS ) clean: rm -f $( BIN )$( AOBJS )$( COBJS )$( MAINOBJ ) 修改DEMO,如图所示,在main.c中将demo中显示的分辨率设置成与屏幕分辨率对应: 编译( 注意:交叉编译工具链路径根据实际情况进行更改。): $ make 最后将编译出的demo 通过adb push到开发板上。 C:\Users\industio_mhkadb push Z:\rk\rk3506\rk3506_linux-250211\rk3506_linux6.1\app\ test \demo\lvgl_demo\demo / Z:\rk\rk3506\rk3506_linux-250211\rk3506_linux6.1\app\ test \...ile pushed, 0 skipped. 24.4 MB/s (1127184 bytes in 0.044s) root@rk3506-buildroot:/# chmod a+x /demo root @rk3506 - buildroot : / # /demo END
  • 2025-5-9 17:38
    84 次阅读|
    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开发板 本文主要介绍基于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:”)搜索到关键的文件(以下图示只是其中的一个地方),然后屏蔽即可。 另外,需要检查源码下面的这个寄存器有没有设置,有则忽略,没有则需要打开,这样会减少系统在启动中的时间。 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 , 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调用: setenv bootargs 'rw rootwait earlycon root=/dev/mmcblk0p2 printk.time=1 initcall_debug=1' 然后启动内核,采集启动log,如下: dmesg boot-kernel. log 返回内核源码目录,进入内核源码scripts目录,只需下面命令,生成直观图形,如下: ./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可以把每个服务启动顺序和消耗时间显示出来,针对这些服务,移除掉不需要的或者调整服务之间的启动顺序。 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即可看到启动时间,效果如下:
相关资源