# Phytium-Xenomai
**Repository Path**: caizp2008_panic/phytium-xenomai
## Basic Information
- **Project Name**: Phytium-Xenomai
- **Description**: xenomai在phytium cpu配套的demo板上的移植.
构建方法详见
doc/xenomai_user_manual.pdf
内核路径详见
https://gitee.com/phytium_embedded/linux-kernel-xenomai
- **Primary Language**: C
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2023-04-11
- **Last Updated**: 2023-04-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# phytium-xenomai
## 1 项目简介
Xenomai在phytium CPU配套的开发板上的应用。
目前支持的phytium开发板支持的CPU包括FT2004,D2000和E2000。
其中
FT2004和D2000配套的Linux内核版本是4.19.115,Xenomai版本是3.1.2,在Phytium Xenomai仓库上选择的分支是v3.1.2;
E2000目前配套的第一个Linux内核版本是4.19.209,Xenomai版本是3.1.3,在Phytium Xenomai仓库上选择的分支是v3.1.3;
E2000目前配套的第二个Linux内核版本是5.10.209,Xenomai版本是3.2.2,在Phytium Xenomai仓库上选择的分支是master
注意
不同分支的用户手册和测试数据不同,需要用户首先确认phytium CPU类型,然后在Phytium Xenomai仓库选择配套分支;
FT2000 D2000也可以使用Xenomai版本3.1.3,E2000也可以使用Xenomai版本3.1.2,对于目前Xenomai 3.1.x系列版本来说,CPU类型和Xenomai版本没有强依赖关系;
客户根据自己的需求选择不同的分支,不同的分支的Xenomai构建方法也有差异,客户可以切换到需要的分支后参考配套的README和xenomai_user_manual.pdf进行构建。
## 2 目录结构
### 2.1 doc
phytium-xenomai的用户手册,包含如下内容:
如何在phytium开发板安装Xenomai;
如何在phytium开发板运行Xenomai;
如何在phytium开发板进行Xenomai编程;
如何在phytium开发板对Xenomai进行测试。
### 2.2 testsuite
Xenomai的内核设备驱动配套的用户态测试程序。
## 3 安装和使用教程
### 3.1 准备工作
#### 3.1.1 开发环境准备
X86交叉编译机安装Ubuntu 20.04 LTS,并开启tftpserver服务。
#### 3.1.2 飞腾CPU开发板准备
飞腾FT2004,D2000或者E2000开发板其串口与X86交叉编译机对接,其网线对接交换机
#### 3.1.3 交叉编译链准备
在x86编译机上交叉编译arm64内核,推荐使用Linaro gcc编译器,链接如下:
https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
将其解压缩到/opt目录后,然后设置环境变量,操作步骤如下:
$ export PATH=/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH
$ export ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
$ export CC=aarch64-linux-gnu-gcc
#### 3.1.4 源代码准备
内核获取方法如下:
对于FT2004/D2000,目前其内核源代码还没有开源,需要先联系飞腾软件生态部获取
对于E2000开源路径如下: https://gitee.com/phytium_embedded/linux-kernel-xenomai
Xenomai获取方法如下:
对于v3.1.2 Xenomai代码下载网址:https://source.denx.de/Xenomai/xenomai/-/tags/v3.1.2 直接下载后解压缩即可;
对于v3.1.3 Xenomai代码下载网址:https://source.denx.de/Xenomai/xenomai/-/tree/v3.1.3 直接下载后解压缩即可;
对于v3.2.2 Xenomai代码下载网址:https://source.denx.de/Xenomai/xenomai/-/tree/v3.2.2 直接下载后解压缩即可
#### 3.1.5 文件系统准备
对于飞腾FT2004,D2000开发板,按照《飞腾嵌入式Linux用户手册》和 https://gitee.com/phytium_embedded/phytium-embedded-ubuntu 提供的方法在Sata卡或者Nvme或者U盘等设备上安装ubuntu文件系统。
对于飞腾E2000开发板,文件系统的制作参考如下链接:
https://gitee.com/phytium_embedded/phytium-linux-buildroot
### 3.2 编译和安装Xenomai双内核
对于E2000,如果选择master分支,构建方法如下。
#### 3.2.1 配置和编译内核
操作步骤如下:
$ make e2000_defconfig
$ make cobalt.config
$ make
编译完毕后将内核和配套飞腾CPU开发板的设备树拷贝到tftpserver或者Sata盘或者Nvme的安装目录下。
其中内核镜像的路径如下 ./arch/arm64/boot/Image。
设备树的路径如下 arch/arm64/boot/dts/phytium/e2000q-demo-board.dtb。
#### 3.2.2 安装内核模块
对于E2000,如果选择master分支,则按照如下步骤操作
$ mkdir build
$ export INSTALL_MOD_PATH=XXX=`pwd`/build // 设置build目录为安装目录
$ make modules_install // 安装模块
$ cd build/lib/modules/ // 查看模块
$ ls
5.10.153-phytium-embeded
最后将 5.10.153-phytium-embeded 整个目录拷贝到根文件系统的lib/modules目录。
### 3.3 加载Xenomai内核
#### 3.3.2 E2000+UBOOT+Sata硬盘启动
以E2000四核处理器为例,如果固件是UBOOT并且以Sata盘方式启动,那么其uboot命令如下
setenv bootargs console=ttyAMA1,115200 audit=0 earlycon=pl011,0x2800d000 isolcpus=0,3 xenomai.supported_cpus=0x9 nohz_full=0,3 rcu_nocbs=0,3 irqaffinity=1,2 nosoftlockup root=/dev/sda2 rootdelay=10 rw;
fatload scsi 0:1 0x90100000 Image;
fatload scsi 0:1 0x90000000 e2000q-demo-board.dtb;
booti 0x90100000 - 0x90000000;
注意
假设内核和设备树存放在Sata硬盘的sda1分区的根目录下,该分区的文件系统格式为FAT32;
而ubuntu文件系统存放在sda2分区,文件系统格式为EXT4;
因为E2000Q共有四个核,所以 isolcpus=0,3 xenomai.supported_cpus=0x9 nohz_full=0,3 rcu_nocbs=0,3 irqaffinity=1,2 nosoftlockup 表示隔离0 3核用于Xenomai调度,而1 2核仍然用于传统的Linux调度
通过UART1串口进入shell,查看启动信息:
root@bogon:~# dmesg | grep -i xenomai
[ 1.156391] [Xenomai] scheduling class idle registered.
[ 1.161617] [Xenomai] scheduling class rt registered.
[ 1.166681] IRQ pipeline: high-priority Xenomai stage added.
[ 1.184079] [Xenomai] Cobalt v3.2.2
验证加载成功。
### 3.4 配置编译和安装Xenomai库
xemomai内核启动成功之后,在X86交叉编译机通过scp命令将Xenomai源代码拷贝到开发板上,然后在开发板进行如下操作。
#### 3.4.1 配置Xenomai库 模式为cobalt
$ ./scripts/bootstrap
$ ./configure --enable-pshared --enable-smp --with-core=cobalt
#### 3.4.2 编译和安装Xenomai库
$ make
$ make install
其中,Xenomai默认安装到/usr/xenomai目录下。
### 3.5 使用Xenomai自带的测试程序进行实时性对比测试
查看Xenomai安装后的基本信息:
root@linux:/usr/xenomai# ls
bin demo etc include lib sbin
root@linux:/usr/xenomai# cd bin
root@linux:/usr/xenomai/bin# ls
clocktest cmd_read dohell insn_bits insn_write rtcanrecv smokey spitest wf_generate xeno xeno-test xeno-test-run-wrapper
cmd_bits cmd_write gpiotest insn_read latency rtcansend smokey_net_server switchtest wrap-link.sh xeno-config xeno-test-run
root@linux:/usr/xenomai/sbin# ls
analogy_calibrate analogy_config autotune corectl hdb nomaccfg rtcanconfig rtcfg rtifconfig rtiwconfig rtnet rtping rtps rtroute slackspot tdmacfg version
其中,sbin目录和bin目录是Xenomai自带的命令和测试程序。我们以latency为例,简单介绍其使用方法。
以E2000四核处理器为例,如果以3.3.2章节的方式启动, 在系统空闲的情况下,用latency测量系统延时的方法如下:
./latency -p 100 -c 3 -h
## 4 贡献人员
该项目的开发成员列表如下:
zhanglin1040@phytium.com.cn
guochunrong@phytium.com.cn
该项目的评审成员列表如下:
weishanshan1084@phytium.com.cn
linan1284@phytium.com.cn
lizongjun@phytium.com.cn