This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220S-LAUNCHXL:电池供电智能锁 CCS 错误

Guru**** 1624230 points
Other Parts Discussed in Thread: UNIFLASH, CC3220S, CC3120
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/721922/cc3220s-launchxl-battery-powered-smart-lock-ccs-errors

器件型号:CC3220S-LAUNCHXL
主题中讨论的其他器件:UNIFLASHCC3220SCC3120

您好!

因此、我一直按照 http://www.ti.com/lit/ug/tidue59/tidue59.pdf (第28-30页)上的说明在 CCS 中构建项目。 但我只得到了一组错误。 我的所有工程都已导入 CCS 工作区、并且属性已根据说明进行更改。 我已附上我的所有错误的日志。 如何在 CCS 中启动并运行该项目而不会出现任何问题?

e2e.ti.com/.../cc2640-build-errors.txt

e2e.ti.com/.../OTA-build-errors.txt

e2e.ti.com/.../wifi-doorlock-build-errors.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jack:

    您安装了哪些 SDK 版本(适用于 Wi-Fi SDK、BLE SDK 和所有插件)? 看起来有些文件未出现在工程所需的位置。

    您能否确认您复制了 WiFi_Doorlock_... 导入到 v2.10 SDK 中、然后再将其导入到您的工作区中?
    如果您打开 WiFi_Doorlock_... 然后查看"General -> Products"页面/TAB、项目引用的是哪个 SDK 版本?

    对于 OTA 库、能否确保 CdnVendors 文件夹中的所有文件都正确链接到工程?

    谢谢、
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我安装了以下 SDK 版本。 是否可以将项目更新到这些 SDK 版本?

    simplelink_cc32xx_sdk_2_20_00_10
    simplelink_cc2640r2_sdk_2_20_00_49
    simplelink_sdk_ble_plugin_1_40_00_42
    sail _1_20_00_02

    在导入到工作区之前、WiFi_Doorlock 项目位于 SDK 中。 它引用了上面列出的 SDK 版本。

    如何检查 CDN 供应商文件夹中的所有文件是否正确链接到项目?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    是的、应该可以将工程更新到这些 SDK 版本、但我们目前不打算执行和发布这种操作。 由于该设计的软件是在最新的 SimpleLink 器件 SDK 之前发布的、因此该设计所基于的 SDK 版本较旧。 请下载之前的 SimpleLink CC32XX 和 CC2640R2 SDK、以开箱即用构建和运行示例。

    如果您在 OTA 工程中打开 CdnVendors 文件夹、其外观如下所示、您应该会觉得不错:

    如果文件上有警告标记、则它们未正确链接。

    此致、

    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 事实证明、由于我的路径 ws 路径有一个空白空间、我不得不将其删除。 我也不应该将 OTA 和 Simplelink 项目"复制"到 ws 中。 我现在有几个关于 Uniflash 的问题。

    根据第32页,它说我必须包括一些用户文件。 对于 eclipsecert.der,我在 SSL Scanner 上搜索了“eclipse.com”。 但是、我不确定从下面的屏幕截图下载哪个文件。 您能告诉我要下载哪个文件吗?

     digicertca.der 也是如此(我搜索的是 github.com)。 您能告诉我应该下载哪个文件吗?

    我还注意到 otauser.h 要求:

    #define OTA_SERVER_ROOT_CA_CERT " DigCert_High_Assurance_CA.der" 

    但是,第32页的表没有为此指定任何用户文件。 对此、我应该怎么做?

    最后、这是我的 Uniflash 用户文件页面的外观您能验证这是否到目前为止看起来是正确的吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    您将需要下载每个链(底部一个)的根证书、因为这是设备在建立 TLS 连接时验证服务器发送的链所需的。

    我认为目前有效的 Eclipse 认证序列号应为 :44 af b0 80 d6 A3 27 BA 89 30 39 86 2e F8 40 6B

    DigiCert 序列号应为 :02 AC 5c 26 6a 0b 40 9b 8f 0b 79 f2 ae 46 25 77

    OTA_SERVER_ROOT_CA_CERT 定义仅需更新、以匹配在将 Github 根 CA 编程到器件的文件系统时为其指定的名称。 这就是器件知道如何将其用于该插座的方法。 例如、我将文件放在顶层目录中(在这里您似乎拥有虚拟证书文件)、并为其命名为"digicertca.der"、因此我在 otauser.h 文件中的定义如下所示:

    #define OTA_SERVER_ROOT_CA_CERT " digicertca.der" 

    是的、到目前为止、您的 UniFlash 用户文件看起来是正确的。 添加 Eclipse 物联网根 CA 和 Github 服务器根 CA 后、应进行设置。

    此致、

    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。 我有几个关于生产的问题。

    从第32页开始:"虚拟证书和密钥只用于演示和开发目的。 开发人员有责任在需要时获取用于代码签名和 SSL/TLS 的实际证书和密钥。"

    我应该从何处获得这些实际证书? 建议在什么地方获得这些证书+如何获得?

    这些证书是否有我必须担心的费用?  

    我还在第37页的底部看到这一点:"演示不支持相互身份验证、因为没有为 Eclipse 代理配置机制来标识 CC3220S 器件。 在使用实际服务器进行生产时、用户可以添加相互身份验证。"

    您能解释一下如何添加相互身份验证吗?

    最后,在第37页的最下面:"在开发过程中使用证书集合时,必须禁用证书目录验证步骤,因为它不包括所有实际的受信任根证书颁发机构。 对于生产系统、必须使用生产证书目录、TI 建议启用证书目录验证和域名验证。"

    您能否解释如何启用证书目录验证和域名验证?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jack:

    通常、S 和 SF 器件需要代码签名证书、并且必须从器件支持的证书颁发机构之一购买、以便安全引导过程正常工作。 可在目录所在 SDK 的 readme.html 中找到该列表(对于当前 SDK、simplelink_cc32xx_sdk_2_20_00_10\tools\cc32xx_tools\certificate-catalog)。 有关详细信息,我建议您阅读我们创建的《证书处理指南》:
    http://www.ti.com/lit/swpu332

    证书到期不应成为问题。 器件无论如何都无法检查、因为无法保证每个安全应用程序都使用 RTC、或者 RTC 设置为每次引导的实际当前日期/时间。

    通过使用支持此功能的服务器(设置为根据在服务器中注册的证书验证客户端)和设置添加客户端证书/私钥的套接字选项、可以启用相互身份验证。 有关更多信息、请参阅网络处理器指南的第6.5.3节:
    http://www.ti.com/lit/swru455

    默认情况下、套接字上启用受信任的证书目录。 对于域名验证,可以使用 sl_setsockopt()函数设置一个特定的选项来启用该选项。 您需要设置选项并提供包含您要连接的域名的字符串。 请参阅上述网络处理器指南的6.5.4和6.5.6。

    对于 MQTT 代码(在门锁示例中应用了该代码)、它略有不同。 MQTT 库可处理为您设置套接字(使用主机驱动程序 API)、因此这些设置通过 MQTT 客户端上下文结构中的标志进行控制。 查看 MQTT_CLIENT_TASK_c 文件顶部的 MQTT_ClientCtx 中的标志。 请注意、如果您希望使用域名验证、则应根据实际地址而不是 IP 地址进行连接。

    此致、
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 我还有几个相关的问题

    对于相互身份验证、对于包含相互身份验证的门锁示例、建议使用哪些服务器?

    为此:"在开发过程中使用证书集合时,必须禁用证书目录验证步骤,因为它不包括所有实际的受信任根证书颁发机构。"

    我需要在 Uniflash 中添加哪些缺失的文件?

    我需要在 CCS 中添加什么代码?

    对于 下面显示的 MQTT_ClientCtx 端口号选项、我是否必须根据不同的服务器更改这些选项-或者是否应该将它们保留为原样?


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    我们的终端不建议使用什么服务来代替 Eclipse 物联网。 我们使用 eclipse 物联网来演示该设计、因为它易于启动和测试。 如果您正在寻找实际产品的替代产品、我建议您查看我们的云合作伙伴之一、我们为其提供了 SDK 插件。 您可以使用 SDK 插件快速启动并运行云服务。

    如果要在套接字连接上使用目录验证、则需要移至生产目录(而不是游乐场目录)。 但是、一旦您进入生产目录、您就无法再使用虚拟证书链对 MCU 映像进行签名。 为此、您必须拥有自己的代码签名证书。

    建立并运行生产目录后、您只需从 MQTT_ClientCtx 中删除 MQTT_DEV_NETCONN_OPT_SKIP_CERTIFICATE_catalog_verification 标志、设备便可在建立连接时执行此步骤。

    这些端口号通常保留用于 MQTT。 您不可能需要更改它们。

    最棒的
    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。 对于生产中的 OTA 证书、我应该从何处获取这些文件? 或者、我应该只使用虚拟文件吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jack:

    OTA 证书未绑定到证书目录。 您可以创建自己的或购买它们来签署 OTA 更新。 您不应在生产中使用任何虚拟文件、因为通过 SDK、每个人都可以使用私钥。

    此致、
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我使用名为"ota_vender_key.pem"的 OTA 文件时、我是否必须更改代码才能调整此文件名?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    应用程序不引用私钥、因为它不需要私钥。 它只需要公钥。 如果移动到您自己的密钥对、则必须使用您自己的证书替换 dummy_ota_vender_cert 文件、并更新 OTA 库以引用新文件名(如果不同)。

    此致、
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     

    门锁示例是否使用 IPv4或 IPv6? 如果使用 IPv4、如何将其更改为使用 IPv6?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    门锁示例使用 IPv4。 有关 IPv6地址的信息、请参阅 CC3120/CC3220网络处理器指南的第4.3.2节-

    http://www.ti.com/lit/swru455

    最棒的
    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Benjamin Moore。 我看到门锁示例根据 www.ti.com/.../tidue59.pdf 的第2.4.8.2.2节使用"简单网络时间协议"。 如何从该处获取当前日期和时间以用于我自己的目的(我可以使用什么代码)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    器件使用 SNTP 检索的当前日期和时间用于设置器件 RTC。 可以使用 simplelink 主机驱动程序 API 中的 sl_DeviceGet ()函数读回日期和时间。 请参阅网络处理器编程人员指南的第2.7节-

    http://www.ti.com/lit/swru455

    最棒的
    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在尝试测试门锁示例、但我不知道如何访问 Wifi Starter Pro 应用程序上的"MQTT 工具"页面。 如何访问此页面?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    这不是 SimpleLink Wi-Fi Starter Pro 移动应用程序的一部分。 它是单独的第三方 MQTT 客户端应用程序。 这个只是一个示例。 可以连接至 eclipse 代理的任何 MQTT 客户端都应正常工作。

    如果您使用的是 Android 智能手机、我建议您查看 MyMQTT。 它可让您保存主题+消息组合、从而轻松尝试不同的功能。

    最棒的

    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试测试了 OTA。 但是、它不起作用。

    我在 TeraTerm 中收到此消息:

    我在 otauser.h 中的代码是:

    /* Github 供应商信息*/
    #define OTA_VENDOR_ROOT_DIR "/repos/gearsmotion789/OTA
    #define OTA_VENDOR_TOKEN "齿轮烟雾789" 

    我的 GitHub 报告如下所示:

    1.如何解决这个问题?

    2. OTA 失败后、Doorlock 程序似乎也不再工作。 我尝试发布了另一条消息、但 CC3220没有对此做出响应。 如何解决此问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jack:

    从屏幕截图中、您似乎已正确配置 OTA_VENDOR_DIR、OTA_VENDOR_ROOT_DIR 和 OTA_VENDOR_TOKEN。

    您能否打开 otauser.h 文件并查看是否未对#define SL_ENABLE_OTA_DEBUG_TRACES 进行注释? 如果可能、这将有助于从库中的调试消息中获取更多信息。

    在此参考中、cloud_ota_task 不能完全从其错误状态中恢复。 从输出中可以看到错误打印到终端是由 cloud_ota_task.c 中的 ReportError()函数生成的 此函数返回一个(-1)、该函数会使 OtaTask 进入一个 while (1)循环(LOOP_FOREVER)、在该循环中、它不会在技术上被阻止、并且可以对调度程序执行 hog。 您应该更新任务以不进入此循环。

    最棒的
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Benjamin Moore (3729619)我已启用 SL_ENABLE_OTA_DEBUG_TRACES。 以下是调试消息:

    e2e.ti.com/.../4061.log.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    如果您查看日志中的输出,则在解析 Github 返回的文件名元数据时,该过程似乎会失败。 您上载的文件在元数据中按预期存在、但从缓冲区提取文件时似乎出错。

    我认为这与返回缓冲区的长度有关。 它可能比器件预期的最大大小更长、这就是它无法正确识别文件名的原因。

    在 OtaJson.c 中将#define MAX_metadata_filename 设置为什么?

    谢谢、

    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将其设置为100。 下面是一些详细信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jack:

    请尝试增大该值。 您可以从测试150开始、但您可能需要提高、因为该值基于我的 Dropbox 演示。 元数据的格式可能略有不同/更长。


    最棒的
    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     谢谢 Benjamin Moore。 它现在可以工作了。

    返回到 OTA 失败时、当我删除 LOOP_FOREVER 语句时、程序仍会继续运行。 但是、当我再次尝试进行 OTA 时、我只能得到以下内容。 不会发生任何情况。 如何解决此问题?

    此外、我注意到、当我复位 CC3220S launchpad 然后检查状态时、它会复位回"解锁状态"。 如何使其保存复位后的最后一个状态?

    最后、我注意到程序中的时区设置不正确。 我不住在"中央时区"。 我可以在代码中的何处更改此参数?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jack:

    将 OTA 任务更改为不会因故障而卡住后、请确保实施了一种机制、将 OTA 状态机重置为等待消息触发更新尝试的状态。

    2.您可以通过以下方法更改示例:(a)添加检测启动时锁定状态的机制,并将其写入值;或(b)将最后已知状态存储在文件系统的文件中(如果您的测试只需要这一点)。

    3.时区在示例中是静态定义的,而不是根据系统接收到的其它信息动态设置。 更新 Get Time 函数以使用执行 SNTP 时适合您的时区定义

    最棒的
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.您是否有"将 OTA 状态机重置为等待消息触发更新尝试的状态"的示例代码?
    2.您是否有"将最后已知状态存储在文件系统上的文件中"的示例代码?
    3.当您说"示例中的时区是静态定义的"时,这个定义被称为什么,它位于哪个文件中?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jack:

    1.不 您必须处理实现这一点。
    2.查看网络处理器编程人员指南的第7章、了解有关如何使用主机驱动程序 API 的文件系统模块的示例
    定义为 network_if.c 的 settime()函数内的 CLOCKSYNC_TIMEARE_CENTRAL

    最棒的
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于1、您知道"云 OTA"示例中的代码允许 OTA 复位吗?  通过这种方式、我可以将该代码用于锁定示例代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jack:

    云 OTA 示例的设计类似、这样来自事件处理程序的错误代码会导致应用程序在 while (1)中结束。 您应根据应用需求设计要重置的任务。 通常、您需要停止线程使用的异步计时器、清除队列中的任何事件、并将上下文重置为空闲状态(或其中一个等待状态、具体取决于连接状态)。

    有关 OTA 库和过程的更多信息、请参阅 OTA 应用报告-
    http://www.ti.com/lit/swra510

    最棒的
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    如果在 GitHub 上找不到 tar、云 OTA 示例不会卡住。 但是、如果在 GitHub 上找不到 tar、门锁示例会卡住。 因此、我想问云 OTA 用于重启的代码是什么。 您知道原因吗? 门锁没有云 OTA 中的代码是什么?