精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

ESP32 開發之:亞馬遜 AWS 平臺 OTA 升級過程完全梳理

開發 前端
本篇給大家介紹關于 ESP32 模組以及 MCU 的 OTA 升級過程,都是是一些結構性的流程節點,剩下部分就是一些細節問題了,按照官方文檔的指導步驟,都可以順利完成開發!

[[404000]]

在最近的兩篇文章中,我們從概念和流程上梳理了: 一個終端設備如何把一個固件,安全無誤的從服務器上,下載到本地。

文章鏈接在此:

  • 物聯網設備OTA軟件升級之:升級包下載過程之旅
  • 物聯網設備OTA軟件升級之:完全升級和增量升級

這篇文章就繼續往下深入,以一個實際的 ESP32 項目,來完整的梳理一下 OTA 升級的全過程。

主要包括下面 3 部分內容:

  1. AWS 平臺上,部署一個 OTA 升級任務時,需要完成哪些步驟;
  2. ESP32 模組中,關于 Flash 分區和 OTA 升級控制過程和代碼說明;
  3. 如何通過 ESP32,給與之相連的 MCU 進行 OTA 升級;

PS: 在下面的內容中,終端設備指的就是 ESP32 模組。

ESP32 Flash 分區

其實 ESP32 的官方文檔的過程描述,已經是非常的詳細了。

不僅把每一個操作的步驟都寫的很清楚,而且把一些可能遇到的錯誤,都會做一些善意的提醒。

下面這部分內容,基本上是來源于官方的文檔。

我們這里只是把一些與本文相關的、比較重要的內容摘錄在這里。

首先要了解的,肯定是 Flash 的分區信息了。

所有的固件、數據,都要存儲在 Flash 中,它是一個系統的記憶部件,離開了它,再怎么聰明的 CPU 都無用武之地。

關于分區表,ESP32 中預定義了 2 份分區表,分別對應:是否存在 OTA 功能這兩種情況,截圖如下:

沒有 OTA 的分區表:

有 OTA 功能的分區表:

官方的文檔鏈接在這里: https://docs.espressif.com/projects/esp-idf/zh_CN/v4.3-beta3/esp32/api-guides/partition-tables.html。

既然我們是在描述 OTA 過程,那肯定就是以帶有 OTA 功能的這個分區表為準了。


在這張分區表中,一共定義了 3 個應用程序分區:

  • factory 分區;
  • ota_0 分區;
  • ota_1 分區;

這三個分區的類型都是 app,但具體 app 的類型不相同。

其中,位于 0x10000 偏移地址處的為出廠應用程序(factory),其余兩個為 OTA 應用程序(ota_0,ota_1)。

名為 otadata 的數據分區,用于保存 OTA 升級時需要的數據。

啟動加載器會查詢該分區(otadata)的數據,以判斷:應該從哪個 OTA 應用程序分區來加載程序。

如果 otadata 分區為空(說明這臺設備還沒有進行過 OTA 升級),則會執行出廠程序,也就是執行 factory 分區中的固件程序。

如果 otadata 分區非空,則啟動加載器將加載這個分區中的數據,進而判斷: 啟動哪個 OTA 鏡像文件。

AWS 平臺部署 OTA 升級任務

AWS 平臺按照不同的業務類型,劃分為不同的服務。這樣處理起來,流程更規范,操作步驟也更多,當然也更賺錢一些!

從上一篇文章中可以看到,當一個新的固件準備好之后,需要做 2 件事情:

  • 把固件(bin 文件)和一個固件描述文件(json格式的文本文件),上傳到 S3 云存儲服務器上;
  • 在 AWS Core 任務管理中,新建一個升級任務(會得到一個 Job ID)。在這個任務中需要選擇:
  • (1) 步驟1中上傳的 json 文件;
  • (2) 哪些終端設備需要升級;

json 格式的固件描述文檔,格式大概如下(可以根據實際的業務需求進行修改):

  1.   "product""產品名稱"
  2.   "group""設備分組"
  3.   "firmware":  
  4.   [ 
  5.      { 
  6.         "ota_type""esp32"
  7.         "url""http://xxx/esp32-v1.1.0.bin"
  8.         "md5""xxx" 
  9.      } 
  10.   ] 

不知道您是否注意到:在 firmware 字段中,使用的是數組([...]),而不是對象({...})?

