
Zephyr RTOS 中 Gaisler GR716-MINI 开发板支持详解构建、GRMON 加载运行与 TSIM3 仿真【免费下载链接】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 项目对 Gaisler GR716-MINI 开发板的支持展开覆盖该 SPARC V8 架构LEON3/GR716开发板的硬件构成、设备树定义、内存布局与链接策略以及通过 GRMON 调试监视器在真实硬件上加载运行 Zephyr 镜像、通过 TSIM3 模拟器复现同一应用镜像的完整流程。读完后你可以独立为该板型构建 Zephyr 应用理解其控制台 UART 的默认配置并掌握“同一 ELF 镜像上板与仿真双通道”的验证方法。1. 硬件概况GR716-MINI 是 Gaisler 提供的 GR716 微控制器开发板根据板级文档 boards/gaisler/gr716a_mini/doc/index.rst 与板级定义 boards/gaisler/gr716a_mini/gr716a_mini.yaml其主要硬件资源如下处理器GR716 微控制器基于 LEON3 SPARC V8 内核GRMON 组件列表中可见 “LEON3FT SPARC V8 Processor”存储32 MiB SPI Flash PROM、2 MiB SRAM板外USB 调试链路FTDI USB 接口同时承载 AHBUARTAHB 总线上的调试 UART与 APBUART应用 UART两路串口模拟接口4 个 MMCX 连接器2 ADC 2 DAC扩展接口板底微型 80 引脚中置板mezzanine连接器。板级定义文件中同时声明了该板的关键元数据identifier: gr716a_mini name: GR716-MINI Development Board type: mcu simulation: - name: tsim exec: tsim-leon3 arch: sparc toolchain: - zephyr supported: - netif - spi - gpio从该文件可以确认三点事实该板归入arch: sparc架构族、仅使用zephyr工具链即 Zephyr SDK 内置的 SPARC 交叉编译器官方声明支持的子系统为netif、spi、gpio并注册了名为tsim的仿真平台可执行程序为tsim-leon3。2. 仓库中的板级支持文件Zephyr 对该板的支持由以下文件组成位于 boards/gaisler/gr716a_mini/文件作用gr716a_mini.yaml板级元数据架构、工具链、支持特性、仿真平台gr716a_mini.dts板级设备树启用控制台 UART、SPI Flash、GPIO 端口Kconfig.gr716a_mini将BOARD_GR716A_MINI与 SoCSOC_GR716A绑定board.cmake声明仿真平台并配置tsim-leon3的启动参数board.ymlv2 板级描述SoC 名为gr716agr716a_mini_defconfig默认 Kconfig 配置2.1 设备树控制台、Flash 与 GPIO板级设备树 boards/gaisler/gr716a_mini/gr716a_mini.dts 继承了 SoC 公共设备树 dts/sparc/gaisler/gr716a.dtsi并做了如下板级裁剪chosen { zephyr,console uart0; zephyr,shell-uart uart0; zephyr,sram dram; }; uart0 { status okay; }; spim0 { status okay; /* 256 Mbit SPI flash MX25L25635FZ2I-10G in 8 pin WSON package */ flash0: flash0 { compatible jedec,spi-nor; reg 0; spi-max-frequency 50000000; size DT_SIZE_M(256); jedec-id [c2 20 19]; }; }; gpio0 { status okay; }; gpio1 { status okay; };关键配置解读zephyr,console uart0控制台默认绑定到uart0。结合板级文档的说明该节点即 APBUART0应用 UART这也是 FTDI USB 接口引出的应用级串口之一zephyr,sram dram系统主 SRAM 使用板外 DRAM 节点即链接脚本中extram区域flash0SPI Flash 为 MX25L25635FZ2I-10G容量 256 Mbit32 MiBJEDEC 器件 ID 为c2 20 19最大 SPI 时钟 50 MHz通过spim0控制器访问两条 GPIO 端口gpio0/gpio1均被启用对应 GR716 片内的两组通用 I/O 端口。2.2 Kconfig 与 SoC 绑定Kconfig.gr716a_mini 内容极简config BOARD_GR716A_MINI select SOC_GR716A选中该板即自动选中 SoC 配置SOC_GR716A其 SoC 侧文件位于 soc/gaisler/gr716a/包括 soc.yml、linker.ld 与 soc.h。2.3 仿真平台配置board.cmake 仅 6 行但决定了west build -t run走仿真时的全部行为set(SUPPORTED_EMU_PLATFORMS tsim) find_program(TSIM tsim-leon3) set(TSIM_SYS -freq 20 -gr716)含义是该板注册tsim为受支持的仿真平台与 yaml 中的simulation声明一致并固定 TSIM3 的启动参数为-freq 20 -gr716——即 20 MHz 系统频率、GR716 系统模板与真实开发板的默认检测频率20.0 MHz保持一致。3. 控制台输出行为默认情况下内核配置将控制台输出发送到第一个 APBUART 外设apbuart0即设备树中chosen节点指向的uart0。若 GRMON 的 UART 调试转发debug forwarding已启用该设置会被保留——这意味着通过 FTDI 的 AHBUART 调试链路也能同时看到控制台字符两路 UART 并不冲突。从 GRMON 的组件枚举可见系统内共有 6 个 “Generic UART”APBUART 集群以及 2 个 “AHB Debug UART”板级文档所称的 APBUART 与 AHBUART 分别对应这两类外设。4. 构建应用按 Zephyr 标准流程构建即可只需将BOARD变量设为gr716a_mini$ west build -b gr716a_mini application_source_dir板级文档特别指出应用默认链接到片内紧耦合内存TCM。这一行为的直接证据在 SoC 链接脚本 soc/gaisler/gr716a/linker.ldMEMORY { bootprom (rx) : ORIGIN 0x00000000, LENGTH 4K extprom (rx) : ORIGIN 0x01000000, LENGTH 16M spi0 (rx) : ORIGIN 0x02000000, LENGTH 32M spi1 (rx) : ORIGIN 0x04000000, LENGTH 32M RAM (rw) : ORIGIN 0x30000000, LENGTH 64K SRAM (x) : ORIGIN 0x31000000, LENGTH 128K extram (rwx) : ORIGIN 0x40000000, LENGTH 256M IDT_LIST (wx) : ORIGIN 0xFFFFF7FF, LENGTH 2K } REGION_ALIAS(REGION_TEXT, SRAM); REGION_ALIAS(REGION_RODATA, RAM); REGION_ALIAS(REGION_DATA_VMA, RAM); REGION_ALIAS(REGION_DATA_LMA, RAM); REGION_ALIAS(REGION_BSS, RAM);内存布局要点SRAM0x31000000128 KiB是可执行的紧耦合指令内存REGION_TEXT指向它因此代码段含中断向量表默认运行于 TCM零等待访问、不受总线仲裁干扰RAM0x3000000064 KiB为紧耦合数据内存承载只读数据、数据段、BSS 及 ROM 镜像ROMABLE_REGION/RAMABLE_REGION均定义为RAMspi0/spi10x02000000、0x04000000各 32 MiB映射两块 SPI Flash对应硬件上的双 SPI Memory Controllerextram0x40000000为片外 SRAM/DRAM 区域。后文 GRMON 的加载日志text段落在0x31000000起、入口点0x31000000与 TSIM 的分区日志与这份链接脚本完全对应可直接相互印证。5. 在真实硬件上运行GRMON 加载与启动操作流程使用 FTDI 链路连接 GRMON 调试监视器然后加载并运行应用镜像。$ grmon -u -cginit 0x00010000 -uart /dev/ttyUSB0 GRMON debug monitor v3.2.8 Device ID: 0x716 GRLIB build version: 4204 Detected system: GR716 Detected frequency: 20.0 MHz Component Vendor AHB-to-AHB Bridge Cobham Gaisler MIL-STD-1553B Interface Cobham Gaisler GRSPW2 SpaceWire Serial Link Cobham Gaisler SPI to AHB Bridge Cobham Gaisler I2C to AHB Bridge Cobham Gaisler CAN Controller with DMA Cobham Gaisler CAN Controller with DMA Cobham Gaisler AHB Debug UART Cobham Gaisler ...其余 AHB/APB 桥、DMA 控制器、存储器控制器等组件... LEON3FT SPARC V8 Processor Cobham Gaisler Dual-port AHB(/CPU) On-Chip RAM Cobham Gaisler Memory controller with EDAC Cobham Gaisler SPI Memory Controller Cobham Gaisler SPI Memory Controller Cobham Gaisler LEON3 Debug Support Unit Cobham Gaisler AMBA Trace Buffer Cobham Gaisler Multi-processor Interrupt Ctrl. Cobham Gaisler Modular Timer Unit Cobham Gaisler ... ADC / DAC Interface Cobham Gaisler SPI Controller Cobham Gaisler PWM generator Cobham Gaisler General Purpose I/O port Cobham Gaisler GR716 Analog-to-Digital Conv Cobham Gaisler GR716 Digital-to-Analog Conv Cobham Gaisler I2C Slave Cobham Gaisler Use command info sys to print a detailed report of attached cores grmon3 load zephyr/zephyr.elf 31000000 text 16.2kB / 16.2kB [] 100% 300040A8 initlevel 40B [] 100% 300040D0 rodata 484B [] 100% 300042B4 datas 20B [] 100% 300042C8 sw_isr_table 256B [] 100% 300043C8 devices 36B [] 100% Total size: 16.98kB (1.91Mbit/s) Entry point 0x31000000 Image zephyr/zephyr.elf loaded grmon3 run *** Booting Zephyr OS build zephyr-v2.4.0-788-gc82a8736a65e *** Hello World! gr716a_mini要点解析grmon -u通过 USBFTDI链路连接目标-uart /dev/ttyUSB0指定串口设备节点-cginit 0x00010000为 GRMON 的初始化地址参数组件枚举完整反映了 GR716 的片上 IPSpaceWire、双 CAN带 DMA、EDAC 内存控制器、双 SPI Memory Controller、ADAC模数/数模转换接口、PWM、多路 Generic UART 等与第 1 节硬件概况逐项吻合加载日志显示text段落于0x31000000TCM 指令内存其余段落在0x30004xxxTCM 数据内存入口点0x31000000与 soc/gaisler/gr716a/linker.ld 的REGION_TEXT/REGION_RODATA定义严格一致run之后内核启动横幅从 AHBUART/控制台输出示例应用打印Hello World! gr716a_mini。6. 在 TSIM3 中仿真运行同一份应用镜像可直接用 TSIM3 LEON3 模拟器运行无需重新编译$ tsim-leon3 -freq 20 -gr716 TSIM3 LEON3 SPARC simulator, version v3.0.2 Number of CPUs: 1 register windows: 31 system frequency: 20.000 MHz using 64-bit time Allocated 128 KiB local instruction RAM memory at 0x31000000 Allocated 64 KiB local data RAM memory at 0x30000000 Allocated 4096 KiB SRAM memory, in 1 bank at 0x40000000 Allocated 2048 KiB ROM memory at 0x01000000 Allocated 16384 KiB SPIM ROM memory at 0x02000000 Allocated 16384 KiB SPIM ROM memory at 0x04000000 tsim load zephyr/zephyr.elf section: text, addr: 0x31000000, size 16956 bytes section: initlevel, addr: 0x30000000, size 40 bytes section: rodata, addr: 0x30000028, size 484 bytes section: datas, addr: 0x30000020c, size 20 bytes section: sw_isr_table, addr: 0x300000220, size 256 bytes section: devices, addr: 0x300000320, size 36 bytes Read 438 symbols tsim run Initializing and starting from 0x31000000 *** Booting Zephyr OS build zephyr-v2.4.0-788-gc82a8736a65e *** Hello World! gr716a_mini参数与内存映射对照-freq 20 -gr716正是 board.cmake 中固化的TSIM_SYS保证仿真频率与板上检测到的 20 MHz 一致模拟器分配的 “local instruction RAM 0x31000000 (128 KiB)” 与 “local data RAM 0x30000000 (64 KiB)” 即链接脚本的 TCMSRAM/RAM区域0x40000000的 4 MiB SRAM、0x02000000/0x04000000的两块 16 MiB SPIM ROM 则对应链接脚本的extram、spi0、spi1区域模拟器按容量取整上板与仿真的段地址、段大小逐字段一致说明同一 ELF 在两条路径下行为等价。适用前提GRMON 与 TSIM3 均为 Gaisler 提供的商业工具需在构建机/调试机上自行安装west build -t run走仿真平台时依赖find_program(TSIM tsim-leon3)能定位到可执行文件未安装时该运行目标会失败。7. 小结与延伸阅读板级支持核心文件boards/gaisler/gr716a_mini/gr716a_mini.yaml、boards/gaisler/gr716a_mini/gr716a_mini.dts、boards/gaisler/gr716a_mini/Kconfig.gr716a_mini、boards/gaisler/gr716a_mini/board.cmakeSoC 与内存映射soc/gaisler/gr716a/linker.ld、soc/gaisler/gr716a/soc.h公共设备树dts/sparc/gaisler/gr716a.dtsi板级文档原文boards/gaisler/gr716a_mini/doc/index.rst。若你在 GRLIB 的 LEON3 FPGA 模板设计上运行 Zephyr而非 GR716 硬处理器可以关注同一 vendor 目录下的 boards/gaisler/generic_leon3 板级配置二者共享 TSIM3 仿真路径但内存入口与调试链路JTAG/GRMON参数不同构建时应分别设置BOARD变量不要混用镜像。【免费下载链接】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),仅供参考