资讯分类
全部资讯
最新活动
商城公告
行业信息
新品推荐
元器件知识
资讯标签
艾迈斯欧司朗(96) 英伟达NVIDIA(70) 艾为awinic(45) 飞腾派V3(37) 萤火工场(30) 罗彻斯特电子(28) Jetson Orin Nano SUPER 开发套件(21) 资料下载专区(18) 进迭时空(15) 艾为 awinic(15) 兆易创新(14) 赛昉科技(StarFive)(12) 灵动微电子(11) 日清纺微电子(9) 小华半导体(9) 上海雷卯Leiditech(8) 赛昉科技(8) 微源半导体 LPSemi(8) NVIDIA(8) Seeed矽递科技(8) 龙芯中科(7) GD32VW553-IOT(7) 物奇WuQi(7) 日清纺微电子Nisshinbo(5) 庆科(5) 开源口碑分享(5) 航顺芯片(4) CEM5826-M11(4) Geehy极海半导体(4) 飞腾派(4) 创捷电子(4) TROQ创捷电子(4) 一件包邮专区(3) FTHR-G0001(3) 罗彻斯特(3) 飞腾派eMMC(3) iCEasy商城(3) MM32SPIN060G(3) EVB-L0130(2) 教育优惠申请链接(2) 启明云端(2) 飞腾官网飞腾派(2) 弈安云(2) 飞腾派下载专区(2) 村田(2) 英伟达初创加速计划(2) 极海(2) 中国星坤(2) 极海半导体(2) 小华EVB-HC32F4A0开发板(2) 国产开源硬件(2) 野火(2) 杭晶(HCI)(2) Mini-SPIN0230(2) NVIDIA品牌专区(2) 华润微电子(2) 口碑评测(2) B站风扇视频(1) Jetson AGX Xavier(32GB)(1) BeagleBoard.org®(1) 社区评奖活动(1) Arduino UNO Rev 4 Minima开发板(1) 下载专区(1) 国产自主可控(1) 英伟达 NVIDIA(1) CEM5861G-M11(1) 赛昉科技9折活动券(1) NVIDIA Jetson Orin Nano 开发套件(1) Arduino品牌专区(1) NVIDIA DGX™ Spark:桌面级AI超级计算机(1) 品牌清仓(1) QCS8550 SOM EVB(1) Jetson AGX Orin 64GB开发套件(1) 24GHz毫米波雷达模块(1) 技术问答专区(1) 英特尔(1) NVIDIA Jetson Nano 模组(1) QCS6490 SOM EVB(1) 天微电子商家页(1) 国产毫米波雷达模块(1) 飞腾派专链(1) 瑞隆源产品(1) 龙芯教育派(1) CEK8902-S905D3(1) EV Board (MM32L0136C7P)(1) 迈巨微电子品牌专区(1) NVIDIA NIM(1) 世野(Khadas)(1) 618大促(1) 竞买活动(1) 雷卯(1) 飞腾派试用申请链接(1) BeagleBone Black快速入门指南(1) 样片申请(1) 飞腾派调研问卷链接(1) 微雪电子(1) 一件免邮专区(1) SFH 7018B(1) 极海半导体(Geehy)(1) Arduino品牌页(1) 小脚丫(1) 618大促专区(1) 艾为(AWINIC)(1) 英伟达 NVIDIA品牌专区(1) 8月7日竞拍竞买(1) 飞腾派V3版本上新(1) 飞虹半导体(1) MUSE Paper(1) 乐动机器人(1) 海凌科电子(Hi-Link)(1) VF202040-A0(1) 教育优惠(1) 萤火工场GD32VW553-IOT(1) 野火RK3566开发板(1) 润石(1) 格力新元(1) CEM5825F(1) COMBO模组 EMC3020-PZI5(1) 松科智能(1) Jetson AGX Thor 开发套件/模组(1) Mini-F5333(1) 微源半导体(1) 周年抽奖活动(1) 庆科信息(MXCHIP)品牌专区(1) 附件(1) 迈巨微(1) 华大北斗(1) GD32无线生态专区(1) JETSON_AGX_ORIN_64GB_DEVELOPER_KIT(1) QCS6490 SOM EVB开发板(1) 附件下载地址(1) 台容积电(1) 雷克沙(1) GD32VW553-IOT V2版本(1) QCS8550 SOM EVB开发板(1) 申请样片:高光效红光OSCONIQ® P 3030, GR QSSPA1.23(1) GD32VW553-IOT V2(1) CEM5881-M11(1) NVIDIA Jetson Orin Nano 开发套件(1) 萤火工场品牌专区(1) 商城下载专区(1) 飞腾人才赋能(1) Jetson AGX Orin 64GB开发套件(1) 荣湃半导体(2Pai Semi)品牌专区(1) 进迭时空品牌页(1)

