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

OpenHarmony南向設備應用程序啟動流程分析

系統 OpenHarmony
本文采用倒序的方式,初步梳理了從Hi3861芯片上電到OpenHarmony應用程序啟動運行的流程。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

一、用戶程序示例

以qihang開發板gpio_led程序為例,為何單板上電后LedTask()會自動運行,SYS_RUN宏在背后是如何起作用的?

static void LedTask(void)
{
while (1)
{
IoTGpioSetOutputVal(LED_TASK_GPIO2,1);
usleep(500*1000);
IoTGpioSetOutputVal(LED_TASK_GPIO2,0);
usleep(500*1000);
}
}
static void LedExampleEntry(void)
{
osThreadAttr_t attr;
IoTGpioInit(LED_TASK_GPIO2);
IoTGpioSetDir(LED_TASK_GPIO2,IOT_GPIO_DIR_OUT);
attr.name = "LedTask";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = LED_TASK_STACK_SIZE;
attr.priority = LED_TASK_PRIO;
if (osThreadNew((osThreadFunc_t)LedTask1, NULL, &attr) == NULL) {
printf("Falied to create LedTask!\n");
}
}
SYS_RUN(LedExampleEntry);

二、第二階段(應用)啟動流程

在上一篇文章中"OpenHarmony南向設備開發建構編譯分析",有提到qihang板產品配置文件中相關子系統及組件如下:

vendor/isoftstone/qihang/config.json。

......
{
"subsystem": "distributedschedule", #分布式任務調度子系統
"components": [
{ "component": "samgr_lite", "features":[] }
]
},
{
"subsystem": "startup",
"components": [
{ "component": "bootstrap_lite", "features":[] }, #bootstrap啟動引導
{ "component": "syspara_lite", "features": #提供系統屬性讀寫接口
[
"enable_ohos_startup_syspara_lite_use_thirdparty_mbedtls = false"
]
}
]
},
......

可以看到,qihang板使用startup子系統中的bootstrap_lite組件和syspara_lite組件。重點看一下bootstrap_lite組件,位于SDK的base/startup/bootstrap_lite目錄。引用該組件的readme文件說明如下:

bootstrap啟動引導組件,提供了各服務和功能的啟動入口標識。在SAMGR啟動時,會調用boostrap標識的入口函數,并啟動系統服務。

samgr_lite組件是針對Hi3861這類硬件資源有限的輕量化系統服務框架,代碼位于foundation/distributedschedule/samgr_lite目錄。該組件的功能引用如下:

系統服務框架基于面向服務的架構,提供了服務開發、服務的子功能開發、對外接口的開發、以及多服務共進程的開發框架。

device/soc/hisilicon/hi3861v100/sdk_liteos/app/wifiiot_app/src/app_main.c

hi_void app_main(hi_void)
{
hi_flash_partition_table *ptable = HI_NULL;
peripheral_init();
peripheral_init_no_sleep();
hi_u32 ret = hi_factory_nv_init(HI_FNV_DEFAULT_ADDR, HI_NV_DEFAULT_TOTAL_SIZE, HI_NV_DEFAULT_BLOCK_SIZE);
hi_flash_partition_init();
ptable = hi_get_partition_table();
hi_nv_init(ptable->table[HI_FLASH_PARTITON_NORMAL_NV].addr, ptable->table[HI_FLASH_PARTITON_NORMAL_NV].size,
HI_NV_DEFAULT_BLOCK_SIZE);
hi_fs_init();
(hi_void)hi_event_init(APP_INIT_EVENT_NUM, HI_NULL);
hi_sal_init();
hi_syserr_watchdog_debug(HI_FALSE);
hi_syserr_record_crash_info(HI_TRUE);
hi_lpc_init();
hi_lpc_register_hw_handler(config_before_sleep, config_after_sleep);
hi_at_init();
tcpip_init(NULL, NULL);
hi_wifi_init(APP_INIT_VAP_NUM, APP_INIT_USR_NUM);
app_demo_task_release_mem(); /* 釋放系統棧內存所使用任務 */
hilink_main();
OHOS_Main();
}

device/soc/hisilicon/hi3861v100/sdk_liteos/app/wifiiot_app/src/ohos_main.c。

void OHOS_Main()
{
OHOS_SystemInit();
}

base/startup/bootstrap_lite/services/source/system_init.c。

