精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲日本黄色片| 茄子视频成人在线观看| 国产精品白嫩白嫩大学美女| 国产精品videossex| 色呦呦一区二区三区| 亚洲一区二区精品在线观看| 亚洲精品无码专区| 久久精品伊人| 欧美成人三级视频网站| 一二三不卡视频| 少妇高潮一区二区三区99| 亚洲精品成人悠悠色影视| 欧美福利精品| 国产三级在线观看视频| 午夜在线一区| 欧美黄色片视频| 精品人妻中文无码av在线| 日韩在线成人| 欧美日韩国产高清一区二区三区| 久久99久久久久久| 免费a级在线播放| 久久综合狠狠综合| 成人av在线网址| 91黑人精品一区二区三区| 欧美日韩一视频区二区| 中文字幕免费精品一区| 欧美无人区码suv| 视频国产精品| 欧美日韩不卡一区二区| 亚洲成色www.777999| 国内激情视频在线观看| 亚洲狼人国产精品| 午夜精品美女久久久久av福利| 色网站免费观看| 国产精品18久久久久久久网站| 国产精品久久久久久久午夜| 97久久久久久久| 亚洲全部视频| 欧美激情欧美狂野欧美精品| 亚洲不卡在线播放| 国产精品久久久久无码av| 亚洲一区二区福利| www在线观看免费视频| 精品欧美午夜寂寞影院| 欧美精品一区二区不卡| 男男受被啪到高潮自述| 国产精品777777在线播放| 欧美军同video69gay| 91女神在线观看| 日韩色性视频| 欧美美女一区二区在线观看| 中国黄色片免费看| 成人在线视频免费看| 欧美色中文字幕| 亚洲一级片网站| 日本a人精品| 欧美疯狂性受xxxxx喷水图片| 欧美日韩一区二区三区69堂| 久久天天久久| 欧美二区乱c少妇| 亚洲视频在线不卡| 波多野结衣一区二区三区免费视频| 日韩免费看网站| 91精品人妻一区二区三区蜜桃2| 亚洲不卡在线| 亚洲国产成人精品电影| 日韩精品卡通动漫网站| 精品日韩欧美一区| 综合网中文字幕| 午夜精品福利在线视频| 欧美区国产区| 4444欧美成人kkkk| 伊人成年综合网| 国内成+人亚洲+欧美+综合在线| 成人精品视频在线| 国产xxxx孕妇| 99re在线精品| 一区二区三区观看| 欧美寡妇性猛交xxx免费| 精品久久久久久久久中文字幕| 成人性视频欧美一区二区三区| 日韩五码电影| 日韩av在线不卡| 国产18无套直看片| 亚洲手机视频| 国产精品黄色av| 国产极品久久久| 久久一夜天堂av一区二区三区| 亚洲乱码一区二区三区| 国产美女情趣调教h一区二区| 色综合天天性综合| 五月天视频在线观看| 成人香蕉社区| 综合av色偷偷网| 久久夜色精品亚洲| 六月婷婷色综合| 国新精品乱码一区二区三区18| 国产免费av在线| 亚洲综合网站在线观看| 亚洲狼人综合干| 91综合久久爱com| 在线色欧美三级视频| 九九九免费视频| 麻豆国产精品一区二区三区| 国产99视频精品免费视频36| 超碰国产在线| 午夜视频在线观看一区二区| 日本一二区免费| 亚洲警察之高压线| 久久成人精品电影| 天堂av免费在线观看| 成人午夜av电影| 日本三日本三级少妇三级66| 欧美91看片特黄aaaa| 精品国产91乱码一区二区三区| 永久av免费网站| 奶水喷射视频一区| 国产精品污www一区二区三区| av中文字幕在线| 疯狂做受xxxx欧美肥白少妇| 免费黄色av网址| 亚洲xxx拳头交| 国产精品日韩在线| 欧美香蕉爽爽人人爽| 亚洲成人av电影在线| 欧美体内she精高潮| 成人久久一区| 国产成人综合精品在线| 少妇性bbb搡bbb爽爽爽欧美| 亚洲va国产天堂va久久en| 久久aaaa片一区二区| 久久精品播放| 国产精品精品视频一区二区三区| 色视频在线观看福利| 精品久久香蕉国产线看观看gif| 麻豆免费在线观看视频| 亚洲精品一区二区妖精| 国产欧美在线播放| 在线免费观看黄色网址| 欧美在线你懂得| 91激情视频在线观看| 久久久夜精品| 国产在线一区二区三区四区 | 久久精品2019中文字幕| 伊人久久中文字幕| 欧美国产精品中文字幕| 性欧美极品xxxx欧美一区二区| 亚洲激情播播| 国产成人+综合亚洲+天堂| 青青青草原在线| 高跟丝袜一区二区三区| 成人在线一级片| 三级亚洲高清视频| 日韩免费av电影| 97人人做人人爽香蕉精品| 在线免费观看羞羞视频一区二区| 亚洲中文一区二区三区| 国产精品女同一区二区三区| 无尽裸体动漫2d在线观看| 97偷自拍亚洲综合二区| 5g国产欧美日韩视频| eeuss鲁一区二区三区| 亚洲国产美女精品久久久久∴| 亚洲另类欧美日韩| 国产午夜亚洲精品不卡| 午夜免费看毛片| 亚洲图片在线| 欧美日韩一区二区视频在线| 在线看欧美视频| 欧美成人激情视频免费观看| 熟妇高潮一区二区高潮| 在线视频你懂得一区| 国产精品免费人成网站酒店| 成人精品高清在线| 免费无码av片在线观看| 99久久九九| 国产精品亚洲综合| 亚洲承认视频| 久久这里只有精品99| 天天操天天射天天舔| 欧美最猛性xxxxx直播| 波多野结衣家庭教师在线观看| 国产乱人伦偷精品视频不卡| 精品国产一区三区| 不卡一区2区| 国产精品99久久久久久久| 偷拍精品精品一区二区三区| 欧美成年人网站| 麻豆影视在线| 欧美变态凌虐bdsm| 久操视频在线免费观看| 一区二区三区四区蜜桃| 中文字幕免费视频| 国产一二三精品| 成人小视频在线看| 国产一区日韩一区| 日韩欧美电影一区二区| 高清欧美性猛交xxxx黑人猛| 国产日韩欧美在线播放| 国内精彩免费自拍视频在线观看网址 | 日韩av电影中文字幕| 福利视频在线| 亚洲无亚洲人成网站77777| 亚洲第一大网站| 欧美三级欧美一级| 久久亚洲天堂网| 亚洲一区二区三区四区的| 超薄肉色丝袜一二三| 99久久国产免费看| 蜜桃视频无码区在线观看| 日产国产欧美视频一区精品| 男的插女的下面视频| 亚洲精品国产偷自在线观看| 天堂va久久久噜噜噜久久va| 校园春色另类视频| 国产精品一区免费观看| 国产精品美女久久久久| 国产精品久久久久久亚洲调教 | 日本道中文字幕| 久久电影国产免费久久电影| 欧美性猛交久久久乱大交小说| 一本综合久久| 国产二区视频在线| 亚洲五月婷婷| 人妻激情另类乱人伦人妻| 国产精品成人av| 亚洲成人第一| 成人免费看片39| 欧美一进一出视频| 亚洲国产合集| 欧美另类网站| 亚洲涩涩av| 欧美日本亚洲| 在线视频亚洲专区| 久久人人爽爽人人爽人人片av| 中文字幕亚洲在线观看| 99精品欧美一区二区三区| 性欧美video另类hd尤物| 国产女同一区二区| 青青久久精品| 91久久综合亚洲鲁鲁五月天| 亚洲天堂网站| 成人在线激情视频| 久久的色偷偷| 国产成人精品日本亚洲11| 2021年精品国产福利在线| 国产精品xxxx| 国产精品香蕉| 久久久久久久有限公司| 美女少妇全过程你懂的久久| 青青成人在线| 日韩在线精品| 97精品国产97久久久久久粉红| 亚洲欧洲日韩| avav在线播放| 99视频精品免费观看| 日韩黄色片视频| 欧美96一区二区免费视频| 不卡的在线视频| 国产精品一区二区久激情瑜伽 | 91肉色超薄丝袜脚交一区二区| 777a∨成人精品桃花网| 国产黄色av片| 精品中文字幕久久久久久| 福利在线视频导航| 日韩在线观看精品| 黄色成人在线网| 欧美孕妇与黑人孕交| 日韩一级二级| 亚洲www在线观看| 激情小说亚洲图片| 日本福利一区二区三区| 2023国产精品久久久精品双| 久草免费福利在线| 日韩高清在线观看| 国产91在线免费观看| 久久久久久一级片| 日韩国产第一页| 精品二区三区线观看| 在线视频你懂得| 精品1区2区在线观看| 国产尤物视频在线| 色综合视频网站| 欧美日韩视频免费观看| 91视频国产精品| 亚洲图区在线| 天天爱天天做天天操| 国产日韩综合| 中文字幕色网站| 久久尤物电影视频在线观看| 我家有个日本女人| 色婷婷综合久久| 超碰免费在线97| 在线a欧美视频| caoporn视频在线| 成人福利在线观看| 国产毛片一区二区三区| 国产精品无码电影在线观看| 免费观看日韩电影| 黄色污在线观看| 亚洲欧美激情插| 特级西西444www大胆免费看| 精品人伦一区二区色婷婷| 1769在线观看| 欧美有码在线视频| 成人三级av在线| 青青草原网站在线观看| 日韩成人免费电影| 在线观看日韩精品视频| 亚洲免费三区一区二区| aaa在线视频| 日韩电影免费在线观看中文字幕| 成人福利片网站| 国产精品三级网站| 久久97视频| 亚洲美免无码中文字幕在线| 国产精品综合在线视频| 成人性视频免费看| 日韩欧美亚洲国产一区| 亚洲伦理在线观看| 欧美成人免费全部| 亚洲成人1区| 亚洲精品tv久久久久久久久| 鲁大师影院一区二区三区| 波多野结衣视频播放| 亚洲精品一卡二卡| 国产熟女一区二区三区四区| 中文字幕在线国产精品| 你懂得影院夜精品a| 蜜桃麻豆www久久国产精品| 国产在线日韩| 2018国产精品| 亚洲一区二区综合| 午夜精品久久久久久久99| 欧美成人免费全部| 一区二区三区亚洲变态调教大结局| 亚洲av综合色区| 国产精品正在播放| 欧美日韩在线观看免费| 日韩限制级电影在线观看| 91麻豆国产福利在线观看宅福利| 成人黄色在线播放| 在线精品国产| 香蕉久久久久久av成人| 亚洲午夜私人影院| 蜜臀久久99精品久久久| 午夜精品一区二区三区在线视频 | 国产福利一区在线观看| 福利所第一导航| 欧美成人欧美edvon| 丁香花高清在线观看完整版| 国产自产在线视频一区| 国产精品久久久一区二区| 深爱五月激情网| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产日本在线视频| 国产精品色婷婷视频| 天天影视欧美综合在线观看| 天堂在线精品视频| 亚洲国产美国国产综合一区二区| 色一情一乱一乱一区91av| 欧洲s码亚洲m码精品一区| 精品久久影视| 午夜av中文字幕| 一区二区三区欧美激情| 午夜av免费观看| 国产精品高潮呻吟视频| 911精品美国片911久久久| 少妇伦子伦精品无吗| 欧美性精品220| 思思99re6国产在线播放| 91久久精品www人人做人人爽 | 羞羞色午夜精品一区二区三区| 亚洲成人福利视频| 色素色在线综合| 嫩草香蕉在线91一二三区| 国产精品香蕉视屏| 日本不卡视频一二三区| 草视频在线观看| 日韩精品在线影院| 成人免费91| 99精品在线免费视频| 一区免费观看视频| 熟妇人妻中文av无码| 国产精品一区二区性色av| 亚洲调教视频在线观看| 五月婷婷欧美激情| 亚洲а∨天堂久久精品喷水| 性欧美1819sex性高清| 无码人妻aⅴ一区二区三区日本| 97精品国产露脸对白| 97人妻精品一区二区三区动漫| 性色av一区二区三区| 91亚洲国产高清| 香蕉网在线播放| 欧美成人三级在线| 亚洲福利影视| 久久精品午夜福利| 亚洲一区在线观看免费观看电影高清| 黄色av免费在线观看|