本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本教程深入解析了德州仪器(TI)推出的Code Composer Studio(CCS),这是一款专为数字信号处理器(DSP)和微控制器(MCU)应用程序开发设计的集成开发环境(IDE)。内容涵盖了CCS的安装与启动、用户界面的介绍、新项目创建、代码编写与编译、调试与分析、以及如何进行配置与定制。教程还包括了版本控制与团队协作方面的信息,目的是帮助开发者更高效地利用CCS开发工具,应对复杂DSP项目的挑战。
CCS使用教程(DSP开发软件)

1. CCS安装与启动指南

系统要求和前期准备

在开始安装Code Composer Studio (CCS)之前,请确保您的计算机满足以下基本要求:
- 操作系统:Windows 7、8、10(64位),Linux 或 macOS。
- 处理器:至少为双核处理器,推荐使用更高核心数。
- 内存:至少4GB RAM,推荐使用8GB或更多。
- 磁盘空间:至少20GB的可用磁盘空间。

在安装之前,建议备份重要数据,确认网络连接稳定,并确保您的系统已安装最新版的Java运行环境。

安装过程

  1. 下载安装文件 :首先,访问官方TI(德州仪器)网站下载最新的CCS安装包。
  2. 运行安装程序 :下载完毕后,双击运行安装包。通常文件名格式为 ccs_setup_<version>.run
  3. 安装向导 :遵循安装向导的指引完成安装。同意许可协议,并选择安装路径。建议选择一个快速的磁盘驱动器。
  4. 安装附加组件 :根据您的开发需求,选择相应的附加组件和工具链进行安装。
  5. 启动CCS :安装完成后,启动CCS,您可能会看到一个欢迎界面,可以进行初次设置,例如选择工具链、配置工作空间等。

启动和首次运行

  • 初次启动 :启动CCS后,通常会有一个初始的设置向导,帮助您配置项目偏好和环境。
  • 创建项目 :如果您是CCS的新用户,建议创建一个示例项目来快速熟悉开发环境。
  • 了解用户界面 :在初次创建项目时,您会看到CCS的主界面布局,包括菜单栏、工具栏、编辑器和项目资源管理器等。

通过以上步骤,您应该已经成功安装并初步运行了CCS。接下来,您可以深入学习如何管理项目、编写代码、编译以及调试您的DSP开发项目。

2. CCS工作界面详细介绍

2.1 主界面布局解析

2.1.1 菜单栏功能与设置

CCS(Code Composer Studio)是一个集成的开发环境,专为满足嵌入式系统的开发需求而设计。主界面是用户进行开发操作的起点,其中菜单栏位于顶部,提供了几乎所有可用的命令选项。

菜单栏从左到右依次包含了:文件(File)、编辑(Edit)、视图(View)、项目(Project)、调试(Debug)、工具(Tools)、窗口(Window)和帮助(Help)等标准菜单项。每个菜单下又包含了子菜单,例如在编辑菜单中,开发者可以找到查找(Find)、替换(Replace)、撤销(Undo)等操作选项。这些功能是开发过程中频繁使用的,如代码的查找和替换可以帮助开发者快速定位和修改代码。

2.2 项目管理器的使用

2.2.1 项目结构的组织与管理

项目管理器是管理项目文件的中心,使用它可以帮助开发者更好地组织代码和资源。一个典型的项目结构通常包括源文件(Source files)、头文件(Header files)、资源文件(Resource files)和配置文件(Configuration files)。

源文件通常包括C/C++源代码,而头文件则包括了所需的声明和宏定义。资源文件可能是图形、声音或其他非代码数据,而配置文件则涉及编译器和链接器的设置。项目管理器允许开发者以层次化的方式查看和管理这些文件,可以对它们进行新建、删除、重命名以及分组等操作。

2.2.2 源代码文件的导入与导出

在项目开发过程中,经常需要导入现有的源代码文件到项目中。在CCS中,这可以通过右键点击项目名称,选择“新建”然后选择“从现有源导入文件”完成。导入向导会指导开发者完成剩余步骤。对于导出项目或文件,右键点击相应的项目或文件,选择“导出”功能,即可选择想要导出的目标和格式。

2.2.3 项目属性的配置方法

