日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

[置顶] Z-STACK之OSAL_Nv非易失性存储解读上

發布時間:2025/3/8 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [置顶] Z-STACK之OSAL_Nv非易失性存储解读上 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 本章解讀Z-STACK中關于Nv操作的源碼,以及z-stack中Nv的使用!

????? 在Z-STACK中Nv存儲器主要用于保存網絡的配置參數,如網絡地址,使 系統在掉電重啟仍然能讀取一些參數,自動加入到原來的網絡中,這樣其網絡地址沒有變化!

???? 在z-stack中,每一個參數的配置對應的是一個Nv條目(item),每一個item都有自己的ID,z-stack中使用的條目ID范圍如下:

??? 0x0000????????????????????????????? 保留

??? 0x0001~0x0020????????????? 操作系統抽象層(OSAL)

??? 0x0021~0x0040????????????? 網絡層(NWK)

????0x0041~0x0060????????????? 應用程序支持子層(APS)

??? 0x0061~0x0080????????????? 安全(Security)

??? 0x0081~0x00A0???????????? Zigbee設備對象(ZDO)

??? 0x00A1~0x0200???????????? 保留

??? 0x0201~0x0FFF????????????? 應用程序

??? 0x1000~0xFFFF????????????? 保留

? 如果是我們自己的應用程序中需要使用Nv,則定義其ID在0x0201~0x0FFF?范圍內!

Z-STACK真正提供給用戶使用的是五個函數:(在OSAL_Nv.h中聲明)

1??? void osal_nv_init( void *p );

2??? uint8 osal_nv_item_init( uint16 id, uint16 len, void *buf );

3??? uint8 osal_nv_read( uint16 id, uint16 offset, uint16 len, void *buf );

4??? uint8 osal_nv_write( uint16 id, uint16 offset, uint16 len, void *buf );

5??? uint16 osal_nv_item_len( uint16 id );

第1個函數在系統初始化的時候被調用,我們在應用程序中不用管!

第2個函數是我們在使用Nv時,初始化某個條目,如osal_nv_item_init(TEST_NV,1,NULL);

第3個函數是Nv讀取某一個條目的數據,將其存儲在buf中

第4個函數創建一個Nv條目(如果條目的ID不存在,如果存在,就將原來的item數據部分覆蓋),并向其中寫入數據

第5個函數是查詢某一個item的數據長度。

?真正我們使用的是第2~4個函數。使用如下:

unsigned char value_read;

unsigned char value = 0x18;

osal_nv_item_init(TEST_NV,1,NULL);//NULL表示初始化的時候,item數據部分為空

osal_nv_item_write(TEST_NV,0,1,&value);

osal_nv_item_read(TEST_NV,0,1,&value_read);

value_read的值便是0x18,記住在write之前必須要初始化item,即調用osal_nv_item_init函數

?

下面我們打開OSAL_Nv.c源文件,通過分析源代碼,就知道Z-STACK是如何抽象的封裝出以上幾個API,這對我們以后寫程序還是很有幫助的!

?

在解讀源碼之前,必須要知道存儲Nv條目的6個page如何存儲Nv的,即其item在page中的結構和布局!

首先每一個page都有一個osalNvPgHdr_t結構體的頭

typedef struct
{
? uint16 active;
? uint16 inUse;
? uint16 xfer;
? uint16 spare;
} osalNvPgHdr_t;???? 其中的幾個成員稍后在做解釋!

在這8個字節的page頭部之后才是item的存儲位置。而每一個item都有一個8字節的頭部

typedef struct
{
? uint16 id;
? uint16 len;?? // Enforce Flash-WORD size on len.
? uint16 chk;?? // Byte-wise checksum of the 'len' data bytes of the item.
? uint16 stat;? // Item status.
} osalNvHdr_t;??? 從后面注釋就知道了每一個成員變量的含義

?

然后我們還必須得知道幾個全局變量和數組的含義:OSAL_NV_PAGES_USED值為6,即6個page

uint16 pgOff[OSAL_NV_PAGES_USED];

Offset into the page of the first available erased space.? 每一個page的可用數據的偏移量

uint16 pgLost[OSAL_NV_PAGES_USED];

?Count of the bytes lost for the zeroed-out items.? 為0數據的item的字節

uint8 pgRes;

Page reserved for item compacting transfer.???? item 壓縮傳輸的 保留page

uint8 findPg;

Saving ~100 code bytes to move a uint8* parameter/return value from findItem() to a global.

用一個全局變量能節省100字節的空間,指示某一個item對應的page

uint8 failF;??這個變量最用最后再解釋!

?

?

在系統初始的時候調用osal_nv_init函數,它有調用initNV()函數,這個函數的作用就是初始化NV flash page,那在初始化中都做了什么呢?

?for ( pg = OSAL_NV_PAGE_BEG; pg <= OSAL_NV_PAGE_END; pg++ )
? {
??? HalFlashRead(pg, OSAL_NV_PAGE_HDR_OFFSET, (uint8 *)(&pgHdr), OSAL_NV_HDR_SIZE);

??? if ( pgHdr.active == OSAL_NV_ERASED_ID )
??? {
????? if ( pgRes == OSAL_NV_PAGE_NULL )
????? {
??????? pgRes = pg;
????? }
????? else
????? {
??????? setPageUse( pg, TRUE );
????? }
??? }
??? else? // Page is active.
??? {
????? // If the page is not yet in use, it is the tgt of items from an xfer.
????? if ( pgHdr.inUse == OSAL_NV_ERASED_ID )
????? {
??????? newPg = pg;
????? }
????? // An Xfer from this page was in progress.
????? else if ( pgHdr.xfer != OSAL_NV_ERASED_ID )
????? {
??????? oldPg = pg;
????? }
??? }

??? // Calculate page offset and lost bytes - any "old" item triggers an N^2 re-scan from start.
??? if ( initPage( pg, OSAL_NV_ITEM_NULL, findDups ) != OSAL_NV_ITEM_NULL )
??? {
????? findDups = TRUE;
????? pg = OSAL_NV_PAGE_BEG-1;
????? continue;
??? }

}