飞腾派部署openAMP(一) | PIOSv2.1 部署与 AMP 启动

发布时间:2025-07-30

文章来源:郭霞

1. 项目简介

飞腾派开发板搭载异构系统级芯片(SoC),基于 ARMV8 架构,集成四核处理器(2×FTC664@1.8GHz + 2×FTC310@1.5GHz)。非对称多处理(AMP)系统要求支持同一芯片上多操作系统环境并行运行,OpenAMP 通过标准化共享内存方案,为异构多处理应用提供多核并行性利用能力,简化 SoC 协同机制。​

《飞腾派部署 openAMP》系列将分两期发布,采用 “主核 Linux 系统 + 从核裸机系统” 的 openAMP 拓扑架构:

u 第一期《PIOSv2.1 部署与 AMP 启动》:阐述飞腾派基础操作系统 Phytium-Pi-OSv2.1(简称 PIOSv2.1)的部署流程,以及 Phytium-openAMP 的集成方法,实现主从核协同的 AMP 拓扑。​

u 第二期《基于 Phytium-openAMP框架从核 GPIO 驱动》:基于首期构建的 OpenAMP 环境,实现并演示从核通过 OpenAMP 机制实现 GPIO 外设驱动的应用实例。

2. 项目准备

硬件规格:飞腾派

软件要求: 开发环境ubuntu22.04

3. 交叉编译PIOSv2.1

(1) 开发环境搭建

a) 操作系统ubuntu22.04
Note:编译过程需要的空间比较大,建议60G。
b)系统工具安装
sudo apt update
sudo apt install build-essential git  debootstrap qemu-user-static   binfmt-support debian-archive-keyring  eatmydata libncurses5-dev libncursesw5-dev

(2) 源代码获取

a)git clone
sudo git clone  --depth 1 --branch phytiumpios-v2.1 https://gitee.com/phytium_embedded/phytium-pi-os.git  //clone代码
sudo git describe --tags --exact-match   //检查代码的tag是否正确 
b)更换apt的source
sudo cd phytium-pi-os/board/phytium/common/
sudo  find . -type f -exec sed -i 's/mirrors.tuna.tsinghua.edu.cn/mirrors.ustc.edu.cn/g' {} +
Note:这个步骤不是必选步骤,以个人经验,建议替换。

(3) 镜像编译

a)编译配置
sudo cd xxx/phytium-pi-os  //进入到PIOS的根目录
sudo ./support/kconfig/merge_config.sh configs/phytiumpi_defconfig configs/openamp_standalone.config 
b)编译
sudo make
Note:编译时间比较长,大概需要10几个小时

(4) 编译结果查看

a)查看 image
文件位置:phytium-pi-os/output/images/

b)查看设备树节点reserved-memory(openAMP必须)
文件位置:phytium-pi-os/output/build/linux-kernel-6.6_v3.1/arch/arm64/boot/dts/phytium/
pe220x.dtsi  
/{......   //根路径
reserved-memory {
                #address-cells = <0x2>;
                #size-cells = <0x2>;
                ranges;
                rproc0: rproc0@b0100000 {
                        no-map;
                        reg = <0x0 0xb0100000 0x0 x19900000>;
                };
        };
......}
c)查看设备树节点homo_rproc(openAMP必须)
目录位置:phytium-pi-os/output/build/linux-kernel-6.6_v3.1/arch/arm64/boot/dts/phytium
pe220x.dtsi
/{......
soc: soc{......   //soc目录
homo_rproc: homo_rproc@0 {
                        compatible = "homo,rproc";
                        status = "disabled";
                        homo_core0: homo_core0@b0100000 {
                                compatible = "homo,rproc-core";
                                remote-processor = <3>;
                                inter-processor-interrupt = <9>;
                                memory-region = <&rproc0>;
                                firmware-name = "openamp_core0.elf";
                        };
......}
......}
phytiumpi_firefly.dts
&homo_rproc {
        status = "okay";
};

4.上电启动PIOSV2.1

(1) 烧录SD卡

用Win32DiskImager烧录软件把编译好的sdcard.img镜像烧录到microSD卡。

(2) 上电启动飞腾派

第一次启动会执行firstlogin,设置root用户密码、创建普通用户和设置固件。

注意设置硬件版本为v2,内存为4G。

(3) 查看openAMP的程序文件

a)从核固件openamp_core0.elf
root@phytiumpi:/lib/firmware# ll openamp_core0.elf 
-rwxr-xr-x 1 root root 1561856 Jun  9  2025 openamp_core0.elf
b)应用demo程序rpmsg-demo-single
root@phytiumpi:/usr/bin# ll rpmsg-demo-single 
-rwxr-xr-x 1 root root 13704 Jun  9  2025 rpmsg-demo-single