每个项目都有其特定的属性,这些属性包括编译器的设置、链接器的配置、目标设备的设置等。在CCS中,打开项目的属性窗口可以通过点击菜单栏的“项目”选项,然后选择“属性”来完成。属性配置非常详细,涉及到项目的优化级别、目标硬件配置、内存映射等。不同的设置会影响到最终程序的性能和资源消耗,因此对于性能有要求的开发者来说,了解如何配置项目属性是非常重要的。

2.3 调试视图和工具

2.3.1 变量和表达式查看器

调试器是开发过程中不可或缺的工具,它帮助开发者理解程序运行时的状态和行为。变量和表达式查看器是调试器中查看和修改运行时数据的界面。在CCS中,可以打开变量查看器来监视程序运行时全局变量、局部变量或特定表达式的值。查看器还允许在程序暂停时修改变量的值,以测试程序对这些变化的反应。

2.3.2 调试断点的设置与管理

断点是调试过程中用来控制程序执行流程的工具。在CCS中,可以通过双击编辑器窗口左边的行号区域来设置断点。设置好断点后,程序运行到断点处时会自动暂停,此时开发者可以检查变量的值、单步执行代码以及监视调用堆栈等。断点可以随时启用或禁用,并且还可以设置为条件断点,使得只有当特定条件满足时,程序才会在断点处暂停。

2.3.3 内存和寄存器视图

内存和寄存器视图让开发者能够在程序运行时查看和修改内存和寄存器的值。这对于理解程序如何使用内存和寄存器以及进行底层调试是非常有用的。在CCS中,内存视图可以用来检查和修改内存内容,而寄存器视图则显示了处理器的寄存器状态。这些视图在调试特定硬件相关的代码时尤其重要,因为它们可以提供硬件层面的细节。

通过上述对CCS工作界面详细介绍,开发者可以更深入地了解并使用CCS来高效地进行项目开发。每部分功能的深入了解,都将帮助开发者在日常工作中,更准确地实现需求,更快地解决遇到的问题。

3. 创建DSP开发项目的步骤

3.1 项目模板的选择与配置

3.1.1 根据需求选择合适的模板

在开始DSP开发项目之前,选择一个合适的项目模板是至关重要的。项目模板提供了一种快速启动项目的方式,通常包含了必要的文件和配置。根据项目的具体需求,开发者可以决定是使用默认模板还是自定义模板。

为了选择合适的模板,开发者首先需要评估项目的目标和要求。DSP项目可能涉及到音频处理、信号处理或控制算法等不同应用场景。在确认了项目类型后,根据项目所需的特定功能,从一系列预定义模板中选择一个基础模板。例如,Texas Instruments(TI)的Code Composer Studio(CCS)提供了针对不同TI DSP设备的多种模板,每个模板都预配置了特定的编译器选项和链接器脚本。

例如,在CCS中创建DSP项目时,可以按照以下步骤选择模板:

  1. 打开CCS并点击“File > New > CCS Project”。
  2. 在弹出的对话框中,选择“Target”以指定目标DSP设备。
  3. 在“Project template”部分,浏览可用的模板列表,并根据项目需求选择合适的模板,如“Empty Project”用于完全自定义的项目,或“DSP/BIOS Application”用于需要操作系统支持的项目。
  4. 输入项目名称和位置,然后点击“Finish”。

3.1.2 配置项目特定的编译选项

选定模板之后,下一步是根据项目需求配置编译选项。编译选项包括代码优化级别、调试信息生成以及特定的编译器指令等。这些设置将影响最终生成的DSP程序的性能和资源使用。

例如,在CCS的项目设置中,可以按照以下步骤配置编译选项:

  1. 在项目资源管理器中,右键点击项目并选择“Properties”。
  2. 在左侧的属性树中,依次选择“Build > ARM Linker > File Search Path”配置链接器文件搜索路径,添加必要的库文件和对象文件。
  3. 选择“Build > ARM C/C++ Compiler > Optimization”设置编译器的优化选项。根据项目的调试或优化阶段选择不同的优化级别。
  4. 在“Build > ARM C/C++ Compiler > Symbols”中定义宏或者编译时标志,以启用或禁用特定代码部分。

