本章节主要讲解连接 wifi 后通过 http 实现 ota demo的实现。
连接wifi后进行http请求ota demo的实现,通过ui配网或者命令行配网,最终实现http ota固件升级
{SDK}\samples\http_ota
适用开发板:大模型开发套件
编译版型:csk6_duomotai_devkit
使用引脚:
/* for bootloader */
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x0 0x100000>;
read-only;
};
/* application image slot*/
slot0_partition: partition@100000 {
label = "image-0";
reg = <0x100000 0x200000>;
};
slot1_partition: partition@300000 {
label = "image-1";
reg = <0x300000 0x200000>;
};
/* swap slot: 128KB */
scratch_partition: partition@500000 {
label = "image-scratch";
reg = <0x500000 0x400000>;
};
注意:boot_partition分区必需放在flash起始地址为0的地址
访问聆思平台(LSPlatform)平台,在产品管理
中点击创建产品
并输入产品名。
选择自己创建的产品并打开,点击固件升级
,选择打包签名好的需要升级的固件,上传。
版本号可任意填写
注:本demo中的原始版本号固写为v1.0.0,更新版本号固写为v1.1.1
这里选择demo的resources目录中打包好的固件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的设备ID、product_ID、secret_ID均固写,任何开发板都可run本demo,如有需求请按文档自行修改。
在VSCode中打开工程,打开http_ota\src\ui\ui.c:
打开产品配置读取产品product_ID、secret_ID,打开http_ota\Kconfig:
本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 \\.\COM6 -C 6 -b 1500000 0x000000 build/zephyr/zephyr.bin
烧录完成如下图所示:
在 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 \\.\COM6 -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.1.1的版本更新,点击确认
,进行更新。
更新完成后显示请重启设备
,按压开发板上的复位(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