AliOS-Things 使用OTA

測試板

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;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市豌拙,隨后出現(xiàn)的幾起案子陕悬,更是在濱河造成了極大的恐慌,老刑警劉巖按傅,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捉超,死亡現(xiàn)場離奇詭異,居然都是意外死亡唯绍,警方通過查閱死者的電腦和手機拼岳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來况芒,“玉大人惜纸,你說我怎么就攤上這事【В” “怎么了耐版?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長压汪。 經(jīng)常有香客問我粪牲,道長,這世上最難降的妖魔是什么蛾魄? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任虑瀑,我火速辦了婚禮,結(jié)果婚禮上滴须,老公的妹妹穿的比我還像新娘。我一直安慰自己叽奥,他們只是感情好扔水,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朝氓,像睡著了一般魔市。 火紅的嫁衣襯著肌膚如雪主届。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天待德,我揣著相機與錄音君丁,去河邊找鬼。 笑死将宪,一個胖子當著我的面吹牛绘闷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播较坛,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼印蔗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丑勤?” 一聲冷哼從身側(cè)響起华嘹,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎法竞,沒想到半個月后耙厚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡岔霸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年薛躬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秉剑。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡泛豪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侦鹏,到底是詐尸還是另有隱情诡曙,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布略水,位于F島的核電站价卤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏渊涝。R本人自食惡果不足惜慎璧,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望跨释。 院中可真熱鬧胸私,春花似錦、人聲如沸鳖谈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缆娃。三九已至捷绒,卻和暖如春瑰排,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暖侨。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工椭住, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人字逗。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓京郑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扳肛。 傳聞我的和親對象是個殘疾皇子傻挂,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容