例如,如果项目需要在调试阶段,可以启用调试信息生成,并设置较低的优化级别。相反,如果项目已经进入优化阶段,则可以设置较高的优化级别以提升执行效率。

flowchart LR
    A[开始创建DSP项目] --> B[选择项目模板]
    B --> C[配置项目特定编译选项]
    C --> D[添加源文件和库依赖]
    D --> E[设置编译器和链接器选项]
    E --> F[完成项目设置]

编译选项的合理配置对于项目的性能和稳定性有着直接的影响,因此开发人员需要对这些选项有充分的理解和经验,以确保开发过程既高效又有效。

4. 代码编写和编译流程

4.1 编码规范与风格

4.1.1 遵循DSP开发的编码规范

在DSP开发过程中,保持一致的编码规范对于维护和调试代码至关重要。编码规范不仅包括命名约定、代码格式和注释的使用,还涉及代码结构和设计模式的选择。这样可以帮助开发者更清晰地理解和维护代码库,同时也有利于团队协作和代码复用。

4.1.2 编辑器的代码高亮和自动补全功能

现代编程编辑器和集成开发环境(IDE)通常具有强大的代码高亮和自动补全功能。这些功能可以帮助开发者快速识别代码结构,减少打字错误,并提高编码效率。此外,通过合理配置这些工具,可以进一步提升开发效率,例如,通过设置自定义模板和宏来自动化常见的代码段。

4.2 编译过程监控与错误处理

4.2.1 实时编译输出的查看与分析

编译过程是任何开发周期中的关键步骤,监控编译输出可以帮助开发者及时发现编译错误和警告。大多数IDE提供实时的编译输出查看器,能够高亮显示错误和警告,并提供导航至问题代码的功能。通过这种方式,开发者可以迅速定位问题所在,并对代码进行必要的修改。

4.2.2 编译错误和警告的识别与修复

编译错误是指编译器在尝试将源代码转换为可执行文件时遇到的无法解决的问题。它们通常指示代码中存在严重的语法或逻辑错误。相对而言,编译警告则通知开发者代码中可能存在的问题,但编译过程仍然可以继续。对错误和警告进行识别和修复是确保代码质量和正确性的关键环节。

4.3 构建自动化与版本控制集成

4.3.1 构建脚本的编写与管理

为了自动化整个编译过程,创建构建脚本是一种常见的做法。这些脚本定义了编译过程中的所有步骤,包括源代码文件的编译、链接和生成最终可执行文件。通过构建脚本,开发者可以方便地管理依赖关系,控制编译配置,并确保构建过程的一致性和可重复性。

4.3.2 版本控制系统的基本使用

版本控制系统(VCS),如Git或SVN,是现代软件开发不可或缺的一部分。它们允许多个开发者同时协作,跟踪对代码库所做的变更,并提供强大的历史版本回溯功能。通过集成VCS,可以确保代码的版本历史被妥善管理,并允许开发者轻松地与团队成员共享代码变更。

下面是一个简单的示例代码块,演示了如何在Git中进行基本的版本控制操作:

# 初始化Git仓库
git init

# 添加文件到暂存区
git add .

# 提交更改到仓库
git commit -m "Initial commit"

# 查看状态
git status

# 查看提交历史
git log

在上述脚本中, git init 创建了一个新的本地仓库。 git add . 将所有更改添加到暂存区,而 git commit -m "Initial commit" 提交这些更改,并附上一条信息说明这次提交。 git status 指令会告诉开发者哪些文件处于更改状态,而 git log 显示了提交历史。

通过这些基本的命令,开发者可以开始利用版本控制系统来管理代码变更。随着项目的成长和团队的扩展,将会有更复杂的命令和工作流程,比如分支管理、合并请求和标签管理等。

5. 调试与性能分析方法

5.1 实时调试技巧

5.1.1 使用断点和步进调试代码

在DSP开发过程中,调试是确保代码质量的关键步骤。实时调试是开发者经常使用的手段,可以迅速定位问题所在。使用断点是其中一种非常高效的方法,允许开发者在代码的特定行暂停执行,便于检查此时程序的状态。

在CCS中设置断点非常简单,只需双击代码编辑器左侧的边缘栏即可在当前行添加断点。开发者可以在程序执行到该点时暂停程序,进行变量检查、内存分析等操作。