(4) 查看openAMP的设备树节点

1.reserved-memory节点
a)设备树在文件系统的原始信息
路径: /sys/firmware/devicetree/base/reserved-memory/
.属性文件信息
hexdump -C \#address-cells 
00000000  00 00 00 02
hexdump -C \#size-cells 
00000000  00 00 00 02
cat name
reserved-memory
cd rproc0@b0100000/
cat name
rporc0
hexdump -C  phandle
00000000  00 00 00 12 
hexdump -C  reg
00000000  00 00 00 00 b0 10 00 00  00 00 00 00 19 90 00 00
b)内核保留内存映射信息
root@phytiumpi:/proc# grep -i reserved iomem
  80000000-8000ffff : reserved
  81430000-8173ffff : reserved
b0100000-c99fffff : reserved
  e5c00000-f9bfffff : reserved
  f9c29000-f9c2ffff : reserved
  207b140000-207f7fffff : reserved
  207f855000-207f855fff : reserved
  207f856000-207f8adfff : reserved
  207f8b0000-207f8b2fff : reserved
  207f8b3000-207f8b3fff : reserved
  207f8b4000-207f8c8fff : reserved
  207f8c9000-207f8ecfff : reserved
  207f8ed000-207fffffff : reserved
2.homo_rproc节点
a)设备树在文件系统的原始信息
主远程处理器节点
路径:/sys/firmware/devicetree/base/soc/homo_rproc@0/
compatible:"homo,rproc"
status:"okay"
核心处理器节点:
路径:
/sys/firmware/devicetree/base/soc/homo_rproc@0/homo_core0@b0100000/
compatible:"homo,rproc-core"
remote-processor:<3>
inter-processor-interrupt:<9>
memory-region:指向 rproc0 的 phandle(0x12)
firmware-name:"openamp_core0.elf"

b)查看/sys

remoteproc0设备文件
关键文件	value	备注
name	homo_core0	设备名称
state	offline	.远程处理器状态控制:stop/start
.状态值offline/suspended/running/crashed
firmware	openamp_core0.elf	实时修改固件文件名:
echo new_firmware.elf > /sys/class/remoteproc/remoteproc0/firmware
dev	249:0	字符设备设备号

c)查看字符设备
 ll /dev/remoteproc0 
crw------- 1 root root 249, 0 Jun  9 17:53 /dev/remoteproc0

5. DEMO验证openAMP

(1) start远程处理器

a)echo start > /sys/class/remoteproc/remoteproc0/state
I/TC: Secondary CPU 3 initializingoc
I/TC: Secondary CPU 3 switching to normal world boot
complier data: Jun  9 2025 ,time: 22:50:54 
openamp lib version: v2021.10 (Major: 1, Minor: 1, Patch: 0)
libmetal lib version: 0 (Major: 1, Minor: 0, Patch: 0)
cpu1:    SLAVE_00:Starting application... 
cpu1:    PHYTIUM_RPROC_MAIN:current 1 
cpu1:    PHYTIUM_RPROC_MAIN:irq_vect is 9 
cpu1:    SLAVE_00:Setup resource tables for the created remoteproc instances is over 
cpu1:    FT_PLAT_INFO_MAIN:da is 0xc0300000 ~ 0xc0400000  
cpu1:    SLAVE_00:Setup shared memory regions for both remoteproc instances is over  
cpu1:    FT_PLAT_INFO_MAIN:share_mem_pa is 0xc0300000  
cpu1:    FT_PLAT_INFO_MAIN:initializing rpmsg vdev 
cpu1:    SLAVE_00:Try to create rpmsg endpoint. 
cpu1:    SLAVE_00:Successfully created rpmsg endpoint.
b) 查看state状态
root@phytiumpi:/sys/class/remoteproc/remoteproc0# cat state
running
c)查看设备rpmsg_ctrl0
root@phytiumpi:/dev# ll rpmsg_ctrl0 
crw------- 1 root root 236, 0 Jun 10 04:41 rpmsg_ctrl0
d)查看sysfs

(2) 绑定通道设备的驱动

cd /sys/bus/rpmsg/devices/virtio0.rpmsg-openamp-demo-channel.-1.0
sudo echo rpmsg_chrdev > driver_override

(3) 执行rpmsg-demo-single

 a)安装位置/usr/bin