這樣來組織的原因是,OTA 升級不僅僅可以對 ESP32 模組中的固件進行升級("ota_type": "esp32"),還可以對其他的一些固件或用戶數據進行更新。

比如:更新 ESP32 串口連接的 MCU 中的固件程序。

對了,一個終端在通過網絡連接到云平臺時,都有一個唯一的 ID 編號,一般都是利用 ESP32 模組上的網卡 MAC 地址來作為唯一 ID。

當完成以上步驟時,在服務器端,就存在著一個升級任務關系鏈:

也就是說:一個 Job ID 就對應著一次 OTA 升級任務。終端設備在進行 OTA升級過程中,就是從這個 Job ID 開始的。

ESP32 OTA 升級的觸發

ESP32 與 AWS 平臺之間,是通過 MQTT 協議進行通信的。

因此,當運營人員創建了一個 OTA 升級任務后,所有相關的終端設備,必須從某個預先確定好的主題(topic)中,接收到 OTA 升級通知指令。

例如一個可能的 topic:$aws/things/xxx/job/notify

其中的 xxx,代表終端設備的 MAC 地址,只有這樣,每一個設備才能夠接收到屬于自己的命令。

升級通知指令的內容中,一定會包含 OTA 升級的 Job ID,例如:

  1.   "timestamp""xxxxxx"
  2.   "job_id""001" 

當終端設備接收到這個升級通知指令時,提取出 job_id 字段,然后向云平臺發起請求:獲取與這個 job_id 關聯的固件描述信息,也就是之前上傳的 Json 格式的文件息。

AWS 平臺接收到這個請求后,就會把與這個 job_id 相關聯的 OTA 升級任務描述文件(json文件),發送給終端設備。

設備拿到了固件描述文件,自然也就知道了固件的:版本,下載地址,MD5 值等信息,于是就進入后面的下載環節了。

以上的過程描述,基本上是一個終端設備觸發 OTA 升級的最基本的過程。

在實際的項目中,可能會遇到一些稍微復雜的情況。

例如:一個終端設備一直處于斷電狀態。此時,云平臺中已經對固件進行了好幾次的升級,但是由于這臺設備一直沒有運行,因此它的固件已經過時了好幾個版本。

有一天,這臺設備上電運行了,此時它會從云平臺接收到好幾個升級任務,這個時候應該如何處理呢?

也許,我們就要對升級通知的指令中,賦予更多詳細的內容,讓這臺設備有足夠的信息來判斷該如何進行升級。

ESP32 固件下載和本地升級

ESP32 在提取出固件的下載地址(URL)之后,就開始進入下載環節了。

官方文檔非常詳細的描述了固件的下載過程。

下面這段代碼,就是從官方文檔中摘抄過來的:

