news 2026/7/1 19:55:59

解决90%的开发难题!openEuler/hi-mpu系统编译运行常见FAQ大全

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决90%的开发难题!openEuler/hi-mpu系统编译运行常见FAQ大全

解决90%的开发难题!openEuler/hi-mpu系统编译运行常见FAQ大全

【免费下载链接】hi-mpuhi-mpu is the open source repository for the mpu chip driver package. This repository provides the source code for the chip driver, driver dependencies, and build project configurations.项目地址: https://gitcode.com/openeuler/hi-mpu

前往项目官网免费下载:https://ar.openeuler.org/ar/

openEuler/hi-mpu项目是海思MPU系列芯片的开源驱动仓库,为开发者提供了完整的芯片驱动、依赖库和构建工程源代码。对于嵌入式开发者和系统工程师来说,这个项目是构建高性能MPU系统的重要工具。然而在实际编译和运行过程中,开发者常常会遇到各种问题,本文整理了最常见的90%开发难题及其解决方案,帮助你快速上手hi-mpu系统编译运行。

📋 快速入门:hi-mpu项目架构概览

hi-mpu项目采用分层架构设计,主要包含以下几个核心目录:

  • build/- 构建脚本目录,包含所有编译相关的自动化脚本
  • custom/- 用户定制文件存放目录,用于存放openEuler基础组件
  • open_source/- 开源组件源码目录,包含ATF、U-Boot等关键组件
  • platform/- 平台软件目录,包含适配层和安全库代码
  • src/- 驱动源码目录,分为实时侧和非实时侧驱动代码

hi-mpu项目采用模块化设计,清晰分离硬件驱动和系统组件

🔧 构建openEuler文件系统与内核镜像FAQ

Q1:oebuild初始化版本不一致或update失败问题

问题现象:使用oebuild初始化时指定了版本参数,但update时下载的版本不一致,或者update过程直接失败。

解决方案:这通常是由于oebuild工具版本过旧导致的。执行以下命令升级oebuild:

pip3 install oebuild --upgrade

升级后重新执行初始化流程即可。建议定期更新oebuild工具,以确保能够拉取最新版本的openEuler构建代码。

Q2:QT特性参数不支持当前硬件

问题现象:在oebuild generate过程中输入QT特性参数,结果显示不支持当前硬件。

解决方案:当前QT特性实际上支持Hi3093芯片,但oebuild的清单文件中硬件支持列表尚未添加Hi3093。需要手动修改openeuler-qt.yaml文件:

cd ./src/yocto-meta-openeuler/.oebuild/features/ vi openeuler-qt.yaml

将文件中的support: raspberrypi4-64|ok3568|ryd-3568|x86-64内容删除,保存后重新执行generate命令。

Q3:内核配置被错误关闭

问题现象:修改配置文件后,发现defconfig把arm64等基本内核配置关闭。

解决方案:在使用X86编译环境时,生成和修改内核配置文件必须加上ARCH=arm64参数,否则会使用默认的目标体系结构,导致arm64配置被关闭:

# 依据defconfig生成.config配置文件 make ARCH=arm64 defconfig CROSS_COMPILE=aarch64-openeuler-linux- # 使用交互式菜单修改.config配置文件 make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-openeuler-linux-

Q4:QT驱动编译后未出现在烧片包中

问题现象:修改配置文件打开了QT相关驱动,但在编译Hi3093烧片包内却没有相关驱动文件。

解决方案

  1. 首先检查hi-mpu/open_source/linux5.10/目录下是否编译出了修改后打开的驱动文件
  2. 确认配置文件是否正确替换:
    • openEuler 24.03-LTS:src/yocto-meta-openeuler/bps/meta-hisilicon/recipes-kernel/linux/files/config/hi3093
    • openEuler 22.03-LTS-SP3:src/yocto-meta-openeuler/meta-openeuler/recipes-kernel/linux/files/config/

🛠️ 编译Hi3093烧片包常见问题

Q5:网络问题导致工具链安装失败

问题现象:由于默认交叉编译工具链镜像仓位于欧洲,网络连接不稳定导致下载失败。

解决方案:手动下载工具链并安装。访问openEuler镜像站选择合适的镜像仓,下载对应版本的工具链:

# 以22.03-LTS-SP3为例的安装命令 sh openeuler-glibc-x86_64-openeuler-image-aarch64-qemu-aarch64-toolchain-22.03-LTS-SP3.sh -d /home/${USER}/hi3093_tool -y

