news 2026/6/22 2:10:37

嵌入式Linux开发板性能实测:CoreMark、内存带宽与Qt图形性能全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式Linux开发板性能实测:CoreMark、内存带宽与Qt图形性能全解析

1. 项目概述:一次深度拆解国产高性能开发板性能的实战

最近拿到了一块米尔电子出品的MYD-YT507H开发板,这是一款基于全志T507-H处理器的国产高性能嵌入式平台。对于从事边缘计算、车载信息娱乐系统或者工业人机界面开发的工程师来说,选型时最头疼的莫过于“纸面参数”和“实际表现”之间的差距。芯片厂商的数据手册写得天花乱坠,但真到了自己手里,系统整体性能到底如何,存储读写是否稳定,图形界面流畅度怎样,这些都需要实实在在的数据来验证。

所以,我决定对这块板子进行一次从CPU算力到存储IO,再到图形性能的全面“体检”。这不仅仅是为了给这块板子打个分,更重要的是想通过这次实测,梳理出一套针对嵌入式Linux开发板的、可复现的性能评估方法论。无论你是在评估竞品、进行产品选型,还是单纯想压榨出手头开发板的全部潜力,这套包含CoreMark、内存带宽、存储吞吐和Qt渲染的测试组合拳,应该都能给你提供清晰的参考。本次测试将完全在板载的Linux系统上进行,所有工具链和测试程序均通过交叉编译完成,模拟的是最接近真实产品开发的评估环境。

2. 测试环境搭建与核心思路解析

在开始跑分之前,搭建一个可靠、一致的测试环境至关重要。性能测试最忌讳的就是变量不统一,比如编译器的优化选项、系统后台服务的干扰、测试方法的差异等,都会导致结果天差地别,失去可比性。

2.1 硬件与软件基础配置

我手头的这块MYD-YT507H开发板,核心是全志T507-H处理器,集成了四个ARM Cortex-A53核心,主频标称1.5GHz。板载了2GB的LPDDR4内存和8GB的eMMC 5.1存储。系统方面,我使用了米尔官方提供的Buildroot构建的Linux系统镜像,这是一个相对纯净的嵌入式发行版,没有太多不必要的后台服务,可以减少对测试结果的干扰。

所有的测试程序都需要在x86_64的宿主机(我用的Windows 10 + WSL2 Ubuntu)上进行交叉编译,然后传输到ARM架构的开发板上运行。这里的关键是工具链。我使用了米尔SDK中提供的gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu工具链。确保工具链路径已正确添加到系统的PATH环境变量中,是后续一切编译工作的基础。你可以通过命令export PATH=$PATH:/你的工具链绝对路径/bin来临时添加,或者将其写入~/.bashrc文件永久生效。

注意:使用WSL进行交叉编译时,确保开发板与Windows宿主机的网络连接通畅,并且WSL可以访问Windows的磁盘(通常挂载在/mnt/下),这是将编译好的二进制文件传输到开发板的关键。我通常使用scp命令通过网络直接传输,效率更高。

2.2 性能测试的维度选择逻辑

本次测试主要聚焦三个维度,这基本覆盖了一块嵌入式主控板的核心性能关切点:

  1. CPU计算性能(CoreMark):这是衡量处理器核心纯计算能力的经典基准。通过一个标准化、避免编译器过度优化的程序,量化CPU的整数计算性能。对于需要处理复杂算法、数据编码解码的应用(如视觉处理初步运算、协议解析)至关重要。
  2. 存储子系统性能:包括内存(RAM)带宽与稳定性,以及eMMC存储的读写速度。内存带宽决定了数据喂给CPU的快慢,直接影响多核性能和大型数据处理能力;eMMC速度则决定了系统启动、应用加载和用户数据存取的体验。这对于需要快速加载界面、频繁读写日志或缓存数据的应用(如汽车仪表盘、交互式终端)是瓶颈所在。
  3. 图形处理与响应性能(Qt):对于带显示功能的产品,UI的流畅度直接关乎用户体验。通过一个定制的Qt测试程序,测量渲染基本GUI控件所需的时间,可以直观评估在该硬件上运行图形界面的潜在流畅度。

这个测试组合的目的,是避免“唯主频论”或“唯核数论”,从系统级角度给出一个相对立体的性能画像。

3. CPU算力基准:CoreMark测试深度实操