先看看這個for循環,循環每一個page,然后讀取其page頭部存儲在pgHdr中,如果其active成員為
OSAL_NV_ERASED_ID(0xFFFF),表示此page還沒有被激活(想想我們的flash中沒寫的數據每一位為1,一字節就為0xFF,active占2個字節)。如果此頁沒有激活,且此時pgRes為OSAL_NV_PAGE_NULL(0),則我們不激活此page,而是將此頁作為后面壓縮的保留頁,如果pgRes不為0,即已經有了保留頁,則將此page激活,且使此頁投入以后使用中,調用setPageUse( pg, TRUE );我們看看這個函數

osalNvPgHdr_t pgHdr;

? pgHdr.active = OSAL_NV_ZEROED_ID;

? if ( inUse )
? {
??? pgHdr.inUse = OSAL_NV_ZEROED_ID;
? }
? else
? {
??? pgHdr.inUse = OSAL_NV_ERASED_ID;
? }

? writeWord( pg, OSAL_NV_PAGE_HDR_OFFSET, (uint8*)(&pgHdr) );

調用此函數激活page,即使active為OSAL_NV_ZEROED_ID為0x0000,如果inUse為TRUE,則置其inUse為OSAL_NV_ZEROED_ID(0x0000),表示此頁投入使用中!否則置為OSAL_NV_ERASED_ID(0xFFFF),表示棄用該頁!最后調用writeWord,將pgHdr頭寫進page的頭部位置!

?