重要提示

  • 工具链安装路径推荐为/home/${USER}/hi3093_tool
  • 如安装到其他路径,需同步修改脚本文件内的TOOLCHAIN_DIR变量
  • 推荐使用Truenetwork仓或HUAWEI-CLOUD仓,网络稳定性更好

Q6:openssl库文件找不到

问题现象:编译过程中提示无法找到openssl下的库文件。

解决方案:安装openssl开发包:

# Ubuntu或Debian系统 sudo apt-get install libssl-dev # CentOS或Red Hat系统 sudo yum install openssl-devel

Q7:文件系统库文件版本不匹配

问题现象:在打包Hi3093烧片包时,无法复制文件系统内的某些库文件。

解决方案:不同openEuler版本构建的文件系统库文件存在差异。例如libpcre库在openEuler22.03中为libpcre.so.1.2.13,而在openEuler24.03中为libpcre2-8.so.0.11.2。需要修改hi-mpu/build/build_fs/build_hi3093_ext4.sh脚本文件,更新对应的库文件路径。

Q8:基础工具命令not found

问题现象:pushd、source、log_error等基础工具命令提示not found。

解决方案:这些工具通常内置在bash解释器中。检查当前shell解释器:

ls -l /bin/sh

如果指向dash而非bash,有两种解决方法:

  1. 重新配置默认shell解释器:sudo dpkg-reconfigure dash选择no关闭dash
  2. 在报错文件首行添加#!/bin/bash,运行命令改为./XXX.sh而非sh XXX.sh

🔌 硬件配置与启动问题

Q9:SPC和EMMC启动串口复用配置

问题需求:需要将新版本SPC和EMMC启动使用同一个串口。

解决方案:硬件上需要调整电阻配置:

  • 取下电阻R375
  • 在R383位置焊上阻值为1k的电阻

Q10:MCS设备树配置修改

问题需求:使用最新的mica工具启动实时侧UniProton,需要修改MCS相关设备树。

解决方案:在hi3093_mcs_3with1.dts设备树文件中,修改reserved-memory节点为以下内容:

reserved-memory { #address-cells = <0x2>; #size-cells = <0x2>; ranges; client_os_reserved: client_os_reserved@93000000 { reg = <0x00 0x93000000 0x00 0x4000000>; no-map; }; client_os_dma_memory_region: client_os-dma-memory@90000000 { compatible = "shared-dma-pool"; reg = <0x00 0x90000000 0x00 0x3000000>; no-map; }; }; mcs-remoteproc { compatible = "oe,mcs_remoteproc"; memory-region = <&client_os_dma_memory_region>, <&client_os_reserved>; };

Q11:MICA脚本启动CPU核心冲突

问题现象:使用mica脚本启动实时侧UniProton时,报错无法通过指定CPU启动。

解决方案:将UniProton配置文件中指定的CPU核心下线:

echo 0 > /sys/devices/system/cpu/cpu3/online

Q12:SPC启动后网络权限问题

问题现象:使用16M大小的SPC烧录后,SPC启动网口使用正常,但使用ping时,报错无权限。

解决方案:SPC包内的bin文件权限不足导致。执行以下命令修复:

cd / chmod -R 777 *bin* insmod /lib/net/gmac_drv.ko ifconfig eth2 192.168.0.11 ping 192.168.0.10

🚀 高效调试技巧与最佳实践

调试工具推荐

使用合适的调试工具可以大幅提高问题排查效率

编译环境检查清单

在开始编译前,建议按以下清单检查环境:

  1. ✅ Python版本:确保Python 3.8+已安装
  2. ✅ 交叉编译工具链:验证工具链路径正确性
  3. ✅ 系统依赖包:flex、bison、cmake、dtc等基础工具
  4. ✅ 网络连接:确保能访问必要的代码仓库
  5. ✅ 磁盘空间:至少预留50GB可用空间

常见错误代码速查表

错误代码可能原因解决方案
RWX权限警告安全编译选项修改Makefile添加-Wl,--no-warn-rwx-segment
fetch失败网络问题或文件缺失手动下载缺失文件到src目录
命令找不到shell解释器问题切换为bash或添加#!/bin/bash
库文件缺失版本不匹配更新脚本中的库文件路径

📁 关键文件路径参考

掌握以下关键文件路径,能帮助你快速定位和解决问题:

  • 内核配置文件hi-mpu/custom/openeuler/defconfig-kernel
  • 构建脚本hi-mpu/build/build_fs/build_hi3093_ext4.sh
  • oebuild配置文件src/yocto-meta-openeuler/.oebuild/features/openeuler-qt.yaml
  • 设备树文件hi3093_mcs_3with1.dts
  • 工具链环境/home/${USER}/hi3093_tool/toolchain/environment-setup-aarch64-openeuler-linux

hi-mpu构建流程涉及多个组件协同工作

💡 实用技巧与优化建议

编译加速技巧

  1. 并行编译:使用make -j$(nproc)充分利用多核CPU
  2. 缓存利用:合理配置ccache减少重复编译时间
  3. 增量编译:只修改必要文件,避免全量重新编译

版本兼容性注意事项

  • openEuler 22.03与24.03在文件系统结构上有差异
  • 不同版本的QT组件可能需要不同的配置参数
  • 工具链版本需要与目标系统版本匹配

网络问题备选方案

当遇到网络下载问题时,可以:

  1. 使用国内镜像源加速下载
  2. 手动下载依赖包到指定目录
  3. 配置代理服务器提高连接稳定性

🎯 总结与后续支持

通过本文的FAQ大全,你已经掌握了解决hi-mpu系统编译运行中90%常见问题的方法。记住关键点:保持工具链更新、注意版本兼容性、合理配置编译环境。当遇到新问题时,首先检查错误日志,然后按照"环境检查→配置验证→依赖确认"的流程进行排查。

系统化的问题排查流程能帮助你快速定位问题根源

对于更复杂的问题,建议查阅项目文档中的详细说明,或参考社区讨论。hi-mpu作为openEuler生态的重要组成部分,拥有活跃的开发者社区支持,相信通过本文的指导,你能够顺利解决编译运行中的各种挑战!🚀

【免费下载链接】hi-mpuhi-mpu is the open source repository for the mpu chip driver package. This repository provides the source code for the chip driver, driver dependencies, and build project configurations.项目地址: https://gitcode.com/openeuler/hi-mpu

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

OECP嵌入式兼容性认证:3步完成openEuler Embedded系统认证

OECP嵌入式兼容性认证&#xff1a;3步完成openEuler Embedded系统认证 【免费下载链接】oecp One for OSV as an certification tool 项目地址: https://gitcode.com/openeuler/oecp 前往项目官网免费下载&#xff1a;https://ar.openeuler.org/ar/ 在openEuler生态系统…

作者头像 李华
网站建设 2026/7/1 19:52:49

如何快速上手Kiran会话管理器:5分钟入门教程

如何快速上手Kiran会话管理器&#xff1a;5分钟入门教程 【免费下载链接】kiran-session-manager The session manager will load all necessary applications for a full-featured user session. 项目地址: https://gitcode.com/openeuler/kiran-session-manager 前往项…

作者头像 李华
网站建设 2026/7/1 19:51:18

utwget核心功能揭秘:断点续传、递归下载与SSL安全实现

utwget核心功能揭秘&#xff1a;断点续传、递归下载与SSL安全实现 【免费下载链接】utwget utwget is a refactoring of wget. 项目地址: https://gitcode.com/openeuler/utwget 前往项目官网免费下载&#xff1a;https://ar.openeuler.org/ar/ utwget 是一个功能强大的…

作者头像 李华
网站建设 2026/7/1 19:49:07

witty-profiler性能优化技巧:10个提升采集效率的实用方法

witty-profiler性能优化技巧&#xff1a;10个提升采集效率的实用方法 【免费下载链接】witty-profiler The witty-profiler is an automated data and control stream topology detection and bottleneck analysis tool for AI training and inferencing systems. 项目地址: …

作者头像 李华
网站建设 2026/7/1 19:48:59

env_check测试报告可视化:如何生成易读的健康检查报告

env_check测试报告可视化&#xff1a;如何生成易读的健康检查报告 【免费下载链接】env_check A tool for "health checking" after operating system upgrade 项目地址: https://gitcode.com/openeuler/env_check 前往项目官网免费下载&#xff1a;https://a…

作者头像 李华
网站建设 2026/7/1 19:47:27

从零搭建本地漏洞测试平台:Docker化靶场与工具链集成实战

1. 项目概述与核心价值 最近在和一些刚入行安全研究的朋友交流时&#xff0c;发现一个挺普遍的问题&#xff1a;大家在网上看到很多关于漏洞分析、0day利用的文章&#xff0c;但真想自己动手复现或者搭建一个环境来深入学习时&#xff0c;往往第一步就卡住了。要么是依赖环境太…

作者头像 李华