graph TD
    A[开始调试] --> B[设置断点]
    B --> C[运行程序]
    C --> D{是否到达断点}
    D -- 是 --> E[检查变量/状态]
    D -- 否 --> F[继续执行]
    E --> G[步进调试]
    F --> H[执行到下一个断点]
    G --> I[继续执行]

5.1.2 运行时数据的监视和分析

监视运行时数据对于理解程序行为和性能至关重要。CCS提供了一个强大的监视窗口,开发者可以在其中实时查看和修改变量的值。这对于定位间歇性错误和优化程序性能特别有用。

监视窗口支持多种数据类型,包括基本数据类型、结构体、数组等。使用监视窗口可以有效地帮助开发者跟踪内存中的变量值变化,这在处理复杂的嵌入式系统时尤其重要。

5.2 性能分析工具的使用

5.2.1 CPU和内存使用率分析

性能分析工具是提高软件效率的关键。在CCS中,可以通过“分析工具”菜单访问多种性能分析工具,其中CPU和内存使用率分析器是两个核心工具。

CPU分析器可以帮助开发者了解程序的执行瓶颈,指出哪些函数或代码段占用了最多的CPU时间。内存分析器则能够揭示内存使用情况,包括泄漏、过度分配和不恰当的动态内存管理。

5.2.2 代码覆盖率和执行时间测量

代码覆盖率工具用于确保测试用例覆盖了代码的全部或大部分路径。在CCS中,可以设置覆盖率分析,并在程序运行后查看覆盖率报告,识别未被执行的代码段。

执行时间测量工具有助于衡量特定代码段的执行时间,这对于寻找程序的性能瓶颈非常有用。开发者可以详细分析哪些函数或代码区域需要优化,以达到更好的性能。

5.3 优化建议与最佳实践

5.3.1 代码优化的常见策略

代码优化是软件开发中永恒的话题。在DSP项目中,常用的优化策略包括循环展开、减少函数调用、优化内存访问顺序等。

循环展开可以减少循环的迭代次数和控制开销,减少函数调用可以减少栈操作,而优化内存访问顺序可以提高缓存命中率,降低内存访问延迟。

5.3.2 调试过程中的性能调优

在调试过程中进行性能调优是一种高效的方法。开发者可以通过实时性能分析工具找到瓶颈,然后对影响性能的代码段进行微观优化。

同时,开发者应避免过早优化,即在没有性能问题的情况下对代码进行优化。优化应该基于实际的性能数据,而不是猜测。

在调试与性能分析过程中,开发者应该注意持续学习,了解最新的优化技术,这样才能不断提高软件性能。通过实践和经验的积累,开发出更加高效和稳定的DSP应用程序。

6. 设备配置和插件扩展定制

在DSP开发中,针对特定的硬件设备进行配置是至关重要的环节,而插件扩展则为开发者提供了极大的灵活性和定制能力。本章节将详细介绍如何进行设备配置,以及如何根据项目需求安装和开发插件。

6.1 目标设备的配置与管理

为了使DSP开发环境能够与具体的硬件设备协同工作,开发者必须对目标设备进行正确配置。这一过程涉及到硬件连接、配置文件的创建和应用,以及设备的调试和测试。

6.1.1 连接和配置目标硬件

连接目标硬件是进行DSP开发的第一步,确保所有的硬件连接正确无误是成功配置的基础。对于大多数DSP开发者来说,这通常包括以下几个步骤:

  • 使用适当的电缆和接口将目标硬件连接到开发主机。
  • 为硬件设备提供必要的电源,确保设备能够稳定运行。
  • 检查并确认硬件指示灯或状态显示,以验证连接是否正常。

完成物理连接后,接下来就是配置目标硬件:

  • 启动CCS并打开目标硬件对应的项目。
  • 进入“Debug”菜单,选择“Connect Target”选项,然后选择适当的连接类型和目标设备。
  • 确认连接信息无误后,点击“Connect”按钮,CCS将尝试与目标硬件建立通信。

6.1.2 目标配置文件的创建与应用

