本章节主要讲解连接 wifi 后通过 http 实现 ota demo的实现。
连接 wifi 后进行 http 请求 ota demo 的实现,通过ui配网或者命令行配网,最终实现 http ota 固件升级
{SDK}\samples\http_ota
适用开发板:大模型开发套件
编译版型:csk6_duomotai_devkit
使用引脚:
注意:boot_partition 分区必需放在 flash 起始地址为 0 的地址
在 SDK 根目录(duomotai_ap
)下可通过执行以下指令编译OTA升级目标固件:
lisa zep build -b csk6_duomotai_devkit -S multiapp_compile_app -s samples/http_ota_demo -p
编译完成如下图所示:
在 SDK 根目录(duomotai_ap
)下可通过执行以下指令进行打包:
lisa zep sign -t imgtool
打包完成如下图所示:
访问聆思平台(LSPlatform)平台,在产品管理
中点击创建产品
并输入产品名。
选择自己创建的产品并打开,点击固件升级
,选择打包签名好的需要升级的固件,上传。
版本号可任意填写
注:本 demo 中的原始版本号固写为 v1.0.0
这里上传我们打包好的OTA升级固件zephyr.signed.bin
在zephyr.signed.bin
的根目录下通过执行以下指令获取 MD5 值:
certutil -hashfile zephyr.signed.bin MD5
点击发布并确认
设备 ID 是一个产品下的唯一设备标识,我们需要获取当前设备 ID 方便后续在云端配置,才能让设备鉴权通过实现端云交互。
cskburn 读取
cskburn desktop
是一款聆思推出的桌面烧录工具,在下载并安装 cskburn desktop 烧录工具后,双击图标运行软件:
1.点击串口下拉框,选择连接开发套件后识别到的串口编号;
2.点击获取信息
3.得到设备 ID
聆思平台只会对列表中的设备鉴权提供交互服务,因此需要将前面读取到的设备 ID 在设备管理
页面进行导入才能实现设备正常交互。
平台提供10个免费测试 ID 用于产品验证阶段测试使用,如需新增额度,请在平台联系商务
添加测试白名单
本 demo 通过宏定义用于表示不同的固件更新模式
BOOT_UPGRADE_TEST 0 #固件升级后,系统将在下一次重启时恢复到旧版本固件
BOOT_UPGRADE_PERMANENT 1 #固件升级后,系统将在下一次重启时永久使用新版本固件
在 SDK 根目录(duomotai_ap
)下可通过执行以下指令编译 bootloader:
lisa zep build -b csk6_duomotai_devkit -S multiapp_mcuboot -s .sdk/bootloader/mcuboot/boot/zephyr -p
编译完成如下图所示:
在命令行输入以下指令进行烧录:
lisa zep exec cskburn -s \\.\COMx -C 6 -b 1500000 0x000000 build/zephyr/zephyr.bin
请将命令行中的的 COMx 替换为开发套件在 PC 上对应的串口号(可通过设备管理器查看)。例如:
COM3
。
烧录完成如下图所示:
在 SDK 根目录(duomotai_ap
)下可通过执行以下指令编译 ap 固件:
lisa zep build -b csk6_duomotai_devkit -S multiapp_compile_app -s samples/http_ota -p
编译完成如下图所示;
在 SDK 根目录(duomotai_ap
)下可通过执行以下指令进行打包:
lisa zep sign -t imgtool
打包完成如下图所示:
在命令行输入以下指令进行烧录:
lisa zep exec cskburn -s \\.\COMx -C 6 -b 1500000 0x100000 build/zephyr/zephyr.signed.bin
烧录完成如下图所示:
选择以下其中一种方式完成配网:
点击设置
图示,滑动 WiFi 列表,选择想要连接的 wifi,输入密码:
点击右下角 √
按键即可连接 wifi,此时 wifi 列表界面上方显示所连接的 wifi 名,待机界面右上角 wifi 图标已正常,表示当前设备已处于联网状态。
注意:目前仅支持 2.4G 频段的 WIFI 网络接入,请选择 2.4G网络
注意:使用 iPhone 的个人热点
为开发板提供网络时,请启用手机配置中的【最大兼容性】
注意:部分路由器网络存在安全策略限制、不稳定等因素,出现联网故障时建议改用 2.4G 频段的手机热点进行尝试
连接开发板 CSK_USB
至电脑,访问聆思在线串口终端。
以连接到名称为mywifi
、密码为12345678
的 WIFI 为例:
命令行输入:
wifi connect mywifi 12345678
WiFi 功能指令:
连接指定 WiFi:wifi connect <ssid> <pwd>
断开连接:wifi disconnect
添加 WiFi 到列表:wifi add <ssid> <pwd>
删除 WiFi:wifi delete <ssid>
显示列表中的 WiFi:wifi list
若你配置网络遇到异常,可参照以下指引进行排查:
1.目前仅支持 2.4G 频段的 WIFI 网络接入,请选择 2.4G网络
2.使用 iPhone 的个人热点
为开发板提供网络时,请启用手机配置中的【最大兼容性】
3.部分路由器网络存在安全策略限制、不稳定等因素,出现联网故障时建议改用 2.4G 频段的手机热点进行尝试
将发布固件的产品接入开发板
完成后,可以在待机界面看到固件的当前版本以及检查更新
按键,点击检查更新
按键。检查到 v1.2 的版本更新,点击确认
,进行更新。
更新完成后显示请重启设备
,按压开发板上的复位(RST)进行重启,重启时间较长,请耐心等待。
注意:复位不能正常重启设备时,请重新断电上电再进行复位。
以下代码与注释已省略一部分非关键接口代码,主要呈现示例的主业务流程与主要接口的使用。
├── boards //版型配置
│ └── csk6_duomotai_devkit.overlay
├── CMakeLists.txt
├── Kconfig
├── prj.conf
├── README.md
├── resources //资源文件
│ ├── mcu_boot.bin //mcuboot固件
│ └── zephyr.signed.bin//云端测试固件
├── sample.yaml
└── src
├── fonts //字体
├── http_sample.c//http请求相关代码
├── icon //图标
├── lcd_touch_demo.c//显示器驱动相关代码
├── main.c //主函数
├── ota_download.c //OTA相关代码
├── ota_download.h
└── ui //ui相关代码
1.初始化 Wi-Fi 模块
wifi_init
2.初始化 http 服务
lisa_http_init
3.建立 http 请求
lisa_http_perform
4.清除 http 服务
lisa_http_cleanup
5.打开指定分区
flash_area_open
6.擦除指定分区
flash_area_erase
7.升级标志
boot_request_upgrade
8.关闭分区
flash_area_close
9.搜索 wifi 列表
csk_wifi_scan_ap