SOC简介
来源:https://www.amd.com/zh-cn/products/adaptive-socs-and-fpgas/soc.html
SOC:System On Chip,也称为All Programmable SOC,称为全可编程片上系统。

Xilinx的SOC有4个系列:
- ZYNQ-7000,此系列是Xilinx于2015年发布的第一代SOC架构的芯片,也是世界上首个SOC芯片系列
- ZYNQ UltraScale+ MPSoC,性能强劲
- ZYNQ UltraScale+ RDSoC,性能强劲
- Versal ACAP,Xilinx最新发布的芯片,性能也最强
SOC内部集成了单/多个ARM处理器核心与1个FPGA,将软件可编程的硬核处理器与硬件可编程的FPGA集成在一个芯片中。软硬件均可编程也是SOC被称为全可编程片上系统的原因。
SOC中的ARM处理器被称为PS(Processing System,处理系统),而FPGA被称为PL(Progarmmable Logic,可编程逻辑)。SOC = PS + PL,其中,PS为主,与单独的ARM芯片(如ST公司的STM32系列)一样,PS配备了多个外设,如串口,CAN口,GPIO等,PL部分可以看做是PS的一个”可编程外设”。
petalinux
PetaLinux 是由赛灵思(Xilinx,现为AMD旗下)开发的嵌入式Linux开发工具套件,专为其FPGA和SoC(如Zynq、Zynq UltraScale+、MicroBlaze等)设计,用于快速构建、定制和部署嵌入式Linux系统。以下是其核心特点和应用场景:
1、主要功能
- 自动化构建:基于Yocto Project,提供预配置的模板和脚本,简化Linux系统的交叉编译、根文件系统生成和镜像打包。
- 硬件适配:自动集成Xilinx硬件设计(如Vivado导出的
XSA
文件),生成匹配的Linux内核、设备树和驱动。 - 定制化支持:可定制U-Boot、Linux内核、设备树、根文件系统(支持BusyBox或第三方如Buildroot)。
- 工具链集成:包含交叉编译工具链(如ARM架构的GCC)、调试工具(如GDB)及性能分析工具。
2、核心组件
- U-Boot:引导加载程序,支持硬件初始化。
- Linux内核:预配置Xilinx内核,含专用驱动(如PL端IP核驱动)。
- 设备树(DTS):自动生成硬件描述文件,简化外设配置。
- 根文件系统:支持EXT4、RAMFS等格式,可添加用户态软件包。
编译环境搭建
安装必要的软件
sudo apt-get install -y tofrodos iproute2 gawk gcc g++ git make net-tools libncurses5-dev \
tftpd zlib1g:i386 libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat \
xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential \
libsdl1.2-dev libglib2.0-dev screen pax gzip automake
配置
Petalinux 工具需要主机系统的/bin/sh是 bash,而 ubuntu 默认的/bin/sh 是 dash
输入:sudo dpkg-reconfigure dash ,然后选择<No>

执行安装指令
#2018版本以后的 ,–dir 后替换为自己的目录
./petalinux-v2020.3-final-installer.run –dir /demo_path/petalinux/2020.3
#2018版本以前的,替换为自己的目录
./petalinux-v2018.3-final-installer.run /demo_path/petalinux/2018.3
运行上述命令后,需要等待一段时间,当出现“Press Enter to display the license agreements”字样的时候,如下图所示

从显示的意思可以知道,让我们按下回车键显示软件许可协议,那就按下呗。

这些内容如果你感兴趣可以看看,此处我们就不详细看了,直接按下 Q 键退出,回到之
前的界面之后会出现一个选择项,询问我们是否接受 xilinx 最终用户协议。

这个显然是没得选,必须接受,否则无法进行下面的安装;输入 Y 按回车接受。除了xilinx 最终用户协议之外,还有两个协议也需要大家接受,会依次显示在终端上,同理也是输入 Y 按下回车接受。
接受所有协议之后便会进行下面的安装步骤了,直到安装完成
petalinux指令解析
项目创建与初始化
petalinux-create
创建 PetaLinux 项目或组件:petalinux-create -t project --template <TYPE> --name <NAME>
创建项目(TYPE
可选zynq
、zynqMP
、versal
等)。petalinux-create -t component --name <NAME>
创建自定义组件(如驱动、应用)。
petalinux-init
初始化 PetaLinux 环境(通常已集成在petalinux-create
中)。
项目配置
petalinux-config
启动顶层项目配置菜单(基于 Kconfig):petalinux-config
:配置系统参数(如内核、根文件系统、设备树)。petalinux-config -c kernel
:配置 Linux 内核。petalinux-config -c rootfs
:配置根文件系统(添加/删除软件包)。
petalinux-config --get-hw-description <PATH>
从 Vivado 导出的硬件描述文件(.xsa
或.hdf
)加载硬件配置。
构建系统
petalinux-build
编译整个项目(内核、设备树、根文件系统、U-Boot 等)。petalinux-build -c <COMPONENT>
:单独编译某个组件(如-c kernel
)。petalinux-build clean
:清理构建输出。
生成镜像
petalinux-package
打包生成可部署的镜像文件:petalinux-package --boot --fsbl <FSBL.elf> --fpga <FPGA.bit> --u-boot
生成BOOT.BIN
(包含 FSBL、FPGA 比特流、U-Boot)。petalinux-package --prebuilt
:打包预构建的镜像。petalinux-package --sysroot
:生成 SDK 所需的 sysroot。
提取和修改源码
petalinux-devtool
设备树和内核模块开发工具:petalinux-devtool modify dtg
:编辑设备树生成器(DTG)模板。petalinux-devtool modify kernel
:修改内核源码。
调试与运行
petalinux-boot
通过 QEMU 或硬件启动系统:petalinux-boot --qemu --kernel
:在 QEMU 中启动内核。petalinux-boot --jtag --kernel
:通过 JTAG 启动。
petalinux-util
实用工具(如串口终端、Flash 编程)。
SDK 生成
petalinux-build --sdk
生成 SDK(用于交叉编译应用或驱动)。petalinux-package --sysroot
导出 sysroot 供外部开发使用。
其他常用命令
petalinux-info
显示当前项目的配置信息(如硬件平台、版本)。petalinux-upgrade
升级项目到新版本的 PetaLinux。petalinux-install
安装工具链或依赖包(较少手动使用)。
工程创建
petalinux-create --type <TYPE> --template <PLATFORM> --name <PROJECT_NAME>
参数说明
<TYPE>
项目类型(可选):project
|apps
|modules
<PLATFORM>
开发平台(可选):versal
(Versal ACAP)zynqMP
(Zynq UltraScale+ MPSoC)zynq
(Zynq-7000 设备)microblaze
(MicroBlaze 处理器)
<PROJECT_NAME>
自定义工程名称
示例
# 创建 Zynq-7000 项目
petalinux-create --type project --template zynq --name zynq_project
# 创建 Zynq UltraScale+ 项目
petalinux-create --type project --template zynqMP --name zynqMP_project
工程配置
配置导入
2019 年前的petalinux版本使用system.hdf 文件,而以后的版本使用system.xsa 文件。.hdf和.xsa由逻辑通过vivado配置生成。
petalinux-config --get-hw-description=soc_top.xsa