void OHOS_SystemInit(void)
{
MODULE_INIT(bsp);
MODULE_INIT(device);
MODULE_INIT(core);
SYS_INIT(service);
SYS_INIT(feature);
MODULE_INIT(run);
SAMGR_Bootstrap();
}
#define SYS_INIT(name) \
do { \
SYS_CALL(name, 0); \
} while (0)
#define SYS_CALL(name, step) \
do { \
InitCall *initcall = (InitCall *)(SYS_BEGIN(name, step)); \
InitCall *initend = (InitCall *)(SYS_END(name, step)); \
for (; initcall < initend; initcall++) { \
(*initcall)(); \
} \
} while (0)
#define SYS_BEGIN(name, step) \
({ extern InitCall __zinitcall_sys_##name##_start; \
InitCall *initCall = &__zinitcall_sys_##name##_start; \
(initCall); \
})
#define SYS_END(name, step) \
({ extern InitCall __zinitcall_sys_##name##_end; \
InitCall *initCall = &__zinitcall_sys_##name##_end; \
(initCall); \
})
#define MODULE_INIT(name) \
do { \
MODULE_CALL(name, 0); \
} while (0)
#define MODULE_CALL(name, step) \
do { \
InitCall *initcall = (InitCall *)(MODULE_BEGIN(name, step)); \
InitCall *initend = (InitCall *)(MODULE_END(name, step)); \
for (; initcall < initend; initcall++) { \
(*initcall)(); \
} \
} while (0)
#define MODULE_BEGIN(name, step) \
({ extern InitCall __zinitcall_##name##_start; \
InitCall *initCall = &__zinitcall_##name##_start; \
(initCall); \
})
#define MODULE_END(name, step) \
({ extern InitCall __zinitcall_##name##_end; \
InitCall *initCall = &__zinitcall_##name##_end; \
(initCall); \
})

foundation/distributedschedule/samgr_lite/samgr/source/samgr_lite.c。

void SAMGR_Bootstrap(void)
{
SamgrLiteImpl *samgr = GetImplement();
WDT_Reset(WDG_SVC_BOOT_TIME);
Vector initServices = VECTOR_Make(NULL, NULL);
MUTEX_Lock(samgr->mutex);
samgr->status = TO_NEXT_STATUS(samgr->status);
int16 size = VECTOR_Size(&(samgr->services));
int16 i;
for (i = 0; i < size; ++i) {
ServiceImpl *serviceImpl = (ServiceImpl *)VECTOR_At(&(samgr->services), i);
VECTOR_Add(&initServices, serviceImpl);
}
MUTEX_Unlock(samgr->mutex);
InitializeAllServices(&initServices);
VECTOR_Clear(&initServices);
InitCompleted();
}

在用戶應用程序組件的代碼中,會包含下述聲明:

APP_FEATURE_INIT(MQTTDemo);
SYS_RUN(LedExampleEntry);

上述宏的說明引用如下:

/**
@brief Identifies the entry for initializing and starting an application-layer service by the
priority 2.
This macro is used to identify the entry called at the priority 2 of the application-layer
service phase of the startup process. \n
@param func Indicates the entry function for initializing and starting an application-layer
service. The type is void (*)(void).
*/
#define APP_SERVICE_INIT(func) LAYER_INITCALL_DEF(func, app_service, “app.service”)
/**
@brief Identifies the entry for initializing and starting a system running phase by the
priority 2.
This macro is used to identify the entry called at the priority 2 in the system startup
phase of the startup process. \n
@param func Indicates the entry function for initializing and starting a system running phase.
The type is void (*)(void).
#define SYS_RUN(func) LAYER_INITCALL_DEF(func, run, “run”)
*/

總結以上分析,程序第二階段啟動流程如下圖圖所示:

OpenHarmony南向設備應用程序啟動流程分析-開源基礎軟件社區

三、第一階段(上電)啟動流程

請參考本文最后延申閱讀第二篇文章的具體介紹,程序加載由3個boot程序前后配合完成:

romboot:

  • 芯片內部自帶的上電引導程序,引導loaderboot。

loaderboot (device/soc/hisilicon/hi3861v100/sdk_liteos/boot/loaderboot):

  • 與HiBurn通訊,下載鏡像到flash。
  • 燒寫EFUSE(芯片配置信息)。
  • 校驗并引導flashboot。

