@ -74,7 +74,11 @@ phytium_e2000_debian_desktop_defconfig
(2)编译
`$ make`
(3)镜像的输出位置
生成的根文件系统、内核位于output/images目录。
生成的根文件系统、内核、e2000 img 镜像位于output/images目录。
#### e2000 img 镜像
目前buildroot支持编译e2000 img 镜像(disk.img),生成的e2000 img 镜像位于output/images目录。e2000 img 镜像包含了根文件系统、内核、设备树。
使用e2000 img 镜像安装系统,不需要像之前那样将存储设备手动分区再拷贝文件,只需要将disk.img文件写入存储设备即可。
### 更换文件系统的linux内核版本
defconfig中的内核版本默认是linux 5.10。我们支持在编译文件系统时将内核版本更换为linux 4.19,linux 4.19 rt,linux 5.10 rt。
@ -92,7 +96,7 @@ configs/phytium_e2000_linux_5.10_rt.config
(2)编译
`$ make`
(3)镜像的输出位置
生成的根文件系统、内核位于output/images目录。
生成的根文件系统、内核、e2000 img 镜像 位于output/images目录。
### 支持Phytium-optee
本项目还支持编译Phytium-optee,关于Phytium-optee的信息请参考:`https://gitee.com/phytium_embedded/phytium-optee`
@ -105,9 +109,9 @@ defconfig默认不编译Phytium-optee,如果需要编译Phytium-optee请执行
在执行编译之前需要额外安装依赖:
```
sudo apt install python3-pip
pip install pycryptodome
pip install pyelftools
pip install cryptography
pip3 install pycryptodome
pip3 install pyelftools
pip3 install cryptography
```
(2)编译
`$ make`
@ -115,6 +119,69 @@ pip install cryptography
生成的根文件系统、内核、TEE OS位于output/images目录。
后续部署及使用方法,请参考`https://gitee.com/phytium_embedded/phytium-embedded-docs/tree/master/optee`
### 支持xenomai
本项目还支持编译xenomai,关于xenomai的信息请参考:`https://gitee.com/phytium_embedded/linux-kernel-xenomai`
支持将xenomai内核及用户态的库、工具编译安装到debian系统上。如果需要编译xenomai请执行:
(1)使用phytium_e2000_debian_xxx_defconfig作为基础配置项,合并支持xenomai的配置:
`$ ./support/kconfig/merge_config.sh configs/phytium_e2000_debian_xxx_defconfig configs/phytium_e2000_xenomai_xxx.config`
其中,`phytium_e2000_debian_xxx_defconfig`为`phytium_e2000_debian_defconfig`或`phytium_e2000_debian_desktop_defconfig`;
`phytium_e2000_xenomai_xxx.config` 为以下配置片段文件之一:
```
phytium_e2000_xenomai_cobalt_4.19.config (xenomai cobalt 4.19内核+xenomai-v3.1.3.tar.gz)
phytium_e2000_xenomai_cobalt_5.10.config (xenomai cobalt 5.10内核+xenomai-v3.2.2.tar.gz)
phytium_e2000_xenomai_mercury_4.19.config (linux 4.19 rt内核+xenomai-v3.1.3.tar.gz)
phytium_e2000_xenomai_mercury_5.10.config (linux 5.10 rt内核+xenomai-v3.2.2.tar.gz)
```
(2)编译
`$ make`
(3)镜像的输出位置
生成的根文件系统、内核、e2000 img 镜像位于output/images目录。
(4)文件的安装路径
xenomai用户态的库、工具被安装到根文件系统:
头文件安装到/usr/include/xenomai,配置文件安装到/etc,其它内容分别被安装到/usr目录下的bin,demo,lib,sbin,share。
关于xenomai的启动及测试工具等更多信息,请参考`https://gitee.com/phytium_embedded/phytium-embedded-docs/tree/master/xenomai`
### 支持ethercat
本项目还支持编译ethercat,关于ethercat的信息请参考:`https://gitee.com/phytium_embedded/ether-cat`
支持将ethercat驱动及用户态的库、工具编译安装到debian系统上,ethercat只支持linux 4.19 rt,linux 5.10 rt内核。如果需要编译ethercat请执行:
(1)使用phytium_e2000_debian_xxx_defconfig作为基础配置项,合并支持rt内核,及ethercat的配置:
`./support/kconfig/merge_config.sh configs/phytium_e2000_debian_xxx_defconfig configs/phytium_e2000_linux_xxx_rt.config configs/phytium_e2000_ethercat.config`
其中,`phytium_e2000_debian_xxx_defconfig`为`phytium_e2000_debian_defconfig`或`phytium_e2000_debian_desktop_defconfig`;
`phytium_e2000_linux_xxx_rt.config` 为`phytium_e2000_linux_4.19_rt.config`或`phytium_e2000_linux_5.10_rt.config`。
(2)编译
`$ make`
(3)镜像的输出位置
生成的根文件系统、内核、e2000 img 镜像位于output/images目录。
(4)文件的安装路径
将ethercat的驱动模块安装到根文件系统的/lib/modules/version/ethercat/目录,并且通过将ec_macb加入/etc/modprobe.d/blacklist.conf
黑名单的方式,使得开机时不自动加载ec_macb模块,而是让用户手动加载。
ethercat用户态的库、工具被安装到根文件系统:
配置文件安装到/etc,其它内容分别被安装到/usr目录下的bin,include,lib,sbin,share。
关于ethercat的使用方法等更多信息,请参考`https://gitee.com/phytium_embedded/phytium-embedded-docs/tree/master/ethercat`
### 支持jailhouse(e2000)
本项目还支持为e2000编译jailhouse,关于jailhouse的信息请参考:`https://gitee.com/phytium_embedded/phytium-jailhouse`
支持将jailhouse编译安装到ubuntu系统,如果需要编译jailhouse请执行:
(1)使用phytium_e2000_ubuntu_xxx_defconfig作为基础配置项,合并支持jailhouse的配置:
`./support/kconfig/merge_config.sh configs/phytium_e2000_ubuntu_xxx_defconfig configs/phytium_e2000_jailhouse_xxx.config`
其中,`phytium_e2000_ubuntu_xxx_defconfig`为`phytium_e2000_ubuntu_defconfig`或`phytium_e2000_ubuntu_desktop_defconfig`;
`phytium_e2000_jailhouse_xxx.config` 为`phytium_e2000_jailhouse_4.19.config`或`phytium_e2000_jailhouse_5.10.config`。
(2)编译
`$ make`
(3)镜像的输出位置
生成的根文件系统、内核、e2000 img 镜像位于output/images目录。
(4)文件的安装路径
jailhouse相关的文件被安装到根文件系统:
```
按照Makefile中的规则,将jailhouse的驱动jailhouse.ko安装到/lib/modules/version/jailhouse/driver;jailhouse.bin安装到/lib/firmware;
linux-loader.bin安装到/usr/local/libexec/jailhouse;jailhouse和ivshmem-demo安装到/usr/local/sbin;
python helper脚本安装到/usr/local/libexec/jailhouse;jailhouse-config-collect.tmpl和root-cell-config.c.tmpl
安装到/usr/local/share/jailhouse;jailhouse-completion.bash安装到/usr/share/bash-completion/completions/并改名为jailhouse;
另外,还将configs/*/*.cell安装到/etc/jailhouse;inmates/demos/*/*.bin安装到/usr/local/libexec/jailhouse/demos;
pyjailhouse安装到/usr/lib/python3.10/site-packages。
```
关于jailhouse的使用方法等更多信息,请参考`https://gitee.com/phytium_embedded/phytium-jailhouse/blob/master/Readme.md`
## 清理编译结果
(1)`$ make clean`
删除所有编译结果,包括output目录下的所有内容。当编译完一个文件系统后,编译另一个文件系统前,需要执行此命令。
@ -122,6 +189,8 @@ pip install cryptography
重置buildroot,删除所有编译结果、下载目录以及配置。
## 为d2000编译文件系统
与“为e2000编译文件系统”相比,“为d2000编译文件系统”还需要“准备内核源码”和“编译initrd”。
### 准备内核源码
(1)在phytium-linux-buildroot的根目录下创建files目录,将内核源码拷贝到files目录并重命名为linux-4.19.tar.gz
`$ mkdir files`
`$ cp xxx/linux-4.19-master.tar.gz files/linux-4.19.tar.gz`
@ -133,28 +202,56 @@ $ sha256sum files/linux-4.19.tar.gz
编辑linux/linux.hash文件,将linux-4.19.tar.gz对应行的哈希值修改为刚刚计算的哈希值,如下所示:
`sha256 22a2345f656b0624790dcbb4b5884827c915aef00986052fd8d9677b9ee6b50e linux-4.19.tar.gz`
注意:每次更新files目录里面的内核源码,都需要同时修改linux/linux.hash里面内核源码对应的哈希值,这是为了验证files目录中的文件与dl目录中的文件一致。
(3)配置及编译initrd
### 编译initrd
(1)配置及编译initrd
```
$ make phytium_initrd_defconfig
$ make
```
(4 )将编译好的initrd备份保存
(2 )将编译好的initrd备份保存
`$ cp xxx/phytium-linux-buildroot/output/images/rootfs.cpio.gz ~/initrd`
(5 )清理编译结果
(3 )清理编译结果
`$ make clean`
(6)配置以下文件系统之一:
`$ make phytium_d2000_ubuntu_defconfig`
`$ make phytium_d2000_defconfig`
`$ make phytium_d2000_debian_defconfig`
`$ make phytium_d2000_debian_desktop_defconfig`
(7)编译文件系统
### 编译默认配置的文件系统
(1)加载defconfig
`$ make phytium_d2000_xxx_defconfig`
其中`phytium_d2000_xxx_defconfig`为以下文件系统之一:
```
phytium_d2000_ubuntu_defconfig
phytium_d2000_defconfig
phytium_d2000_debian_defconfig
phytium_d2000_debian_desktop_defconfig
```
(2)编译文件系统
`$ make`
(8)镜像的输出位置
(3 )镜像的输出位置
生成的根文件系统、内核位于output/images目录。
### 支持无桌面qt5 eglfs
本项目还支持将qt5 eglfs编译安装到无桌面的ubuntu系统,对应的配置文件为`phytium_d2000_ubuntu_qt5_defconfig`,用来运行在d2000+x100上。
如果需要编译qt5 eglfs请执行:
(1)加载defconfig
`$ make phytium_d2000_ubuntu_qt5_defconfig`
(2)编译文件系统
`$ make`
(3)镜像的输出位置
生成的根文件系统、内核位于output/images目录。
(4)文件的安装路径
qt5相关的文件被安装到根文件系统的/usr目录:
头文件安装到/usr/include/qt5,库安装到/usr/lib,plugins安装到/usr/lib/qt/plugins,examples安装到/usr/lib/qt/examples。
### 支持jailhouse(d2000/ft2004)
本项目还支持为d2000/ft2004编译jailhouse,编译步骤与为e2000编译jailhouse的步骤类似,请参考“为e2000编译文件系统>支持jailhouse(e2000)”。
除了将第(1)步,修改为:
(1)使用phytium_d2000_ubuntu_defconfig作为基础配置项,合并支持jailhouse的配置:
`./support/kconfig/merge_config.sh configs/phytium_d2000_ubuntu_defconfig configs/phytium_d2000_jailhouse.config`
其余步骤与为e2000编译jailhouse的步骤相同。
# 在开发板上启动文件系统
## 在e2000开发板上启动文件系统
### 使用U-Boot启动文件系统
### 使用U-Boot启动文件系统(手动分区)
(1)主机端将SATA盘或U盘分成两个分区(以主机识别设备名为/dev/sdb 为例,请按实际识别设备名更改)
`$ sudo fdisk /dev/sdb`
@ -193,6 +290,27 @@ U盘:
=>booti 0x90100000 - 0x90000000
```
### 使用U-Boot启动文件系统(使用e2000 img 镜像)
(1)将e2000 img 镜像(disk.img)写入SATA盘或U盘:
`$ sudo dd if=xxx/phytium-linux-buildroot/output/images/disk.img of=/dev/sdb bs=1M`
(2)SATA盘或U盘接到开发板,启动开发板电源,串口输出U-Boot命令行,设置U-Boot环境变量,启动文件系统
SATA盘:
```
=>setenv bootargs console=ttyAMA1,115200 audit=0 earlycon=pl011,0x2800d000 root=/dev/sda2 rw;
=>fatload scsi 0:1 0x90100000 Image;
=>fatload scsi 0:1 0x90000000 e2000q-demo-board.dtb;
=>booti 0x90100000 - 0x90000000
```
U盘:
```
=>setenv bootargs console=ttyAMA1,115200 audit=0 earlycon=pl011,0x2800d000 root=/dev/sda2 rootdelay=5 rw;
=>usb start
=>fatload usb 0:1 0x90100000 Image;
=>fatload usb 0:1 0x90000000 e2000q-demo-board.dtb;
=>booti 0x90100000 - 0x90000000
```
## 在d2000开发板上启动文件系统
### 使用U-Boot启动文件系统
(1)主机端将SATA盘或U盘分成两个分区(以主机识别设备名为/dev/sdb 为例,请按实际识别设备名更改)
@ -380,3 +498,5 @@ rm -rf dl/linux/
make linux-dirclean
make
```
5、关于e2000 vpu的包请咨询飞腾技术支持或FAE。