Zynq 是赛灵思公司推出的一种异构片上系统 (SoC),它将可编程逻辑 (FPGA) 和基于 ARM 的处理内核集成在一起。要充分利用 Zynq 的强大功能,一个关键步骤就是让 Linux 操作系统在双核上同时运行。
配置双核 Linux 启动
要配置双核 Linux 启动,需要修改 U-Boot 启动加载程序和 Linux内核配置。
首先,编辑 U-Boot 脚本文件 "u-boot.dts",找到以下行:
fdt address 0xffe00000
将其修改为:
fdt address 0xc0000000@1
这将指定 U-Boot 从 DDR 内存的 1GB 地址处加载设备树(DTB)。
然后,编辑 Linux 内核配置文件 "config.txt",添加以下行:
CONFIG_ARM_MPCORE=y
CONFIG_ARM_MPCORE_SMP=y
CONFIG_CLKSRC_IMX6=y
CONFIG_ARM_ARCH_TIMER=y
CONFIG_HAVE_ARM_TWD=y
这些选项启用 SMP(对称多处理)支持、时钟源配置和定时器功能。
构建并加载 U-Boot 和 Linux
修改完成后,构建 U-Boot:
make u-boot
然后将其加载到 Zynq 板上:
xloader -e bootm 0xc0000000 u-boot.img
接下来,构建 Linux 内核:
make -j4 zImage modules dtbs
将内核和 DTB 加载到板子上:
tftpboot 0xc0000000 zImage
tftpboot 0xc0200000 PSYS.dtb
启动双核 Linux
最后,输入以下命令启动双核 Linux:
bootm 0xc0000000
Linux 系统现在将在 Zynq 的两个 ARM 处理内核上同时运行。要验证,可以使用以下命令检查 CPU 状态:
cat /proc/cpuinfo
这将显示两个内核的信息,表明 Linux 正在双核上运行。