# Xenomai **Repository Path**: hlkoala/xenomai ## Basic Information - **Project Name**: Xenomai - **Description**: Xenomai在龙芯3a5000cpu配套的火龙demo板上的微内核应用。 目前支持的CPU包括龙芯3a4000和龙芯3a5000, 配套的Linux内核版本是4.19.190,Xenomai版本是3.1.2 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 58 - **Created**: 2023-02-11 - **Last Updated**: 2024-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Huolong_Xenomai ## 介绍 Xenomai在龙芯3a5000cpu配套的火龙demo板上的微内核应用。 目前支持的CPU包括龙芯3a4000和龙芯3a5000。 配套的Linux内核版本是4.19.190,Xenomai版本是3.1.2 ## 软件架构 ​ Xenomai是inux实时性解决方案中的一种,通过在Linux的基础上添加一个RTOS内核cobalt,来提高Linux的实时性。实时内核cobalt与非实时内核Linux相结合,既能提供工业级RTOS的硬实时性能,又能利用Linux操作系统非常出色的网络和图形界面服务,在产品的开发周期和成本控制方面都有巨大优势,具体结构如下图所示。 ![输入图片说明](%E5%9B%BE%E7%89%871.png) ​ 在内核空间,在标准Linux基础上添加一个实时内核Cobalt,使Cobalt在内核空间与Linux内核并存,并把标准的Linux内核作为实时内核中的一个idle进程在实时内核上调度。 ​ 火龙内核有Linux内核域范围与cobalt内核域范围,两个内核管理各自范围内的应用、驱动、中断,cobalt内核优先级高于Linux内核;I-pipe优先处理高优先级域的中断,来保证高优先级域的实时性。高优先级域可以通过I-pipe 向低优先级域发送各类事件。 ## 安装教程 ### 1 准备工作 #### 1.1 开发环境准备 X86交叉编译机安装Ubuntu 20.04 LTS,并开启sshd服务。 #### 1.2 交叉编译链准备 在x86编译机上交叉编译loongarch64内核,推荐使用的gcc编译器,链接如下: [https://pan.baidu.com/s/1DRVYANor0Z5YtFtfflnSNA?pwd=yfts]( https://pan.baidu.com/s/1DRVYANor0Z5YtFtfflnSNA?pwd=yfts) 将其解压缩到/opt目录后,然后设置环境变量,操作步骤如下: ``` $ export PATH=/opt/loongarch64-linux-gnu-2021-08-09-vector/bin:$PATH $ export LD_LIBRARY_PATH=/opt/loongarch64-linux-gnu-2021-08-09-vector/lib:$LD_LIBRARY_PATH $ export ARCH=loongarch CROSS_COMPILE=loongarc64-linux-gnu- $ export CC=loongarch64-linux-gnu-gcc ``` #### 1.3 源代码版本 内核获取方法如下: 目前火龙3a5000相关设备驱动已开源,Linux源代码基于4.19.190-rc3。 Xenomai源码获取: Xenomai代码下载网址:[https://source.denx.de/Xenomai/xenomai/-/tags/v3.1.2](https://source.denx.de/Xenomai/xenomai/-/tags/v3.1.2 ) 直接下载后解压缩即可。 1.4 配置和编译内核 操作步骤如下: ``` $ make config-4.19.190-xenomai-tipc $ make O=../obj_xenomai_5k menuconfig $ make O=../obj_xenomai_5k/ -j4 $ make O=../obj_xenomai_5k/ modules_install INSTALL_MOD_PATH=../obj_xenomai_5k ``` 编译完毕后将内核和modules拷贝到开发版对应boot目录下。 其中内核的名称是vmlinuz,modules的名称是4.19.190-xenomai。 ### 2 编译Xenomai自带的设备驱动 为了让用户快速入手Xenomai设备驱动,Xenomai提供了了部分设备驱动的样例,其代码在drivers/xenomai目录下,读者可以通过内核的menuconfig选择需要的xenomai驱动后重新make编译生成内核模块,以Intel e1000e网卡为例。 配置选择e1000e网卡: ``` $ make menuconfig scripts/kconfig/mconf Kconfig configuration written to .config $ diff .config .config.old < CONFIG_XENO_DRIVERS_NET_DRV_E1000E=m --- > # CONFIG_XENO_DRIVERS_NET_DRV_E1000E is not set ``` 新编译内核: ``` $ make scripts/kconfig/conf --syncconfig Kconfig LD vmlinux SORTEX vmlinux SYSMAP System.map OBJCOPY arch/loongarch64/boot/Image GZIP arch/loongarch64/boot/Image.gz Building modules, stage 2. MODPOST 416 modules LD [M] drivers/xenomai/net/drivers/e1000e/rt_e1000e.ko ``` 将编译生成的rt_e1000e.ko拷贝到开发板。 ## 贡献人员 该项目的开发成员列表如下: ``` liyuepeng@zbhlos.com ``` 该项目的评审成员列表如下: ``` wangzhihao@zbhlos.com guoxinyu@zbhlos.com ```