flashboot (device/soc/hisilicon/hi3861v100/sdk_liteos/boot/flashboot):

  • 升級固件。
  • 校驗并引導固件(主程序)。

loaderboot/common/cmd_loop.c 定義了從hiburn接收并處理的操作:

const loader_cmd g_loader_cmdtable[LOADER_CMD_MAX] = {
{ CMD_DL_IMAGE, loader_download_image },
{ CMD_BURN_EFUSE, loader_burn_efuse },
{ CMD_UL_DATA, loader_upload_data },
{ CMD_READ_EFUSE, loader_read_efuse },
{ CMD_FLASH_PROTECT, loader_flash_protect },
{ CMD_RESET, loader_reset },
{ CMD_FACTORY_IMAGE, loader_download_image },
{ CMD_VERSION, loader_burn_version},
};

其中:

loader_download_image就是接收hiburn傳來的升級文件,并燒錄到flash中。

flashboot/startup目錄下有兩個重要文件:

  • riscv_init_flshboot.S 匯編語言格式,RISC-V啟動代碼。
  • main.c。
#define KERNEL_START_ADDR   0x40D3C0
boot_kernel(KERNEL_START_ADDR);
global_reset();
hi_void boot_kernel(uintptr_t kaddr)
{
__asm__ __volatile__("ecall"); /* switch U-MODE -> M-MODE */
hi_void (*entry)(hi_void) = (hi_void*)(kaddr);
entry();
}

在最后build應用生成的map文件,可看到內存布局如下:

Name             Origin             Length             Attributes
BIN 0x000000000040d3c0 0x0000000000200000 xr
ROM_TEXT 0x00000000003b8000 0x00000000000457e0 xr
ROM_DATA0 0x000000000011d7c0 0x0000000000000020 xrw
ROM_DATA1 0x000000000011d7e0 0x00000000000006e8 xrw
ROM_BSS 0x000000000011a9c0 0x0000000000002e00 xrw
STACK 0x00000000001185c0 0x0000000000002400 rw
CHECK_INFO 0x000000000011dfc0 0x0000000000000040 rw
FLASH 0x000000000040d3c0 0x00000000001f2c40 xrw
PATCH_BSS 0x00000000000d8000 0x0000000000000400 xrw
RAM 0x00000000000d8400 0x00000000000401c0 xrw
EXTERN_ROM_DATA1_BSS 0x000000000011dec8 0x00000000000000f8 xrw
*default* 0x0000000000000000 0xffffffffffffffff

.entry.text 0x000000000040d3c0 0x4 build/libs/hi3861/release/no_mesh/liblitekernel_flash.a(los_startup.o)
0x000000000040d3c0 _start
0x000000000040d3e0 . = ALIGN (0x20)

對比可以看到,KERNEL_START_ADDR與應用程序的起始地址一致,基本可推斷flashboot最后操作為調用應用程序。通過ecall指令,實現RISC-V處理器( Hi3861使用 )從User Mode( 禁止不可信代碼執行特權指令 )切換為Machine Mode( 最高特權模式 )。

四、小結

本文采用倒序的方式,初步梳理了從Hi3861芯片上電到OpenHarmony應用程序啟動運行的流程。還有很多內容都沒有涉及,包括芯片安全啟動,Flash的存儲分布等,boot部分說明也比較粗淺。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2010-11-23 10:51:45

UI交互設計產品管理

2023-09-06 15:31:19

GPIO鴻蒙

2023-09-19 15:14:59

鴻蒙Watchdog

2023-09-06 15:27:22

ADC鴻蒙

2023-09-19 15:21:33

RTC鴻蒙

2009-10-21 09:38:34

VB QuickSor

2022-08-19 10:54:47

操作系統鴻蒙

2011-08-05 13:49:53

iPhone 應用 開發

2009-09-27 10:37:01

Java應用程序Hibernate

2021-11-24 09:00:00

云計算開發應用

2010-08-10 15:26:38

Flex應用程序

2023-04-03 15:51:47

2014-06-19 14:59:40

Android應用程序進程啟動

2014-06-20 11:20:37

Android應用程序進程啟動

2014-06-19 14:30:28

Android應用程序進程啟動

2014-06-19 14:54:11

Android應用程序進程啟動

2014-06-20 11:05:56

Android應用程序進程啟動

2014-06-20 11:24:34