为了使DSP环境能够适应特定的目标硬件和开发需求,创建目标配置文件是必不可少的。目标配置文件中包含了目标硬件的特定设置,如时钟频率、内存布局和I/O配置等。

  • 在CCS中,选择“File”菜单中的“New” -> “Target Configuration File”以创建一个新的目标配置文件。
  • 根据提示填写目标名称,选择目标硬件类型,并配置必要的参数。
  • 保存配置文件,并在需要的时候通过“File”菜单选择“Load Configuration”来加载目标配置。

一旦配置文件被创建并应用,开发者就可以在相同的设置下重复使用它,这大大简化了重复配置的复杂性。

6.2 插件的安装与定制开发

随着DSP项目复杂性的增加,标准工具集可能无法满足所有需求,这时就需要安装和开发插件来扩展开发环境的功能。

6.2.1 常用的第三方插件介绍

在DSP开发社区中,有许多第三方插件被开发出来,以增强CCS的功能。一些常用的插件包括:

  • Data Explorer :用于高级数据可视化和分析。
  • PowerTune :用于实时的性能分析和调试。
  • Code Composer Plugin for Jenkins :用于持续集成和自动化构建。

这些插件可以通过官方的插件市场或者社区论坛获取,并通常遵循简单的安装流程。

6.2.2 插件的安装和使用方法

大多数插件都遵循标准的安装流程:

  • 下载插件或从官方市场获取插件。
  • 在CCS中,选择“Help”菜单中的“Install New Software”选项。
  • 添加插件的更新站点地址,并按照指示完成安装。

安装完成后,某些插件可能需要在首次使用时进行配置,或需要重启CCS以使插件生效。

6.2.3 插件开发的基础知识

对于开发者来说,插件开发提供了无限的可能性。虽然这通常需要深入的CCS API知识和编程技巧,但基本的开发流程是:

  • 环境搭建 :设置开发环境,确保有CCS开发工具集。
  • 插件结构设计 :确定插件的功能和用户交互方式。
  • API调用 :使用CCS提供的API来实现插件的功能。
  • 测试和调试 :对插件进行充分的测试,确保稳定性和性能。
  • 打包和分发 :将插件打包,通过合适的渠道进行分发。

为方便起见,CCS提供了一个插件模板,开发者可以基于此模板开始自己的插件开发工作。

// 示例代码:一个简单的插件实现框架
public class MyPlugin extends AbstractUIPlugin {
    public static final String PLUGIN_ID = "com.mycompany.myplugin";
    private PluginPreferences prefs;

    @Override
    public void start(BundleContext context) throws Exception {
        super.start(context);
        prefs = new PluginPreferences();
        // 初始化插件设置...
    }

    @Override
    public void stop(BundleContext context) throws Exception {
        // 保存插件设置...
        super.stop(context);
    }

    public PluginPreferences getPreferences() {
        return prefs;
    }
}

在本章节中,我们已经介绍了如何对目标设备进行配置,如何通过第三方插件来扩展开发环境,以及如何进行基本的插件开发。设备配置确保了开发环境与目标硬件的兼容性,而插件的使用和开发则提供了强大的灵活性,以适应不同的开发需求。这为DSP开发者提供了更为便捷和高效的开发体验。

7. 版本控制与团队协作

在当今的软件开发过程中,版本控制和团队协作是提升开发效率和确保项目质量的关键因素。随着项目规模的扩大和团队成员的增加,采用有效的版本控制系统和协作流程能够帮助团队成员更好地协同工作,减少错误,加快迭代速度。

7.1 版本控制系统的集成使用

版本控制系统(Version Control System, VCS)能够记录项目文件的历史变更,方便开发者追踪问题、协作开发和维护不同版本的项目。目前,Git和SVN是流行的两种版本控制系统。

7.1.1 集成Git或SVN进行版本管理

对于需要集成版本控制系统的用户,首先需要选择合适的版本控制系统。Git以其分布式的特点受到了广泛的欢迎,而SVN则因其集中式的管理方式在一些企业中继续被使用。

  • Git的集成:
  • 在CCS中,通常通过Git命令行进行操作,尽管集成开发环境(IDE)如Eclipse可能提供一些图形化的界面。
  • 项目初始化:在项目目录中运行 git init 创建一个新的本地仓库。
  • 提交更改:使用 git add 添加变更, git commit 提交变更到本地仓库。
  • 远程同步:使用 git push 将本地更改推送到远程仓库, git pull git fetch 来获取远程仓库的更新。
