主题中讨论的其他器件:CC3235SF、 CC3220SF
我正在使用 MQTT 客户端示例代码 来测试 OTA 功能。 在 Launchpad 上按下 SW2开关后、 收到错误消息"[OTA-GitHub:error] HTTP Response Error:400"。
随附图像供参考。
请检查并告诉我有什么问题。

此致、
曼朱纳特
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.
我正在使用 MQTT 客户端示例代码 来测试 OTA 功能。 在 Launchpad 上按下 SW2开关后、 收到错误消息"[OTA-GitHub:error] HTTP Response Error:400"。
随附图像供参考。
请检查并告诉我有什么问题。

此致、
曼朱纳特
您好!
很抱歉、我不理解、您能详细说明一下吗。
以下是 otauser.h 代码、供您参考。
/*
*版权所有(C) 2016-2021、德州仪器(TI)公司
保留所有权利。
*
*以源代码和二进制形式重新分发和使用,有或没有
*修改,在以下条件允许的条件下
*满足:
*
**源代码的重新分发必须保留以上版权
*请注意,本条件清单和以下免责声明。
*
**二进制形式的再分发必须复制上述版权
*通知,本条件清单和下述免责声明在
*与分发一起提供的文档和/或其他材料。
*
**德州仪器公司名称或公司名称
*其贡献者可用于认可或推广派生的产品
*从本软件未经事先书面许可。
*
*本软件由版权持有者和贡献者"按原样"提供
本站明确声明不作出任何种类的所有明示或暗示的保证,包括但不限于关于适销性、适用于
*对特定产品的适销性和适用性的暗示保证
*免责声明。 在任何情况下,版权所有者或
*贡献者对任何直接、间接、偶然、特殊、
*示例性或后果性损害(包括但不限于:
*替代产品或服务的采购;使用、数据或利润的损失;
*或业务中断)然而造成和任何责任理论,
*无论是合同,严格的责任,或侵权(包括疏忽或
*其他)因使用本软件而产生的任何原因、
*即使被告知此类损害的可能性。
*/
//*****
//包括
//*****
//标准包括
#ifndef OTA_SETTINES_H
#define OTA_SETTINGS_H
/*
*定义允许的最低严重性级别。
*使用 E_debug 启用 OTA 内部消息
*选项: e_trace、E_debug、E_info、E_warning、E_error、 E_致命
*/
#define OTA_IF_DEBUG_LEVEL E_INFO
#define cloud_ota_support (1)// HTTP 客户端-从(远程)文件服务器下载内容
#define local_ota_support (0)// HTTP 服务器-从 HTTP 客户端上传(移动设备连接到本地网络)
#define internal_update_support (0)//文件系统-从本地(tar)文件加载内容
#define OTA_VERSION_LEN 14 /*"YYMMDDHHMMSS"的大小*/
#define OTA_URL_LEN 900
#if cloud_ota_support
/**
*编译 Github 和 Dropbox 以便在代码中使用
*/
#define OTA_VENTER_GITHUM_SUPPORT (1)
#define OTA_VENTER_DBOP_SUPPORT (1)
#define use_TI_example
#if OTA_VENTER_GITHUB_SUPPORT
#ifdef use_TI_example
/*以下是中项目的 GitHub 参数:
* github.com/.../SEC_OTA_CC3220SF
*/
#define GitHub_user_name "manjunathg13"
#define GitHub_USER_TOKEN_B64 "xxxxxxxxxxxxxxxxxxxxxxx"
#define GitHub_user_repo "OTAGitHubTest"
#define GitHub_user_path"">github.com/.../OTAGitHubTest.git"
#else
//#define Hub_user_name // GitHub 用户名
//注意:个人访问令牌应以 base64格式提供。
//要生成 base64格式,请使用以下 bash 命令(可接受任何其他 base64转换器):
//"echo (回波)" | base64"
//例如"echo GHP_HcxGxktQb4xmpHpHpNkzrHT66WrFI3l0l5x9h | base64"
//重要提示:确保令牌具有"No Expiration"(无过期)启用只读访问(不应启用 COPE)
//#define GitHub_USER_TOKEN_B64 // GitHub 用户令牌 Base64格式
//#define GitHub_user_repo // GitHub 存储库名称
//#define GitHub_USER_PATH //存储库中与
//包含 tar 文件的文件夹
#ifndef github 用户名
#error "请在\"ota_settings.h\"(以上)中定义您的个人 GitHub 帐户参数"
#endif
#endif
#endif /* ota_vender_gitHub_support */
#if OTA_VENTOR_DBOP_SUPPORT
#ifdef use_TI_example
/*以下是中项目的 Dropbox 参数:
www.dropbox.com/.../SEC_OTA_CC3220SF
*/
#define Dropbox_USER_TOK"apCeaH3vKRsAAAAAAAAAAAAd6VJmPMR-vsXc54ce3kjpVMO5oA6nv53eV5IWLpCuHd"
#define DROP_USER_PATH "SEC_OTA_CC3235SF"
#else
//#define Dropbox_user_token // Dropbox 应用令牌
//#define Dropbox_USER_PATH //应用程序内与
//包含 tar 文件的文件夹
#ifndef dropbox_user_token
#error "请在\"ota_settings.h\"(上图)中定义您的个人 Dropbox 帐户参数"
#endif
#endif
#endif /* ota_vender_dropbox_support */
#else
#define OTA_VENTER_GITHUM_SUPPORT (0)
#define OTA_VENTER_DBOP_SUPPORT (0)
#endif // cloud_ota_support
/*更多 OTA 设置*/
#define OTA_DISABLE_DELAY_PROTECTION (0)//如果设置为(1)-不会验证 OTA 版本
//可以安装较旧的版本。
#define OTA_COMMIT_TIMEOUT 50 //看门狗超时(以秒为单位、最大值:104秒)
/*以下是一个内部定义-
*请勿更改和更新上述支持的 OTA 方法*/
#define OTA_support (cloud_OTA_support|local_OTA_support|internal_update_support)
#endif /* OTA_SETTINES_H */
此致、
曼朱纳特
您好!
正如您在 URI: PrintOut (UI:打印输出)下方所看到的那样,URL 看起来很奇怪(中间是 https:)。
您需要提供 tar 文件所在的正确 URL。
GitHub_user_name 和 GitHub_user_repo 看起来正常、但 GitHub_user_path 不是。
代码中的 URI 来自:
#define Request_URI "/repos/" gitHub_user_name "/"gitHub_user_repo "/content/"gitHub_user_path
您需要确保最终的 URL 是 tar 文件所在的位置。
此致、
什洛米
您好!
您可以看到 request_URI 与 tar 文件的实际位置并不相关、这就是它失败的原因。
您是否可以仅针对测试手动修改它? 例如,更改" #define Request_URI "/repos/" gitHub_user_name "/"gitHub_user_repo "/content/"gitHub_user_path" 正确的位置(即您发送的最后一张图片中的位置)。 我认为 URL 还包括您的案例中的实际文件名 cc3220sf_mqtt_client_tirtos7_ota.tar)。
什洛米
您能否附加您的 OTA_VENTER_GitHub.c 文件?
我想看看 HOSTNAME。
基本上,如果你在浏览器中键入以下内容,你应该得到一个带有文件列表的 json。
https://api.github.com/repos/manjunathg13/OTAGitHubTest/contents/OTA_SEP_07。
这与代码中的语法完全相同。
这是我得到的结果、看起来不错:
[ { "名称":"cc3220sf_mqtt_client_tirtos7_ota.tar"、 "路径":"ota_SEP_07/cc3220sf_mqtt_client_tirtos7_ota.tar"、 "SHA":"D5479c4d9818ca51d64a98e7d6b12e2372534277"、 "尺寸":378880、 "url":"https://api.github.com/repos/manjunathg13/OTAGitHubTest/contents/OTA_SEP_07/cc3220sf_mqtt_client_tirtos7_ota.tar?ref=main"、 "HTML_URL":"https://github.com/manjunathg13/OTAGitHubTest/blob/main/OTA_SEP_07/cc3220sf_mqtt_client_tirtos7_ota.tar"、 "Git_url":"https://api.github.com/repos/manjunathg13/OTAGitHubTest/git/blobs/d5479c4d9818ca51d64a98e7d6b12e2372534277"、 "download_url":"https://raw.githubusercontent.com/manjunathg13/OTAGitHubTest/main/OTA_SEP_07/cc3220sf_mqtt_client_tirtos7_ota.tar"、 "类型":"文件"、 "_links":{ "自身":" https://api.github.com/repos/manjunathg13/OTAGitHubTest/contents/OTA_SEP_07/cc3220sf_mqtt_client_tirtos7_ota.tar?ref=main"、 "Git":https://api.github.com/repos/manjunathg13/OTAGitHubTest/git/blobs/d5479c4d9818ca51d64a98e7d6b12e2372534277"、 "HTML":"https://github.com/manjunathg13/OTAGitHubTest/blob/main/OTA_SEP_07/cc3220sf_mqtt_client_tirtos7_ota.tar" } }]
请尝试了解流程中的哪个位置会中断、并给出400错误。
您好!
如果我更新#define Request_URI "">github.com/.../cc3220sf_mqtt_client_tirtos7_ota.tar"
在 UART 中获取"[mqtt_app::info] sl_socket_ASYNC_EVENT 套接字事件2"。 请查看随附的图像以供参考。 
您好!
好的、至少我可以看到 json 文件很好。
请保留自动生成 URI 的常规设置。
基本上、它的工作方式是接收 json 文件、然后解析并使用 download_URL。
要了解更多信息、您需要准确地了解失败的地方(获取 json、download_url 等)。
我建议通过 otauser.h 中的 SL_ENABLE_OTA_DEBUG_TRACES 打开内部 OTA 调试。
此致、
什洛米