①(與上面的①對應,表示if和else

如果該page 的active為OSAL_NV_ZEROED_ID(0x0000),此page 為激活狀態,此時檢查此page是否投入使用中,如果其inUse為OSAL_NV_ERASED_ID(0xFFFF),即沒有投入到使用中,那么If the page is not yet in use, it is the tgt of items from an xfer.//將其作為后面壓縮傳輸的目標,即使newPg = pg;

?

如果此頁的xfer不為OSAL_NV_ERASED_ID(0xFFFF),表明其處于Xfer的過程中,(有時候機器意外斷電,而此時剛好有page在Xfer過程,那么page的xfer位就為非0xFFFF,即0x0000)。這個時候 我們使?oldPg = pg;

?

然后調用了initPage( pg, OSAL_NV_ITEM_NULL, findDups ),這個函數有什么用呢?我們先看其代碼:

static uint16 initPage( uint8 pg, uint16 id, uint8 findDups )
{
? uint16 offset = OSAL_NV_PAGE_HDR_SIZE;
? uint16 sz, lost = 0;
? osalNvHdr_t hdr;

? do
? {
??? HalFlashRead(pg, offset, (uint8 *)(&hdr), OSAL_NV_HDR_SIZE);

??? if ( hdr.id == OSAL_NV_ERASED_ID )
??? {
????? break;
??? }
??? offset += OSAL_NV_HDR_SIZE;
??? sz = OSAL_NV_DATA_SIZE( hdr.len );

????? if ( (offset + sz) > OSAL_NV_PAGE_FREE )
??? {
????? lost += (OSAL_NV_PAGE_FREE - offset + OSAL_NV_HDR_SIZE);
????? offset = OSAL_NV_PAGE_FREE;
????? break;
??? }

??? if ( hdr.id != OSAL_NV_ZEROED_ID )
??? {
????? if ( id != OSAL_NV_ITEM_NULL )
????? {
???????? if ( (id & 0x7fff) == hdr.id )
??????? {
????????? if ( (((id & OSAL_NV_SOURCE_ID) == 0) && (hdr.stat == OSAL_NV_ERASED_ID)) ||
?????????????? (((id & OSAL_NV_SOURCE_ID) != 0) && (hdr.stat != OSAL_NV_ERASED_ID)) )
????????? {
??????????? return offset;
????????? }
??????? }
????? }
????? else
????? {
??????? if ( hdr.chk == calcChkF( pg, offset, hdr.len ) )
??????? {
????????? if ( findDups )
????????? {
??????????? if ( hdr.stat == OSAL_NV_ERASED_ID )
??????????? {
?????????????? uint16 off = findItem( (hdr.id | OSAL_NV_SOURCE_ID) );

????????????? if ( off != OSAL_NV_ITEM_NULL )
????????????? {
??????????????? setItem( findPg, off, eNvZero );? // Mark old duplicate as invalid.
????????????? }
??????????? }
????????? }
????????? else if ( hdr.stat != OSAL_NV_ERASED_ID )
????????? {
??????????? return OSAL_NV_ERASED_ID;
????????? }
??????? }
??????? else
??????? {
????????? setItem( pg, offset, eNvZero );? // Mark bad checksum as invalid.
????????? lost += (OSAL_NV_HDR_SIZE + sz);
??????? }
????? }
??? }
??? else
??? {
????? lost += (OSAL_NV_HDR_SIZE + sz);
??? }
??? offset += sz;

? } while ( TRUE );

? pgOff[pg - OSAL_NV_PAGE_BEG] = offset;
? pgLost[pg - OSAL_NV_PAGE_BEG] = lost;

? return OSAL_NV_ITEM_NULL;
}

代碼有點長!其實這個函數的最用通過注釋就知道了,Walk the page items; calculate checksums, lost bytes & page offset. 對于某個page,逐個item地計算其checksums,lost bytes,然后計算page offset!再看下其返回值

If 'id' is non-NULL and good checksums are found, return the offset???of the data corresponding to item Id; else OSAL_NV_ITEM_NULL.? 如果id值不為0,且校驗和正確就返回和此item的數據的偏移量,否則返回OSAL_NV_ITEM_NULL(0)

那么在initNV的for循環中

?if ( initPage( pg, OSAL_NV_ITEM_NULL, findDups ) != OSAL_NV_ITEM_NULL )
??? {
????? findDups = TRUE;
????? pg = OSAL_NV_PAGE_BEG-1;
????? continue;
??? }

這個if語句干什么的呢?知道了initPage的返回值,不難理解其用途!如果if為真,即initPage返回的值為OSAL_NV_ERASED_ID(0xFFFF)

initPage執行到下面一句

else if ( hdr.stat != OSAL_NV_ERASED_ID )
{
??????????? return OSAL_NV_ERASED_ID;
}

此時Any "old" item immediately exits and triggers the N^2 exhaustive initialization.為什么呢?因為如果是id為0,那么該處的hdr.stat值應該為0xFFFF,如果某種意外情況導致其不為0xFFFF,則說明出了問題,得重新去初始化所有的item(即檢查他們的頭部)

?

回歸到上面,如果initPage返回值為OSAL_NV_ERASED_ID(0xFFFF),則

????? findDups = TRUE;
????? pg = OSAL_NV_PAGE_BEG-1;
????? continue;

置findDups為TRUE,那么在下次調用initPage的時候就會去初始化所有item,然后pg =OSAL_NV_PAGE_BEG-1

for循環從開頭執行! 這就是for循環中的代碼,重要的是記住newPg 和oldPg ;

?

接下來

if ( newPg != OSAL_NV_PAGE_NULL )
? {
???? if ( pgRes != OSAL_NV_PAGE_NULL )
??? {
????? setPageUse( newPg, TRUE );
??? }
??? else if ( oldPg != OSAL_NV_PAGE_NULL )
??? {
????? pgRes = newPg;
??? }

???? if ( oldPg != OSAL_NV_PAGE_NULL )
??? {
????? compactPage( oldPg );
??? }

}

newPage保存的是inUse為OSAL_NV_ERASED_ID(0xFFFF)即還沒有投入使用中的頁,如果有這樣的page,我們再進行下一步判斷pgRes,如果其值不為OSAL_NV_PAGE_NULL,即保留了某一個page為compact xfer page。

這個時候調用setPageUse( newPg, TRUE );即使其inUse為OSAL_NV_ZEROED_ID(0x0000),此頁將投入使用中。如果pgReg為OSAL_NV_PAGE_NULL(此時所有的page均激活了),且某一頁其xfer為OSAL_NV_ZEROED_ID,其保存在oldPg中,此時們將newPg 賦值給pgRes,即將newPg作為compact的保留page(此時newPg沒有投入使用中),接下來如果oldPg中保存了xfer被打斷了的page,則調用compactPage( oldPg ),將其進行壓縮!

有這段注釋:

/* If a page compaction was interrupted and the page being compacted is not
???? * yet erased, then there may be items remaining to xfer before erasing.
???? */

?

看下這個函數代碼:

static void compactPage( uint8 srcPg )
{
? uint16 dstOff = pgOff[pgRes-OSAL_NV_PAGE_BEG];
? uint16 srcOff = OSAL_NV_ZEROED_ID;
? osalNvHdr_t hdr;
? writeWordH( srcPg, OSAL_NV_PG_XFER, (uint8*)(&srcOff) );

? srcOff = OSAL_NV_PAGE_HDR_SIZE;

? do
? {
??? uint16 sz;
??? HalFlashRead(srcPg, srcOff, (uint8 *)(&hdr), OSAL_NV_HDR_SIZE);

??? if ( hdr.id == OSAL_NV_ERASED_ID )
??? {
????? break;
??? }

??? srcOff += OSAL_NV_HDR_SIZE;

??? if ( (srcOff + hdr.len) > OSAL_NV_PAGE_FREE )
??? {
????? break;
??? }

??? sz = OSAL_NV_DATA_SIZE( hdr.len );

??? if ( hdr.id != OSAL_NV_ZEROED_ID )
??? {
????? if ( hdr.chk == calcChkF( srcPg, srcOff, hdr.len ) )
????? {
??????? setItem( srcPg, srcOff, eNvXfer );
??????? writeBuf( pgRes, dstOff, OSAL_NV_HDR_SIZE, (byte *)(&hdr) );
??????? dstOff += OSAL_NV_HDR_SIZE;
??????? xferBuf( srcPg, srcOff, pgRes, dstOff, sz );
??????? dstOff += sz;
????? }

????? setItem( srcPg, srcOff, eNvZero );? // Mark old location as invalid.
??? }

??? srcOff += sz;

? } while ( TRUE );

? pgOff[pgRes-OSAL_NV_PAGE_BEG] = dstOff;
? erasePage( srcPg );

? setPageUse( pgRes, TRUE );
? pgRes = srcPg;
}

首先 Mark page as being in process of compaction. 標志該頁正在壓縮處理中!

然后依次讀取srcPg中的每一個item,然后對每一個item進行處理,處理過程如下:

1,如果item的id不為OSAL_NV_ZEROED_ID(0x0000),如果id為0x0000,則直接跳到步驟4

對其進行和校驗,如果正確的話轉下一步,如果不正確轉到步驟3

2,調用setItem( srcPg, srcOff, eNvXfer );設置item 的狀態位為激活狀態,即使其stat位為OSAL_NV_ACTIVE(0x00),然后調用writeBuf( pgRes, dstOff, OSAL_NV_HDR_SIZE, (byte *)(&hdr) );將該item頭部八字節寫進pgRes頁的dstOff處,此頁為保留頁,記住此時我們已經從前面的步驟中劃分出了一個page為pgRes。最后調用xferBuf( srcPg, srcOff, pgRes, dstOff, sz );將該item的數據部分從srcPg中轉移到pgRes中,其中sz為item的數據長度。轉下一步

3,調用setItem( srcPg, srcOff, eNvZero );標記srcPg中這些被轉移的item為invalid,即將他們的id全部置0,函數中最后調整了pgLost數組中該page的lost bytes,即為該item的數據長度!

4,調整srcOff, srcOff += sz;即指向下一個srcPg的item。

經過上述步驟,就處理完了srcPg中的所有item,將他們都轉移到pgRes中,其實就是壓縮的是其中那些id為0x0000的item。

?

?pgOff[pgRes-OSAL_NV_PAGE_BEG] = dstOff;調整pgRes的pgOff;

?

erasePage( srcPg );擦出被compact的page,

?

setPageUse( pgRes, TRUE );?? // Mark the reserve page as being in use.?

?

?pgRes = srcPg;? // Set the reserve page to be the newly erased page.

?

這樣compactPage就完成了,還記得它前后完成的工作吧!

?

?

繼續回到initNV函數最后一個if語句:

if ( pgRes == OSAL_NV_PAGE_NULL )
? {
??? for ( pg = OSAL_NV_PAGE_BEG; pg <= OSAL_NV_PAGE_END; pg++ )
??? {
????? erasePage( pg );
??? }
??? initNV();
? }
?

/* If no page met the criteria to be the reserve page:
?? *? - A compactPage() failed or board reset before doing so.
?? *? - Perhaps the user changed which Flash pages are dedicated to NV and downloaded the code
?? *??? without erasing Flash?
?? */

如果沒有一個page滿足“標準”稱為the reserve page 那么將所有Nv page擦出掉,然后重新初始化NV。

至此initNV()函數完成!

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

???

?

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的[置顶] Z-STACK之OSAL_Nv非易失性存储解读上的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91av在线播放视频 | 精品一区二区三区香蕉蜜桃 | 国产91精品在线播放 | 天天曰天天曰 | 久久神马影院 | 免费 在线 中文 日本 | 成年人免费在线观看网站 | 亚洲桃花综合 | 欧美日韩高清在线 | www.777奇米 | 国产成人精品免费在线观看 | 色婷婷国产精品一区在线观看 | 国产精品久久久99 | 九九热在线精品视频 | 麻豆久久 | 操操碰 | 色大片免费看 | 99视频导航| 精品久久久久久久久中文字幕 | 久久成人一区 | 97超在线视频| 在线观看免费国产小视频 | 久久精品爱爱视频 | 91成人观看 | 午夜少妇一区二区三区 | 一区二区三区中文字幕在线 | 日韩欧美高清视频在线观看 | 精品久久精品 | 超碰人人超碰 | 天天天天爱天天躁 | 久久久久久高潮国产精品视 | 精品久久国产精品 | 又黄又刺激的网站 | 国产日韩欧美在线免费观看 | av大片网址 | 一级欧美一级日韩 | 亚洲精品免费在线视频 | 西西44人体做爰大胆视频 | 欧美一性一交一乱 | 亚洲精品高清视频在线观看 | 亚洲国产中文字幕在线视频综合 | 一级淫片在线观看 | 五月黄色 | 国产精品中文字幕在线播放 | 日韩欧美高清不卡 | 草久久影院 | 伊人久久国产精品 | 91高清免费看 | 精品久久免费 | 中文字幕91 | 亚洲三级黄色 | 狠狠伊人 | 日本精品久久久一区二区三区 | 久久久久高清毛片一级 | 天天干夜夜夜 | 97超碰人人澡 | 久久久一本精品99久久精品66 | 国产91丝袜在线播放动漫 | 在线高清av | 成人av亚洲 | 国产福利在线免费 | 五月婷在线观看 | 久久久国产精品一区二区三区 | 国产精品日韩欧美 | 91最新网址 | 国产精品一区免费在线观看 | 免费a网站 | www在线观看视频 | 国产麻豆成人传媒免费观看 | 一级片黄色片网站 | 中文字幕一区二区三 | 国产91精品看黄网站在线观看动漫 | 午夜精品久久久久久久爽 | 久久涩视频 | 国产精品久久久久一区二区 | 久久夜靖品 | av片子在线观看 | av黄色免费网站 | 四虎影视精品成人 | 九九九九热精品免费视频点播观看 | 天天干天天拍天天操天天拍 | 久久不射电影院 | 天堂av网址 | 国内精品久久久久影院日本资源 | 久草免费色站 | 午夜少妇 | 美女网站在线播放 | 99色人| 国产精品女主播一区二区三区 | 国产美女免费视频 | 丁香视频在线观看 | 久久99亚洲网美利坚合众国 | 久久伊人五月天 | 国内久久看 | 国产精品岛国久久久久久久久红粉 | 久久综合中文色婷婷 | 亚洲精品国产视频 | 综合影视 | 久久精品99国产精品日本 | 日本中文字幕网站 | 日日夜夜网 | 亚洲少妇久久 | 欧美人人爱 | 国产精品一区二区在线观看免费 | 在线观看免费 | 高清av网 | 亚洲深爱激情 | 91丨精品丨蝌蚪丨白丝jk | 中文在线www| 中文字幕亚洲欧美 | 99久久精品国产观看 | 免费看污网站 | 人成免费网站 | 中文字幕在线看片 | 亚洲欧美成人 | 九九免费观看全部免费视频 | 欧美一区二区三区在线播放 | 国产日韩在线看 | 一区二区三区在线视频观看58 | 美女一区网站 | 国产精品久久久一区二区 | 亚洲在线高清 | 久久精品看片 | 久久国产经典 | 国产精品久久久久一区 | 白丝av在线 | 成人a v视频 | 97在线影院 | 精品国产精品一区二区夜夜嗨 | 涩涩色亚洲一区 | 久久国产精品第一页 | 国产区精品 | 久久久久免费看 | 亚洲天堂毛片 | 国产精品粉嫩 | 亚洲精品成人免费 | 亚洲最新av在线网站 | 国产日韩精品一区二区三区 | 特级毛片aaa | 97人人看 | 97超碰精品 | 亚洲黄色高清 | 日韩av手机在线观看 | 日本护士三级少妇三级999 | 一二三四精品 | 久久都是精品 | 特级毛片aaa | 天天综合中文 | 97视频亚洲 | 99高清视频有精品视频 | 狠狠色噜噜狠狠狠合久 | 午夜视频在线观看一区二区 | 成人影音av | 日韩精品不卡在线 | av短片在线观看 | 久久久国产精品一区二区中文 | 欧美高清成人 | 波多野结衣在线观看一区二区三区 | 久久天天躁夜夜躁狠狠85麻豆 | 91片网 | 中文字幕网址 | 成人亚洲网 | 日韩在线观看第一页 | 亚洲激情六月 | 午夜精品视频福利 | 特级片免费看 | 国产色资源 | 97在线观看免费观看高清 | 激情黄色一级片 | 成人黄色资源 | 97av.com | 亚洲视频中文 | 国产专区视频在线观看 | 在线天堂中文在线资源网 | 日韩中文字幕亚洲一区二区va在线 | 亚洲狠狠婷婷综合久久久 | 91在线视频网址 | 日韩精品视频免费在线观看 | 香蕉影视app | 国产精品一区一区三区 | 特黄特色特刺激视频免费播放 | www·22com天天操 | 99久久免费看 | 色噜噜日韩精品一区二区三区视频 | 免费h在线观看 | 日韩网站免费观看 | 色综合网 | 99久久激情| 午夜精品久久久久久久久久 | 日韩精品久久久久久久电影99爱 | 久久久久久久久久久久影院 | 六月激情丁香 | 8090yy亚洲精品久久 | 色综合天天干 | 亚洲精品国产成人av在线 | 丁香六月婷婷开心 | 西西4444www大胆视频 | 国产成人久久精品一区二区三区 | 色综合天天综合网国产成人网 | 国产精品情侣视频 | 国产小视频精品 | 中文字幕在线观看完整版电影 | 久久久久综合精品福利啪啪 | 日韩高清一二三区 | 欧洲激情在线 | 日韩免费观看一区二区三区 | 激情欧美一区二区三区免费看 | 久久综合九色 | 亚州性色 | 婷婷九月激情 | 久精品视频 | 黄色日本免费 | 久久最新 | 五月天久久综合 | 亚洲va欧美va国产va黑人 | 国产精品日韩欧美一区二区 | 国产一区免费在线 | 亚州国产精品视频 | 天天天天天天天操 | 久久久精品 | 激情婷婷在线观看 | 亚洲精品tv久久久久久久久久 | 又黄又爽又无遮挡免费的网站 | 久草视频在线免费播放 | 国产成人久久久久 | 人人干人人艹 | 狠狠操在线| 欧美另类sm图片 | 中文字幕91视频 | 永久av免费在线观看 | 中文区中文字幕免费看 | 在线免费观看视频一区 | 久久久免费观看完整版 | 2023天天干 | 黄色av电影网 | 婷婷久久久 | 亚洲最大在线视频 | 国产成人福利在线观看 | www.天天成人国产电影 | 亚洲成人av影片 | 国产码电影 | 国产中的精品av小宝探花 | 亚洲国产精品久久久久婷婷884 | 欧美一级性生活 | 草莓视频在线观看免费观看 | 国产91免费在线观看 | 国产精品亚洲精品 | 高清精品久久 | 久久久久久蜜桃一区二区 | 国产精品欧美久久久久久 | 久久五月天色综合 | 午夜 久久 tv | 久久香蕉国产 | 亚洲国产精品va在线 | 日韩一三区 | 99色在线观看 | 亚洲精品美女免费 | 亚洲最大激情中文字幕 | 精品9999| 久久精品伊人 | 日本在线精品视频 | wwwwww黄| 国产精品久久久久久久久免费看 | 欧美va天堂在线电影 | 一区 二区 精品 | 黄色精品视频 | 国际精品久久久久 | 婷婷色网站 | 日韩欧美高清在线 | 亚洲婷婷网 | 亚洲精品国偷自产在线91正片 | 国产亚洲视频中文字幕视频 | 中文字幕高清 | 国产91精品一区二区绿帽 | 亚洲精品在线观看视频 | 91福利视频免费 | 米奇狠狠狠888 | 亚洲精品乱码久久久久久按摩 | 97在线免费观看 | 免费在线国产视频 | 欧洲精品一区二区 | 久草亚洲视频 | 欧美aa级 | 久久综合狠狠综合久久激情 | 丰满少妇对白在线偷拍 | 日韩在线观看视频一区二区三区 | 日韩极品在线 | 又黄又爽的免费高潮视频 | 日韩激情久久 | 免费在线91| 美女网站视频免费黄 | 五月亚洲婷婷 | 在线国产片 | 香蕉影视在线观看 | 在线成人一区 | 日韩精品在线播放 | 玖玖玖影院 | 国产69精品久久久久99尤 | 天天躁日日 | av.com在线 | 四虎永久免费在线观看 | 狠狠干成人 | 国产艹b视频 | 亚洲精品国产精品国自产观看 | 亚洲婷婷伊人 | 欧美老人xxxx18| 亚洲电影黄色 | 五月天天在线 | 在线观看av不卡 | 色播五月激情综合网 | 国产高清中文字幕 | 欧美日韩一区三区 | 99中文在线| www最近高清中文国语在线观看 | 男女激情网址 | 亚洲综合色丁香婷婷六月图片 | 中文字幕精品一区二区精品 | 在线三级播放 | www亚洲视频 | 亚洲狠狠干 | 九九久久影视 | 综合色影院 | 一级黄毛片| 国产精品中文在线 | 欧美一级片免费在线观看 | 日本精a在线观看 | 国产一区二区三区四区大秀 | 国产黄色片网站 | 日韩av在线不卡 | 亚洲国产美女久久久久 | 中文电影网 | 一二区精品 | 天天插天天干天天操 | 国语麻豆 | 香蕉免费在线 | 久久99网 | 久久久麻豆 | 黄网站大全 | 天天操天天添 | 久久免费电影网 | 精品久久免费看 | 黄色成人av网址 | 久热av | 在线色亚洲 | 97手机电影网 | www国产亚洲精品久久网站 | 国内精品久久久久国产 | 国产精品网站一区二区三区 | 亚洲欧洲精品一区二区精品久久久 | 日日夜夜精品视频天天综合网 | 日韩理论片中文字幕 | 99超碰在线观看 | 天天干中文字幕 | 亚洲播放一区 | 亚洲国内精品在线 | 久久久久国产一区二区三区 | 五月天堂色 | 五月婷婷六月综合 | 免费日韩电影 | 免费高清无人区完整版 | 正在播放五月婷婷狠狠干 | 国产v亚洲v | 国产精品欧美久久久久无广告 | 青青久草在线 | 在线观看成人一级片 | 国产精品久久片 | 激情小说 五月 | 久久久久福利视频 | 国产一区在线视频 | www.黄色小说.com | 天天爽夜夜爽人人爽曰av | 成人国产网站 | 久久伊99综合婷婷久久伊 | 亚洲美女视频在线 | www.夜夜操.com | 婷婷亚洲综合 | 日韩成人av在线 | 麻豆va一区二区三区久久浪 | 日韩视频二区 | 国产精品久久久一区二区三区网站 | 国产免费专区 | 超碰人人做 | 丁香婷婷色 | 激情五月婷婷激情 | 亚洲免费精品一区二区 | 国产亚洲精品久久久久久电影 | 91麻豆精品久久久久久 | 久久久精品福利视频 | 人人澡人人舔 | 在线免费观看国产精品 | 高清av免费观看 | 日韩午夜电影院 | 一区二区欧美激情 | 999视频网 | 日韩精品久久久久久久电影竹菊 | 国产精品久久久久久久久久 | 久久婷婷一区 | 狠狠色丁香久久综合网 | 国产精品久久一区二区无卡 | 久久免费视频网 | av在线播放快速免费阴 | 久久成人高清视频 | 久久伊人免费视频 | 国产精品综合av一区二区国产馆 | 三级黄色在线观看 | 亚洲网久久 | 久久久精品二区 | 岛国av在线 | 国产亚洲情侣一区二区无 | 亚洲精品在线二区 | 日操操| 精选久久 | 天天射狠狠干 | 天天操天天添 | 亚洲视频999| 99在线观看免费视频精品观看 | 在线观看免费国产小视频 | 91香蕉视频黄 | 911精品视频 | 色多多视频在线观看 | 日韩免费一区二区三区 | 日韩丝袜在线 | 亚洲在线视频观看 | 成人wwwxxx视频| 日韩精品播放 | 国色综合 | 一区二区影视 | 超碰97国产| 欧美va天堂va视频va在线 | 日韩激情视频在线 | 久久久久欧美精品999 | 精品久久久久一区二区国产 | 精品美女国产在线 | 视频二区在线视频 | 久久国产精品99久久久久久老狼 | 国产精品毛片网 | 91探花视频| 91色视频| 国产精品大全 | 夜夜操狠狠操 | 成人午夜网 | 日本aaaa级毛片在线看 | 国产精品精品国产 | 人人干在线 | 日韩三级.com | 中文字幕刺激在线 | av片在线观看免费 | 日韩欧美一二三 | 人九九精品 | 国产另类av | 免费观看一区 | 色五月色开心色婷婷色丁香 | 美女视频一区二区 | 成年人免费在线观看网站 | 最新国产在线 | 成人亚洲网 | 日韩av影视| 日韩av中文字幕在线 | 五月婷av | 天天射天天干天天爽 | 中文字幕一区二区三区四区视频 | 国产精品自在欧美一区 | 91色国产在线 | 国产剧情一区在线 | 中文字幕乱在线伦视频中文字幕乱码在线 | 手机看片国产 | 欧美日韩99 | 亚洲精品玖玖玖av在线看 | 欧美激情xxxx性bbbb | 91在线蜜桃臀| 成人免费视频在线观看 | 久草视频在线免费看 | www欧美色| 久久欧美综合 | 99国产精品视频免费观看一公开 | 在线观看av黄色 | 久草电影免费在线观看 | 久久你懂得 | av在线不卡观看 | 五月天亚洲激情 | 亚洲精品在线观看免费 | 国产精品破处视频 | 欧美精品免费在线 | 国产日韩精品一区二区三区 | 久久久久久久免费看 | 手机在线看a | 999久久国产精品免费观看网站 | 国产精品久久久久一区二区三区 | 97成人在线视频 | 国产精品久久电影观看 | 免费男女羞羞的视频网站中文字幕 | 日韩免费 | 午夜国产福利在线观看 | 免费开视频 | 中文字幕刺激在线 | 欧日韩在线 | 日韩av一卡二卡三卡 | 黄色大片免费网站 | 久久久久久久久久久影院 | 国产色婷婷精品综合在线手机播放 | 午夜精品久久久久久久爽 | 久久免费视频精品 | 亚洲最新视频在线 | 激情婷婷网| www国产一区| 国产精品美女在线观看 | 国产婷婷色 | 一区中文字幕在线观看 | 国产精品一区二区三区在线 | 91九色在线观看视频 | 久草电影免费在线观看 | 天天操天天综合网 | 超碰人人舔 | 麻豆国产网站 | 国产xxxx | 久久久精品视频成人 | 青青射 | 亚洲少妇天堂 | 人人爱人人舔 | 人成午夜视频 | 欧美日韩免费一区 | 精品国产一区二区三区久久 | 又色又爽的网站 | 亚洲精品成人 | 区一区二区三区中文字幕 | 欧美日韩精品在线播放 | 国产黄a三级| 日日夜色| 久久综合九色综合97婷婷女人 | 欧美少妇xx | 亚洲精选在线观看 | 特级西西444www大精品视频免费看 | 亚洲激情综合网 | 国产高清视频免费在线观看 | 麻豆94tv免费版 | 精品视频9999 | 国产精品嫩草影院99网站 | 六月丁香在线视频 | 亚洲精品视频在 | 久久精品视频国产 | 91香蕉久久| 色多多视频在线观看 | av丝袜在线 | 欧美韩国日本在线观看 | 国产视频美女 | 亚洲经典在线 | 一区二区伦理电影 | 天天操天天弄 | 美女免费视频网站 | 久草在线免费电影 | 久久久久久久久久久国产精品 | 天堂av在线网址 | 国产另类av | 亚洲精品在线观看视频 | 美女视频久久久 | 欧美日韩一区三区 | 麻豆91在线播放 | 午夜精品一二三区 | 99久久超碰中文字幕伊人 | 日本成址在线观看 | 久亚洲 | 1024手机基地在线观看 | 天天干天天操天天射 | 欧美日韩视频精品 | 99免费看片 | 一区二区三区四区精品视频 | 99精品国产高清在线观看 | 777久久久| 免费观看一区 | 菠萝菠萝在线精品视频 | 日本性生活免费看 | 精品国产伦一区二区三区观看体验 | 性色av免费在线观看 | 在线观看中文字幕一区 | 99久热在线精品视频成人一区 | 久久久资源网 | 国产精品扒开做爽爽的视频 | www.日韩免费 | 久久免费视频这里只有精品 | 午夜三级在线 | 中文字幕高清av | 日韩欧美视频一区 | 日本一区二区三区免费观看 | 久久久久麻豆v国产 | 99热999 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 美女搞黄国产视频网站 | 婷婷久操 | 波多野结衣视频一区二区 | 日本夜夜草视频网站 | 久久精品2 | 黄色日本片 | 色五月色开心色婷婷色丁香 | 久久最新网址 | 大胆欧美gogo免费视频一二区 | 激情久久网 | 国产超碰97 | 成人av片免费看 | av在线电影播放 | 国产高清在线免费 | 国产美女视频免费 | a在线免费| 国产色女 | 日韩亚洲欧美中文字幕 | 91九色成人蝌蚪首页 | 色狠狠狠 | 婷婷丁香激情网 | 五月天色中色 | 狠狠激情中文字幕 | 日本在线精品视频 | 人人玩人人添人人澡97 | 日日干夜夜骑 | 国产色婷婷精品综合在线手机播放 | 97精品超碰一区二区三区 | 国产成人精品久久亚洲高清不卡 | 婷婷丁香狠狠爱 | 久久少妇免费视频 | 一级理论片在线观看 | 日韩在线 一区二区 | 九九导航 | 精品国产一区二区三区久久久 | 午夜骚影 | 97影视| 中文字幕永久免费 | 色姑娘综合网 | 欧美精品在线观看一区 | 国产一区在线视频播放 | 欧美精品一二三 | 麻豆国产精品一区二区三区 | 在线视频免费观看 | 国产系列 在线观看 | 欧美在线视频二区 | 91黄色小网站 | 在线观看视频一区二区三区 | 日日日干| 国产97色在线 | 日韩欧美国产精品 | 狠狠久久婷婷 | 人人干狠狠操 | 亚洲欧美综合精品久久成人 | 欧美孕妇视频 | 日韩毛片久久久 | 国产视频一区二区三区在线 | 欧美日在线 | 国产一区二区三区免费观看视频 | 久久夜靖品 | 97国产精品亚洲精品 | 久久国产a | 在线视频精品播放 | 狠狠干狠狠色 | 国产成人一区二区精品非洲 | 国产成人一区二区三区 | 西西4444www大胆无视频 | 亚州精品天堂中文字幕 | 免费在线激情电影 | 欧美日韩国产亚洲乱码字幕 | 97在线免费观看视频 | 波多野结衣一区二区三区中文字幕 | 国产成人在线综合 | 91精品伦理 | 国产精品欧美久久久久久 | 国产一级片直播 | 五月婷婷六月丁香在线观看 | 国产一区二区在线免费播放 | 日韩精品一区电影 | 91完整视频| 国产 成人 久久 | 四虎在线免费 | 日韩毛片在线一区二区毛片 | 久久久www成人免费精品 | 日韩欧美在线影院 | 午夜精品一区二区三区在线播放 | 国产精品免费一区二区三区 | 久久爽久久爽久久av东京爽 | 国产伦精品一区二区三区无广告 | 久久午夜剧场 | 欧美精品九九 | 国内毛片毛片 | 国产一区二区视频在线播放 | 精品久久久成人 | 狠狠的操狠狠的干 | 综合色久 | 99色免费 | av网站免费看| 日韩av电影国产 | 日批视频 | 91片黄在线观看动漫 | 一区在线播放 | 国产在线999| 国产 视频 高清 免费 | 国产精品电影一区二区 | 久久国产精品久久久久 | 日韩高清精品免费观看 | 婷婷国产在线观看 | 精品一区二区精品 | 日韩欧美视频在线免费观看 | 亚洲电影成人 | 一区二区理论片 | 免费在线观看毛片网站 | 亚洲欧洲精品一区二区精品久久久 | 成人福利av| 欧美一级视频一区 | 日本91在线| 国产一区二区三区 在线 | 亚洲黄色app | 99久久久久久国产精品 | 国产精选视频 | 国产精品一区二区三区免费看 | 日韩av男人的天堂 | 日韩h在线观看 | 久久好看免费视频 | 久久精品一区二区三区四区 | 不卡中文字幕在线 | 久久久久久伊人 | 亚洲精品福利在线观看 | 久久久久久久久久久精 | 中文字幕在线第一页 | 久久久色 | 国产精品国产自产拍高清av | 天天爱天天干天天爽 | 日韩欧美视频免费在线观看 | 日韩久久精品一区二区三区 | 婷婷综合久久 | 四虎国产视频 | 人人艹人人 | 国产在线理论片 | 色激情在线 | 四虎成人免费观看 | 久青草影院 | 在线观看成年人 | 97在线视频免费 | 九九精品久久 | 日韩中文字幕视频在线观看 | 国产超碰在线观看 | 久久狠狠亚洲综合 | 激情视频在线观看网址 | 亚洲综合视频在线观看 | 中文字幕五区 | 久草在线视频首页 | 天天操天天色天天 | 亚洲一区 av | 麻豆一精品传二传媒短视频 | 最近中文字幕高清字幕免费mv | 在线观看资源 | 日本护士撒尿xxxx18 | 9992tv成人免费看片 | 超碰97人人射妻 | 国产精品久久久久久吹潮天美传媒 | 日本视频高清 | 国产一区久久久 | 久久艹精品 | 免费人成在线观看网站 | 日韩久久精品一区二区 | 视频1区2区 | av日韩在线网站 | 91视频在线网址 | 国产系列 在线观看 | 色av网站 | 亚洲电影自拍 | 97在线观看 | 色av色av色av | 午夜精品久久久久 | 国产白浆视频 | 最新超碰在线 | www.在线观看av | 欧美一二三区在线播放 | 九九视频网站 | 1024在线看片 | 99精品影视| 欧美成人精品在线 | 欧美日韩首页 | 国产免费黄视频在线观看 | 色资源网免费观看视频 | 最新在线你懂的 | 青青草在久久免费久久免费 | 一级黄色网址 | 免费看国产一级片 | 成人免费视频视频在线观看 免费 | 久草爱| 国产精品福利一区 | 国产三级久久久 | 国产日韩欧美在线看 | 婷婷久久精品 | 不卡av电影在线 | 97成人精品视频在线观看 | 欧美日韩在线观看一区 | 91精品国产综合久久福利 | av在线收看 | 欧美一级在线观看视频 | 在线91播放| a v在线视频 | 五月色婷 | 亚洲一区二区精品3399 | 美女久久久久 | 97av影院| 天天干夜夜擦 | 日韩极品在线 | 亚洲精品乱码久久久久久写真 | 五月婷婷激情网 | 日本一区二区免费在线观看 | 久草香蕉在线视频 | 精品久久久精品 | 国产精品色婷婷 | 91视视频在线直接观看在线看网页在线看 | 西西444www高清大胆 | 国产成人一区二区在线观看 | 亚洲高清免费在线 | 亚洲精品一区二区三区高潮 | 国产一区在线不卡 | 欧美精品在线一区二区 | 97在线公开视频 | 国产精品精 | 91刺激视频| 正在播放国产精品 | 国产专区在线 | 在线观看深夜视频 | 国产精品毛片一区二区在线看 | 欧美另类重口 | 免费a视频在线 | 国内精品亚洲 | 13日本xxxxxⅹxxx20 | 99久热在线精品视频成人一区 | 不卡的av在线 | a天堂免费 | 99久久久国产精品 | 亚洲人成人在线 | 日韩电影一区二区三区在线观看 | 成人一区不卡 | 97在线精品视频 | 久草在线综合 | 久久久免费看视频 | 成人国产亚洲 | 国产综合精品一区二区三区 | 久久亚洲成人网 | 久久国产免费 | 成人在线观看资源 | 激情五月婷婷综合 | 国产精品99久久久久人中文网介绍 | 日韩精品在线播放 | 亚洲理论片在线观看 | 国产一区视频在线观看免费 | 精品国内 | 日本不卡久久 | 亚洲欧美精品一区二区 | 色噜噜噜 | 久久久久区 | 人人玩人人添人人澡超碰 | 中文字幕视频一区 | 国产精品区一区 | 高清国产一区 | 日韩欧美专区 | 欧美日韩免费看 | 激情欧美xxxx | 欧美精品中文字幕亚洲专区 | 欧美日韩免费视频 | av电影不卡 | 又黄又刺激视频 | 日韩欧美在线免费 | 国产小视频在线看 | 中文字幕黄网 | 激情网五月婷婷 | 久久经典视频 | 国内视频一区二区 | 日韩在线观看视频免费 | 91精品一区二区三区久久久久久 | 久久免费视频3 | 在线观看自拍 | 亚洲精品在线免费播放 | 久久精品视频在线观看免费 | 欧美日韩精品在线视频 | av在线影片 | 久操久| 三级黄色a| 在线 日韩 av| 超碰人人舔 | 天天干天天上 | 在线观看蜜桃视频 | 91av中文字幕| 视频在线一区 | 亚洲美女视频在线 | 成人综合日日夜夜 | 久久久亚洲电影 | 中文字幕在线播放日韩 | 欧美久久影院 | 精品福利网 | 9草在线| 日韩av电影中文字幕 | 国产成人香蕉 | 97网| 超碰国产97 | 国产在线观看一区 | 91亚色免费视频 | 九九热免费在线观看 | 亚洲高清精品在线 | 韩国av三级 | 伊人网综合在线观看 | 国产精品久久久久久久电影 | 国产精品99久久久久的智能播放 | 天天干人人干 | 免费精品视频 | 国产精品久久久久久久久久久久午夜片 | 在线观看aaa | 最近中文字幕视频完整版 | 亚洲精品乱码白浆高清久久久久久 | 欧美一级片在线 | 亚洲国产影院 | 波多野结衣精品 | 狠狠做深爱婷婷综合一区 | 青青射| 一级免费看视频 | 国产视频一区精品 | 99视频一区 | 99999精品视频 | 夜夜视频 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 在线看片91| 国产91全国探花系列在线播放 | 亚洲国产精品成人av | 国产在线观看a | 爱情影院aqdy鲁丝片二区 | 日韩精品视频在线免费观看 | 粉嫩aⅴ一区二区三区 | 亚洲国产精品传媒在线观看 | 91精品国产综合久久福利 | 久久免费视频这里只有精品 | 五月天婷婷免费视频 | 日韩久久精品一区二区 | 国产一级视频免费看 | 国产在线观看,日本 | 久久久久久久久久久久99 | 91久久爱热色涩涩 | 一二三区视频在线 | 正在播放国产精品 | 日韩 精品 一区 国产 麻豆 | 日韩成人欧美 | 午夜精品久久久久久中宇69 | 国产一级片免费播放 | 99久久精品免费看国产四区 | 国产美女精品在线 | 精品亚洲视频在线 | 免费电影一区二区三区 | 国产自产高清不卡 | av成人免费观看 | 亚洲高清国产视频 | 日韩精品一区二区三区丰满 | 亚洲国产无 | www免费网站在线观看 | 97视频资源 | 日韩精品一区二区不卡 | 免费在线观看av网址 | 四虎4hu永久免费 | 97超碰人人| 91精品国产综合久久福利 | 久久福利剧场 | 午夜精品福利一区二区三区蜜桃 | 四虎免费在线观看视频 | 国产精品破处视频 | 久久99精品久久久久久 | 欧美日韩国产三级 | 欧美精品亚州精品 | 亚洲视频 视频在线 | 久久男人影院 | 国产在线观看黄 | 日本久久久精品视频 | 天天干.com | 天天插狠狠干 | 丁香激情五月婷婷 | 天天玩天天干 | 一级精品视频在线观看宜春院 | 色资源在线 | 免费观看av网站 | 亚洲精品www. | 在线观看日韩中文字幕 | 国产永久免费 | a在线免费| 日韩中文字幕视频在线观看 | 国产精品久久久久久吹潮天美传媒 | av免费黄色 | 国产成人久久精品77777 | 天天色天天爱天天射综合 | 久久论理| 亚洲在线观看av | 日韩中文字幕视频在线观看 | 成人免费xxx在线观看 | 欧美日韩视频在线一区 | 奇米影音四色 | 亚洲激情av | 中文字幕网站 | 亚洲视频一 | 91网站观看 | 日韩精品在线免费观看 | 国产精品久久久久久一二三四五 | 久草免费电影 | 麻豆系列在线观看 | 日韩精品欧美专区 | 精品成人国产 | 日韩午夜在线观看 | 亚洲精品男人天堂 |