Matter Genio(MediaTek MT793X)照明示例:从编译烧录到 BLE 配网与灯具控制的完整实战指南

发布时间:2026/9/19 18:34:48
Matter Genio(MediaTek MT793X)照明示例:从编译烧录到 BLE 配网与灯具控制的完整实战指南 Matter GenioMediaTek MT793X照明示例从编译烧录到 BLE 配网与灯具控制的完整实战指南【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip导读本文以 connectedhomeip 仓库中的 Genio 平台照明示例examples/lighting-app/genio/README.md为蓝本系统讲解如何在 MediaTekGenioMT793XGenio 130A / MT7931开发板上搭建一个 Matter 照明设备从环境准备与 GN/Ninja 编译、Flash Tool 烧录到使用 Chip Tool 通过 BLE-WiFi 完成配网入网再到通过 Matter 命令与设备本地 shell 控制灯光开关、颜色与亮度。读完本文你将掌握一套完整的编译 → 烧录 → 配网 → 控制实操流程并能借助仓库源码理解其内部任务模型、灯光状态机与网络事件循环的实现原理。示例概述一个跑在 MediaTek Genio 上的 Matter 照明设备GenioMT793X照明示例是对 Matter 智能照明Light control设备的基础演示基于 Matter 协议栈与 MediaTekGenioSDK 构建可通过任意 CHIP/Matter 控制器如 Chip Tool、Python 控制器、Android/iOS App经 Wi-Fi 网络对其进行控制。该设备的入网流程是 Matter 标准的 BLE 配网Rendezvous过程设备上电后在 BLE 上广播控制器通过 BLE 发现设备控制器与设备通过 Rendezvous 流程PASE 会话交换安全信息、完成配对控制器将 Wi-Fi 网络凭据下发给设备设备凭此加入 Wi-Fi 网络此后双方在 IP 网络IPv6 优先上通过 Matter 协议交互。从仓库结构看该示例既是探索 Matter 工作原理的入口也是基于 MediaTek 平台量产化产品的模板。示例的应用层源码集中在 examples/lighting-app/genio/src 目录main.cpp、AppTask.cpp、LightingManager.cpp、LEDWidget.cpp、DimmableLEDWidget.cpp、ColorFormat.cpp、ZclCallbacks.cpp共享的 Matter 数据模型与集群逻辑则来自 examples/lighting-app/lighting-common含 lighting-app.matter / lighting-app.zap 数据模型定义。构建环境与支持硬件准备构建环境Genio 示例的编译环境基于 Linux需要先按官方构建指南 docs/guides/BUILDING.md 完成依赖安装包括编译器工具链、Python 环境、GN/Ninja 等。该指南覆盖了仓库整体构建的通用准备流程。支持硬件示例面向Genio130AMT7931开发板即EK-AI7931LD KIT。构建目标平台由 examples/lighting-app/genio/BUILD.gn 中的assert(current_os freertos)约束确认该示例跑在 FreeRTOS 之上目标 CPU 架构为arm、目标 OS 为freertos见 examples/lighting-app/genio/build_for_wifi_gnfile.gn。关键构建参数源码级解读在编译之前值得先了解 examples/lighting-app/genio/BUILD.gn 中几个影响行为的构建参数参数默认值含义与作用chip_print_memory_usagetrue链接时输出内存占用并追加-fstack-usage生成栈用量信息setupPinCode20202021PASE 会话建立使用的测试 Setup PIN Code会以CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE宏注入编译setupDiscriminator3840设备发现使用的测试长 Discriminator会以CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR宏注入编译chip_enable_ota_requestorfalse见 args.gni置为 true 时启用 OTA 请求端并追加MT793X_OTA_ENABLED宏与OTAConfig.cpp源码__PWM_DIMMABLE_LED__默认关闭注释态定义后启用 PWM 可调光 LEDDimmableLEDWidget否则使用普通 GPIO LEDWidget其中setupPinCode 20202021与setupDiscriminator 3840正是后文配网命令中使用的数值二者在 BUILD.gn 中声明、在 BUILD.gn 中作为编译宏生效。芯片级配置如设备名称、BLE 配置位于 include/CHIPProjectConfig.h。此外args.gni 中显式启用了chip_enable_ble true与chip_config_network_layer_ble true这是 BLE 配网路径得以工作的前提。一键编译脚本在仓库根目录执行示例脚本方式cd ~/connectedhomeip ./scripts/examples/gn_genio_example.sh ./examples/lighting-app/genio ./out/lighting-app脚本会将产物输出到./out/lighting-app目录。需要删除生成的二进制、库与目标文件时cd ~/connectedhomeip rm -rf ./out/说明当前仓库中已包含对应的构建器实现 scripts/build/builders/genio.py可以结合该脚本了解构建流程的自动化组织方式。直接使用 GN/Ninja 构建若希望完全手动控制构建过程可在示例目录内直接调用 GN/Ninjacd ~/connectedhomeip/examples/lighting-app/genio git submodule update --init source third_party/connectedhomeip/scripts/activate.sh gn gen out/debug ninja -C out/debug清理产物cd ~/connectedhomeip/examples/lighting-app/genio rm -rf out/从源码结构看gn gen会读取当前目录的 build_for_wifi_gnfile.gn它通过default_args指定target_cpu arm、target_os freertos、use_thread false并导入 build_for_wifi_args.gni而build_for_wifi_args.gni中通过chip_enable_thread false关闭了 Thread并引入src/platform/MT793X/wifi_args.gni的 Wi-Fi 平台参数——这正是Wi-Fi 版构建路径的配置来源。最终生成的固件名为chip-mt793x-lighting-app-example.out见 BUILD.gn链接脚本为 mt793x_xip.ld。固件烧录Flashing the ApplicationGenio 使用 MediaTek 官方的图形化 Flash Tool 进行烧录将 Flash Tool 从构建示例所用的 Linux 主机拷贝到一台 Windows PC 上。Flash Tool 在本仓库源码树中的位置为third_party/mt793x_sdk/filogic/flash_tool与 third_party/mt793x_sdk 目录对应。在 Windows PC 上运行 Flash Tool选择./out/lighting-app目录下的scatter.ini文件分区布局描述文件GN 构建产物的一部分按照EK-AI7931LD KIT配套说明将开发板切换到 download下载模式在 FLASH TOOL 界面点击Download开始烧录。烧录完成后设备即可上电启动 Matter 应用。从 src/main.cpp 的启动流程看固件主函数会依次完成 mbedtls 内存钩子设置mbedtls_platform_set_calloc_free、system_init()、SWD 端口配置mt793xSwdPortConfig后启动 FreeRTOS 调度器vTaskStartScheduler随后由vStartTask启动 CHIP 栈初始化、事件循环任务与应用任务。配网与远程控制Running the Complete Example选择控制器可以使用以下任一控制器对设备进行 provisioning 与控制Python 控制器Chip Tool 独立命令行工具其详细指南见 docs/development_controllers/chip-tool/chip_tool_guide.mdAndroid AppiOS App使用 Chip Tool 配网与控制以 Chip Tool 控制器为例首先通过 BLE-WiFi 配对流程将设备入网chiptool pairing ble-wifi 1234 my-ap myappassword 20202021 3840各参数含义参数取值说明1234node id控制器为设备分配的 Matter Node ID可自定义my-apSSIDWi-Fi 网络的 SSIDmyappassword密码Wi-Fi 网络的密码20202021PIN Code设备 Setup PIN Code与 BUILD.gn 中的setupPinCode一致3840Discriminator设备 Discriminator与 BUILD.gn 中的setupDiscriminator一致配对完成后即可通过 On/Off 集群远程开关灯chiptool onoff on 1 1 chiptool onoff off 1 1其中onoff on 1 1的语义为对 node id 1、endpoint 1 的 On/Off 集群执行on命令onoff off同理。Chip Tool 命令的完整参数语法包括节点/端点/组寻址、超时与附带参数可参考 docs/development_controllers/chip-tool/chip_tool_guide.md。通过设备本地 Shell 直接测试 LED除了远程 Matter 命令该示例还在设备端集成了 Matter Shell通过ENABLE_CHIP_SHELL编译开关启用可以用light命令直接驱动 LED便于在没有控制器时进行单板验证 light help Usage: light subcommand onoff Usage: light onoff subcommand color Usage: light color r:0~255 g:0~255 b:0~255 level Usage: light level level:0~100各子命令在源码 src/AppTask.cpp 中注册light help列出所有light子命令light onoff on/light onoff off向灯光管理器投递ON_ACTION/OFF_ACTIONlight color r g b以 RGB各通道 0~255设置灯色命令处理器会把三个通道按(r16)|(g8)|b打包后投递COLOR_ACTIONlight level level以 0~100 的百分比设置亮度投递LEVEL_ACTION。此外源码中还注册了present/clear两个占用occupancy模拟命令见 AppTask.cpp用于向应用投递占用事件——不过该示例的数据模型并不包含 OccupancySensing 集群因此从 OccupancyEventHandler 的注释看命令效果目前仅体现在日志层面。从 src/LightingManager.cpp 的实现可以看出这些 shell 命令与 Matter 集群命令最终汇合于同一个LightingManager::InitiateAction()入口其内部是一个典型的有限状态机kState_OffCompleted / kState_OnInitiated / kState_OnCompleted / kState_LevelInitiated / kState_ColorInitiated等并支持 LEVEL_ACTION 的自动关灯Auto Turn Off定时逻辑。每条动作都会通过ActionInitiated/ActionCompleted回调注册于 AppTask.cpp输出日志并在 LED 上体现效果。应用任务模型源码级补充从 src/AppTask.cpp 可以看到应用采用 FreeRTOS 静态任务 事件队列架构应用任务AppTask任务名Lit见 include/AppConfig.h栈大小 4096、优先级 2事件队列容量 10支持从 ISR 投递事件xQueueSendFromISRportYIELD_FROM_ISR主循环每 10ms 检查事件队列并通过PlatformMgr().TryLockChipStack()以非阻塞方式采集 Wi-Fi 配网/连接状态驱动状态 LED 的闪烁模式未连上网络时快闪、正常时慢闪。这些细节有助于理解为什么 shell 命令、按键事件与 Matter 集群回调都能最终安全地汇聚到同一套灯光逻辑——因为它们都统一转换为AppEvent投递到应用任务队列再在任务上下文中执行。注意事项NotesIPv6 支持取决于你的网络环境部分路由器不会为设备Border Router / PC分配原生 IPv6 地址。若遇到这种情况需要同时在设备端与 PC 端手动添加静态 IPv6 地址并在 PC 上为 Border Router 添加 IPv6 路由以保证 Matter 基于 IPv6 的节点间通信可达。延伸阅读示例数据模型与共享集群逻辑examples/lighting-app/lighting-commonChip Tool 完整使用指南docs/development_controllers/chip-tool/chip_tool_guide.md仓库整体构建指南docs/guides/BUILDING.md平台构建器脚本scripts/build/builders/genio.py【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考