測試板
ESP8266 : AOS_OTA_BANK_DUAL
在這里插入圖片描述
MK3060 : AOS_OTA_BANK_SINGLE
在這里插入圖片描述
升級流程
① 下載代碼并選擇OTA demo程序和開發(fā)板
② 登錄云端賬號獲取四元組并開通固件升級服務(wù)
③ 根據(jù)需要是否開啟安全升級功能水慨,如開啟獲取云端公鑰
④ 編譯生成不同版本固件得糜,一個低版本敬扛,一個高版本
⑤ 將低版本的固件燒錄到對應(yīng)的目標板子,運行demo程序OTA_APP pk dn ds ps
⑥ 待設(shè)備上線后將高版本的固件上傳到云端
otaapp@mk3060.ota.bin : for ota update. 用于OTA升級掀亩。
otaapp@mk3060.bin : for direct burning into flash memory. 用于flash燒寫舔哪。
otaapp@esp8266.bin : for ota update. 用于OTA升級。
otaapp@esp8266.bin : for direct burning into flash memory. 用于flash燒寫槽棍。
⑦ 云端推送固件捉蚤,設(shè)備端接收固件,并做完整性校驗
⑧ 設(shè)備端完成固件校驗炼七,進入系統(tǒng)升級
⑨ 系統(tǒng)重啟后缆巧,上報新版本信息到云端
MK3060 Log
啟動LOG
Hello OTA.
ota_service_init
[010598]<E> SYSINFO_APP_VERSION app-1.5.2-20190328.1742
ota_hal_get_version app-1.5.2-20190328.1742
[010600]<I> ....................................................
[010600]<I> ProductKey : a1vuRZ5qR2q
[010600]<I> DeviceName : SensorII
[010600]<I> DeviceID : a1vuRZ5qR2q.SensorII
[010602]<I> ....................................................
[010602]<I> Partn
erID Buf : ,partner_id=example.demo.partner-id
[010604]<I> ModuleID Buf : ,module_id=example.demo.module-id
[010604]<I> Guider URL :
[010604]<I> Guider SecMode : 2 (TLS + Direct)
[010604]<I> Guider Timestamp : 2524608000000
[010604]<I> .................................# ...................
[010606]<I> -----------------------------------------
[010608]<I> Host : a1vuRZ5qR2q.iot-as-mqtt.cn-shanghai.aliyuncs.com
[010608]<I> Port : 1883
[010608]<I> ClientID : a1vuRZ5qR2q.SensorII|securemode=2,timestamp=2524608000000,signmethod=hmacsha256,gw=0,ext=0,partner_id=example.demo.partner-id,module_id=example.demo.module-id,a=aos-r-2.1.0|
[010610]<I> TLS PubKey : 0x7bb45 ('-----BEGIN CERTI ...')
[010610]<I> -----------------------------------------
[010612]<I> MQTT init success!
[010612]<I> Loading the CA root certificate ...
[010616]<I> ok (0 skipped)
[010616]<I> Connecting to /a1vuRZ5qR2q.iot-as-mqtt.cn-shanghai.aliyuncs.com/1883...
[010660]<I> ok
[010660]<I> . Setting up the SSL/TLS structure...
[010660]<I> ok
[010662]<I> Performing the SSL/TLS handshake...
[011114]<I> ok
[011114]<I> . Verifying peer X.509 certificate..
[011114]<I> certificate verification result: 0x00
[011194]<I> mqtt connect success!
[011198]<E> the network interface info set failed or not set, writen len is 0
[011202]<I> Public name:/ota/device/inform/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"version":"app-1.5.2-20190328.1742"}}
[011204]<I> upgrade:/ota/device/upgrade/a1vuRZ5qR2q/SensorII
[011206]<I> mqtt subscribe packet sent,topic = /ota/device/upgrade/a1vuRZ5qR2q/SensorII!
[011308]<I> ota init success, ver:app-1.5.2-20190328.1742 type:0
[071308]<I> send MQTT ping...
[071346]<I> receive ping response!
[131308]<I> send MQTT ping...
[131346]<I> receive ping response!
[191308]<I> send MQTT ping...
[191344]<I> receive ping response!
升級LOG
#
# [236910]<I> mqtt cb evt:12 {"code":"1000","data":{"size":445830,"sign":"bd3493aca7eb8ba106755861c54509e8","version":"app-2.0.0-20190328.1744","url":"https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/9094af2055e93ccbe1e58fd9ad3a3276/cjtsgfb0200003374x6a3xl6o.bin?Expires=1553852902&OSSAccessKeyId=cS8uRRy54RszYWna&Signature=KiCGHiQqKG2Ny6arW16jM2OQnk8%3D","signMethod":"Md5","md5":"bd3493aca7eb8ba106755861c54509e8"},"id":1553766502568,"message":"success"}
[237410]<I> ota init off:0x00000000 part:3 len:445830 crc:0x0000
[237412]<I> ota init board ALI_AOS_MK3060 success!
[237412]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "0","desc":""}}
D: 41 HAL_TCP_Establish() | establish tcp connection with server(host=iotx-ota.oss-cn-shanghai.aliyuncs.com port=80)
D: 80 HAL_TCP_Establish() | success to establish tcp, fd=4
[237460]<I> send GET /ota/9094af2055e93ccbe1e58fd9ad3a3276/cjtsgfb0200003374x6a3xl6o.bin?Expires=1553852902&OSSAccessKeyId=cS8uRRy54RszYWna&Signature=KiCGHiQqKG2Ny6arW16jM2OQnk8%3D HTTP/1.1
Accept:*/*
User-Agent: Mozilla/5.0
Cache-Control: no-cache
Connection: close
Host:iotx-ota.oss-cn-shanghai.aliyuncs.com:80
[237464]<I> 304 bytes send.
[237834]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "10","desc":""}}
[237838]<I> s:45093 512 per:10
[237998]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "15","desc":""}}
[238000]<I> s:67109 512 per:15
[238164]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "20","desc":""}}
[238166]<I> s:89637 512 per:20
[238314]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "25","desc":""}}
[238318]<I> s:111653 512 per:25
[238474]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "30","desc":""}}
[238476]<I> s:134181 512 per:30
[238628]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "35","desc":""}}
[238630]<I> s:156197 512 per:35
[238798]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "40","desc":""}}
[238802]<I> s:178725 512 per:40
[238986]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "45","desc":""}}
[238990]<I> s:200741 512 per:45
[239142]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "50","desc":""}}
[239144]<I> s:223269 512 per:50
[239282]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "55","desc":""}}
[239284]<I> s:245285 512 per:55
[239450]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "60","desc":""}}
[239452]<I> s:267813 512 per:60
[239600]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "65","desc":""}}
[239602]<I> s:289829 512 per:65
[239774]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "70","desc":""}}
[239776]<I> s:312357 512 per:70
[239926]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "75","desc":""}}
[239930]<I> s:334373 512 per:75
[240106]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "80","desc":""}}
[240108]<I> s:356901 512 per:80
[240264]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "85","desc":""}}
[240266]<I> s:379429 512 per:85
[240428]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "90","desc":""}}
[240430]<I> s:401445 512 per:90
[240570]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "95","desc":""}}
[240572]<I> s:423973 512 per:95
E: 208 HAL_TCP_Read() | connection is closed
[240720]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "100","desc":""}}
[240724]<I> s:445830 353 per:100
[240724]<I> download finish ret:0.
[240726]<I> md5 src=BD3493ACA7EB8BA106755861C54509E8 dst=BD3493ACA7EB8BA106755861C54509E8
[240726]<I> bin s:445830 off:445802
[240726]<I> magic:0xefefefef size:445802 md5:528008882EB85EC42791666ABECFE910 crc16:0xffff
[240928]<I> md5 src=528008882EB85EC42791666ABECFE910 dst=528008882EB85EC42791666ABECFE910
[240930]<I> OTA md5 ret:0
[240930]<I> AOS_OTA_BANK_SINGLE
[240934]<I> OTA finish dst:0x00000000 src:0x00000000 len:0x00000000, crc:0x523f.
燒寫完成啟動LOG
[240934]<E> upgrade over err:0
[240934]<I> Public name:/ota/device/progress/a1vuRZ5qR2q/SensorII msg:{"id":0,"params":{"step": "100","desc":""}}
uart0 init success
254: swap offset 0x0, index 0
170: swap offset 0x0
170: swap offset 0x10000
170: swap offset 0x20000
170: swap offset 0x30000
170: swap offset 0x40000
170: swap offset 0x50000
170: swap offset 0x60000
170: swap offset 0x70000
170: swap offset 0x80000
170: swap offset 0x90000
170: swap offset 0xa0000
170: swap offset 0xb0000
170: swap offset 0xc0000
170: swap offset 0xd0000
184: update succ!
uart0 init success
Press key 'w' into 2nd boot cmd, Waiting 100ms ...
Bootup flag 0x0, num 0x0
flash txpwr table:0x7
dif g and n20 ID in flash:2
read txpwr tab from flash success
DPLL Unlock
enter low level!
mac fc:ee:e6:17:56:e3
leave low level!
app_init finished
start-----------hal
Welcome to AliOS Things
疑似AliOS Bug
int32_t hal_flash_write(hal_partition_t pno, uint32_t* poff, const void* buf ,uint32_t buf_size)
{
uint32_t start_addr, len, left_off;
int32_t ret = 0;
uint8_t *buffer = NULL;
hal_logic_partition_t *partition_info;
partition_info = hal_flash_get_info( pno );
start_addr = partition_info->partition_start_addr + *poff;
left_off = start_addr % FLASH_ALIGN;
len = ((buf_size + left_off) + ~FLASH_ALIGN_MASK) & FLASH_ALIGN_MASK;
if (len > buf_size || left_off > 0) {
buffer = (uint8_t *)aos_malloc(len);
if (!buffer)
return -1;
memset(buffer, 0xff, len);
#ifdef ESP8266FLASHBUG
//BUG : 4字節(jié)對齊
if(left_off>0){
vPortETSIntrLock();
spi_flash_read(start_addr - left_off, buffer, 4);
vPortETSIntrUnlock();
}
#endif
memcpy(buffer + left_off, buf, buf_size);
vPortETSIntrLock();
ret = spi_flash_write(start_addr - left_off, (uint32_t *)buffer, len);
vPortETSIntrUnlock();
aos_free(buffer);
} else {
vPortETSIntrLock();
ret = spi_flash_write(start_addr, (uint32_t *)buf, len);
vPortETSIntrUnlock();
}
*poff += buf_size;
return ret;
}