Android應用程序進程啟動

2014-06-19 14:25:04

Android應用程序進程啟動

2014-06-20 11:09:35

Android應用程序進程啟動
點贊
收藏

51CTO技術棧公眾號

精品亚洲aⅴ在线观看| 一区二区三区在线视频免费| 国产精品电影网站| 三级影片在线看| 第四色在线一区二区| 欧美日韩亚洲一区二区| 亚洲亚洲精品三区日韩精品在线视频| www.av黄色| 久久久www| 久久综合免费视频| 波多野结衣办公室33分钟| 四虎影视成人精品国库在线观看| 亚洲成在人线免费| 亚洲一卡二卡| 久久男人资源站| 无码人妻丰满熟妇区毛片18| 国产裸舞福利在线视频合集| 国产精品亚洲视频| 国产va免费精品高清在线观看| 天天色天天综合| 亚洲人成网77777色在线播放| 欧美一卡二卡在线观看| 久久久久久香蕉| 麻豆福利在线观看| 国产精品美女久久久久久久网站| 国产一区福利视频| www.成人在线观看| 男人的j进女人的j一区| 26uuu久久噜噜噜噜| 全程偷拍露脸中年夫妇| 波多野结衣一区| 亚洲欧美日韩国产精品| 中文字幕在线观看视频www| 精品国产欧美日韩一区二区三区| 亚洲高清在线精品| 欧洲金发美女大战黑人| 日韩黄色影院| 国产精品亲子伦对白| 欧美久久综合性欧美| 色欲久久久天天天综合网| 国产精品亚洲专一区二区三区 | av毛片在线看| 国产精品久久久久一区| 日韩亚洲不卡在线| 国产在线中文字幕| 久久久精品2019中文字幕之3| 国产九色精品| 午夜视频在线播放| 99国产欧美另类久久久精品| 国产视频在线观看一区| 后入内射欧美99二区视频| 国产99久久久国产精品免费看| 亚洲一区二区三区在线视频 | 精品国产电影一区二区| 波多野结衣中文字幕在线播放| 99视频有精品高清视频| 欧美日韩国产一级二级| 色婷婷狠狠18| 久久人人视频| 欧美精品乱人伦久久久久久| 在线观看日本www| 欧美在线在线| 亚洲а∨天堂久久精品9966| av天堂一区二区| 麻豆国产欧美一区二区三区r| 亚洲精品国产福利| 黄色aaa视频| 国产真实有声精品录音| 色偷偷888欧美精品久久久| 人妻互换一区二区激情偷拍| 亚洲成人二区| 欧美高清自拍一区| 国产 欧美 日韩 在线| 久久久久久一区二区| 国产精品久久久| 国产女人18毛片水真多| 国产iv一区二区三区| 久久精品国产精品国产精品污| 免费人成在线观看网站| 中文字幕一区二区视频| 污污污污污污www网站免费| 欧亚在线中文字幕免费| 欧美特级限制片免费在线观看| 天天操天天干天天做| 大型av综合网站| 永久免费精品影视网站| 国产三级国产精品国产国在线观看 | 免费成人美女在线观看.| 亚洲一区亚洲二区| 亚洲欧美综合一区二区| 亚洲视频每日更新| 欧美日韩在线不卡视频| 精品国产亚洲一区二区三区大结局| 精品久久国产字幕高潮| 香蕉视频久久久| 狠狠88综合久久久久综合网| 国产99久久精品一区二区 夜夜躁日日躁 | 亚洲自拍高清视频网站| 熟妇人妻系列aⅴ无码专区友真希| 国产色产综合色产在线视频| 樱空桃在线播放| 国产精选在线观看91| 永久看片925tv| 99在线|亚洲一区二区| 国产精品精品一区二区三区午夜版| 国产理论视频在线观看| 91香蕉国产在线观看软件| 这里只有精品66| 天堂中文av在线资源库| 欧美一区二区三区视频在线观看| 大又大又粗又硬又爽少妇毛片| 亚洲精品成人无限看| 日韩av毛片网| 黄色小视频免费在线观看| 国产精品久久久久久久第一福利| 欧美精品99久久| 日本免费一区二区视频| 自拍视频国产精品| 免费视频久久久| 成人h精品动漫一区二区三区| 一区二区成人国产精品| 亚洲精品一级二级| 日韩高清av一区二区三区| 国产在线免费看| 日本亚洲欧美天堂免费| 久久66热这里只有精品| 免费污视频在线观看| 欧美日韩一区二区在线观看| 蜜桃精品成人影片| 伊人成人在线视频| 国产精品久久久久久久久久久久午夜片| 麻豆网站在线免费观看| 欧洲精品一区二区三区在线观看| 变态另类丨国产精品| 狠狠88综合久久久久综合网| yellow视频在线观看一区二区| 欧美一级二级三级区| 色综合久久88色综合天天6 | 视频一区在线| 久久亚洲精品国产亚洲老地址| 国产精品成人久久久| 久久久亚洲综合| 国产在线青青草| 欧美福利在线播放网址导航| 97精品国产97久久久久久免费| 亚洲精品视频91| 亚洲综合999| 折磨小男生性器羞耻的故事| 亚洲成人资源| 韩国成人一区| 麻豆理论在线观看| 日韩电影在线观看中文字幕| 丁香六月婷婷综合| 91美女精品福利| 日日碰狠狠丁香久燥| 奇米狠狠一区二区三区| 国产精品久久久久久久av大片| 九色蝌蚪在线| 欧美老年两性高潮| 青娱乐国产精品| 99精品视频一区二区三区| 日本免费一级视频| 日韩精品一区二区三区免费观影| 国产精品电影网| 国产三级在线播放| 日韩精品一区二区在线观看| 久久精品美女视频| 91一区一区三区| 91淫黄看大片| 久久精品久久久| 国产在线精品一区二区三区| 亚洲天堂手机| 日韩中文字幕视频在线| 国产v在线观看| 五月天丁香久久| 手机毛片在线观看| 国产一区二区福利视频| 免费一级特黄毛片| 蜜桃tv一区二区三区| 国产日韩欧美日韩| 暖暖在线中文免费日本| 日韩成人在线免费观看| 亚洲视屏在线观看| 亚洲激情中文1区| 欧美老熟妇乱大交xxxxx| 老司机午夜精品| 日韩xxxx视频| 色综合久久网| 国产视频在线观看一区| 精品69视频一区二区三区| 久久99青青精品免费观看| 日本一区视频| 欧美一级视频精品观看| 亚洲婷婷综合网| 亚洲欧美国产77777| 免费a在线观看播放| 久久成人免费电影| 99999精品视频| 亚洲国产精品久久久天堂| 免费精品视频一区二区三区| 精品国产三级| 国产精品入口免费视频一| 福利在线导航136| 神马久久桃色视频| 爽爽视频在线观看| 日韩视频免费观看高清完整版在线观看 | 国产这里只有精品| 波多野结衣亚洲一二三| 欧美人与性动交| av电影在线观看| 国产午夜精品久久久| www.亚洲天堂.com| 欧美日本一区二区三区四区| 亚洲熟女综合色一区二区三区| 一区二区国产盗摄色噜噜| 蜜桃久久精品成人无码av| 成人免费黄色大片| 欧美性猛交乱大交| 欧美aaaaa成人免费观看视频| 国模吧无码一区二区三区| 欧美一区综合| 91手机视频在线| 久久精品国产大片免费观看| 日本成人三级电影网站| 偷拍一区二区| 精品国产乱码久久久久久久软件| 精品视频在线播放一区二区三区| 国产精品入口日韩视频大尺度 | 亚洲另类自拍| 欧美日韩dvd| 亚洲国产老妈| 中文字幕在线中文字幕日亚韩一区| 国内亚洲精品| 日韩一区国产在线观看| 精品国产中文字幕第一页| 欧美精品一区二区三区四区五区| 欧美日韩一区二区三区四区不卡| 福利精品视频| 澳门成人av| 国产高清自拍一区| 大型av综合网站| 国产乱码精品一区二区三区卡 | 99久久精品一区二区成人| 911国产网站尤物在线观看| sm久久捆绑调教精品一区| 欧美大片免费看| 激情av在线播放| 欧美精品999| 成人免费网站观看| 欧美亚洲在线视频| 成人软件在线观看| 国产精品高清在线观看| 国产精品99精品一区二区三区∴| 国产精品一区二区三区毛片淫片 | 欧美精品二区三区四区免费看视频 | 水蜜桃一区二区| 色琪琪久久se色| 欧美一级中文字幕| 精品999日本| 日本三级免费网站| 日韩激情在线观看| 天天干天天玩天天操| 国产综合色视频| 最新国产精品自拍| 91麻豆免费在线观看| 亚洲黄色小说视频| 国产精品福利影院| 国产一级二级三级视频| 精品人伦一区二区三区蜜桃网站| 国产寡妇亲子伦一区二区三区四区| 欧洲精品中文字幕| www.污视频| 亚洲欧美制服第一页| 中文字幕日本在线| 欧美激情影音先锋| 巨茎人妖videos另类| 成人黄色免费在线观看| 久久99精品国产自在现线| 日本亚洲自拍| 欧美精品三级| 美女日批免费视频| 久久精品国产网站| xfplay5566色资源网站| 国产亚洲午夜高清国产拍精品| 亚洲欧美精品aaaaaa片| 亚洲成年人影院| 一区二区视频免费观看| 精品国产乱码久久久久久影片| 欧美挠脚心网站| 欧美精品免费在线| 美女福利一区二区| av一本久道久久波多野结衣| 国产欧美亚洲精品a| 最新av在线免费观看| 亚洲在线免费| 一区二区三区四区影院| 国产精品情趣视频| 日韩欧美三级视频| 91精品国产色综合久久| 日本不卡视频一区二区| 欧美成人精品在线| ww久久综合久中文字幕| 国产在线欧美日韩| 欧美freesex交免费视频| 国产又黄又猛视频| 成人av午夜电影| 亚洲精品卡一卡二| 在线看一区二区| 日批免费在线观看| 久久久精品中文字幕| 亚洲wwww| 久久本道综合色狠狠五月| 中文字幕av亚洲精品一部二部| 久久精品香蕉视频| 成人免费观看视频| 欧美精品一区二区蜜桃| 欧美日韩国产在线观看| 黄色小视频在线免费观看| 欧美激情一二三| 影音先锋欧美激情| 椎名由奈jux491在线播放| 日韩精品一区第一页| 成人精品在线观看视频| 亚洲综合久久久| 国产极品久久久| 日韩亚洲精品视频| 韩日精品一区| 日韩在线三级| 日本亚洲一区二区| 国产成人无码精品久久二区三| 精品成人乱色一区二区| 亚洲a视频在线观看| 欧美另类极品videosbest最新版本| 免费成人黄色网| 一本久道久久综合| 欧美aaaaaa午夜精品| 国产破处视频在线观看| 在线精品亚洲一区二区不卡| 免费国产在线视频| 日本最新高清不卡中文字幕| 国产欧美日韩影院| 手机看片福利日韩| 亚洲国产精品黑人久久久| 中文字幕第一页在线播放| 在线成人激情黄色| 福利一区在线| 伊人狠狠色丁香综合尤物| 麻豆精品一区二区| 91久久久久久久久久久久久久| 欧美日韩成人综合天天影院| 免费日本一区二区三区视频| 91亚洲精品一区| 欧美三级在线| 色综合久久五月| 一道本成人在线| 国产精品一二三区视频| 成人a级免费视频| 一区二区日韩欧美| www.黄色网| 欧美日韩国产中文精品字幕自在自线| 日韩有码电影| 国产精品综合网站| 欧美 日韩 国产 一区| 亚洲欧美日韩偷拍| 欧美日韩亚洲一区二区三区| 超碰国产在线观看| 亚洲在线第一页| 91久久亚洲| 91精品久久久久久久久久久久| 欧美二区三区的天堂| 草美女在线观看| 欧洲亚洲一区| 国产一区二区精品久久| 日本在线视频免费观看| 亚洲日本aⅴ片在线观看香蕉| 色婷婷成人网| 成人午夜精品久久久久久久蜜臀| 国产午夜精品一区二区三区四区| 一区二区三区免费在线| 久久久久久久色| 国产亚洲一区二区三区啪| 日本精品一区在线| 精品久久久久久久久久久| 91看片在线观看| 国产精品免费一区二区三区| 爽好多水快深点欧美视频| h色网站在线观看| 国产视频精品在线| 国内精品视频| 免费日韩视频在线观看| 亚洲三级在线免费| 久久精品蜜桃| 国产精品10p综合二区| 美女国产一区二区| 成年人午夜视频| 久久久成人av| 国产探花在线精品| 日韩成人av影院| 欧美色国产精品| 中文在线中文资源|