ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Zephyr RTOS 中的 ASPEED AST1030-EVB 板卡支持:硬件资源、构建配置与调试实战

Zephyr RTOS 中的 ASPEED AST1030-EVB 板卡支持:硬件资源、构建配置与调试实战 Zephyr RTOS 中的 ASPEED AST1030-EVB 板卡支持硬件资源、构建配置与调试实战【免费下载链接】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/zephyrASPEED信骅科技的 AST10x0 系列 SoC 主要面向服务器 BMC基板管理控制器场景而 Zephyr 在 boards/aspeed/index.rst 下为其提供了完整的板卡支持目录其中唯一官方评估板为AST1030-EVB。本文以该板卡的官方文档 ast1030_evb/doc/index.rst 为核心结合仓库中的设备树、默认配置与 SoC 底层实现完整讲解如何基于ast1030_evb目标构建、烧写并调试 Zephyr 应用读完你将掌握该板卡的硬件资源布局、系统时钟与串口配置以及 JTAG 调试和 SPI Flash 烧写的完整流程。板卡概述AST1030-EVB 是什么AST1030-EVB 是用于评估 AspeedAST10x0 系列 SoC的开发平台需要配合零件号 AST1030 使用。在仓库中它的板级定义位于 boards/aspeed/ast1030_evb/ast1030_evb.yaml关键声明如下identifier: ast1030_evb name: Aspeed AST1030-EVB type: mcu arch: arm toolchain: - zephyr ram: 768 flash: 1024 supported: - serial vendor: aspeed从这份板卡元数据可以确认它是一块ARM 架构的 MCU 类板卡片上 RAM 为 768 KB、片上 Flash 为 1024 KB1 MB由 Zephyr 官方工具链支持板级标识符BOARD名为ast1030_evb。板级 Kconfig 入口 Kconfig.ast1030_evb 将其关联到SOC_AST1030config BOARD_AST1030_EVB select SOC_AST1030而 SoC 家族关系在 soc/aspeed/soc.yml 中定义为aspeed家族 →ast10x0系列 →ast1030SoC。硬件资源一览AST1030 SoC 集成了一颗ARM Cortex-M4F 处理器并围绕 BMC 控制场景提供了丰富的内外设接口。官方文档列出的核心硬件特性包括ARM Cortex-M4F 处理器带浮点单元768 KB 片上 SRAM用于指令与数据存储1 MB 片上 Flash用于 Boot ROM 与数据存储SPI 接口UART 接口I2C / I3C 接口FAN PWM 接口风扇调速ADC 接口JTAG 接口USB 接口LPC 接口eSPI 接口这些接口在 SoC 设备树 dts/arm/aspeed/ast10x0.dtsi 中也有对应体现CPU 节点声明为compatible arm,cortex-m4fsram0位于memory0SoC 外设挂载在syscon7e6e2000含aspeed,ast10x0-clock时钟控制器与aspeed,ast10x0-reset复位控制器之下UART5 则位于serial7e784000。eSPI、LPC、PWM、ADC 等 BMC 关键外设接口正是 AST10x0 系列区别于普通 MCU 的差异化能力。说明关于板卡的具体引脚连接官方文档指出原理图由 Aspeed 提供仓库中未附带连接定义请以板卡原理图为准。支持的 Zephyr 功能与默认配置从板级默认配置文件 ast1030_evb_defconfig 可以完整还原该板在 Zephyr 中默认启用的功能集合CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC200000000 CONFIG_MAIN_STACK_SIZE4096 CONFIG_FLASH_SIZE0 CONFIG_FLASH_BASE_ADDRESS0x0 CONFIG_XIPn CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_SERIALy CONFIG_HEAP_MEM_POOL_SIZE50000 CONFIG_CLOCK_CONTROLy CONFIG_RESETy逐项解读这些配置的实际作用CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC200000000声明系统硬件时钟频率为 200 MHz与官方文档中外部 25 MHz 晶振经片内 PLL 倍频生成 200 MHz 系统时钟的描述完全一致CONFIG_MAIN_STACK_SIZE4096主线程栈大小 4 KBCONFIG_FLASH_SIZE0/CONFIG_FLASH_BASE_ADDRESS0x0/CONFIG_XIPn该板默认不启用 XIP片上执行程序从 SRAM 运行Flash 配置置零CONFIG_CONSOLEy/CONFIG_UART_CONSOLEy/CONFIG_SERIALy启用串口控制台与串口驱动对应 UART5 作为日志输出CONFIG_HEAP_MEM_POOL_SIZE50000内核堆内存池 50 KBCONFIG_CLOCK_CONTROLy/CONFIG_RESETy启用时钟控制与复位控制器驱动。配合 SoC 系列 Kconfig soc/aspeed/ast10x0/KconfigAST10x0 系列还会自动选择CPU_CORTEX_M4、CPU_HAS_FPU、CPU_HAS_ARM_MPU、CACHE/CACHE_ASPEED含指令与数据缓存以及SYSCON等能力这些均为 Zephyr 针对该 SoC 的默认能力开关。系统时钟25 MHz 晶振 → 200 MHz 系统时钟AST1030 SoC 使用外部25 MHz 时钟输入通过片内 PLL 生成200 MHz 系统时钟。这一数值在多个层面得到印证板级 defconfig 中CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC200000000设备树 ast1030_evb.dts 中 UART5 节点显式覆盖clock-frequency 1846153SoC 设备树 dts/arm/aspeed/ast10x0.dtsi 中 UART5 挂接clocks sysclk ASPEED_CLK_UART5时钟源由aspeed,ast10x0-clock驱动提供。板级设备树 ast1030_evb.dts 完整内容如下/dts-v1/; #include aspeed/ast10x0.dtsi / { model Aspeed AST1030 Evaluation board; compatible aspeed,ast1030-evb; chosen { zephyr,console uart5; zephyr,shell-uart uart5; zephyr,sram sram0; }; }; sram0 { reg 0 DT_SIZE_K(448), 0x70000 DT_SIZE_K(320); }; uart5 { clock-frequency 1846153; current-speed 115200; status okay; };值得注意的一个实现细节sram0的reg定义了两段地址——第一段0x0起始的 448 KB 作为缓存型 SRAM第二段0x70000起始的 320 KB 作为非缓存 SRAM。非缓存区域的尺寸与基址会被 SoC 层自动提取为SRAM_NC_SIZE与SRAM_NC_BASE_ADDRESS见 soc/aspeed/ast10x0/Kconfig.defconfig.ast1030并在soc_reset_hook()中清零对应的.bss_nc段其用途是提供给 DMA 等需要一致性内存的外设使用。串口UART5 作为默认日志与控制台官方文档明确UART5 被配置为串口日志输出默认串口参数为 115200 8N1115200 波特率、8 数据位、无校验、1 停止位。在板级设备树中可以看到完整的接线chosen节点的zephyr,console与zephyr,shell-uart均指向uart5即内核控制台与 Shell 复用同一串口UART5 节点启用status okay并设置current-speed 115200UART5 的 SoC 层驱动为通用 NS16550 兼容串口compatible ns16550见 dts/arm/aspeed/ast10x0.dtsireg-shift 2表示寄存器按 32 位宽度寻址clock-frequency 1846153覆盖了 UART 参考时钟频率用于波特率计算。因此将开发板 UART5 连接到宿主机串口如 USB 转 TTL 适配器以115200-8-N-1打开终端即可看到 Zephyr 的启动日志并进入 Shell。构建、烧写与调试构建应用与所有 Zephyr 板卡一致构建时通过-b指定板卡名ast1030_evb即可west build -b ast1030_evb samples/hello_world构建产物默认输出到build/目录。由于板级配置默认CONFIG_XIPn应用映像面向 SRAM 运行布局链接相关链接脚本位于 soc/aspeed/ast10x0 目录包括linker.ld、nocache.ld、sboot.ld。烧写Flashing构建完成后官方推荐使用SF100 SPI Flash 编程器将映像烧写到板载 SPI Flash具体烧写步骤请参考 Aspeed 提供的 Zephyr SDK 用户指南Aspeed Zephyr SDK User Guide随 Aspeed 官方 Zephyr SDK 发布提供。需要特别说明的一点AST1030 的启动流程依赖Boot ROM 读取安全启动Secure Boot头来获取映像大小。SoC 初始化代码 soc/aspeed/ast10x0/soc.c 中定义了sb_header结构体含key_location、enc_img_addr、img_size、sign_location、patch_location、checksum等字段并将其实例放置在.sboot段通过img_size (uint32_t)__bss_start在链接期写入映像大小。配合 tools/gen_uart_booting_image.py 等工具可以理解 AST1030 从 Boot ROM 引导 Zephyr 映像的完整链路。调试Debugging官方文档给出的调试方式为通过 JTAG或 SWD接口连接 J-Link 调试器使用单条物理连接即可完成调试。板卡出厂自带 JTAG 端口这是板上最直接的调试入口。从源码层面看soc_reset_hook()soc/aspeed/ast10x0/soc.c在复位后还会显式操作 SCU 的JTAG_PINMUX_REG寄存器来使能 JTAG 引脚复用jtag_pinmux | (0x1f 25)确保复位后 JTAG 调试通路可用。同一函数还会启用指令缓存并清除非缓存 BSS 段是理解该板启动调试行为的底层依据。此外soc.c中的aspeed_print_sysrst_info()会在启动时解析复位日志寄存器打印RST: Power On或具体的 WDT 复位来源SOC/FULL/ARM/SW这对排查板卡异常复位非常有价值。小结AST1030-EVB 是 Zephyr 支持 ASPEED AST10x0 系列 SoC 的官方评估平台其核心技术要点可总结为维度关键事实处理器ARM Cortex-M4F存储768 KB SRAM448 KB 缓存型 320 KB 非缓存型、1 MB 片上 Flash系统时钟外部 25 MHz 晶振 → PLL 倍频至 200 MHz串口UART5115200 8N1兼作控制台与 Shell运行模式默认非 XIP从 SRAM 运行烧写SF100 SPI Flash 编程器 Secure Boot 头调试JTAG/SWD J-Link基于本文内容你可以直接在仓库中继续深入板级设备树 ast1030_evb.dts、默认配置 ast1030_evb_defconfig、SoC 初始化 soc.c 以及 SoC 设备树 ast10x0.dtsi即可完整掌握 AST1030 在 Zephyr 中的移植与使用细节。【免费下载链接】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),仅供参考
返回列表