评估板实战)
Zephyr RTOS 开发指南SAM E54 Xplained Prosame54_xpro评估板实战【免费下载链接】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本指南以 Zephyr 官方仓库中 same54_xpro 板级文档 为核心结合 board 设备树、引脚复用配置 与 Kconfig 默认配置 等源码系统讲解这块基于 Microchip SAME54P20ACortex-M4F的评估板在 Zephyr 下的外设映射、时钟树、串口/SPI/I2C/PWM/以太网使用方法以及基于 EDBG 的烧录调试流程。读完本文你将能够直接为 same54_xpro 构建并烧录 Zephyr 应用并清楚每个外设对应的引脚与底层设备树节点。ATSAME54-XPRO-pinout.jpg板级概览SAM E54 Xplained Pro Evaluation Kit 是 Microchip 官方评估与原型开发套件面向基于 SAM E54 Cortex-M4F 处理器的微控制器。板载 Atmel Embedded DebuggerEDBG无需额外硬件即可提供完整调试接口。在 Zephyr 中该板的标识符为same54_xpro其官方定义位于 board.ymlboard: name: same54_xpro full_name: SAM E54 Xplained Pro Evaluation Kit vendor: atmel socs: - name: same54p20a从 same54_xpro.yaml 可以看到板级元数据架构为 armflash 1024 KiB、RAM 256 KiBtoolchain 支持zephyr与gnuarmemb并声明支持 adc、dac、dma、flash、gpio、i2c、netif:eth、ptp_clock、pwm、rtc、spi、uart、usb_device、usbd 等驱动。硬件资源清单板载核心硬件来源index.rstSAME54P20A ARM Cortex-M4F 处理器主频 120 MHz32.768 kHz 晶振低速时钟12 MHz 晶振高速时钟1024 KiB Flash、256 KiB RAM一颗黄色用户 LEDLED0一颗机械用户按键SW0一颗复位按键板载 USB EDBG 调试单元含串口控制台一颗 QTouch® PTC 触摸按键32 MiB QSPI FlashATECC508 CryptoAuthentication™ 安全芯片AT24MAC402 串行 EEPROM内置 EUI-48™ MAC 地址以太网RJ45 连接器内置磁隔离 KSZ8091RNA PHY10Base-T/100Base-TX IEEE 802.3 兼容以太网收发器USB 接口Host 与 DeviceSD/SDIO 卡连接器默认 Zephyr 外设映射引脚布局与 GPIO 控制器SAM E54 Xplained Pro 评估板拥有 4 个 GPIO 控制器Port A/B/C/D负责引脚复用pin muxing、输入输出、上拉等。Zephyr 下的默认引脚映射同时体现在板级文档与设备树源码中SERCOM2 USART TXPB24SERCOM2 USART RXPB25GPIO/PWM LED0PC18GPIO SW0PB31GMAC RMII REFCKPA14GMAC RMII TXENPA17GMAC RMII TXD0PA18GMAC RMII TXD1PA19GMAC RMII CRSDVPC20GMAC RMII RXD0PA13GMAC RMII RXD1PA12GMAC RMII RXERPA15GMAC MDIO MDCPC11GMAC MDIO MDIOPC12SERCOM4 SPI SCKPB26SERCOM4 SPI MOSIPB27SERCOM4 SPI MISOPB29SERCOM7 I2C SDAPD08SERCOM7 I2C SCLPD09USB DPPA25USB DMPA24上述复用在 same54_xpro-pinctrl.dtsi 中逐一落地例如串口引脚定义为sercom2_uart_default: sercom2_uart_default { group1 { pinmux PB25D_SERCOM2_PAD0, PB24D_SERCOM2_PAD1; }; };以太网 RMII 与 MDIO 引脚则分别组合在gmac_rmii与mdio_default两组 pinmux 中与文档中的 GMAC 引脚表一一对应。设备树中的板级定义same54_xpro.dts 是板级设备树的入口model 为 SAM E54 Xplained Procompatible 为same54,xpro, atmel,same54p20a, atmel,same54其中chosen节点将控制台、SRAM 与 Flash 绑定到具体外设chosen { zephyr,console sercom2; zephyr,shell-uart sercom2; zephyr,sram sram0; zephyr,flash flash0; };LED、PWM LED 与按键的别名及设备节点定义为aliases { led0 led0; pwm-led0 pwm_led0; sw0 button0; i2c-0 sercom7; };其中 LED0 位于 PC18GPIO_ACTIVE_LOW黄色 LED按键 SW0 位于 PB31GPIO_PULL_UP | GPIO_ACTIVE_LOW并映射为INPUT_KEY_0输入事件码PWM LED 由 TCC0 通道 2 驱动周期PWM_MSEC(20)。系统时钟SAME54 MCU 被配置为使用 32.768 kHz 外部晶振XOSC32K配合片上 PLL 生成系统时钟。板级文档描述系统时钟为 48 MHz而设备树中将 CPU 时钟频率声明为 120 MHzcpu0 { clock-frequency 120000000; };默认配置 same54_xpro_defconfig 通过两个 Kconfig 选项启用外部 32 kHz 晶振并将其作为主时钟源CONFIG_SOC_ATMEL_SAMD5X_XOSC32Ky CONFIG_SOC_ATMEL_SAMD5X_XOSC32K_AS_MAINy这两个选项的定义位于 soc/atmel/sam0/common/Kconfig.samd5xSOC_ATMEL_SAMD5X_XOSC32K在启动时使能外部 32 kHz 晶振SOC_ATMEL_SAMD5X_XOSC32K_AS_MAIN将主时钟源CPU 时钟、AHB 时钟的根选定为 XOSC32K。同文件还提供了SOC_ATMEL_SAMD5X_XOSC32K_STARTUP启动时间范围 0x00x6、SOC_ATMEL_SAMD5X_XOSC32K_GAIN_HS高速增益等可调项以及 RTC 使用的 OSC32K 预分频配置SOC_ATMEL_SAMD5X_OSC32K_PRESCALER范围 1512RTC 计数器模式默认 32以提供 1024 Hz 参考时钟。RTC 节点在设备树中被配置为计数器时钟模式rtc { status okay; counter-mode clock; prescaler 1024; atmel,assigned-clocks osc32kctrl 4; };串口控制台Serial PortSAME54 MCU 提供 8 个基于 SERCOM 的 USART本 BSP 中配置了其中一个作为 Zephyr 控制台SERCOM2 是默认 Zephyr 控制台参数为115200 8n1并连接到板载 Atmel Embedded DebuggerEDBG即通过 USB 枚举出的串口设备访问。设备树中 SERCOM2 配置为 UARTsercom2 { status okay; compatible atmel,sam0-uart; current-speed 115200; rxpo 1; txpo 0; #address-cells 1; #size-cells 0; pinctrl-0 sercom2_uart_default; pinctrl-names default; };默认配置中也显式启用了串口控制台相关选项CONFIG_CONSOLEy CONFIG_SERIALy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENyPWMSAME54 MCU 提供 5 个基于 TCC 的 PWM 单元每个最多 6 路输出周期位宽为 24 位或 16 位。若使能CONFIG_PWM_SAM0_TCC则 LED0 由 TCC0 驱动替代 GPIO 驱动方式。设备树中 TCC0 配置为 PWMtcc0 { status okay; compatible atmel,sam0-tcc-pwm; /* Gives a maximum period of 1.1s for 120MHz main clock */ prescaler 8; #pwm-cells 2; pinctrl-0 pwm_default; pinctrl-names default; };引脚复用pwm_default将 PC18 复用为PC18F_TCC0_WO2即 TCC0 通道 2 输出prescaler 8配合 120 MHz 主时钟可提供最大约 1.1 秒的 PWM 周期设备树注释原文。SPI 端口SAME54 MCU 提供 8 个基于 SERCOM 的 SPI。本板上 SERCOM4 被配置为默认 SPI 接口引脚为 SCKPB26、MOSIPB27、MISOPB29sercom4 { status okay; compatible atmel,sam0-spi; dipo 3; dopo 0; #address-cells 1; #size-cells 0; pinctrl-0 sercom4_spi_default; pinctrl-names default; };对应的引脚复用定义sercom4_spi_default: sercom4_spi_default { group1 { pinmux PB26D_SERCOM4_PAD1, PB27D_SERCOM4_PAD0, PB29D_SERCOM4_PAD3; }; };I2C 端口SAME54 MCU 提供 8 个基于 SERCOM 的 I2C。在 SAM E54 Xplained Pro 上SERCOM7 连接了 AT24MAC402 EEPROM 和 ATECC508A Crypto Authentication 安全芯片设备树中将 SERCOM7 配置为 I2CFast 模式400 kHzsercom7 { status okay; compatible atmel,sam0-i2c; clock-frequency I2C_BITRATE_FAST; #address-cells 1; #size-cells 0; pinctrl-0 sercom7_i2c_default; pinctrl-names default; eeprom: eeprom5e { compatible atmel,at24, atmel,24mac402; reg 0x5e; size 256; pagesize 16; address-width 8; timeout 5; nvmem-layout { compatible fixed-layout; #address-cells 1; #size-cells 1; mac_address: mac-address9a { reg 0x9a 6; #nvmem-cell-cells 0; }; }; }; };值得注意AT24MAC402 的 EUI-48 MAC 地址被组织为 nvmem cell地址 0x9A、6 字节供以太网控制器读取。这一点在 Kconfig.defconfig 中有对应逻辑——当启用ETH_SAM_GMAC时若开启 NVMEM 则自动默认使能EEPROMif ETH_SAM_GMAC config EEPROM default y if NVMEM endif # ETH_SAM_GMAC以太网GMAC KSZ8091RNA板载以太网为 10Base-T/100Base-TX 接口物理层使用 KSZ8091RNA PHYRMII 接口。设备树中gmac与mdio节点均被使能PHY 通过 MDIO 总线挂接在地址 0并且 GMAC 的 MAC 地址从 AT24MAC402 EEPROM 的 nvmem cell 读取gmac { status okay; pinctrl-0 gmac_rmii; pinctrl-names default; nvmem-cells mac_address; nvmem-cell-names mac-address; phy-handle phy; }; mdio { status okay; pinctrl-0 mdio_default; pinctrl-names default; phy: ethernet-phy0 { compatible ethernet-phy; status okay; reg 0; }; };RMII 与 MDIO 的引脚复用对应前文引脚表分别定义在gmac_rmii与mdio_default两个 pinmux 组中。板级声明也标记了netif:eth与ptp_clock支持说明以太网驱动与 PTP 时钟能力可用。ADC / DAC / USB除核心外设外设备树还使能了 ADC0、DAC0 与 USB 设备控制器adc0直接置为status okay。dac0使用内部参考reference intref配置两个输出通道channel0/channel1均为OSR_1过采样、CC1M电流控制引脚复用为PA2B_DAC_VOUT0与PA5B_DAC_VOUT1。USBzephyr_udc0: usb0被使能DP/DM 复用为PA25H_USB_DP、PA24H_USB_DM对应文档中的 USB DPPA25、USB DMPA24。Flash 存储分区设备树在内部 Flash 末尾预留了 16 KiB 存储分区地址 0xFC000大小 0x4000供 FCB/LittleFS/NVS 等存储子系统在启用时使用flash0 { partitions { ... storage_partition: partitionfc000 { compatible zephyr,mapped-partition; label storage; reg 0x000fc000 0x00004000; }; }; };编程与调试Programming and DebuggingSAM E54 Xplained Pro 板载 Atmel Embedded DebuggerEDBG为 SAME54 芯片提供调试接口并受 OpenOCD 支持。board.cmake 引入了通用 OpenOCD runner 规则include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)板级 OpenOCD 配置 support/openocd.cfg 内容如下source [find interface/cmsis-dap.cfg] transport select swd # chip name set CHIPNAME atsame54p20a set ENDIAN little set CPUTAPID 0x0bc11477 source [find target/atsame5x.cfg] reset_config none cortex_m reset_config sysresetreq $_TARGETNAME configure -event gdb-attach { echo Debugger attaching: halting execution reset halt gdb_breakpoint_override hard } $_TARGETNAME configure -event gdb-detach { echo Debugger detaching: resuming execution resume }即通过 CMSIS-DAP 接口EDBG 内置、SWD 传输连接 ATSAME54P20A并在 GDB attach/detach 时自动 halt/resume 目标实现开箱即用的调试体验。烧录与运行 hello_world构建使用west构建 Zephyr 内核与hello_world示例应用--board same54_xprowest build -b same54_xpro samples/hello_world连接串口将 SAM E54 Xplained Pro 通过 USB 调试口连接到主机。在 Linux 下串口设备通常为/dev/ttyACM0可用 minicom 监听输出$ minicom -D /dev/ttyACM0 -o-o选项告诉 minicom 不发送 modem 初始化字符串。连接参数须配置为波特率Speed115200数据位Data8 bits校验ParityNone停止位Stop bits1烧录构建完成后执行 flash 目标烧录镜像west flash等价于west build -b same54_xpro samples/hello_world -t flash。烧录完成后在终端中应能看到输出Hello World! same54_xpro小结通过本文你可以完整掌握 Zephyr 下 same54_xpro 板卡的外设全景SERCOM2 串口控制台115200 8n1、SERCOM4 SPI、SERCOM7 I2C挂载 AT24MAC402 ATECC508A、TCC0 PWM驱动 LED0、GMAC 以太网KSZ8091RNA PHY EEPROM 中的 MAC 地址、ADC/DAC/USB 以及存储分区布局同时了解了基于 XOSC32K 的时钟树方案与 EDBG/OpenOCD 的烧录调试链路。若需进一步探索可深入阅读板级文档 doc/index.rst、板级设备树、引脚复用配置 与 SAM D5x/E5x 系列数据手册对应章节并结合 samples/hello_world 动手验证。【免费下载链接】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),仅供参考