rpmsg-demo-single 
argc: 1
Argument 0: rpmsg-demo-scpu1:    SLAVE_00:src:0x0 
cpu1:    SLAVE_00:command:0x3,length:17. 
ingle
received message: Hello World! No:1P���
cpu1:    SLAVE_00:src:0x0 
cpu1:    SLAVE_00:command:0x3,length:17. 
received message: Hello World! No:2
......
cpu1:    SLAVE_00:src:0x0 
cpu1:    SLAVE_00:command:0x3,length:18. 
received message: Hello World! No:99
cpu1:    SLAVE_00:src:0x0 
cpu1:    SLAVE_00:command:0x3,length:19. 
received message: Hello World! No:100
b)查看通道
root@phytiumpi:/dev# ll rp*
crw------- 1 root root 237, 0 Jun 10 10:33 rpmsg0
crw------- 1 root root 236, 0 Jun 10 04:41 rpmsg_ctrl0
c)查看/sys

(4) restart远程处理器

  a)stop远程处理器程序运行
rpmsg-demo-single stop 0
argc: 3
Argument 0: rpmsg-demo-singlcpu1:    SLAVE_00:src:0x0 
cpu1:    SLAVE_00:command:0x2,length:1. 
cpu1:    SLAVE_00:Stopping application... 
cpu1:    PHYTIUM_RPROC_MAIN:Start to remove. 
cpu1:    SLAVE_00:Slave shutdown.
 
Argument 1: stop
Argument 2: 0
want to stop 0
b) stop远程处理器
echo stop > /sys/class/remoteproc/remoteproc0/state
I/TC: Secondary CPU 3 initializing
I/TC: Secondary CPU 3 switching to normal world boot
c)查看是否回到原始状态
/dev
rpmsg_ctrl0 rpmsg0被删除
remoteproc0的状态
remoteproc0# cat state
offline
/sys
回到系统初始化状态
c)可以重新启动远程处理器了
        echo start > /sys/class/remoteproc/remoteproc0/state

6. 常见问题与解决办法

本章节中编译问题会比较多,列举一些常见编译问题。

(1) 下载太慢或者出错

【问题现象】
I: Retrieving InRelease 
I: Retrieving Release 
E: Failed getting release file
 https://mirrors.tuna.tsinghua.edu.cn/debian/dists/bullseye/Release
installing for second-stage ...
chroot: failed to run command '/debootstrap/debootstrap': No such file or directory
************
debootstrap failed in second-stage
  Please running the below commands before re-compiling:
    rm -rf /root/phytium-pi-os/output/build/skeleton-custom
    make skeleton-custom-dirclean
  Or
    make skeleton-custom-dirclean O=<output dir>
make: *** [package/pkg-generic.mk:292: /root/phytium-pi-os/output/build/skeleton-custom/.stamp_built] Error 1
【问题原因】
一般情况下apt的source比较慢或者网络连接不好
【解决方案】
清华源更换为中科大源
board/phytium/common/post-custom-skeleton-ubuntu.sh
board/phytium/common/ubuntu-package-installer
board/phytium/common/post-custom-skeleton-debian-11.sh
board/phytium/common/debian-package-installer
中的mirrors.tuna.tsinghua.edu.cn改为mirrors.ustc.edu.cn
命令举例
cd phytium-pi-os/board/phytium/common
find . -type f -exec sed -i 's/mirrors.tuna.tsinghua.edu.cn/mirrors.ustc.edu.cn/g' {} +

(2) 空间不够

【问题现象】
/root/phytium-pi-os/output/host/bin/aarch64-none-linux-gnu-ld: final link failed: No space left on device
make[1]: *** [Makefile:1207: vmlinux] Error 1
make[1]: Leaving directory '/root/phytium-pi-os/output/build/linux-kernel-5.10_v2.2'
make: *** [package/pkg-generic.mk:292: /root/phytium-pi-os/output/build/linux-kernel-5.10_v2.2/.stamp_built] Error 2
【问题原因】
磁盘空间不够了

(3) 文件访问权限

【问题现象】
ERROR: Permission denied while trying to create directory
 ERROR: unable to set uid/gid for user 'buildroot' in file
ERROR: Failed to acquire lock on /path/to/shared/buildroot/.lock (Permission denied)
【问题原因】
权限问题:共享文件夹通常具有特定的权限设置,这些权限可能与 Buildroot 构建过程中的需求不匹配。
文件系统限制:共享文件夹所在的文件系统可能与本地文件系统不同,这可能导致一些文件系统特性的行为不同。
路径问题:共享文件夹的路径可能包含特殊字符或格式。
【解决措施】
本地构建目录:将 Buildroot 源代码和输出目录放在本机的文件系统中(如 Ext4、XFS 等),确保您对该目录具有读写执行权限。
开发环境目录不要放在共享目录,许多共享文件系统对文件权限、所有权和访问控制列表(ACL)的支持存在局限
使用sudo或者root权限。

7.参考资料链接

飞腾派开发板资料下载www.iceasy.com/cloud/Phytium