CoreMark可以说是嵌入式CPU性能测试的“普通话等级考试”。它相比古老的Dhrystone,更好地避免了特定编译器优化带来的水分,结果更具可比性。

3.1 CoreMark源码获取与关键配置修改

首先,在WSL的终端里,我们获取官方源码:

git clone https://github.com/eembc/coremark.git cd coremark

CoreMark的移植接口主要在simple目录下。我们需要修改simple/core_portme.h这个文件,以适配我们的编译环境和目标平台。

vi或你喜欢的编辑器打开它,找到以下几处关键配置:

  1. 设置编译器优化标志:找到COMPILER_FLAGS的定义。默认它可能被注释或设置为提示字符串。我们需要明确指定优化等级。例如,为了测试最大性能,我们设置为-O3

    #define COMPILER_FLAGS \ "-O3" /* "Please put compiler flags here (e.g. -o3)" */

    如果想对比不同优化级别的影响(比如调试时的-O0),可以创建不同副本或后续修改。

  2. 修正指针整数类型:在64位系统(如我们的AArch64)上,需要确保ee_ptr_int类型有足够的宽度来存放指针值。找到typedef ee_u32 ee_ptr_int;这一行,将其修改为:

    typedef unsigned long ee_ptr_int;

    unsigned long在Linux AArch64上通常是64位,这能保证代码正确运行。

3.2 交叉编译与板载执行

配置好后,开始交叉编译。假设你的工具链路径已经加入PATH

编译开启-O3优化的版本:

aarch64-linux-gnu-gcc -o coremark_o3 \ core_list_join.c core_main.c core_matrix.c core_state.c core_util.c simple/core_portme.c \ -DPERFORMANCE_RUN=1 \ -DITERATIONS=100000 \ -Isimple -I. \ -O3
  • -DPERFORMANCE_RUN=1:这是性能运行模式,会运行更多迭代次数以获得稳定结果。
  • -DITERATIONS=100000:指定迭代次数。CoreMark分数会根据实际运行时间与这个迭代次数的关系计算得出。次数太少可能结果不稳,太多则测试时间过长。10万次是一个常用值。
  • -Isimple -I.:指定头文件搜索路径。
  • -O3:最高级别的编译器优化。

同样,编译一个-O0(无优化)版本作为对比:

aarch64-linux-gnu-gcc -o coremark_o0 \ core_list_join.c core_main.c core_matrix.c core_state.c core_util.c simple/core_portme.c \ -DPERFORMANCE_RUN=1 \ -DITERATIONS=100000 \ -Isimple -I. \ -O0

编译生成的可执行文件coremark_o3coremark_o0是ARM 64位格式,需要在开发板上运行。我通过scp命令将它们传输到开发板的用户目录下:

scp coremark_o3 coremark_o0 user@192.168.x.x:~/

登录开发板,为文件添加执行权限并运行:

chmod +x coremark_o3 coremark_o0 ./coremark_o0 ./coremark_o3

3.3 结果分析与横向对比

我得到的测试结果如下:

  • -O0优化等级得分:803.03
  • -O3优化等级得分:4093.79

这个对比非常直观地展示了编译器优化对性能的巨大影响,性能提升了约5倍。这提醒我们,在发布产品时,一定要使用适当的优化等级进行编译。

