Zephyr 在 Andes ADP-XC7K AE350 FPGA 开发板上的移植与烧录调试全指南【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr导读ADP-XC7K AE350 是 Andes晶心科技面向 AndesCore 处理器与 AndeShape SoC 平台 IP 验证推出的 FPGA 开发与原型验证板卡运行 Zephyr 的 AE350 平台以 60MHz 的 32/64 位 RISC-V 内核为计算核心。本文以 boards/andestech/adp_xc7k_ae350/doc/index.rst 为骨架结合仓库中的设备树、Kconfig 与 defconfig 源码完整讲解该板卡的硬件资源、引脚映射、系统时钟与串口配置并给出从构建、AICE 连接、ICEman 启动到 RAM 加载与 XIP 烧写的全流程命令帮助你在 ADP-XC7K 系列板上快速跑通 Zephyr 应用。平台与板卡概览ADP-XC7K AE350 板卡是 AndeShape AE350 平台在 ADP-XC7K 系列 FPGA 开发板上的落地形态。AE350 是一个 RISC-V 平台可集成 AndesCore CPU 以及一组基础外设 IP。ADP-XC7K 系列本身就是用于评估多种 AndesCore 处理器与 AndeShape SoC 平台 IP 的 FPGA 开发与原型验证板。仓库中该板卡的核心文件包括设备树源文件adp_xc7k_ae350.dts默认 PLIC 中断版本与 adp_xc7k_ae350_clic.dtsCLIC 中断版本二者共用 adp_xc7k_ae350_common.dtsi板级标识文件adp_xc7k_ae350.yaml默认配置adp_xc7k_ae350_defconfig 与 adp_xc7k_ae350_clic_defconfig板级 KconfigKconfig.adp_xc7k 与 Kconfig.defconfig板级清单board.yml。其中board.yml明确了板卡标识adp_xc7k、SoC 为ae350并存在一个clic变体对应到构建时的板名即为adp_xc7k/ae350与adp_xc7k/ae350/clic。两块物理板卡分别是绿色 PCB 的 ADP-XC7K160 与红色 PCB 的 ADP-XC7K410其板载照片见 adp_xc7k160.jpg 与 adp_xc7k410.jpg。硬件资源一览ADP-XC7K AE350 平台集成了 14 个 32/64 位 60MHz RISC-V CPUAndeStar v5 架构、DSP、1GB RAM、Cache、SPI Flash、以太网控制器等外设主要硬件组件如下组件规格CPU14 核 32/64 位 60MHz AndeStar v5 RISC-V内存1GB 板载 SDRAM存储2MB SPI Flash其中 1MB 可用于 XIP通信接口UART、I2C、SPI、GPIO、PWM、DMA、10/100 Ethernet RJ45显示与外设LCD 模块连接器、MIC-in / Line-in / Line-outAC97 音频编解码器其他16KB I2C EEPROM、SD 存储卡插槽从设备树 adp_xc7k_ae350_common.dtsi 可以看到板载 SPI Flashmx25u16MACRONIX 型号jedec-id [c2 25 35]16MB 容量10MHz 最大时钟挂接在spi0上同时定义了 1MB 的storage分区用于存储板载 EEPROM 为 Atmel AT2416KB64 字节页挂接在i2c0地址0x50spi1以gpio0的 7 号引脚作为片选信号。板级 yamladp_xc7k_ae350.yaml声明支持的驱动子系统包括gpio、counter、i2c、spi、eeprom、watchdog、mbox、flash、dma、led、syscon、hwinfotesting.ignore_tags中排除了bluetooth该平台无蓝牙硬件。中断控制器PLIC 与 CLIC 两个变体从 soc/andestech/ae350/Kconfig 可知AE350 SoC 系列通过SOC_AE350_INTERRUPT_TYPE选择基础中断类型SOC_AE350_INTERRUPT_TYPE_PLIC默认选择RISCV_HAS_PLICSOC_AE350_INTERRUPT_TYPE_CLIC选择RISCV_HAS_CLIC并在向量模式下选择CLIC_SMCLICSHV_EXT同时启用CLIC_SMCLICCONFIG_EXT与LEGACY_CLIC_MEMORYMAP_ACCESS。板级 Kconfig.defconfig 在BOARD_ADP_XC7K_AE350_CLIC时默认选择 CLIC 中断类型。因此同一块硬件存在两套设备树与构建目标PLIC 版本使用andes_v5_ae350.dtsiCLIC 版本使用andes_v5_ae350_clic.dtsi。此外AE350 SoC 系列还提供SOC_ANDES_V5_IOCPI/O Coherence Port依赖 DCACHE选项用于处理 Cache 与 DMA 等外部非缓存主机之间的缓存一致性详见 soc/andestech/ae350/Kconfig。支持的 Zephyr 功能板卡的默认配置adp_xc7k_ae350_defconfig如下CONFIG_XIPn CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_SERIALy CONFIG_GPIOy CONFIG_PMP_GRANULARITY8几点说明CONFIG_XIPn默认从 RAM 执行后续烧录章节将分别演示 RAM 加载CONFIG_XIPn与 Flash 烧写CONFIG_XIPy两种运行方式CONFIG_PMP_GRANULARITY8RISC-V 物理内存保护PMP粒度配置为 8 字节这与 AE350 SoC 选择RISCV_PMP的 soc/andestech/ae350/Kconfig 配置相呼应SoC 级默认参数soc/andestech/ae350/Kconfig.defconfig.ae350SYS_CLOCK_TICKS_PER_SEC默认为 100在无 ICACHE 或 XIP 场景下、MAIN_STACK_SIZE为 2048、IDLE_STACK_SIZE为 1536、64 位模式下PRIVILEGED_STACK_SIZE与TEST_EXTRA_STACK_SIZE为 2048MP_MAX_NUM_CPUS默认 1支持范围 18。GPIO 与引脚映射ADP-XC7K AE350 平台有 1 个 GPIO 控制器提供 32 位 IO负责引脚输入/输出、上拉等功能。设备树中通过aliases将gpio-0、led0、led1、sw0等别名指向具体节点并把 7 段数码管段选注册为gpio-leds、把 7 个按键注册为gpio-keys均使用GPIO_ACTIVE_LOW有效电平。GPIO 控制器到板级引脚的完整映射如下按键Push ButtonsGPIO板级引脚GPIO.0SW1GPIO.1SW2GPIO.2SW3GPIO.3SW4GPIO.4SW5GPIO.5SW6GPIO.6SW77 段数码管 LED17-Segment LED1GPIO板级引脚GPIO.167SEG1.AGPIO.177SEG1.BGPIO.187SEG1.CGPIO.197SEG1.DGPIO.207SEG1.EGPIO.217SEG1.FGPIO.227SEG1.GGPIO.237SEG1.DP7 段数码管 LED27-Segment LED2GPIO板级引脚GPIO.247SEG2.AGPIO.257SEG2.BGPIO.267SEG2.CGPIO.277SEG2.DGPIO.287SEG2.EGPIO.297SEG2.FGPIO.307SEG2.GGPIO.317SEG2.DP通用 GPIO 引脚IDE_CON1 扩展连接器GPIO板级引脚GPIO.7IDE_CON1.4GPIO.8IDE_CON1.6GPIO.9IDE_CON1.8GPIO.10IDE_CON1.10GPIO.11IDE_CON1.11GPIO.12IDE_CON1.12GPIO.13IDE_CON1.13GPIO.14IDE_CON1.14GPIO.15IDE_CON1.15注意GPIO.7 同时被设备树用作spi1的片选信号cs-gpios gpio0 7 GPIO_ACTIVE_LOW实际使用通用 GPIO 时需要避免与该功能冲突。其他外设映射外设板级引脚SPI_1内部连接到 SPI FlashSPI_2_CSIDE_CON1.37SPI_2_MOSIIDE_CON1.36SPI_2_MISOIDE_CON1.38SPI_2_SCLKIDE_CON1.35I2C_SDAJ27.1I2C_SCLJ27.2系统时钟与串口系统时钟60MHz 内核时钟。串口平台提供 2 个 UART。Zephyr 控制台默认分配到 UART2默认设置为115200 8N1。在设备树 adp_xc7k_ae350_common.dtsi 中chosen节点将zephyr,console与zephyr,shell-uart都指向uart1对应文档所述的 UART2 控制台并配置clock-frequency 20000000、current-speed 115200同时zephyr,sram指向dramzephyr,flash与zephyr,flash-controller指向mx25u16。构建 Zephyr 应用使用标准的 Zephyr 构建方式即可。以 hello_world 示例为例west build -b adp_xc7k/ae350 samples/hello_world若使用 CLIC 中断变体则指定west build -b adp_xc7k/ae350/clic samples/hello_world构建产物位于build/zephyr/下其中zephyr.elf用于 RAM 加载/调试zephyr.bin用于 Flash 烧写。编程与调试环境准备要将 Zephyr 应用烧写进 Flash 或进行调试需要用 Andes ICEAICE将主机与 ADP-XC7K 板卡相连在主机上运行 Andes ICE 管理软件ICEman。AICE 与板卡、主机的连接方式参考下图连接 AICE 至 ADP-XC7K 板卡与主机烧录前还需从 Andes Development Kit 下载 ICEmanice.zip如果要用 XIP 模式CONFIG_XIPy还需要下载 Flash burnerflash.zip。启动 ICEman 服务调试与烧录程序前先启动 ICEman# 为 ICEman 添加可执行权限 chmod ax ./ICEman # 运行 ICEman 服务端 sudo ./ICEman -Z v5提示若希望以普通用户身份运行 ICEman 命令需要安装70-ndsusb-v1.rulesudev 规则文件通常放入/etc/udev/rules.d然后重新插拔 AICE USB 适配器使其生效。烧录程序方式一RAM 加载CONFIG_XIPn当CONFIG_XIPn时可将zephyr.elf直接加载到 RAM 并执行# 确认 ICEman 服务端已运行 # 将程序加载到 RAM 并执行 riscv64-zephyr-elf-gdb build/zephyr/zephyr.elf (gdb) target remote :1111 (gdb) monitor reset halt (gdb) load (gdb) quit方式二Flash 烧写CONFIG_XIPy当CONFIG_XIPy时需要将zephyr.bin烧入 Flash 并执行# 确认 ICEman 服务端已运行 # 将程序烧入 Flash 并执行 FLASH/bin/target_burn_frontend \ -P 4444 --unlock --verify --imagebuild/zephyr/zephyr.bin \ --algorithm-binFLASH/target_bin/target_SPI_v5_[32|64].bin注意假定 Flash burner 已下载到FLASH目录algorithm-bin文件的选择RV32 平台使用target_SPI_v5_32.binRV64 平台使用target_SPI_v5_64.bin。串口输出验证打开串口终端设置如下参数速率115200数据位8校验位None停止位1烧录或加载成功后终端应看到类似输出示例为 hello_world 应用***** Booting Zephyr OS v2.4.0 ***** Hello World! adp_xc7k使用 GDB 调试调试步骤如下同样依赖 ICEman 服务端处于运行状态# 确认 ICEman 服务端已运行 # 加载并调试程序 ./riscv64-zephyr-elf-gdb build/zephyr/zephyr.elf (gdb) target remote :1111 (gdb) monitor reset halt (gdb) load若CONFIG_XIPy请先按“烧录程序”一节的 Flash 烧写流程把程序写入 Flash然后使用上述 GDB 命令调试但不要执行load命令——因为程序已经存放在 Flash 中。总结ADP-XC7K AE350 为 AndesCore RISC-V 处理器与 AndeShape SoC 平台 IP 的验证提供了完整的 FPGA 硬件环境Zephyr 仓库为其提供了 PLIC/CLIC 两套设备树变体以及完善的外设驱动支持。通过本文所述的构建、ICEman 服务、RAM 加载与 XIP 烧写、GDB 调试流程你可以在这块 60MHz 的 32/64 位 RISC-V 平台上快速完成 Zephyr 应用的开发、烧录与调试闭环。进一步可参考仓库中的 Andes AE350 SoC 配置 与 板级设备树了解更底层的中断、Cache、PMP 与外设细节。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