# 初始化本地Git仓库
git init
# 添加文件到暂存区
git add .
# 提交更改到本地仓库
git commit -m "Initial commit"
# 推送更改到远程仓库
git push -u origin main
  • SVN的集成:
  • SVN的集成通常通过CCS的SVN插件来完成,支持图形界面的版本控制操作。
  • 检出项目:在CCS中,通过SVN插件选择项目URL,检出项目到本地。
  • 更新和提交:对文件进行更改后,使用SVN插件执行更新(Update)或提交(Commit)操作。

7.1.2 分支管理与合并冲突解决

在多人协作的项目中,分支管理策略有助于团队成员在不同的功能或修复上独立工作。

  • 分支创建和合并:
  • 对于Git来说,通常在特定的开发分支上工作,如 develop feature/*
  • 创建分支: git branch <branch-name> ,切换分支: git checkout <branch-name>
  • 合并分支:完成开发后,使用 git merge <branch-name> 将更改合并回主分支。
# 创建并切换到新的开发分支
git checkout -b feature/new-login
# 完成开发后切换回主分支并合并
git checkout main
git merge feature/new-login
  • 合并冲突解决:
  • 合并过程中可能会出现代码冲突,这时需要手动解决冲突。
  • 在冲突的文件中,Git会标识出冲突区域,需要开发人员决定保留哪些更改。
  • 解决完冲突后,需要将文件标记为已解决( git add <file-name> ),然后继续合并。
# 手动解决冲突后标记文件已解决
git add <file-name>
# 完成冲突解决后的合并
git commit -m "Resolve merge conflicts"

7.2 团队开发工作流程

良好的团队开发流程能够确保项目的顺利进行,包括定义明确的工作角色、任务分配、进度跟踪等。

7.2.1 规范团队的协作流程

  • 角色定义: 明确团队成员的角色,如项目经理、开发人员、测试人员等。
  • 任务分配: 通过工具如Jira或Trello来分配和管理任务。
  • 定期会议: 定期进行团队会议,更新项目进度,讨论问题和计划。

7.2.2 代码审查与持续集成实践

  • 代码审查: 代码审查是确保代码质量和团队成员交流的重要环节。
  • 在审查过程中,团队成员相互检查代码更改,确保代码的可读性和可维护性。
  • 可以使用代码审查工具如Gerrit,或者集成在Git仓库中的Pull Requests来进行。

  • 持续集成(CI):

  • 持续集成是指频繁地(一天多次)将代码集成到共享仓库中。
  • 通过CI,开发者可以快速发现集成错误,减少集成问题。
  • 可以使用Jenkins、Travis CI等工具来实施持续集成流程。

7.3 文档管理和知识共享

有效的文档管理和知识共享对于团队成员之间保持信息同步,以及新成员快速上手具有重要作用。

7.3.1 创建与维护项目文档

  • 文档编写: 开发过程中应不断更新项目文档,包括设计说明、用户手册和API文档等。
  • 文档共享: 使用Confluence、Google Docs等工具来存储和共享文档。

7.3.2 团队知识共享的平台与工具

  • 知识共享平台: 除了文档外,团队应建立问答、讨论的社区,如Slack、Stack Overflow等。
  • 培训与分享: 定期举行技术分享会议,让团队成员了解最新的技术动态和项目进展。
  • 技术博客: 鼓励团队成员在技术博客上发布文章,记录项目经验和知识点。

团队协作的效率直接影响到项目的成功率。通过合理的版本控制集成、规范的开发流程以及有效的文档管理和知识共享,团队不仅能够减少沟通成本,还能够提高代码质量,加速产品上市时间。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本教程深入解析了德州仪器(TI)推出的Code Composer Studio(CCS),这是一款专为数字信号处理器(DSP)和微控制器(MCU)应用程序开发设计的集成开发环境(IDE)。内容涵盖了CCS的安装与启动、用户界面的介绍、新项目创建、代码编写与编译、调试与分析、以及如何进行配置与定制。教程还包括了版本控制与团队协作方面的信息,目的是帮助开发者更高效地利用CCS开发工具,应对复杂DSP项目的挑战。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