)
在 Texas Instruments CC32XX 上构建与运行 Matter 空气净化器示例应用connectedhomeip / CC3235SF LaunchPad【免费下载链接】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导读本文基于 connectedhomeipMatter/Project CHIP 开源实现仓库中的 CC32XX Air Purifier 示例应用文档系统讲解如何在一颗 TI SimpleLink™ Wi-Fi® CC32XX 无线 MCU默认目标为 CC3235SF_LAUNCHXL LaunchPad上编译、烧录并运行一个完整的 Matter 空气净化器设备。你将掌握从环境准备SysConfig bootstrap、GN/Ninja 交叉编译、DAC 证书替换到 CCS 调试烧录、UART 日志查看、以及通过 SimpleLink 方式配网并入 Matter 网络的全流程并能在阅读过程中对照仓库源码理解应用初始化、按钮交互、KVS 存储与设备认证的实现细节。一、示例应用概述一个基于 CC32XX 的联网空气净化器CC32XX 空气净化器示例应用examples/air-purifier-app/cc32xx是一个可工作的联网空气净化器设备演示它同时使用开源 Matter/CHIP 实现与德州仪器 SimpleLink™ Wi-Fi® CC32xx 软件开发套件SDK。目标硬件默认面向 CC3235SF_LAUNCHXL LaunchPad但示例工程被设计为可在整个CC32XX系列 MCU 上构建板卡名通过 GN 变量ti_simplelink_board指定见 args.gni。定位既可作为探索 Matter/CHIP 工作原理的入口也可作为基于 TI 器件开发真实产品的模板。从构建脚本看这个示例并非单端点灯泡式应用而是一个多端点Endpoint聚合设备。在 AppTask.cpp 中定义了 5 个端点端点 ID用途1空气净化器主体Air Purifier2空气质量传感器Air Quality Sensor3温度传感器Temperature Sensor4相对湿度传感器Relative Humidity Sensor5恒温器Thermostat其中传感器与恒温器端点通过SetParentEndpointForEndpoint(...)挂接在空气净化器端点之下形成父子端点层级见 AppTask.cpp随后由AirPurifierManager::InitInstance(...)统一初始化AppTask.cpp。公共逻辑位于 examples/air-purifier-app/air-purifier-common其中包含集群定义文件air-purifier-app.zap、数据模型文件air-purifier-app.matter以及src/下的管理器实现CC32XX 工程通过air-purifier-common目标直接复用见 BUILD.gn。二、设备 UI按键交互与状态指示2.1 按键行为按键动作行为左键BTN-1单击触发配网Provisioning默认以 oneshot 模式启用右键BTN-2长按1 秒复位设备 / 清除 Matter 配置右键长按的底层实现在 AppTask.cpp 的ButtonRightEventHandler中TI Button 驱动产生Button_EV_CLICKED或Button_EV_LONGCLICKED事件长按阈值longPressDuration 1000UmsAppTask.cpp事件经 ISR 上下文通过xQueueSendFromISR投递到应用事件队列由DispatchEvent处理长按事件会先删除设备文件系统上的 KVS 配置/sys/matter/kvs.cfgtoken0x13578642随后执行 Matter 部分设备复位AppTask.cpp。应用主循环则通过 FreeRTOS 队列xQueueReceive等待并分发事件AppTask.cpp。2.2 按键 / LED 的硬件映射按键与 LED 的引脚映射由 SysConfig 工程文件 chip.syscfg 定义CONFIG_BTN_LEFT↔ 板载SW2CONFIG_BTN_RIGHT↔ 板载SW3CONFIG_LED_BLUE、CONFIG_LED_GREEN、CONFIG_LED_RED红色 LED 为可调光 PWM 输出占用了 Timer3 通道见 chip.syscfg。AppTask::Init()中会依次打开红、绿 LED 并初始化为熄灭状态AppTask.cpp。Wi-Fi 模块还支持将蓝色 LED 用作连接状态指示断开时常灭、配网中闪烁、已连接常亮见 wifi_settings.h 的WIFI_LED_HANDLE宏。三、构建环境准备Preparation构建环境为 Linux官方推荐 Ubuntu 20.04。本节操作在每次升级 SDK 版本后都需要重新执行。3.1 安装 SysConfigSysConfig 是 TI 的图形化 / 命令行配置工具负责根据chip.syscfg生成驱动配置文件ti_drivers_config.c/.h、ti_drivers_net_wifi_config.c、ti_net_config.c等见 BUILD.gn。安装命令$ cd ~ $ wget https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.13.0_2553-setup.run $ chmod x sysconfig-1.13.0_2553-setup.run $ ./sysconfig-1.13.0_2553-setup.run安装完成后请记录 SysConfig 的安装路径编译阶段需要将其绝对路径显式传给 GNLinux 默认位于$HOME/ti/sysconfig_1.13.0Windows 默认位于C:\ti。3.2 运行 bootstrap 脚本bootstrap 会拉取并准备构建所依赖的第三方组件与 Python 环境$ cd ~/connectedhomeip $ source ./scripts/bootstrap.sh仓库中对应的脚本位于 scripts/bootstrap.sh与之配套的还有 scripts/activate.sh 用于激活已就绪的构建环境。四、编译GN 生成 Ninja 构建每次打开新的 shell 都需要先激活构建环境然后依次执行 GN 和 Ninja$ cd ~/connectedhomeip $ source ./scripts/activate.sh$ cd ~/connectedhomeip/examples/air-purifier-app/cc32xx $ gn gen out/debug --argsti_sysconfig_root\$HOME/ti/sysconfig_1.13.0\ $ ninja -C out/debug要点说明ti_sysconfig_root必须填写绝对路径即第 3.1 节记录的安装目录。GN 构建需要传入的参数不止ti_sysconfig_root一个。工程自身的默认参数集中在 examples/air-purifier-app/cc32xx/args.gni它导入了 examples/platform/cc32xx/args.gni配置 CHIP 各子系统的工程头文件以及config/standalone/args.gni。该文件中的核心配置如下配置项默认值含义ti_simplelink_boardCC3235SF_LAUNCHXL目标板卡chip_config_network_layer_blefalse关闭 BLE 网络层BLE 配网暂不支持chip_bypass_rendezvousfalse不绕过 rendezvous 流程chip_progress_logging/chip_detail_logging/chip_automation_loggingtrue开启各级日志输出chip_stack_lock_trackingnone关闭栈锁追踪适配当前 FreeRTOS 配置未启用INCLUDE_xSemaphoreGetMutexHoldermatter_device_vid0xFFF1Matter 设备 VIDmatter_device_pid0x8006Matter 设备 PIDmatter_software_ver/matter_software_ver_str0x0001/1.0d1软件版本构建产物为 ELF 格式的可执行文件命名形如chip-CC3235SF_LAUNCHXL-air-purifier-example.out见 BUILD.gn。当前不生成UniFlash 烧录用的 bin 镜像。若需以优化尺寸编译可在args.gni中取消is_debug false的注释以启用-Os见 args.gni。4.1 构建系统结构源码视角BUILD.gn中的目标组织清晰地反映了本示例的依赖关系ti_simplelink_sdk(sdk)SDK 层携带BUILD_RELEASE宏debug 构建为 0release 为 1见 BUILD.gnti_sysconfig(sysconfig)由 chip.syscfg 生成驱动代码source_set(air-purifier_app_sdk)聚合平台侧代码包括 Logging.cpp、Wi-Fi 初始化cc32xxWifiInit.c以及 TI SimpleLink SDK 的lwip_if.c/utils_if.c/wifi_if.c网络适配层BUILD.gnti_simplelink_executable(air-purifier_app)最终可执行文件链接air-purifier-common的四个管理器air-purifier、air-quality-sensor、filter-delegates、thermostat与主目录下的AppTask.cpp、CHIPDeviceManager.cpp、DeviceCallbacks.cpp、ZclCallbacks.cpp等并依赖cc32xx-attestation-credentials目标BUILD.gn。编译目标assert(current_os freertos)表明该工程运行在 FreeRTOS 之上BUILD.gn。五、添加自定义 DAC 证书Matter 设备入网与认证依赖设备认证证书DAC。要替换为自定义 DAC需要修改 examples/platform/cc32xx/CC32XXDeviceAttestationCreds.cpp 中以下四组数组DAC 私钥gDacPrivKeyDAC 公钥gDacPubKeyDAC 证书gDacCertPAI 证书gPaiCert。从源码结构看CC32XXDeviceAttestationCreds.cpp这些数组被组织成factoryData结构体dac_priv_key/dac_pub_key/dac_cert/pai_cert四段{len, data}对并通过链接符号__attestation_credentials_base暴露给CC32XX::GetCC32XXDacProvider()。默认情况下数组内容对应 Matter 开发 VID0xFFF1/ PID0x8006证书 DER 的 Subject/Issuer 字段中编码了FFF1与8006见 CC32XXDeviceAttestationCreds.cpp。应用侧的选择逻辑在 AppTask.cpp若定义了CC32XX_ATTESTATION_CREDENTIALS宏则注册CC32XX::GetCC32XXDacProvider()来自examples/platform/cc32xx的认证凭据提供者否则回退到 SDK 的示例 DAC 提供者Examples::GetExampleDACProvider()。该注册发生在 Server 初始化之前以确保 Operational Credentials 在集群构建时就能拿到正确的提供者。六、烧录与调试Programming将构建好的镜像加载到 LaunchPad 上目前仅支持通过 Code Composer StudioCCS且 CCS 基于 ELF 中的调试信息进行源码定位因此若镜像在另一台机器上构建或源码目录与 ELF 记录的位置不一致CCS 会提示手动查找源码当前不生成 UniFlash 编程所需的 bin 镜像。6.1 Code Composer Studio 烧录步骤下载并安装 Code Composer Studio仓库 TI 平台文档目录。打开 CCS创建一个新的 workspace。为目标 SoC 与调试器创建 target connection即 CCXML参照 CCS Users Guide 中 Manual Method 一节的操作。启动一个 project-less无工程debug session参照 Manual Launch 一节。CCS 自动切换到 debug 视图对应 After Launch 一节。此时 SoC core 通常处于断开状态、符号未加载先连接 coreDebug View 一节再点击工具栏上的Load按钮加载 ELF 镜像。注意CCXML 的默认配置使用 2-wire cJTAG而非完整的 4-wire JTAG这是为了匹配 LaunchPad 默认的跳线配置无需改动。七、查看日志输出Logging默认情况下日志通过 Application/User UART 输出。使用终端模拟器连接该串口参数如下参数值Speed (baud)115200Data bits8Stop bits1ParityNoneFlow controlNone日志链路的实现可追溯平台日志函数cc32xxLog在 AppConfig.h 中声明并被PLAT_LOG(...)宏引用其实现位于 src/platform/cc32xx/Logging.cpp在AppTask::Init()中通过cc32xxLogInit()完成初始化AppTask.cpp。UART 硬件在 chip.syscfg 中映射到 XDS110UARTDisplay 模块使用 UART1 外设。启动后串口会依次输出应用横幅DisplayBanner()、内存初始化、LED/按键初始化、Wi-Fi 初始化、CHIP 栈初始化、设备认证配置、Server 初始化以及 Onboarding 二维码信息PrintOnboardingCodes(...)使用kOnNetwork标志见 AppTask.cpp。八、运行示例配网Provisioning将 Matter 设备接入网络的第一步是配网provisioning。本示例通过 TI 专有的 SimpleLink 配网方式AP 模式或 Smart Config完成配合 SimpleLink Starter Pro 手机 App 使用按左键BTN-1触发配网oneshot 模式即只进行一次配网尝试。设备通过 SimpleLink 配网AP 或 Smart Config接入本地 Wi-Fi。设备连上本地 AP 后即可使用 OnNetwork 方式触发 Matter commissioning配网/入网例如配合 chip-tool 等 Matter 控制器完成后续流程。配网参数集中在 wifi_settings.h宏默认值说明WIFI_IF_DEBUG_LEVELE_INFOWi-Fi 内部消息的最低日志级别可选E_TRACE/E_DEBUG/E_INFO/E_WARNING/E_ERROR/E_FATALPROVISIONING_MODEWifiProvMode_ONE_SHOT配网模式OFF/ON/ONE_SHOTPROVISIONING_CMDSL_WLAN_PROVISIONING_CMD_START_MODE_APSC配网命令AP、SCSmart Config、APSC、APSC_EXTERNAL_CONFIGURATION、EXTERNAL_CONFIGURATION 等PROVISIONING_TIMEOUT00 表示使用默认超时PROVISIONING_AP_PASSWORD1234567890AP 配网密码NULL表示开放网络PROVISIONING_SC_KEY1234567890123456Smart Config 密钥NULL表示默认FORCE_PROVISIONING(0)强制清除已有 profile 重新配网仅开发测试用开启时静态 profile 配置失效AP_SSID/AP_PASSWORDNULL静态直连配置方式一硬编码 SSID/密码密码NULL为开放网络否则为 WPA2AP_CFG_FILENAME/AP_CFG_TOKEN/AP_CFG_MAX_SIZEnetwork.cfg/12345678/100静态直连配置方式二从配置文件读取文件内容为ssid passwordSSID 与密码之间用一个空格分隔不可含换行、多余空格或引号WIFI_LED_HANDLEgLedBlueHandleWi-Fi 状态 LED关闭定义即禁用自动指示8.1 关于蓝牙 LE 配网BLE 配网当前暂不支持chip_config_network_layer_ble false见 args.gni这也是PrintOnboardingCodes使用kOnNetwork标志的原因。因此当前版本只支持 OnNetwork commissioning 路径。九、启动流程小结源码级结合 main.cpp 与 AppTask.cppCC32XX 示例的启动链路如下main()中调用Board_init()、GPIO_init()并将 mbedtls 的内存分配函数切换到 CHIP 平台实现mbedtls_platform_set_calloc_free(CHIPPlatformMemoryCalloc, CHIPPlatformMemoryFree)见 main.cppGetAppTask().StartAppTask()创建应用事件队列与 FreeRTOS 应用任务栈 4096 字、优先级 4AppTask.cppvTaskStartScheduler()启动 FreeRTOS 调度器main.cppAppTask::Init()依次完成日志、内存、LED/按键、Wi-Fi、CHIP 栈、设备认证提供者、Matter Server、端点父子关系与 AirPurifierManager 的初始化AppTask.cpp。十、延伸阅读示例应用的公共逻辑与集群定义examples/air-purifier-app/air-purifier-common含air-purifier-app.zap、air-purifier-app.matter平台侧认证凭据examples/platform/cc32xx/CC32XXDeviceAttestationCreds.cpp平台层 CC32XX 实现src/platform/cc32xx/Logging.cpp构建环境脚本scripts/bootstrap.sh、scripts/activate.shTI 平台构建说明docs/platforms/ti/README.md注意示例默认使用 Matter 开发 VID0xFFF1/ PID0x8006与示例 DAC仅适用于开发验证面向生产环境时请务必按第五节流程替换为经过认证的正式证书并核对args.gni中的 VID/PID 与软件版本号与产品声明一致。【免费下载链接】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),仅供参考