那么,4093.79的单核CoreMark分数处于什么水平?我们可以去EEMBC的官方分数库(https://www.eembc.org/coremark/scores.php)进行查询。寻找同样采用4核Cortex-A53 @ 1.5GHz的处理器进行对比,例如NXP的i.MX8M系列。官方数据显示,i.MX8M Quad的CoreMark总分约为19678。

我们的T507-H是四核处理器,理论上如果四核完全并行且效率100%,总分可达4093.79 * 4 = 16375.16。这与i.MX8M Quad的19678分属于同一量级,存在一定差距。考虑到我们的测试是在运行完整Linux系统和图形界面的环境下进行的,后台进程会占用一部分CPU资源;而EEMBC榜单上的分数很多是在“裸机”或极度精简的RTOS环境下测得的,分数会更高。因此,MYD-YT507H的CPU计算性能与同级别主流国际芯片产品相比,处于可比的范围内,满足一般嵌入式高性能应用的需求。

实操心得:CoreMark测试时,最好先使用taskset命令将进程绑定到某个特定CPU核心上运行,例如taskset -c 0 ./coremark_o3。这样可以避免操作系统调度器在核心间迁移进程带来的性能波动,使单核成绩更稳定。测试多核总分则需要并行运行多个CoreMark实例并分配至不同核心。

4. 存储子系统性能详测

CPU再快,如果数据供给跟不上也是白搭。存储子系统的性能,尤其是内存带宽和存储IO,是决定系统整体响应速度的关键。

4.1 内存带宽测试:STREAM Benchmark

STREAM是业界公认的测量内存持续带宽的基准程序。它通过四种简单的向量操作(Copy, Scale, Add, Triad)来测试。

在WSL中下载并交叉编译:

git clone https://github.com/qinyunti/STREAM.git cd STREAM aarch64-linux-gnu-gcc -O3 stream.c -o stream

注意,编译STREAM时需要指定-O3优化,并且其源码中通过static double a[N], b[N], c[N];定义了大数组。数组大小NSTREAM_ARRAY_SIZE决定,它必须足够大,以至于远超CPU末级缓存(LLC)的容量,这样才能测出真正的内存带宽,而不是缓存带宽。通常建议使得总数组大小约为LLC的4倍。对于T507-H,我们可以先使用默认值或根据内存大小调整(例如2GB内存,可设置数组总大小约1.5GB)。

编译后传输到开发板运行:

./stream

输出结果会包含四个操作的带宽值,单位通常是MB/s。重点关注“Triad”操作的带宽,它混合了读和写,更能代表真实应用场景。我的测试结果显示,Triad带宽达到了约4500 MB/s。这个数字与LPDDR4内存的理论带宽是相符的,表明内存控制器和DRAM的配置与性能发挥正常。

4.2 内存压力与稳定性测试:Memtester

性能达标了,稳定性更重要。尤其是在高温、高电磁干扰的工业或车载环境,内存位错误可能导致系统崩溃或数据损坏。Memtester是一个用户空间的内存测试工具,可以检测内存硬件故障。

下载并交叉编译:

wget https://pyropus.ca./software/memtester/old-versions/memtester-4.5.1.tar.gz tar -xvf memtester-4.5.1.tar.gz cd memtester-4.5.1 aarch64-linux-gnu-gcc -O3 memtester.c tests.c -o memtester

在开发板上,运行Memtester需要指定要测试的内存大小和次数。切勿测试所有可用内存,否则系统会因内存耗尽而崩溃。建议预留几百MB给操作系统。

# 测试512MB内存,循环测试1次 ./memtester 512M 1

Memtester会执行一系列算法(如随机值、异或、移动等)对指定内存区域进行读写校验。如果测试通过,不会有错误报告。你可以增加测试次数(如./memtester 512M 10)进行更长时间的烤机测试。在产品可靠性验证阶段,结合高低温箱进行Memtester长时间测试,是发现潜在内存硬件问题的有效手段。

4.3 eMMC存储读写性能测试

eMMC是系统的“硬盘”,其速度影响系统启动、应用安装和文件存取。首先,我们查看一下eMMC设备的信息:

dmesg | grep mmc # 或使用更详细的信息 mmc extcsd read /dev/mmcblk0

从输出信息中可以确认eMMC的版本(如5.1)和支持的速度模式(HS400, HS200等)。这决定了其理论接口速度。

我们使用Linux经典的dd命令配合time命令进行实际读写速度测试。测试前务必确认测试分区,不要对系统正在运行的分区(通常是/)进行写测试,以免损坏系统。

  1. 确认测试分区:使用df -hmount命令,我找到一个挂载在/media/目录下的分区(例如/dev/mmcblk0p8),用于测试。
  2. 测试顺序读取速度:从eMMC分区读取数据到空设备(/dev/null),避免写缓存影响。
    # 测试1GB数据的读取,块大小16KB time dd if=/dev/mmcblk0p8 of=/dev/null bs=16k count=65536
    计算速度:(1024 MB) / (耗时秒数) = MB/s
  3. 测试顺序写入速度:将数据从零设备(/dev/zero)写入eMMC分区的一个临时文件。注意:这会覆盖目标文件!
    # 测试1GB数据的写入,块大小16KB time dd if=/dev/zero of=/media/test.bin bs=16k count=65536 conv=fdatasync
    conv=fdatasync选项非常重要,它确保dd命令在结束前将数据真正同步到物理存储介质,而不是仅仅写到内核的页面缓存(Page Cache)就返回,这样测出的才是真实的写入速度。

我测试了不同块大小(1K, 4K, 16K)下的读写速度,结果汇总如下:

操作块大小 / 数量命令示例实测速度 (MB/s)
16K / 65536time dd if=/dev/mmcblk0p8 of=/dev/null bs=16k count=6553645.12
4K / 262144time dd if=/dev/mmcblk0p8 of=/dev/null bs=4k count=26214445.12
1K / 1048576time dd if=/dev/mmcblk0p8 of=/dev/null bs=1k count=104857645.10
16K / 65536time dd if=/dev/zero of=/media/test.bin bs=16k count=65536 conv=fdatasync33.52
4K / 262144time dd if=/dev/zero of=/media/test.bin bs=4k count=262144 conv=fdatasync33.38
1K / 1048576time dd if=/dev/zero of=/media/test.bin bs=1k count=1048576 conv=fdatasync32.40

结果分析

  • 读取性能:稳定在45 MB/s左右,不同块大小下差异极小,说明顺序读取性能已接近该eMMC设备在HS-SDR52模式下的理论接口上限(52MB/s),表现良好。
  • 写入性能:稳定在33 MB/s左右,这是eMMC闪存颗粒本身的写入速度,与接口速度关系不大,属于eMMC 5.1的典型性能范围。
  • 结论:米尔MYD-YT507H开发板的eMMC存储性能符合预期,能够为系统提供流畅的存储体验。对于需要频繁读写日志、配置或媒体缓存的应用,这个速度是足够的。

注意事项dd测试是一种简单的顺序IO测试,反映的是最佳情况下的吞吐量。真实应用场景中更多的是随机小IO(如数据库操作、文件系统元数据操作),性能会远低于此。对于随机IO性能评估,需要使用fio等更专业的工具进行测试。

5. 图形界面响应性能:Qt基准测试

对于带屏设备,UI的流畅度是用户体验的命门。这里我通过一个简单的自制Qt性能测试程序,来量化评估在MYD-YT507H上运行Qt应用的响应能力。

5.1 Qt测试程序编译与部署

测试程序qtperf的原理是:在最短的时间内,连续创建、显示、更新和销毁大量的基础Qt控件(如QPushButton, QLabel, QComboBox等),并统计完成一定次数操作所花费的时间。时间越短,说明Qt图形栈和底层驱动(如OpenGL ES/EGLFS)的效率越高。

  1. 获取源码与配置环境

    git clone https://github.com/qinyunti/qtperf.git cd qtperf

    使用Qt Creator打开项目文件(.pro)。关键是要在.pro文件中确保添加了正确的模块,例如:

    QT += core gui widgets

    同时,必须配置好用于MYD-YT507H的交叉编译工具链和Qt库路径。这通常需要在Qt Creator的“项目”设置中,指定自定义的交叉编译器(aarch64-linux-gnu-g++)和指向开发板sysroot中Qt库的路径。

  2. 解决编译依赖问题:交叉编译Qt程序时,最常见的错误是找不到目标板的Qt库或图形库(如libGLESv2)。在编译过程中,如果遇到类似“cannot find -lGLESv2”的错误,需要手动在生成的Makefile中修正库的链接路径。正如我在测试中遇到的,需要将链接器指向sysroot中正确的库文件绝对路径,例如:/home/lhj/MYD-YT507H/.../sysroot/usr/lib/libGLESv2.so

  3. 部署与运行环境配置:将编译好的可执行文件qtperf传输到开发板。在开发板上运行Qt程序需要设置正确的运行时库路径和Qt平台插件。通过环境变量来设置:

    # 设置Qt库路径 export LD_LIBRARY_PATH=/usr/local/Qt_5.12.5/lib:$LD_LIBRARY_PATH # 指定使用EGLFS平台插件(常用于嵌入式无X11环境),并禁用某些集成特性以减少开销 export QT_QPA_EGLFS_INTEGRATION=none # 运行测试程序 ./qtperf

5.2 测试结果解读与性能评估

程序运行后,会输出对各类控件进行操作(如创建、显示、隐藏)的耗时。例如,输出可能显示:

QPushButton (10 iterations): 54 ms QLabel (10 iterations): 23 ms QComboBox (10 iterations): 128 ms ...

我的测试结果显示,完成10次QPushButton的创建和显示操作仅需约54毫秒,平均每次操作5.4毫秒。这个响应速度对于大多数嵌入式GUI应用来说是相当不错的。它意味着在动态更新UI界面时,用户不会感到明显的卡顿。

影响Qt性能的关键因素

  1. 底层图形驱动:是使用软件渲染(如LinuxFB)还是硬件加速(如EGLFS + OpenGL ES)。MYD-YT507H的T507-H处理器集成了Mali-G31 MP2 GPU,通过EGLFS插件利用GPU进行硬件加速,这是获得流畅体验的基础。
  2. 渲染复杂度:测试程序使用的是简单控件,真实应用的UI可能包含复杂的自定义绘制、渐变、阴影或动画,这些会大幅增加渲染负载。
  3. 系统负载:在测试期间,确保系统后台没有其他高CPU或IO负载的任务,以获得最纯净的图形性能数据。

实操心得:对于追求极致流畅度的产品,除了基础的控件操作测试,还应该进行更复杂的场景测试,例如:

  • 帧率测试:使用一个简单的动画或定期更新的绘图,通过计算帧间隔来评估最大FPS。
  • 触摸响应延迟测试:从物理触摸事件发生到屏幕UI产生视觉反馈的总时间。这需要更专业的工具或高速摄像辅助测量。
  • 多窗口/重叠测试:测试多个半透明或重叠窗口的渲染性能。

6. 测试过程中的常见问题与排查实录

在嵌入式平台上进行性能测试,环境配置和工具使用经常会遇到各种“坑”。这里记录下我本次测试中遇到的一些典型问题及解决方法,希望能帮你少走弯路。

6.1 编译与链接问题

  • 问题:交叉编译CoreMark或STREAM时,提示“找不到编译器”或“架构不匹配”。
    • 排查:首先确认命令中使用的编译器前缀是否正确(aarch64-linux-gnu-gcc)。然后通过aarch64-linux-gnu-gcc -v查看编译器版本,确认其确实是为ARM 64位目标编译的。最常见的原因是工具链路径没有正确导出到PATH环境变量。使用echo $PATH检查,或者尝试使用编译器的绝对路径进行编译。
  • 问题:编译Qt程序时,链接阶段报错“undefined reference to `gl...‘”或“cannot find -lGLESv2”。
    • 排查:这几乎总是因为链接器没有找到目标板的图形库。确保在Qt Creator的项目设置中,LIBS变量里正确添加了-lGLESv2 -lEGL,并且-L路径指向了sysroot中对应的库目录。如果自动生成的Makefile路径不对,就需要像我之前做的那样,手动编辑Makefile,将-lGLESv2替换为库文件的绝对路径。

6.2 板载执行与权限问题

  • 问题:将程序传输到开发板后,执行时提示“Permission denied”。
    • 解决:使用chmod +x 文件名为可执行文件添加运行权限。如果是在非用户目录(如/tmp)下执行,有时也需要检查该目录的权限。
  • 问题:运行程序时,提示“找不到共享库”(如libQt5Core.so.5 not found)。
    • 解决:这是运行时动态链接库路径问题。通过export LD_LIBRARY_PATH=/path/to/your/qt/lib:$LD_LIBRARY_PATH设置环境变量。更一劳永逸的方法是将Qt库部署到开发板系统的标准库路径(如/usr/lib)下,但这通常需要重新制作根文件系统镜像。

6.3 性能测试结果异常分析

  • 问题:CoreMark分数远低于预期,或多次运行波动很大。
    • 排查
      1. 系统负载:使用tophtop命令查看测试时是否有其他高优先级进程占用CPU。
      2. CPU频率缩放:嵌入式Linux为了省电,默认可能启用CPU调频(cpufreq)。测试时,可以将CPU调控器(governor)设置为performance模式,锁定在最高频率运行:echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
      3. 进程绑定:如前所述,使用taskset绑定到特定核心。
      4. 编译器优化:确认编译时是否使用了-O3优化标志。
  • 问题dd测试eMMC写入速度异常快(如超过200MB/s),或与读取速度几乎一样。
    • 排查:这几乎可以肯定是缓存(Cache)在“作弊”。确保在dd写测试命令中加入了conv=fdatasyncoflag=dsync参数,它们会强制数据落盘后才返回,测得真实速度。不带这些参数的dd写测试,数据可能只写到了内存缓存就返回了,速度不能作数。
  • 问题:Qt程序运行黑屏或闪退。
    • 排查
      1. 平台插件:检查QT_QPA_PLATFORM环境变量设置是否正确。对于无显示服务器的嵌入式环境,通常设置为eglfslinuxfb。可以通过export QT_QPA_PLATFORM=eglfs来指定。
      2. 显示设备:对于eglfs,可能需要指定具体的显示设备,如export QT_QPA_EGLFS_KMS_CONFIG=/path/to/kms_config.json
      3. 库冲突:确认开发板上没有安装多个版本的Qt库,导致链接混乱。使用ldd ./你的Qt程序查看它实际链接的库文件路径。

7. 综合结论与选型建议

经过这一轮从CPU、内存、存储到图形界面的完整测试,我们可以对米尔MYD-YT507H开发板(全志T507-H平台)的性能做出一个相对全面的评估。

性能总结

  • CPU计算:单核CoreMark约4093(-O3),四核理论总分约16375,与同规格(4xCortex-A53 @1.5GHz)的国际主流平台(如i.MX8M)处于同一性能区间,满足边缘计算、网关、多媒体处理等应用的算力需求。
  • 内存子系统:LPDDR4内存带宽测试(STREAM Triad ~4500 MB/s)表现正常,符合该内存规格的预期。内存稳定性需要通过Memtester等工具在特定环境下进行长时间验证。
  • 存储性能:eMMC 5.1存储的持续读取速度约45 MB/s,写入速度约33 MB/s,属于该等级eMMC的典型性能,能够保证系统流畅启动和应用加载。
  • 图形性能:基于GPU硬件加速的Qt图形界面响应迅速,简单控件操作平均在毫秒级,为开发流畅的交互式人机界面提供了良好的硬件基础。

选型与开发建议

  1. 适用场景:MYD-YT507H非常适合用于需要一定算力、显示交互和稳定性的嵌入式产品,例如**工业HMI、智能零售终端、车载中控信息娱乐系统、边缘AI推理盒子(配合NPU)**等。其国产化属性也在一些特定领域具有优势。
  2. 性能调优重点
    • CPU:在产品软件定型后,务必使用-O2-O3优化等级进行发布构建。对于多线程应用,合理规划任务并行度,充分利用四核资源。
    • 存储:eMMC的随机读写性能是瓶颈。在软件设计上,应避免高频次的小文件读写。对于日志等操作,可采用缓冲、合并写入的策略。对于关键数据,考虑ECC或磨损均衡机制。
    • 图形:充分利用T507-H的Mali-G31 GPU。在Qt开发中,启用硬件加速渲染(默认的EGLFS插件),并善用QML的硬件加速特性。避免在主UI线程中进行阻塞性操作或复杂计算,以保持界面响应。
  3. 可靠性考量:本次测试主要在常温桌面环境下进行。对于工业、车载等严苛环境,必须进行高低温、振动、长时间烤机等可靠性测试,特别是内存和存储部分,Memtester和IO压力测试(如fio)需要纳入测试流程。

从我个人的实测体验来看,米尔MYD-YT507H开发板作为一个软硬件资料相对齐全的国产高性能平台,其综合性能是扎实可靠的,能够支撑起大多数中高端嵌入式应用场景的开发。在开发过程中,只要注意好交叉编译环境的搭建、系统性能的针对性调优以及最终产品的可靠性验证,基于它来打造一款成熟的产品是完全可行的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 12:18:22

Pixelle-Video:如何让AI为您的声音创作注入灵魂?

Pixelle-Video:如何让AI为您的声音创作注入灵魂? 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video 在AI视频创作的…

作者头像 李华
网站建设 2026/5/20 12:17:03

深度解析:LumenPnP开源贴片机的系统级架构设计

深度解析:LumenPnP开源贴片机的系统级架构设计 【免费下载链接】lumenpnp The LumenPnP is an open source pick and place machine. 项目地址: https://gitcode.com/gh_mirrors/lu/lumenpnp 在电子制造领域,贴片机作为精密装配的核心设备&#x…

作者头像 李华
网站建设 2026/5/20 12:15:03

B站视频备份终极方案:m4s-converter一键转换工具完全指南

B站视频备份终极方案:m4s-converter一键转换工具完全指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经为B站收藏的视频…

作者头像 李华