解决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烧片包内却没有相关驱动文件。
解决方案:
- 首先检查
hi-mpu/open_source/linux5.10/目录下是否编译出了修改后打开的驱动文件 - 确认配置文件是否正确替换:
- 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/
- openEuler 24.03-LTS:
🛠️ 编译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-develQ7:文件系统库文件版本不匹配
问题现象:在打包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,有两种解决方法:
- 重新配置默认shell解释器:
sudo dpkg-reconfigure dash选择no关闭dash - 在报错文件首行添加
#!/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/onlineQ12: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🚀 高效调试技巧与最佳实践
调试工具推荐
使用合适的调试工具可以大幅提高问题排查效率
编译环境检查清单
在开始编译前,建议按以下清单检查环境:
- ✅ Python版本:确保Python 3.8+已安装
- ✅ 交叉编译工具链:验证工具链路径正确性
- ✅ 系统依赖包:flex、bison、cmake、dtc等基础工具
- ✅ 网络连接:确保能访问必要的代码仓库
- ✅ 磁盘空间:至少预留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构建流程涉及多个组件协同工作
💡 实用技巧与优化建议
编译加速技巧
- 并行编译:使用
make -j$(nproc)充分利用多核CPU - 缓存利用:合理配置ccache减少重复编译时间
- 增量编译:只修改必要文件,避免全量重新编译
版本兼容性注意事项
- openEuler 22.03与24.03在文件系统结构上有差异
- 不同版本的QT组件可能需要不同的配置参数
- 工具链版本需要与目标系统版本匹配
网络问题备选方案
当遇到网络下载问题时,可以:
- 使用国内镜像源加速下载
- 手动下载依赖包到指定目录
- 配置代理服务器提高连接稳定性
🎯 总结与后续支持
通过本文的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),仅供参考