鏈接地址:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/system/ota.html

  1. bool image_header_was_checked = false
  2. while (1) { 
  3.     int data_read = esp_http_client_read(client, ota_write_data, BUFFSIZE); 
  4.     ... 
  5.     if (data_read > 0) { 
  6.         if (image_header_was_checked == false) { 
  7.             esp_app_desc_t new_app_info; 
  8.             if (data_read > sizeof(esp_image_header_t) + sizeof(esp_image_segment_header_t) + sizeof(esp_app_desc_t)) { 
  9.                 // check current version with downloading 
  10.                 if (esp_efuse_check_secure_version(new_app_info.secure_version) == false) { 
  11.                     ESP_LOGE(TAG, "This a new app can not be downloaded due to a secure version is lower than stored in efuse."); 
  12.                     http_cleanup(client); 
  13.                     task_fatal_error(); 
  14.                 } 
  15.  
  16.                 image_header_was_checked = true
  17.  
  18.                 esp_ota_begin(update_partition, OTA_SIZE_UNKNOWN, &update_handle); 
  19.             } 
  20.         } 
  21.         esp_ota_write( update_handle, (const void *)ota_write_data, data_read); 
  22.     } 

把這個過程畫成流程圖,就是下面這個樣子:

我們假設這次固件升級,存儲在 ota_0 這個分區中。

在固件下載完畢之后,esp_ota_end() 函數會在 otadata 分區寫入一個標記: 下次啟動時,請加載 ota_0 分區中的固件程序。

當 ESP32 重新啟動時,啟動加載器從 otadata 分區讀取數據,得知這一次需要啟動 ota_0分區里的固件。

此時有一件很重要的事情需要做:當 ota_0 分區中的固件啟動正確無誤后,需要調用函數 esp_ota_mark_app_valid_cancel_rollback() 往 otadata 區寫 ESP_OTA_IMG_VALID,標記: 這個分區中的固件是沒有問題的!

這樣的話,以后每次重啟時,都會加載 ota_0 分區里的固件。

相反的情況:如果 ota_0 分區里的固件,在第一次啟動后新固件運行有問題,需要調用函數 esp_ota_mark_app_invalid_rollback_and_reboot() 往 otadata 區寫 ESP_OTA_IMG_INVALID,標記:這個分區中的固件有問題!

這樣的話,重啟之后,啟動加載器將會選擇之前的 app 分區里的固件,可能是 factory 分區,也可能是 ota_1 分區。

OTA 升級過程中斷了,怎么辦?

以上描述的過程都是理想的情況,那么如果遇到一些異常情況,該如何處理呢?

例如:從接收到固件描述信息,到固件下載完成。在這期間的任何一個時間點,如果因為斷電等原因,導致設備重啟了,該如何繼續 OTA 升級過程?

我們知道,在程序運行的時候,所有的數據都是保存在內存中的。

重啟之后,內存中的數據是一篇空白。

如果希望 OTA 升級過程可以在任何異常情況下都能順利進行,必須保存一些必要的信息,包括:

  1. json 格式的固件描述文件;
  2. 固件下載過程中已經完成的每一個階段;

這些信息可以調用 nvs_write() 函數,保存在非易失性存儲設備中。

即使系統因為斷電等原因重啟了,也可以通過 nvs_read() 函數,讀取之前已經完成的步驟,然后繼續后續的升級操作。

通過 ESP32,升級 MCU 固件

ESP32 模組,僅僅是一個用來連接網絡云平臺的無線設備。

對于一個實際的產品而言,發揮實際功能控制作用的,往往是另一片單片機,比如: STM32。

單片機中的固件也有可能需要進行 OTA 升級,此時 ESP32 就要作為中間的一個媒介,先把 MCU 固件下載下來存儲在本地,然后再通過串口發送給單片機。

在這種情況下,ESP32 接收到的 OTA 固件描述信息就有可能是下面這個樣子:

  1.   "product""產品名稱"
  2.   "group""設備分組"
  3.   "firmware":  
  4.   [ 
  5.      { 
  6.         "ota_type""stm32"
  7.         "url""http://xxx/mcu-v1.2.3.bin"
  8.         "md5""xxx" 
  9.      } 
  10.   ] 

從 ota_type 字段,可以知道這次是給 MCU 進行升級,接下來的下載過程就與上述流程很類似了。

唯一的區別就是:下載的時候,需要把固件保存到 Flash 上的一塊獨立的數據分區中,而不是 ota_0 或 ota_1 分區。

至此,關于 ESP32 模組以及 MCU 的 OTA 升級過程就基本描述完畢了。

以上這些內容,都是是一些結構性的流程節點,剩下部分就是一些細節問題了,按照官方文檔的指導步驟,都可以順利完成開發!

 

責任編輯:姜華 來源: IOT物聯網小鎮
相關推薦

2021-06-02 07:58:58

物聯網設備OTA

2021-05-31 07:49:58

物聯網OTA軟件

2015-10-09 10:50:54

AWSAWS IoT

2013-05-08 09:24:40

云開發平臺AWS價格云服務價格

2014-11-14 10:08:07

AWSAWS Lambda

2014-11-14 10:16:18

亞馬遜

2012-09-28 10:05:52

2013-12-06 10:36:03

谷歌計算引擎亞馬遜

2015-04-10 09:16:28

亞馬遜AWS機器學習

2015-04-10 09:43:40

AWS

2016-03-08 15:02:18

GMGC

2013-12-18 17:22:54

亞馬遜AWS

2015-10-09 10:13:33

亞馬遜AWSAWS IoT

2022-04-08 11:39:26

OTA操作說明鴻蒙

2021-04-24 07:52:34

設備升級OTA

2014-11-13 12:55:11

亞馬遜

2013-11-12 09:25:55

微軟Azure亞馬遜AWS

2015-02-02 09:43:36

亞馬遜AWSAmazon Work

2013-12-19 17:29:01

亞馬遜AWS

2014-11-14 09:19:23

AWSAmazon Auro
點贊
收藏

51CTO技術棧公眾號

男人天堂亚洲二区| 日韩在线观看免费全集电视剧网站| 欧美精品在线观看| 116极品美女午夜一级| 少妇久久久久久被弄高潮| 日韩av福利| 亚洲免费成人| 欧美一区二区三区电影| 亚洲精品一区二区三区av| 在线免费黄色av| 成功精品影院| 亚洲在线观看免费视频| 91麻豆国产精品| 色偷偷www8888| 日本精品网站| 国产色爱av资源综合区| 欧美亚洲国产精品| 玩弄中年熟妇正在播放| 亚洲欧美日韩国产中文| 国产精品极品美女粉嫩高清在线| 中文字幕在线国产| 国产欧美黑人| 国内不卡的二区三区中文字幕| 亚洲欧洲国产一区| 国产xxxxx在线观看| 五月婷婷六月丁香综合| 国产美女精品| 亚洲欧美www| 亚洲成人福利视频| 黄色污污视频在线观看| 国产成人午夜高潮毛片| 欧美高清第一页| 污污污www精品国产网站| av资源中文在线| 91麻豆免费在线观看| 日本欧美一级片| 亚洲黄色免费视频| 亚洲成人精品综合在线| 亚洲精品免费视频| 国产麻豆日韩| 日本中文字幕第一页| 欧美精品一区二区三区中文字幕| 欧美三级视频在线观看| 中国人体摄影一区二区三区| aaaa一级片| 亚洲片区在线| 国产一区二区三区视频免费| 亚洲精品手机在线观看| 精品一性一色一乱农村| 久久久久久免费毛片精品| 国产精品自拍小视频| 久久久久成人网站| 国产精品欧美三级在线观看| 欧美日韩高清一区二区三区| 日本黄色片一级片| 精品亚洲综合| 国产精品99久久久久久似苏梦涵| 国产精品免费小视频| 久久网免费视频| 欧美va天堂在线| 亚洲欧洲日产国产网站| 青青草视频成人| 天天综合在线观看| 欧美情侣在线播放| 中文字幕第22页| 国产高清不卡| 一区二区三区四区激情| japanese在线播放| 久久经典视频| 国产色爱av资源综合区| 亚洲欧美日韩在线综合| 男人的天堂在线视频免费观看 | 蜜月aⅴ免费一区二区三区| 911国产在线| 一区二区三区国产精华| 日韩电影在线观看中文字幕| 久久婷婷综合色| 国产不卡123| 亚洲欧洲精品成人久久奇米网 | 亚洲精品小区久久久久久| 欧美剧在线免费观看网站| 成人综合视频在线| 日本成人三级电影| 欧美一区二区久久| 日韩av无码一区二区三区不卡| 视频小说一区二区| 日韩欧美成人一区| 国产高清视频网站| 依依综合在线| 欧美日韩国产在线观看| 一级全黄裸体片| 国产欧美久久一区二区三区| 久久精品电影网| 黄色av片三级三级三级免费看| 日韩精选在线| 日韩亚洲精品视频| 欧日韩不卡视频| 在线国产日韩| 久久久久久国产精品美女| 日韩国产第一页| 欧美gay男男猛男无套| 国产亚洲aⅴaaaaaa毛片| 国产一区二区播放| 99久久久国产精品美女| 最近2019中文字幕在线高清| 18精品爽视频在线观看| 久久天堂精品| 日韩av第一页| www.国产视频| 国产不卡视频一区| av在线不卡一区| 精品人妻伦一区二区三区久久| 97久久精品人人澡人人爽| 精品国产电影| 女人偷人在线视频| 亚洲综合网站在线观看| 香港日本韩国三级网站| 日韩理论电影中文字幕| 久久99热精品这里久久精品| 劲爆欧美第一页| 国产精品v一区二区三区| 久久99久久99精品中文字幕| 久久久999久久久| 麻豆视频一区二区| 国产在线观看精品一区二区三区| 一本久道久久综合无码中文| 国产一区二区三区四区五区入口| 亚洲最大av网站| 亚洲欧美激情在线观看| 99国内精品久久| 国产精品一二三在线观看| 嫩草伊人久久精品少妇av杨幂| 亚洲国产中文字幕久久网| 久久人人爽人人爽人人片| 精品国产一区二区三区噜噜噜| 色综合天天狠天天透天天伊人 | 欧美一区二区视频免费观看| 女人黄色一级片| 91精品国产成人观看| 欧美裸身视频免费观看| 亚洲中文字幕在线观看| 国产欧美一区二区三区在线看蜜臀| 无码免费一区二区三区免费播放| av在线之家电影网站| 亚洲精品成人a在线观看| 天天综合网久久| 色婷婷综合网| 欧美精品成人在线| www国产在线| 一区二区三区高清在线| 国产成人精品一区二区在线小狼| 欧美午夜不卡| 91精品国产91久久久久久久久| 午夜视频网站在线观看| 国产午夜精品在线观看| 欧美精品aaaa| 一区二区视频| 亚洲男人av电影| 99精品人妻国产毛片| 久久久综合精品| 国产内射老熟女aaaa| 欧美一区在线观看视频| 一区二区成人av| 久久久久久久久久久久久久久久久| 国产一区91精品张津瑜| 国产高清不卡无码视频| 九色成人搞黄网站| 色婷婷综合久久久久| 国产偷人妻精品一区二区在线| 91在线国内视频| 日本成人中文字幕在线| 国产精品白丝av嫩草影院| 最新国产成人av网站网址麻豆| 美女黄页在线观看| 亚洲精品你懂的| 欧美成人精品欧美一级乱| 欧美电影院免费观看| 在线视频亚洲欧美| 亚洲免费在线观看av| 国产乱码精品1区2区3区| 日日骚一区二区网站| 欧美视频第一| 中文字幕亚洲第一| 国产黄色小视频在线观看| 欧美午夜影院在线视频| 精品熟女一区二区三区| 美女精品网站| 国产另类第一区| 日本综合字幕| 欧美激情久久久久| 北条麻妃在线| 精品国产免费一区二区三区香蕉| 黄色国产精品一区二区三区| 国产精品视频自在线| 久久精品午夜福利| 风间由美性色一区二区三区四区| 欧美在线免费看| 69视频免费看| 99在线视频精品| 国产精品三级一区二区| 先锋影音国产精品| 91精品综合久久| 乱人伦中文视频在线| 亚洲国产精品一区二区久| 国产精品成人无码| 亚洲不卡在线观看| 在线天堂www在线国语对白| 日韩av中文字幕一区二区| 欧美在线一区二区三区四区| 自拍视频在线看| 亚洲美女av在线播放| 99视频在线观看免费| 在线视频欧美精品| jizz18女人高潮| a亚洲天堂av| 久久发布国产伦子伦精品| 亚洲精品888| 三区精品视频| 九九在线高清精品视频| 国产精品一区二区三区免费视频| 9999在线视频| 欧美成人性色生活仑片| 337p日本欧洲亚洲大胆鲁鲁| 欧美日本不卡视频| 最近免费中文字幕大全免费版视频| ww亚洲ww在线观看国产| 日本少妇xxxx软件| 国产专区综合网| 欧美日韩一区二区三区69堂| 老司机久久99久久精品播放免费| 成人午夜视频在线观看免费| 亚洲欧美成人vr| 国产精品久久亚洲| 91精品短视频| 岛国视频一区| 欧美人体一区二区三区| 91国产精品91| 99爱在线观看| 韩国美女主播一区| 成人精品一区二区| 亚洲免费小视频| 免费a在线观看| 亚洲欧美国产一本综合首页| 天天干在线观看| 欧美日韩日本视频| 久草热在线观看| 欧美三级视频在线| 国产又粗又长又大视频| 午夜伊人狠狠久久| 精品人妻在线播放| 亚洲国产乱码最新视频| 波多野结衣一二三四区| 国产日韩欧美激情| 亚洲不卡的av| 国产精品国产三级国产普通话蜜臀 | 一区二区国产在线观看| 国产伦精品一区二区三区四区视频_| 国产在线欧美| 天堂…中文在线最新版在线| 亚洲女同同性videoxma| 亚洲一区3d动漫同人无遮挡| 久久精品国产亚洲blacked| 国产美女精彩久久| 亚洲国产天堂| 91免费看网站| 天堂99x99es久久精品免费| 日本在线一区| 老司机精品在线| 美女精品国产| 国产精品18hdxxxⅹ在线| 国产一区二区久久久| 99久久这里有精品| 国产福利视频一区二区| 春色校园综合激情亚洲| 97超碰蝌蚪网人人做人人爽| 澳门av一区二区三区| 97人人做人人爱| 亚洲欧美一区二区三区| 成人h猎奇视频网站| 国产精品高清乱码在线观看| 国产免费一区二区三区在线观看| 高清一区二区| 成人激情黄色网| 99ri日韩精品视频| 日韩av在线电影观看| 综合久久婷婷| 国产精品少妇在线视频| 国模少妇一区二区三区| 蜜桃精品一区二区| 亚洲青青青在线视频| 男人天堂资源网| 亚洲成av人片在线观看无码| 中文字幕永久在线| 亚洲国产精品高清久久久| 亚洲av综合色区无码一二三区| 欧美日本一区二区三区四区| 日本免费网站在线观看| 日韩欧美高清一区| 国外av在线| 欧美高清视频在线播放| 免费一级欧美在线观看视频| 国产精品久久久久久久久久久久午夜片 | 熟女熟妇伦久久影院毛片一区二区| 国产不卡一区| 国产精品videossex国产高清| 日韩中文欧美在线| caopor在线| 日韩一区有码在线| 四虎精品永久在线| 日韩欧美国产电影| 欧美一级二级三级区| 欧美专区中文字幕| ady日本映画久久精品一区二区| 亚洲精品在线观看免费| 国产精品一国产精品k频道56| 丰满人妻一区二区三区大胸| 国产精品久久久久久久久久久免费看 | 亚洲激情午夜| 手机在线观看日韩av| 国产高清不卡一区二区| 91狠狠综合久久久久久| 一本色道久久加勒比精品 | 在线播放欧美女士性生活| 一区二区三区免费在线| 91精品欧美福利在线观看| 国内av一区二区三区| 97在线观看视频国产| 亚洲一区二区三区免费| 国产对白在线播放| 精一区二区三区| 在线观看免费视频黄| 久久色中文字幕| 日韩av男人天堂| 欧美性猛交xxxxxx富婆| 国产毛片在线视频| www高清在线视频日韩欧美| www.久久.com| 日本最新一区二区三区视频观看| 麻豆91精品| wwwwxxxx国产| 亚洲欧美另类久久久精品2019| 无码人妻精品一区二区三区蜜桃91| 日韩av在线网页| 日本在线影院| 成人激情在线观看| 婷婷综合在线| 人妻激情偷乱视频一区二区三区| 亚洲视频在线一区观看| 国产高清免费av| 欧美精品videofree1080p| 白嫩白嫩国产精品| 欧美成人高潮一二区在线看| 91一区一区三区| 一级一片免费看| 在线精品高清中文字幕| 日韩电影免费观看高清完整版在线观看| 视频一区在线免费观看| 久久精品国产一区二区| 中文字幕无码日韩专区免费| 欧美一级生活片| 超黄网站在线观看| 久久一区免费| 奇米影视7777精品一区二区| 中国极品少妇videossexhd| 欧美日韩另类视频| 精品美女www爽爽爽视频| 午夜精品久久久久久久99热 | 国产韩日精品| 日本成人性视频| 波波电影院一区二区三区| 亚洲欧美综合7777色婷婷| 欧美性猛交xxxx黑人猛交| 久草在线青青草| 成人综合网网址| 在线 亚洲欧美在线综合一区| 精品国产av无码| 91精品国产91久久久久久最新毛片| 天堂av在线电影| 成人黄色午夜影院| 欧美午夜久久| 免费福利视频网站| 精品国产一二三| 姬川优奈av一区二区在线电影| 在线视频不卡一区二区| 波多野结衣亚洲一区| 中文字幕日韩国产| 亚洲一区第一页| 国模大尺度视频一区二区| 成人毛片一区二区| 国产精品久久久久久户外露出| 99久久久国产精品无码网爆| 992tv在线成人免费观看| 国产精品99一区二区三| 国产熟女高潮一区二区三区| 亚洲国产成人精品视频| www亚洲人| 精品国产91亚洲一区二区三区www| 久久精品国内一区二区三区| 成人毛片18女人毛片| 精品国产一区二区在线|