ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Zephyr 在 Armfly STM32H743XIH6 开发板上的移植支持与实战指南

Zephyr 在 Armfly STM32H743XIH6 开发板上的移植支持与实战指南 Zephyr 在 Armfly STM32H743XIH6 开发板上的移植支持与实战指南【免费下载链接】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 RTOS 对 Armfly STM32H743XIH6 开发板的官方板级支持展开系统讲解该板卡在 boards/armfly/stm32h743xih6/doc/index.rst 中定义的硬件资源、Zephyr 设备树DTS配置、引脚映射、时钟方案以及构建/烧录/调试方法。读完本文你将掌握如何基于 Zephyr 在 STM32H743XIH6 上启用串口控制台、外部 SDRAM、LTDC 显示、GT911 触摸、SPI/QSPI 存储、MicroSD 与双以太网等关键外设并理解板级移植背后的源码实现。板卡概述与硬件资源Armfly STM32H743XIH6 是安富莱Armfly推出的一款基于意法半导体 STM32H743XIH6 微控制器TFBGA240 封装的开发板属于 Armfly 系列在 Zephyr 中的首个板级移植。整板硬件资源相当丰富官方文档列举如下主控STM32H743XIH6ARM Cortex-M7 内核带 FPU最高 480 MHz2 MB 内部 Flash、1 MB 内部 SRAM存储32 MB SDRAM32 位 FMC 总线、32 MB QSPI Flash支持 XIP 执行、128 MB NAND Flash8 位 FMC 总线、16 KB 串行 EEPROM、8 MB SPI NOR Flash显示与触摸RGB888 液晶接口带 I2C 触摸与可调背光双以太网一路使用 STM32 内部 MAC DM9162 PHY另一路为挂在 16 位 FMC 总线上的 DM9000AEP 控制器USB1 路全速 Host 口、1 路全速 Device 口工业接口RS-485 1 路、RS-232 1 路DB9 与 TTL UART 排针、CAN 2 路、MicroSD 卡座 1 个、SDIO 扩展座含两路 TTL 串口音频WM8978 全双工 I2S 音频编解码器板载喇叭与麦克风Si4704 FM 收音机人机交互PS/2 键盘/鼠标接口、红外收发蜂鸣器与红外发射共用、MPU6050 运动传感器、BH1750 环境光传感器、BMP180 气压传感器、3 个用户按键与 1 个五向摇杆、摄像头接口扩展能力ADC/DAC 扩展接口兼容 Armfly V5/V6 扩展生态的 SPI、TTL UART、I2C 排针可挂接 AD7705/TM7705 双通道 16 位 ADC、VS1053B 音频、GPS/GPRS、ESP8266 UART Wi-Fi、8 位并口 OLED、AD760616 位 8 通道 ADC、ADS125624 位 8 通道 ADC、DAC8501/DAC8563 双通道 DAC、AD9833 DDS 波形发生器等模块另有经快速 FMC 32 位锁存接口扩展出的 5 V / 3.3 V 扩展输出。需要特别说明的是文档明确标注当前 Zephyr 移植为初始支持initial support整板上许多外设尚未在上游板级描述中建模或验证使用时以文档列出的支持范围为准。板级文件布局Armfly 板卡目录结构boards/armfly遵循 Zephyr 标准板卡布局其入口索引 boards/armfly/index.rst 通过 toctree 递归收录该厂商下所有板卡核心实现集中在stm32h743xih6子目录文件作用armfly_stm32h743xih6.dts板级设备树定义全部外设节点、引脚复用与使能状态armfly_stm32h743xih6.yaml板卡元数据identifier: armfly_stm32h743xih6、架构 arm、toolchainzephyr/gnuarmemb、ram: 512KB、flash: 2048KB以及 supported 特性列表armfly_stm32h743xih6_defconfig板级默认 Kconfig 配置Kconfig.armfly_stm32h743xih6板卡 Kconfig 符号select SOC_STM32H743XXboard.cmake烧录/调试 runner 参数与包含关系board.yml板卡元数据含socs: stm32h743xxsupport/openocd.cfgOpenOCD 调试脚本doc/index.rst板卡用户文档yaml 文件声明的supported特性包括ptp_clock、uart、gpio、input、counter、i2c、spi、flash、sdhc、pwm、rtc、display、memc、netif:eth与文档中的支持范围一一对应。已支持的 Zephyr 功能依据板卡文档与 armfly_stm32h743xih6.dts 的实际配置当前板级定义使能或描述了以下硬件模块STM32H743XIH6 SoC 核心支持内部 Flash 与 SRAMFMC 上的外部 SDRAMsdram1映射在0xc000000032 MBUSART1 控制台GPIO 按键3 个用户按键 五向摇杆共 8 个输入事件可选板私有 FMC 锁存 GPIO 控制器用于板载 LEDI2C1 上的 GT911 触摸、MPU6050、BH1750、BMP180、AT24C128 EEPROMSPI3 上的 SPI NOR FlashQUADSPI 上的 QSPI NOR FlashSDMMC1 的 MicroSD 卡座使用外部 SDRAM 作为帧缓冲的 LTDC 显示控制器基于 PWM 的 LCD 背光控制TIM1 CH1 / PA8使用低速时钟源的 RTC带 MDIO 与外部 PHY 的以太网 MAC。板级默认配置解读armfly_stm32h743xih6_defconfig 体现了该板的安全基线配置开启CONFIG_ARM_MPUMPU 内存保护与CONFIG_HW_STACK_PROTECTION硬件栈保护并开启CONFIG_SERIAL、CONFIG_CONSOLE、CONFIG_UART_CONSOLE与CONFIG_GPIO。也就是说hello_world 一类样例开箱即可通过串口输出同时从chosen节点可见zephyr,console与zephyr,shell-uart都指向usart1。默认引脚映射板卡文档给出了默认的 Zephyr 外设映射以下为完整清单功能引脚USART1 TX/RXPA9 / PA10I2C1 SCL/SDAPB6 / PB9GT911 中断PH7QUADSPI CLK/NCS/IO0/IO1/IO2/IO3PF10 / PG6 / PF8 / PF9 / PF7 / PF6SPI3 SCK/MISO/MOSIPB3 / PB4 / PB5SPI3 CSPD13SDMMC1 D0-D3/CK/CMDPC8 / PC9 / PC10 / PC11 / PC12 / PD2SDMMC1 卡检测PG12PWM 背光TIM1 CH1PA8以太网 RMII REF_CLK/CRS_DV/TX_EN/TXD0/TXD1/RXD0/RXD1PA1 / PA7 / PG11 / PG13 / PB13 / PC4 / PC5以太网 MDC/MDIOPC1 / PA2这些映射均可在 DTS 的 pinctrl 节点中核实例如usart1 { pinctrl-0 usart1_tx_pa9 usart1_rx_pa10; ... }、spi3 { cs-gpios gpiod 13 GPIO_ACTIVE_LOW; }等。按键与摇杆在 DTS 中通过gpio-keys节点建模并映射为 Zephyr 输入事件码3 个按键button0/button1/button2分别接 PI8、PC13、PH4低电平有效产生INPUT_KEY_0/1/2五向摇杆则映射INPUT_KEY_UP/DOWN/LEFT/RIGHT/ENTER接 PG2、PB0、PG3、GI11、PG7。aliases中提供sw0~sw7方便应用通过别名引用。系统时钟配置板卡文档说明板上装有 25 MHz 高速外部晶振HSE和 32.768 kHz 低速外部晶振LSE供 RTC 使用当前移植使用 DTS 中描述的 RCC 与 PLL 配置产生系统与外设时钟。对照 armfly_stm32h743xih6.dts 的时钟节点可推导出实际时钟树PLL主 PLLdiv-m5, mul-n160, div-p2基于 25 MHz HSE → VCO 25/5×160 800 MHzSYSCLK 800/2 400 MHzRCC 节点中clock-frequency DT_FREQ_M(400)与之吻合并设置了d1cpre、hpre、d1ppre、d2ppre1/2、d3ppre等总线分频PLL2div-m5, mul-n96, div-r10→ PLL2_R 480/10 48 MHz作为 SDMMC1 的时钟源DTS 中clocks rcc STM32_SRC_PLL2_R SDMMC_SEL(1)PLL3div-m5, mul-n48, div-r10→ PLL3_R 240/10 24 MHz作为 LTDC 像素时钟源clocks rcc STM32_SRC_PLL3_R NO_SELclk_lsi、clk_hsi48与clk_hse均置为okaypwr使用ldo供电模式RTC 时钟源选择RTC_SEL(2)LSI。以上倍频/分频推导基于 DTS 中 PLL 参数计算得出可用于理解外设时钟来源若需精确时钟树建议结合 STM32H743 参考手册核对。显示与触摸板卡 DTS 使能了 STM32 LTDC 控制器形成完整的 RGB 显示通路帧缓冲通过ext-sdram sdram1将外部 SDRAMzephyr,memory-region SDRAM1reg 0xc0000000 DT_SIZE_M(32)指定为帧缓冲后备存储显示参数width 800、height 480、pixel-format PANEL_PIXEL_FORMAT_RGB_888并给出完整display-timingshsync-len96、hback/hfront-porch10、vsync-len2、vback/vfront-porch10全部低有效触摸GT911 触摸控制器挂在 I2C1 上地址0x5d备用地址0x14中断脚 PH7 带内部上拉通过chosen的zephyr,touch gt911选为板级触摸设备背光pwm-leds节点将 TIM1 CH1PA8用作背光 PWM周期 50 µs即 20 kHz、极性正常所有 LTDC 引脚在 DTS 末尾被设置为slew-rate very-high-speed保证 RGB888 高速信号质量。文档特别提示LVGL 的 pointer 伪设备刻意不包含在基础板级 DTS 中需要 LVGL 的应用应在自己的 overlay 中自行添加。此外LTDC 时钟由 PLL3_R24 MHz驱动若需要更高的像素时钟可调整 PLL3 参数。I2C 设备一览板卡 DTS 在i2c1时钟I2C_BITRATE_FAST即 400 kHz下描述了 5 个板载 I2C 设备文档给出的地址清单与 DTS 完全一致设备兼容字符串地址关键属性GT911 触摸goodix,gt9110x5dirq-gpiosPH7alt-addr 0x14MPU6050 运动传感器invensense,mpu60500x68accel-fs2、gyro-fs250、smplrt-div249BH1750 环境光传感器rohm,bh17500x23resolution1、mtreg69BMP180 气压传感器bosch,bmp1800x77osr-press3AT24C128 EEPROMatmel,at240x50size16 KB、pagesize64、address-width16、timeout5aliases中eeprom-0 eeprom0应用可通过DT_ALIAS便捷访问 EEPROM。存储与网络外设除上述外设外DTS 还配置了SPI NOR FlashSPI3jedec,spi-norjedec-id [ef 40 17]W25Q648 MBspi-max-frequency 40 MHz支持深度掉电has-dpdt-enter-dpd/t-exit-dpd 3500 µs并预定义了一个 8 MB 的storage固定分区QSPI NOR FlashQUADSPIst,stm32-qspi-norsize 256 Mbits32 MBqspi-max-frequency 100 MHz4 线宽写命令PP_1_1_4MicroSDSDMMC14 线模式 卡检测 PG12低有效disk-name SD时钟源 PLL2_R 48 MHz以太网STM32 内部 MAC 以 RMII 模式连接外部 PHYethernet-phy1地址 1MDIO 接口在 PC1/PA2板载 DM9162 PHY第二条 DM9000AEP 以太网通路挂于 FMC 16 位总线属于整板硬件但尚未在上游建模FMC同时初始化 SDRAM 控制器含st,sdram-control与st,sdram-timing时序参数、刷新率等与 NOR/SRAM Bank1 控制器st,stm32-fmc-nor-psram32 位数据总线。串口与调试控制台默认 Zephyr 控制台分配在 USART1参数为115200 8N1DTS 中current-speed 115200。板卡 yaml 声明ram: 512KB、flash: 2048KB对应 STM32H743 的 1 MB SRAM 与 2 MB Flash 中 Zephyr 可用部分以实际链接结果为准。构建、烧录与调试板卡文档给出了完整的构建与烧录方法。按 Zephyr 标准流程构建并烧录hello_world样例west build -b armfly_stm32h743xih6 samples/hello_world west flash板卡通过 board.cmake 提供STM32CubeProgrammer默认 runner、OpenOCD、J-Link、pyOCD四种烧录/调试途径各自参数如下stm32cubeprogrammer--portswd、--reset-modehw默认 runneropenocd--target-handle_CHIPNAME.cpu0jlink--deviceSTM32H743XI、--speed4000pyocd--targetstm32h743xx。非默认 runner 可显式指定west flash --runner openocd west flash --runner jlink west flash --runner pyocd调试会话同样按标准方式启动west build -b armfly_stm32h743xih6 samples/hello_world west debugOpenOCD 场景下可参考 support/openocd.cfg该脚本使用 ST-Link DAP 直连 SWD 传输dapdirect_swd加载target/stm32h7x.cfg启用低功耗与看门狗停止处理ENABLE_LOW_POWER 1、STOP_WATCHDOG 1采用connect_assert_srst复位策略与CONNECT_UNDER_RESET 1并在 GDB attach/detach 时自动暂停/恢复执行。由于使用connect_assert_srstOpenOCD 初始化后需要一次reset halt脚本已通过重命名init过程自动完成。板载 LED 的启用方式注意事项板卡文档专门提示板载 LED 通过FMC Bank1 上的外部锁存器连接默认处于禁用状态原因在于访问锁存器前必须先由应用使能 FMC 控制器。使用这些 LED 的应用需要在应用配置中启用 MEMC 支持CONFIG_MEMCy使 FMC 控制器工作在应用 overlay 中启用锁存 GPIO 节点。从 DTS 可见对应节点设计fmc_extio以zephyr,memory-region描述 FMC 外设地址空间0x60000000带DT_MEM_ARM(ATTR_MPU_IO)属性latch_gpio为gpio-mmio-latch控制器映射在0x6000100032 个输出initial-output 0x00000f14status disabledleds节点通过latch_gpio的 8~11 引脚定义 LED0~LED3低电平点亮。默认禁用正是为了避免 FMC 未初始化时访问锁存器。换言之如需点亮 LED需在应用 overlay 中启用latch_gpio与leds节点并配置CONFIG_MEMCy。总结Armfly STM32H743XIH6 是 Zephyr 对安富莱平台的首个板级移植覆盖了从核心 CPU、外部 SDRAM、显示触摸到存储网络的一整套主流外设。它以标准 Zephyr 板卡结构DTS defconfig board.cmake交付构建烧录体验与其它 STM32H7 板卡一致。需要留意的是当前移植处于初始支持阶段整板硬件NAND、DM9000AEP 第二以太网、音频、FM、红外、PS/2、摄像头等尚未在上游建模二次开发时可参考 boards/armfly/stm32h743xih6/armfly_stm32h743xih6.dts 的既有模式通过应用 overlay 逐步补齐所需外设。【免费下载链接】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),仅供参考
返回列表