1 飞腾派 OS 简介
飞腾派开发板是一款面向宽广工程师和爱好者的开源硬件。主板处理器采纳飞腾四核处理器, 兼容 ARM V8 指令集, 主频最高可达 1.8GHz。
飞腾派 OS(Phytium Pi OS)是运行在飞腾派开发板上的操作系统,基于 Debian 并针对飞腾派开发板深度定制,其中包含固件,内核,各接口驱动程序,桌面零碎,用于各种场景的开发包等。它能够烧录在 SD 卡中,作为飞腾派开发板的启动零碎。
1.1 飞腾派开发板的硬件规格
开发板内置 2/4GB DDR4 内存, 双路千兆以太网、USB、UART、CAN、HDMI、音频等接口。主板板载 WiFi 蓝牙, 陶瓷天线, 可疾速连贯无线通信。集成一路 miniPCIE 接口,可实现 AI 加速卡与 4G 通信等。
性能 | 形容 |
---|---|
CPU | 飞腾四核处理器,ARMV8 架构 |
内存 | 2G、4G 版本,64 位 DDR4 |
存储 | 反对 microSD 和 EMMC 启动,默认 microSD |
网络 | 2×千兆以太网(RJ45) |
USB | 1×USB3.0 host,3×USB2.0 host |
PCIe | 1×Mini-PCIe , 反对 4G、AI 等模组 |
蓝牙 | 板载蓝牙 BT4.2/ BLE4.2 |
WiFi | 板载 2.4G + 5G 双频 WIFi |
显示 | 1× HDMI, 最高反对 1920*1080 分辨率 |
视频解码 | 2K30p(H.264/265)\1080p60 |
音频 | 3.5mm 耳机口音频输入 |
UART | 1×调试串口 +2×MIO(可配置为 UART 模式) |
I2C | 2+2×MIO(可配置为 I2C 模式) |
I2S | 1 路 |
SPI | 2 路 |
CAN | 2 路 CANFD |
GPIO | 最多 29 个 |
供电 | 12V3A 直流电源 |
工作温度 | 0~50°C |
1.2 飞腾派 OS 的次要性能
linux 5.10.153 内核
多种外设驱动
Debian 11 定制零碎
Xfce 桌面零碎
反对 WiFi6 双频配置
反对蓝牙 配置
反对 4G/5G 网卡
反对 AI 加速卡
反对 web,Python 开发包
反对类树莓派 HAT 板开发包
反对 EtherCAT+ Linux RT
反对 Xenomai
1.3 反对的次要驱动
mirco SD
eMMC
千兆以太网控制器及收发器
USB
miniPCIe
蓝牙 v4.2
wifi6
UART
I2C
I2S
SPI
CAN
GPIO
MIO
watchdog
1.4 反对的次要软件包
openssl
ffmpeg
ssh
gdb
Python3
lua5.1
curl
nfs-common
ntfs-3g
cifs-utils
mkvtoolnix
wpasupplicant
wireless-tools
dhcpd5
vlc
bluez
pulseaudio
blueman
bluetooth
python3-pygame
python3-tk
python3-spidev
python3-pip
libgles2-mesa
2 飞腾派 OS 使用指南
2.1 筹备 SD 卡启动镜像
下载 SD 卡的镜像 sdcard.img,能够在 Linux 或 Windows 上将镜像烧录到 SD 卡中。请筹备一张容量大于 16G 的 SD 卡,并连贯到 Linux 或 Windows 主机上。
2.1.1 Windows 烧录镜像
应用 win32 Disk imager 进行烧录。
具体应用办法见: https://blog.csdn.net/Mr_LanGX/article/details/123338081
2.1.2 Linux 烧录镜像
主机端将 SD 卡接入主机(以主机辨认设施名为 /dev/sdb 为例,请按理论辨认设施名更改,确定设施没有被挂载,如果有挂载, 须要 umount)
$ sudo dd if=sdcard.img of=/dev/sdb bs=1M
2.2 系统启动
将有镜像的 SD 卡插入(确认开发板配置为 SD 卡启动,参见飞腾派硬件规格书 7.13 节“启动选择开关”),HDMI 连贯显示器,连贯 USB 键盘鼠标,连贯电源线,启动零碎,在显示器上会呈现小企鹅标记,最初显示登录界面。登录的用户名:user,明码:user
2.3 桌面根本介绍
Xfce 作为默认的桌面环境, 是一款轻量级桌面环境,重视效率和资源利用,它提供了简洁而直观的界面。
在桌面底部两头的地位,从左到右提供“显示桌面”,“终端”,“文件管理器”,“web 浏览器”,“程序查找器”“快捷文件管理器”。
2.3.1 web 浏览器
Xfce 提供 firefox 作为默认浏览器
2.3.2 终端
在终端中,能够应用命令行来治理和设置零碎,开发软件。user 用户能够在终端中 sudo 来获取 root 权限。
2.3.3 文件管理器
通过文件管理器,能够管理文件,关上,批改,保留文件。
2.4 网络连接设置
2.4.1 有线网络
默认两个网口都是 DHCP 的,能够连贯路由器获取 IP 地址。
点击桌面右上角的连贯图标来查看有线网网络连接状况。
通过网络管理器来设置你的网络参数,减少删除连贯,批改连贯参数。
2.4.2 WiFi 网络
零碎曾经集成 WIFI 驱动. 启动后能够主动加载看到 wlan0 . wpasupplicant 服务默认主动启动。点击桌面右上角的连贯图标来查看 WiFi 网络。
点击 create new WiFi network,来创立一个连贯,输出 network name 和 key,就能够连贯到 WiFi 网络。
敞开 WiFi 服务
$ sudo systemctl disable wpa_supplicant.service
$ sudo reboot
关上 WiFi 服务
$ sudo systemctl enable wpa_supplicant.service
$ sudo reboot
2.5 蓝牙设置
蓝牙服务零碎默认是敞开的。启动步骤如下:
$ sudo systemctl enable bluetooth.service
$ sudo systemctl enable systemd-hciattach.service
$ sudo reboot
重启后,在桌面右上角的状态栏中有蓝牙图标,点击图标能够增加蓝牙设施。
在增加设施窗口,点击“search”找到要连贯的蓝牙耳机和音响,右键选连贯。
如果通过蓝牙播放音乐
vlc 播放器抉择 Audio —-> Audio Device -> < 蓝牙耳机设施
2.6 应用 SSH
SSH client 和 SSH server 默认曾经集成在飞腾派 OS 中,能够间接应用。
首先确保飞腾派有线网口或 wifi 网口有 IP 地址 (上面的例子中 eth0 的 ip address 是 10.10.80.174),能够通过 ip addr 命令查看。
user@phytiumpi:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWNgroupdefault qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq stateUPgroup default qlen 1000
link/ether 6c:b3:11:0f:9c:e8 brd ff:ff:ff:ff:ff:ff permaddr 00:11:22:33:44:55
inet 10.10.80.174/24 brd 10.10.80.255 scope global dynamic noprefixrouteeth0
valid_lft 1263sec preferred_lft 1263sec
inet6 fe80::8cf3:ea81:564c:a144/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mqstateDOWN group default qlen 1000
link/ether 10:22:33:44:55:66 brd ff:ff:ff:ff:ff:ff
其次通过 ping 命令查看和远端设施的连通性。(飞腾派 IP 10.10.80.174,远端设施 IP10.10.80.170)
$ ping 10.10.80.174
PING 10.10.80.174 (10.10.80.174) 56(84) bytes of data.
64 bytes from 10.10.80.174: icmp_seq=1 ttl=64 time=0.350 ms
64 bytes from 10.10.80.174: icmp_seq=2 ttl=64 time=0.294 ms
^C
--- 10.10.80.174 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1028ms
rtt min/avg/max/mdev = 0.294/0.322/0.350/0.028 ms
最初在确认能够 ping 通远端设施的状况下:
a. 从飞腾派开发板登录近程设施
user@phytiumpi:~$ ssh phytium@10.10.80.170
The authenticity of host '10.10.80.170 (10.10.80.170)' can't be established.
ECDSA key fingerprint is
SHA256:C7MVQ7GzEb4EKkINKnrEfmQ/Cu0VkpRzypMbeHgpJEw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.80.170' (ECDSA) to the list of known hosts.
phytium@10.10.80.170's password:
Welcome to Kylin V10 SP1 (GNU/Linux 5.4.18-57-generic aarch64)
* Management: http://www.kylinos.cn/ * Support:
http://www.kylinos.cn/service.aspx
Last login: Fri Jun 9 15:08:07 2023 from 10.10.80.177
phytium@phytium-d2000:~$
b. 从近程设施登录飞腾派开发板(password: user)
$ ssh user@10.10.80.174
The authenticity of host '10.10.80.174 (10.10.80.174)' can't be established.
ECDSA key fingerprint is
SHA256:6CzIeVEaWgskwMdXDu/VcnS6c85/S/O4fUWaHdTVJY0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.80.174' (ECDSA) to the list of known hosts. user@10.10.80.174's password:
Linux phytiumpi 5.10.153-rt76-phytium-embeded-2023-v1.0-GA #1 SMPPREEMPT_RT Tue Aug 8 14:09:59 CST 2023 aarch64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Aug 9 18:13:43 2023 from 10.10.80.198
user@phytiumpi:~$
2.7 应用调试串口
串口连贯请参考《飞腾派_V2 硬件规格书》中的调试串口地位(管脚 8,10,12),连贯串口
串口终端程序必须设置为:
- 波特率:115200
- 数据位:8
- 奇偶校验: 无
- 进行位:1
零碎调试串口下的用户有 user 和 root
- 用户名:user; 明码:user
- 用户名:root; 明码:root
2.8 软件装置
能够在命令行终端中通过 apt-get install 来装置,或者在图形界面中双击.deb 包文件进行装置。
其余的 Debian 应用问题能够参考如下文档:https://www.debian.org/doc/manuals/debian-reference/
3 飞腾派 OS 开发指南
3.1 构建飞腾派 OS
飞腾派 OS 是由 Buildroot 生成的,buildroot 是一种简略、高效且易于应用的工具,能够通过穿插编译 在 主 机 系 统 上 生 成 飞 腾 派 OS 的 镜 像 文件。能够参考:https://buildroot.org/downloads/manual/manual.html
咱们只反对在 ubuntu20.04、ubuntu22.04、debian11 这三种主机零碎上运行 Buildroot,不反对其余零碎。首先,Buildroot 须要主机零碎上装置如下 Linux 程序,请查看是否已装置:
Build tools:
- which
- sed
- make (version 3.81 or any later)
- binutils
- build-essential (only for Debian based systems)
- gcc (version 4.8 or any later)
- g++ (version 4.8 or any later)
- bash
- patch
- gzip
- bzip2
- perl (version 5.8.7 or any later)
- tar
- cpio
- unzip
- rsync
- file (must be in /usr/bin/file)
-device-tree-compiler
- bc
Source fetching tools:
- wget
- git
除此之外,还须要装置如下软件包:
$ sudo apt install debootstrap qemu-user-static binfmt-support debian-archive-keyring
对于 debian11 零碎,须要设置 PATH 环境变量:
$ PATH=$PATH:/usr/sbin
3.1.1 下载 phytium-pi-os
$ git clone https://gitee.com:phytium_embedded/phytium-pi-os.git
3.1.2 根本 defconfig
飞腾派构建的文件系统的配置文件位于 configs 目录。
在 phytium-pi-os 根目录下执行 $ make list-defconfigs,返回 configs 目录中的 defconfig 配置文件。
$ make list-defconfigs
其中以 phytium 结尾的为飞腾派相干的 defconfig 配置文件,蕴含:
phytiumpi_defconfig - Build for phytiumpi (without desktop)
phytiumpi_desktop_defconfig - Build for phytiumpi_desktop
3.1.3 编译 SD 卡镜像
(1)加载 defconfig
$ make phytiumpi_xxx_defconfig
(2)编译
$ make
(3)镜像的输入地位
生成的根文件系统、内核位于 output/images 目录。sdcard.img 就是 SD 的镜像文件。
3.1.4 EtherCAT config
编译 ethercat,对于 ethercat 的信息请参考:https://gitee.com/phytium_embedded/ether-cat
反对将 ethercat 驱动及用户态的库、工具编译装置到 debian 零碎上。如果须要编译 ethercat 请执行:
(1)应用 phytiumpi_xxx_defconfig 作为根底配置项,在 phytiumpi_xxx_defconfig 中退出反对 rt 内核,及 ethercat 的配置:
$ ./support/kconfig/merge_config.sh configs/phytiumpi_xxx_defconfig
configs/phytiumpi_linux_5.10_rt.config configs/phytiumpi_ethercat.config
(2)编译
$ make
3.1.5 Xenomai Config
编译 xenomai,对于 xenomai 的信息请参考:https://gitee.com/phytium_embedded/linux-kernel-xenomai
反对将 xenomai 内核及用户态的库、工具编译装置到飞腾派 OS 上。如果须要编译 xenomai 请执行:
(1)应用 phytiumpi_xxx_defconfig 作为根底配置项,在 phytiumpi_xxx_defconfig 退出 xenomai 的配置:
$ ./support/kconfig/merge_config.sh configs/phytiumpi_xxx_defconfig
configs/phytiumpi_xenomai_xxx.config
phytiumpi_xenomai_xxx.config 为以下配置片段文件之一:
phytiumpi_xenomai_mercury_5.10.config(linux 5.10 rt 内核 +xenomai-v3.2.2.tar.gz)phytiumpi_xenomai_cobalt_5.10.config(xenomai cobalt 5.10 内核 +xenomai-v3.2.2.tar.gz)
(2)编译
$ make
3.1.6 清理编译后果
(1)make clean
删除所有编译后果,包含 output 目录下的所有内容。当编译完一个文件系统后,编译另一个文件系统前,须要执行此命令。
(2)make distclean
重置 buildroot,删除所有编译后果、下载目录以及配置。
3.2 应用新内核
3.2.1 穿插编译内核
如果用户想本人手工命令构建内核,设施树以及内核模块,能够依照该章节操作。
在 x86 穿插编译 arm64 内核,举荐应用编译器的链接如下:
https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz
将其解压缩到 /opt 目录后,而后设置环境变量,操作步骤如下:
$ export PATH=/opt/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin:$PATH
$ export ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-
$ export CC=aarch64-none-linux-gnu-gcc
从如下网址下载 Rt 内核源代码(以 Rt 内核为例):
https://gitee.com/phytium_embedded/phytium-linux-kernel/tree/linux-5.10-rt
第一步:进入内核根目录下,依照下述步骤配置和编译 Rt 内核
$ make phytiumpi_firefly_defconfig
$ make
其中内核的名称是 Image,设施树的名称是 phytiumpi_firefly.dtb。
第二步:因为内核很多模块编译成 ko,所以须要手工生成 ko 的装置目录和文件:
在内核当前目录下创立 build 目录,作为 ko 的装置目录。当然用户能够设置任何目录为装置目录。
$ mkdir build
设置 build 目录为装置目录
$ export INSTALL_MOD_PATH=`pwd`/build
装置模块
$ make modules_install
查看模块
$ ls build/lib/modules/
5.10.153-rt76-phytium-embeded-2023-v1.0-GA
其中,模块名称分 2 局部,第一局部“5.10.153-rt76-phytium-embeded”不会变动,第二局部“-v1.0-GA”会随着版本的不断更新而继续更新,本章节后续章节形容内核模块以不变局部为准。
第三步:将 SD 卡插到 USB 读卡器上,而后插到穿插编译机上,假如读卡器的设施节点为 sdc,将内核和设施树装置到 SD 卡的 /boot 目录(留神提前备份旧的内核和设施树以及内核模块)。
$ sudo mount /dev/sdc1 /mnt
$ sudo cp arch/arm64/boot/Image /mnt/boot/
$ sudo cp arch/arm64/boot/dts/phytium/phytiumpi_firefly.dtb /mnt/boot/
而后将配套的内核模块装置到 /lib/modules
$ sudo cp build/lib/modules/5.10.153-rt76-phytium-embeded /mnt/lib/modules-R
$ sudo umount /mnt
3.2.2 飞腾派开发板上编译内核
开发板启动注册之后须要装置如下软件,这些软件包如果没有装置,编译内核的时候可能失败。
$ sudo apt-get install autoconf automake libtool fuse debhelper findutils autotools-dev
pkg-config libltdl-dev flex bison device-tree-compiler libssl-dev
从如下网址下载 Rt 内核源代码(以 Rt 内核为例):
https://gitee.com/phytium_embedded/phytium-linux-kernel/tree/linux-5.10-rt
第一步:进入内核根目录下,依照下述步骤配置和编译 Rt 内核
$ make phytiumpi_firefly_defconfig
$ make
其中内核的名称是 Image,设施树的名称是 phytiumpi_firefly.dtb。
第二步:因为内核很多模块编译成 ko,所以须要手工生成 ko 的装置目录和文件:
在内核当前目录下创立 build 目录,作为 ko 的装置目录。当然用户能够设置任何目录为装置目录。
$ mkdir build
设置 build 目录为装置目录
$ export INSTALL_MOD_PATH=`pwd`/build
装置模块
$ make modules_install
查看模块
$ ls build/lib/modules/
5.10.153-rt76-phytium-embeded-2023-v1.0-GA
其中,模块名称分 2 局部,第一局部“5.10.153-rt76-phytium-embeded”不会变动,第二局部“-v1.0-GA”会随着版本的不断更新而继续更新,本章节后续章节形容内核模块以不变局部为准。
第三步:将内核和设施树装置到 /boot 目录(留神提前备份旧的内核和设施树以及内核模块)。
$ sudo cp arch/arm64/boot/Image /boot/
$ sudo cp arch/arm64/boot/dts/phytium/phytiumpi_firefly.dtb /boot/
而后将配套的内核模块装置到 /lib/modules
$ sudo cp build/lib/modules/5.10.153-rt76-phytium-embeded /lib/modules -R
$ sudo umount /mnt
与穿插编译内核相比,显然在飞腾派开发板上编译内核上步骤简洁,更换内核也更不便。然而实际上,在飞腾开发板上编译内核速度很慢,效率很低,因为在个别状况下,飞腾派开发板的 CPU 的性能比穿插编译机会差很多。
3.2.3 启动新内核
启动开发板,而后在 Uboot 启动阶段敲击键盘的回车键,这时零碎会停留在 Uboot 的 Shell 界面,如下所示。
AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
SATA link 0 timeout. AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
Hit any key to stop autoboot: 0 // 红颜色打印信息回显后键入回车字符
E2000# // 这时进入 Uboot 的 Shell 界面
E2000#setenv bootargs console=ttyAMA1,115200 earlycon=pl011,0x2800d000
root=/dev/mmcblk0p1 rootwait rw
E2000#ext4load mmc 0:1 0x90100000
home/user/test/5.10.153-phytium-embeded-rt/Image
28692992 bytes read in 6293 ms (4.3 MiB/s)
E2000#ext4load mmc 0:1 0x90000000
home/user/test/5.10.153-phytium-embeded-rt/phytiumpi_firefly.dtb
25125 bytes read in 13 ms (1.8 MiB/s)
E2000#booti 0x90100000 - 0x90000000
在 Uboot 的 shell 菜单依照如下步骤疏导内核和设施树启动。
第一步:设置启动参数,其中,嵌入式 Linux 文件系统
E2000# setenv bootargs console=ttyAMA1,115200 earlycon=pl011,0x2800d000
root=/dev/mmcblk0p1 rootwait rw;
第二步:加载内核到内存
E2000# ext4load mmc 0:1 0x90100000 boot/Image;
这时,串口会打印如下信息提醒加载胜利
28692992 bytes read in 6293 ms (4.3 MiB/s)
第三步:加载设施树到内存
E2000# ext4load mmc 0:1 0x90000000 boot/phytiumpi_firefly.dtb;
这时,串口会打印如下信息提醒加载胜利
25125 bytes read in 13 ms (1.8 MiB/s)
第四步:疏导启动内核
E2000# booti 0x90100000 – 0x90000000;
打印信息如下
Moving Image from 0x90100000 to 0x90200000, end=91df0000
## Flattened Device Tree blob at 90000000
Booting using the fdt blob at 0x90000000
Loading Device Tree to 00000000f9c32000, end 00000000f9c3b224 ... OK
run in ft_board_setup
fdt_addr 00000000f9c32000
N: Phytium System Service Call: 0xc2000005
mb_count = 0x1
mb_blocks[0].mb_size = 0x7c000000
mb_blocks[1].mb_size = 0xffa16920
fdt : remove memory@1fdt : dram size 0x17fa16920 update successfully
Starting kernel ...
/ {
compatible = "phytium,pe2204";
interrupt-parent = <0x00000001>;
#address-cells = <0x00000002>;
… … // 打印信息太多,此处省略
[0.000000] Booting Linux on physical CPU 0x0000000200 [0x700f3034]
[0.000000] Linux version 5.10.153-rt76-phytium-embeded-2023-v1.0-GA[0.000000] Machine model: Phytium Pi Board
… … // 打印信息太多,此处省略
[OK] Finished Hold until boot process finishes up.
[OK] Finished Save/Restore Sound Card State.
[OK] Started OpenBSD Secure Shell server.
Phytium Pi
phytiumpi login: // Linux Shell 提醒界面
这时,输出用户名 user 和明码 user 进入 Linux shell。
3.3 应用内核模块
linux-headers 蕴含构建内核内部模块所需的头文件,buildroot 构建会生成 linux-headers。
对于如何编译内核内部模块,可参考:https://www.kernel.org/doc/html/latest/kbuild/modules.html
3.3.1 穿插编译内核模块
buildroot 构建会在 output/target/usr/src 目录中装置 linux-headers-version。应用 buildroot 的工具链来穿插编译内核模块,buildroot 工具链位于 output/host/bin,工具链的 sysroot 为 output/host/aarch64-buildroot-linux-gnu/sysroot。
穿插编译内核内部模块的命令为:
$ make ARCH=arm64 \
CROSS_COMPILE=/home/xxx/phytiumpios/output/host/bin/aarch64-none-linux-gnu-\
-C
/home/xxx/phytiumpios/output/target/usr/src/linux-headers-5.10.153-phytium-embede
d \
M=$PWD \
modules
3.3.2 飞腾派开发板上编译内核模块
buildroot 将 linux-headers-version 装置在根文件系统的 /usr/src 目录下,并为它创立了一个软链接 /lib/modules/version/build。
留神,因为 linux-headers 是在 x86-64 主机穿插编译生成的,在开发板上间接应用它编译内核模块会报错:
/bin/sh: 1: scripts/basic/fixdep: Exec format error
因而,须要将 x86-64 格局的 fixdep 等文件替换为 ARM aarch64 格局的(以 linux 5.10 内核为例):
(1)在开发板上执行:
scp -r
username@host:/home/xxx/phytiumpios/board/phytium/common/linux-5.10/scripts
/usr/src/linux-headers-5.10.153-phytium-embeded
在开发板上编译内核内部模块的命令为:
make -C /lib/modules/5.10.153-phytium-embeded/build M=$PWD modules
3.4 buildroot 编译新的应用软件
本节简略介绍如何通过 buildroot 穿插编译能运行在开发板上的应用软件,残缺的教程请参考:https://buildroot.org/downloads/manual/manual.html
3.4.1 buildroot 软件包介绍
buildroot 中所有用户态的软件包都在 package 目录,每个软件包有本人的目录 package/,其中是小写的软件包名。这个目录蕴含:
- Config.in 文件,用 Kconfig 语言编写,形容了包的配置选项。
- .mk 文件,用 make 编写,形容了包如何构建,即从哪里获取源码,如何编译和装置等。
- .hash 文件,提供 hash 值,查看下载文件的完整性,如查看下载的软件包源码是否残缺,这个文件是可选的。
- *.patch 文件,在编译之前利用于源码的补丁文件,这个文件是可选的。
- 可能对包有用的其余文件。
3.4.2 编写 buildroot 软件包
首先创立软件包的目录 package/<pkg>,而后编写该软件包中的文件。
buildroot 中的软件包基本上由 Config.in 和.mk 两个文件组成。对于如何编写这两个文件,大家能够参考 buildroot 用户手册,这里简略概括一下。
(1)Config.in 文件中必须蕴含启用或禁用该包的选项,而且必须命名为 BR2_PACKAGE_,其中 <PKG> 是大写的软件包名,这个选项的值是布尔类型。也能够定义其余性能选项来进一步配置该软件包。而后还必须在 package/Config.in 文件中蕴含该文件:
source "package/<pkg>/Config.in"
(2)<pkg>.mk 文件看起来不像一般的 Makefile 文件,而是一连串的变量定义,而且必须以大写的包名作为变量的前缀。最初以调用软件包的根底构造(package infrastructure)完结。变量通知软件包的根底构造要做什么。
对于应用手写 Makefile 来编译的软件源码,在 <pkg>.mk 中调用 generic-package 根底构造。generic-package 根底构造实现了包的下载、提取、打补丁。而配置、编译和装置由 <pkg>.mk 文件形容。<pkg>.mk 文件中能够设置的变量及其含意,请参考 buildroot 用户手册。
3.4.3 编译软件包
(1)独自编译软件包
$ cd xxx/phytiumpios
$ make <pkg>
编译后果在 output/build/- <pkg>-<version>
(2)将软件包编译进根文件系统
在 phytiumpi_xxx_defconfig 中增加一行 BR2_PACKAGE_<pkg>=y
$ make phytiumpi_xxx_defconfig
$ make
A 扩大材料
https://gitee.com/phytium_embedded/phytium-embedded-docs
更多资料获取:飞腾开发者平台
版权所有。飞腾信息技术有限公司 2023。保留所有权力。
未经本公司批准,任何单位、公司或集体不得擅自复制,翻译,摘抄本文档内容的局部或全副,不得以任何形式或路径进行流传和宣传。
商标申明
Phytium 和其余飞腾商标均为飞腾信息技术有限公司的商标。
本文档提及的其余所有商标或注册商标,由各自的所有人领有。
留神
本文档的内容视为飞腾的窃密信息,您该当严格遵守窃密工作;未经飞腾当时书面批准,您不得向任何第三方披露本文档内容或提供给任何第三方应用。
因为产品版本升级或其余起因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为应用领导,飞腾在现有技术的根底上尽最大致力提供相应的介绍及操作指引,但飞腾在此明确申明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保障。
本文档中所有内容,包含但不限于图片、架构设计、页面布局、文字描述,均由飞腾和 / 或其关联公司依法领有其知识产权,包含但不限于商标权、专利权、著作权等。非经飞腾和 / 或其关联公司书面批准,任何人不得擅自应用、批改,复制上述内容。