首先原理:
以MQTT协议+HTTP协议从阿里云获取固件升级
其次是资源:
Linkkit Core说明文档:https://www.yuque.com/aliyun_iot/product/c-sdk
Linkkit Core仓库地址:https://code.aliyun.com/linkkit/AiotCore-C-SDK.git
先把SDK下载下来
复制代码
1git clone https://code.aliyun.com/linkkit/AiotCore-C-SDK.git
下载后
复制代码
1tree
可见
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159├── demo │ ├── bc35 │ │ ├── bc35_sys.c │ │ ├── nwk_demo.c │ │ ├── nwk_demo.h │ │ └── README.md │ └── linux │ ├── bind_demo.c │ ├── bind_reset_demo.c │ ├── coap_client_demo.c │ ├── coap_cloud_demo.c │ ├── coap_server_demo.c │ ├── dynreg_demo.c │ ├── http_demo.c │ ├── linux_sys.c │ ├── linux_sys.h │ ├── nwk_demo.c │ ├── ota_demo.c │ ├── preauth_demo.c │ ├── pub_qos0_demo.c │ ├── pub_qos1_demo.c │ ├── security_nwk_demo.c │ ├── sub_demo.c │ ├── unsub_demo.c │ ├── wifi_demo.c │ ├── wifi_smartconfig_bind_demo.c │ ├── wifi_softap_bind_demo.c │ ├── wifi_softap_demo.c │ ├── wifi_softap_dingtalk_demo.c │ ├── wifi_softap_m2m_demo.c │ └── wifi_softap_msgroute_demo.c ├── include │ ├── aiot_bind_api.h │ ├── aiot_coap_api.h │ ├── aiot_coap_cloud_api.h │ ├── aiot_errno.h │ ├── aiot_log_api.h │ ├── aiot_mqtt_api.h │ ├── aiot_ota_api.h │ ├── aiot_std.h │ ├── aiot_sys_callback.h │ └── aiot_wifi_api.h ├── lib │ ├── aarch64-poky-linux-gcc-5.3.0 │ │ ├── libaiot_sdk.a │ │ └── libaiot_sdk_wifi.a │ ├── android │ │ └── android-ndk-r16b │ │ └── arm-linux-androideabi-gcc-4.9.x │ │ ├── libaiot_sdk.a │ │ └── libaiot_sdk_wifi.a │ ├── arm-linux-gcc-5.4.0 │ │ ├── libaiot_sdk.a │ │ └── libaiot_sdk_wifi.a │ ├── arm-xm-linux-gcc-4.9.2 │ │ ├── libaiot_sdk.a │ │ └── libaiot_sdk_wifi.a │ ├── BC35G │ │ ├── libaiot_sdk.a │ │ └── libaiot_sdk_wifi.a │ ├── gcc-linaro-arm-linux-gnueabihf-raspbian │ │ ├── libaiot_sdk.a │ │ └── libaiot_sdk_wifi.a │ ├── ia32-ubuntu-gcc-5.5.0 │ │ ├── libaiot_sdk.a │ │ └── libaiot_sdk_wifi.a │ └── ia64-ubuntu-gcc-5.5.0 │ ├── libaiot_sdk.a │ └── libaiot_sdk_wifi.a ├── nwk-demo ├── ota-demo ├── README.md └── user_manual.zip
除了最下面两个demo是我自己编译的执行文件,其他应该是都有的。
其中
复制代码
1gcc-linaro-arm-linux-gnueabihf-raspbian
这个是官方人员编译的针对树莓派和linux做的编译库,直接用这个就可以,下面这个也行。我这里就直接用上一个。
复制代码
1arm-linux-gcc-5.4.0
ota_demo.c就是OTA的demo文件,有了库,直接编译demo文件就可以用了,在此之前需要改下demo文件里的三元组(自行百度)。打开ota_demo.c文件,可见
复制代码
1
2
3
4
5
6
7
8char *product_key = "shfaufdasnui"; char *product_secret = "rgfh6kjanksfamhifniasoif"; char *device_name = "egfwrehh"; char *device_secret = "fewgrethryyjtukukuyukykuyukyu";
其中第二段不要管,另外3个就是三元组的内容(我写的是乱码),然后查看阿里云上注册的设备。
设备注册自己百度,有需求留言看需求再上传。
把实际内容复制到程序里。
然后就是编译文件
复制代码
1
2gcc -o ota-demo demo/linux/ota_demo.c demo/linux/linux_sys.c lib/gcc-linaro-arm-linux-gnueabihf-raspbian/libaiot_sdk.a -lpthread -Iinclude
运行
复制代码
1./ota-demo
可见MQTT连接成功
复制代码
1
2
3[_linux_nwk_tcp_establish:142] establish tcp connection with server(host='a1yP0YEzEId.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[1883]) [_linux_nwk_tcp_establish:177] success to establish tcp, fd=3 [SDK][_mqtt_sublist_insert:672]topic:/ota/device/upgrade/a1yP0YEzEId/example1, data packet handle insert
复制代码
1
2提示:做完这一步阿里云上设备应该是在线的。
然后就是再阿里云上操作上传固件
选择新增固件然后按图填写
都会有对应提示,固件有规定格式,我这里把源文件改成.bin作为固件上传了。
确定后,验证固件
点击批量升级按提示和需要填写
确定,树莓派端可见
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50receive new firmware url : https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/93612ac9cf19d72cbd01512c23e14e95/ck7aab13200013m7kjgl1y49z.bin?Expires=1583230211&OSSAccessKeyId=cS8uRRy54RszYWna&Signature=fZUu9rpqJe1HSPgj0EYCmkwf%2Faw%3D size : 7461 version : 2.0.0 sign method: Md5 sign : 0c97865f44cfe62ee24197f8e0ef8cb0 [_linux_nwk_tcp_establish:142] establish tcp connection with server(host='iotx-ota.oss-cn-shanghai.aliyuncs.com', port=[80]) [_linux_nwk_tcp_establish:177] success to establish tcp, fd=4 [SDK][aiot_http_send:318]http request header: [SDK][aiot_http_send:319]GET /ota/93612ac9cf19d72cbd01512c23e14e95/ck7aab13200013m7kjgl1y49z.bin?Expires=1583230211&OSSAccessKeyId=cS8uRRy54RszYWna&Signature=fZUu9rpqJe1HSPgj0EYCmkwf%2Faw%3D HTTP/1.1 Host: iotx-ota.oss-cn-shanghai.aliyuncs.com Range: bytes=0- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip, deflate [SDK][aiot_ota_download:431]firmware download started ota download start [SDK][aiot_http_recv:413]HTTP/1.1 206 Partial Content [SDK][aiot_http_recv:413]Server: AliyunOSS [SDK][aiot_http_recv:413]Date: Mon, 02 Mar 2020 10:10:11 GMT [SDK][aiot_http_recv:413]Content-Type: application/octet-stream [SDK][aiot_http_recv:413]Content-Length: 7461 [SDK][aiot_http_recv:413]Connection: keep-alive [SDK][aiot_http_recv:413]x-oss-request-id: 5E5CDB8332BE4E38328B97EF [SDK][aiot_http_recv:413]Content-Range: bytes 0-7460/7461 [SDK][aiot_http_recv:413]Accept-Ranges: bytes [SDK][aiot_http_recv:413]ETag: "0C97865F44CFE62EE24197F8E0EF8CB0" [SDK][aiot_http_recv:413]Last-Modified: Mon, 02 Mar 2020 09:52:11 GMT [SDK][aiot_http_recv:413]x-oss-object-type: Normal [SDK][aiot_http_recv:413]x-oss-hash-crc64ecma: 273697563426459874 [SDK][aiot_http_recv:413]x-oss-storage-class: Standard [SDK][aiot_http_recv:413]Content-MD5: DJeGX0TP5i7iQZf44O+MsA== [SDK][aiot_http_recv:413]x-oss-server-time: 20 download progress: 10% download progress: 20% download progress: 30% download progress: 40% download progress: 50% download progress: 60% download progress: 80% [SDK][aiot_ota_download:461]firmware download succeed download progress: 100% [SDK][aiot_ota_download:490]verify md5 sign: 0c97865f44cfe62ee24197f8e0ef8cb0 [SDK][aiot_ota_download:520]firmware verify succeed firmware verify success [SDK][aiot_ota_download:530]firmware download stop firmware download stop
上传完毕,固件地址
复制代码
1https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/93612ac9cf19d72cbd01512c23e14e95/ck7aab13200013m7kjgl1y49z.bin?Expires=1583230211&OSSAccessKeyId=cS8uRRy54RszYWna&Signature=fZUu9rpqJe1HSPgj0EYCmkwf%2Faw%3D
打开就可以看到是刚上传的固件,需要http协议下载下来,然后部署,这就是另外一个问题了。
最后
以上就是受伤果汁最近收集整理的关于阿里云物联网loT实现树莓派4固件升级(OTA)的全部内容,更多相关阿里云物联网loT实现树莓派4固件升级(OTA)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复