wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4939|回復(fù): 0
收起左側(cè)

ARM2440的啟動(dòng)模式

[復(fù)制鏈接]
ID:83710 發(fā)表于 2015-6-26 23:04 | 顯示全部樓層 |閱讀模式
研究arm也有2個(gè)月了,現(xiàn)在才感覺理解了arm在Nand flash模式下的啟動(dòng)過(guò)程,現(xiàn)在來(lái)這里記錄下來(lái)以表達(dá)我無(wú)比喜悅的心情。閑話少說(shuō),趁著還沒有忘記學(xué)習(xí)過(guò)程中的感受,直接進(jìn)入正題。

大家都知道,arm在Nand flash啟動(dòng)模式下啟動(dòng)時(shí)系統(tǒng)會(huì)將Nand flash中的前4KB代碼拷貝到SRAM(也就是Steppingstone中),由SRAM配置中斷向量表和完成Nand flash訪問(wèn)的必要初始化,然后將Nand flash中的全部程序代碼拷貝到SDRAM中,最后由SRAM跳轉(zhuǎn)到SDRAM,然后程序就正常執(zhí)行了,這一過(guò)程看上去很簡(jiǎn)單,但是真正理解這一過(guò)程還是不簡(jiǎn)單的,盡管這樣,還是想告訴大家仔細(xì)理解還是比較容易理解這個(gè)過(guò)程的。如果您是ADS用戶,你省去了很多麻煩,但我不確定你省去的這些麻煩是否值得,這里介紹的是一種麻煩的方式,linux下的led程序。
代碼Head.s
  • .extern main
  • .text
  • .global _start
  • _start:
  •     b reset
  • reset:
  •     ldr sp,=4096
  •     bl disable_watch_dog
  •     bl clock_init
  •     bl memsetup
  •     bl copy_steppingstone_to_sdram
  •     ldr pc,=on_sdram
  • on_sdram:
  •     msr cpsr_c,#0xdf
  •     ldr sp,=0x34000000
  •     ldr lr,=halt_loop
  •     ldr pc,=Main
  • halt_loop:
  •     b halt_loop


我認(rèn)為,最需要理解的就是這段代碼了。先簡(jiǎn)單的解釋下這段代碼。
(1)由于arm執(zhí)行reset之后pc會(huì)被清零,也就是reset中斷的中斷入口地址,因此,第一條指令就是b reset,跳轉(zhuǎn)到reset中斷處理函數(shù)。
(2)由于這里硬件配置都是C語(yǔ)言來(lái)完成的,而且我們的初始代碼比較小,完全不會(huì)超出4KB,因此可以在SRAM使用堆棧,故將SP設(shè)置為4096,以提供C運(yùn)行環(huán)境
(3)接下來(lái)的3個(gè)bl分別完成了關(guān)閉看門夠定時(shí)器,配置時(shí)鐘信號(hào)和存儲(chǔ)器配置的工作,第四個(gè)bl是將SRAM的4KB空間內(nèi)的代碼拷貝到了SDRAM中。
(4)接下來(lái)的ldr句將pc賦值為on_sdram的地址,實(shí)現(xiàn)了從SRAM到SDRAM的跳轉(zhuǎn)(下面會(huì)講為什么)
(5)on_sdram中切換到了了系統(tǒng)模式然后分配了系統(tǒng)模式堆棧,將鏈接寄存器設(shè)置為halt_loop然后就跳轉(zhuǎn)到了SDRAM中的Main
上面的解釋只是大體上說(shuō)明了代碼的意思,但是初學(xué)者總會(huì)有個(gè)疑問(wèn)就是為什么ldr pc,=on_sdram就實(shí)現(xiàn)了從SRAM到SDRAM的跳轉(zhuǎn)呢?我被這個(gè)問(wèn)題困擾了很長(zhǎng)時(shí)間,到今天才想明白了這個(gè)問(wèn)題,問(wèn)題的關(guān)鍵就是相對(duì)跳轉(zhuǎn)和絕對(duì)跳轉(zhuǎn)的問(wèn)題。為了說(shuō)明這個(gè)問(wèn)題我先解釋一下bl指令跟ldr指令在執(zhí)行過(guò)程中的區(qū)別。
B指令是相對(duì)跳轉(zhuǎn)指令,B 指令是最簡(jiǎn)單的跳轉(zhuǎn)指令。一旦遇到一個(gè) B 指令,ARM 處理器將立即跳轉(zhuǎn)到給定的目標(biāo)地址,從那里繼續(xù)執(zhí)行。注意存儲(chǔ)在跳轉(zhuǎn)指令中的實(shí)際值是相對(duì)當(dāng)前PC 值的一個(gè)偏移量,而不是一個(gè)絕對(duì)地址,它的值由匯編器來(lái)計(jì)算(參考尋址方式中的相對(duì)尋址)。它是 24 位有符號(hào)數(shù),左移兩位后有符號(hào)擴(kuò)展為 32 位,表示的有效偏移為 26 位(前后32MB 的地址空間),同樣的,BL、BX都是相對(duì)跳轉(zhuǎn)。
LDR偽指令是將第二操作直接賦值給第一操作數(shù),當(dāng)執(zhí)行l(wèi)dr pc,=Main時(shí)是將Main的絕對(duì)地址賦值給了PC。
好了,知道這兩個(gè)指令的區(qū)別之后我們來(lái)看代碼是如何實(shí)現(xiàn)的從SRAM到SDRAM的跳轉(zhuǎn),首先需要指出,2440的開發(fā)板有SRAM和SDRAM,SRAM是從地址0x00000000開始的4KB內(nèi)存空間,SDRAM是從0x30000000開始的64M空間。
無(wú)論用ADS編譯還是用arm-linux-gcc編譯都會(huì)將代碼鏈接到0x30000000以后(也就是SDRAM中),ADS用戶可以通過(guò)查看ADS的工程配置,其中有項(xiàng)配置是RO起始地址是0x30000000,linux用戶在鏈接時(shí)需要用-T指定代碼的其實(shí)地址為0x30000000。
根據(jù)編譯原理,在鏈接階段程序中函數(shù)的地址就已經(jīng)確定了,也就是說(shuō)函數(shù)的實(shí)際地址都在0x30000000之后,而程序的入口函數(shù)也就是這里的_start的地址就是0x300000000,其他函數(shù)都會(huì)大于這個(gè)數(shù)。
但是由于arm上電后系統(tǒng)會(huì)將Nand flash的前4KB代碼拷貝到SRAM中,也就是_start函數(shù)開始的4KB指令將被拷貝到SRAM中執(zhí)行,根據(jù)上例,在0x00000000處執(zhí)行的指令就是“b reset”,由于b是相對(duì)跳轉(zhuǎn),是在當(dāng)前pc值的基礎(chǔ)上加減某個(gè)數(shù)而跳轉(zhuǎn)到將要執(zhí)行的代碼處,因此,pc加減該數(shù)之后將到達(dá)reset函數(shù)的位置,故reset函數(shù)不能寫到4KB之外的空間中,否則arm的啟動(dòng)將會(huì)失敗,同樣的,接下來(lái)的幾個(gè)bl都是執(zhí)行的相對(duì)跳轉(zhuǎn),所以都相對(duì)當(dāng)前pc進(jìn)行的跳轉(zhuǎn),由于Nand flash總共只有64M的空間,所以相對(duì)跳轉(zhuǎn)是不可能會(huì)跳轉(zhuǎn)到SDRAM的,因?yàn)樘D(zhuǎn)到SDRAM至少要發(fā)生0x30000000的跳轉(zhuǎn),而這個(gè)相對(duì)位移遠(yuǎn)遠(yuǎn)大于64M。
而ldr pc,=Main是將Main函數(shù)的實(shí)際地址賦值給pc,而Main的實(shí)際地址是在0x30000000之后,這樣,就從SRAM跳轉(zhuǎn)到了SDRAM。
由于這個(gè)過(guò)程設(shè)計(jì)到了硬件格局和編譯原理,所以對(duì)一般人來(lái)講,理解起來(lái)確實(shí)比較困難,而且受本人水平限制,很多地方只能說(shuō)是只可意會(huì)不可言傳,如果誤導(dǎo)了大家請(qǐng)大家諒解。當(dāng)然如果看到這里還不能理解arm的啟動(dòng)過(guò)程可以聯(lián)系QQ630905224來(lái)討論這個(gè)問(wèn)題。下面是相關(guān)的其他代碼,我附在這里,2440addr.h沒有貼出,由于我也是使用arm自帶示例程序中的代碼,而且代碼有四千多行,多數(shù)地址是沒有用到的,如果有人需要就聯(lián)系我的QQ吧。其他的代碼如下
代碼Init.s
  • #include "2440addr.h"
  • void disable_watch_dog(void);
  • void clock_init(void);
  • void memsetup(void);
  • void copy_steppingstone_to_sdram(void);
  • void inituart(void);
  • void disable_watch_dog(void)
  • {
  •     rWTCON = 0;
  • }
  • void clock_init(void)
  • {
  •     rCLKDIVN  = 0x03;
  •     /*
  •      *如果HDIVN非0,CPU的總線模式應(yīng)該從
  •      *“fast bus mode”變?yōu)椤癮synchronous
  •      *bus mode”
  •      */
  •     __asm__(
  •             "mrc    p15, 0, r1, c1, c0, 0\n"
  •             "orr    r1, r1, #0xc0000000\n"
  •             "mcr    p15, 0, r1, c1, c0, 0\n"
  •            );
  •     rMPLLCON = (92<<12)|(1<<4)|(2);
  •     //rMPLLCON =  ((0x5c<<12)|(0x01<<4)|(0x02));
  • }
  • void memsetup(void)
  • {
  •     volatile unsigned long *p = (volatile unsigned long *)0x48000000;
  •     /* 這個(gè)函數(shù)之所以這樣賦值,而不是像前面的實(shí)驗(yàn)(比如mmu實(shí)驗(yàn))那樣將配置值
  •      * 寫在數(shù)組中,是因?yàn)橐伞蔽恢脽o(wú)關(guān)的代碼”,使得這個(gè)函數(shù)可以在被復(fù)制到
  •      * SDRAM之前就可以在steppingstone中運(yùn)行
  •      */
  •     /* 存儲(chǔ)控制器13個(gè)寄存器的值 */
  •     p[0] = 0x22011110;     //BWSCON
  •     p[1] = 0x00000700;     //BANKCON0
  •     p[2] = 0x00000700;     //BANKCON1
  •     p[3] = 0x00000700;     //BANKCON2
  •     p[4] = 0x00000700;     //BANKCON3
  •     p[5] = 0x00000700;     //BANKCON4
  •     p[6] = 0x00000700;     //BANKCON5
  •     p[7] = 0x00018005;     //BANKCON6
  •     p[8] = 0x00018005;     //BANKCON7
  •     /* REFRESH,
  •      * HCLK=12MHz:  0x008C07A3,
  •      * HCLK=100MHz: 0x008C04F4
  •      */
  •     p[9]  = 0x008C04F4;
  •     p[10] = 0x000000B1;     //BANKSIZE
  •     p[11] = 0x00000030;     //MRSRB6
  •     p[12] = 0x00000030;     //MRSRB7
  • }
  • void copy_steppingstone_to_sdram(void)
  • {
  •     unsigned int *pdwSrc  = (unsigned int *)0;
  •     unsigned int *pdwDest = (unsigned int *)0x30000000;
  •     while (pdwSrc < (unsigned int *)4096)
  •     {
  •         *pdwDest = *pdwSrc;
  •         pdwDest++;
  •         pdwSrc++;
  •     }
  • }

=======================================================================
一般而言,一個(gè)程序包括只讀的代碼段和可讀寫的數(shù)據(jù)段。在ARM的集成開發(fā)環(huán)境中,只讀的代碼段和常量被稱作RO段(ReadOnly)可讀寫的全局變量和靜態(tài)變量被稱作RW段(ReadWrite)RW段中要被初始化為零的變量被稱為ZI段(ZeroInit)。對(duì)于嵌入式系統(tǒng)而言,程序映象都是存儲(chǔ)在Flash存儲(chǔ)器等一些非易失性器件中的,而在運(yùn)行時(shí),程序中的RW段必須重新裝載到可讀寫的RAM中。這就涉及到程序的加載時(shí)域和運(yùn)行時(shí)域。簡(jiǎn)單來(lái)說(shuō),程序的加載時(shí)域就是指程序燒入Flash中的狀態(tài),運(yùn)行時(shí)域是指程序執(zhí)行時(shí)的狀態(tài)對(duì)于比較簡(jiǎn)單的情況,可以在ADS集成開發(fā)環(huán)境的ARM LINKER選項(xiàng)中指定RO BASE和RW BASE,告知連接器RO和RW的連接基地址對(duì)于復(fù)雜情況,如RO段被分成幾部分并映射到存儲(chǔ)空間的多個(gè)地方時(shí),需要?jiǎng)?chuàng)建一個(gè)稱為“分布裝載描述文件”的文本文件,通知連接器把程序的某一部分連接在存儲(chǔ)器的某個(gè)地址空間。需要指出的是,分布裝載描述文件中的定義要按照系統(tǒng)重定向后的存儲(chǔ)器分布情況進(jìn)行。在引導(dǎo)程序完成初始化的任務(wù)后,應(yīng)該把主程序轉(zhuǎn)移到RAM中去運(yùn)行,以加快系統(tǒng)的運(yùn)行速度

            什么是arm的映像文件,arm映像文件其實(shí)就是可執(zhí)行文件,包括bin或hex兩種格式,可以直接燒到rom里執(zhí)行在axd調(diào)試過(guò)程中,我們調(diào)試的是axf文件,其實(shí)這也是一種映像文件,它只是在bin文件中加了一個(gè)文件頭和一些調(diào)試信息映像文件一般由域組成,域最多由三個(gè)輸出段組成(RO,RW,ZI)組成,輸出段又由輸入段組成。所謂域,指的就是整個(gè)bin映像文件所處在的區(qū)域,它又分為加載域和運(yùn)行域加載域就是映像文件被靜態(tài)存放的工作區(qū)域,一般來(lái)說(shuō)flash里的 整個(gè)bin文件所在的地址空間就是加載域,當(dāng)然在程序一般都不會(huì)放在 flash里執(zhí)行,一般都會(huì)搬到sdram里運(yùn)行工作,它們?cè)诒话岬絪dram里工作所處的地址空間就是運(yùn)行域
        我們輸入的代碼,一般有代碼部分和數(shù)據(jù)部分,這就是所謂的輸入段,經(jīng)過(guò)編譯后就變成了bin文件中ro段和rw段,還有所謂的zi段,這就是輸出段對(duì)于加載域中的輸出段,一般來(lái)說(shuō)ro段后面緊跟著rw段,rw段后面緊跟著zi段。在運(yùn)行域中這些輸出段并不連續(xù),但rw和zi一定是連著的。zi段和rw段中的數(shù)據(jù)其實(shí)可以是rw屬性。

                | Image
RO

Base| |Image
RO

Limit| |Image
RW

Base| |Image
ZI

Base| |Image
ZI

Limit|這幾個(gè)變量是編譯器通知的,我們?cè)?makefile文件中可以看到它們的值。它們指示了在運(yùn)行域中各個(gè)輸出段所處的地址空間。
| Image
RO

Base| 就是ro段在運(yùn)行域中的起始地址,|Image
RO

Limit| 是ro段在運(yùn)行域中的截止地址。其它依次類推。我們可以在linker的output中指定,在 simple模式中,ro base對(duì)應(yīng)的就是| Image
RO

Base|,rw base 對(duì)應(yīng)的是|Image
RW

Base|,由于rw和zi相連,|Image
ZI

Base| 就等于|Image
ZI

limit| .其它的值都是編譯器自動(dòng)計(jì)算出來(lái)的。


            下面是2410啟動(dòng)代碼的搬運(yùn)部分,我給出注釋
            BaseOfROM DCD |Image
RO

Base|
            TopOfROM DCD |Image
RO

Limit|
            BaseOfBSS DCD |Image
RW

Base|
            BaseOfZero DCD |Image
ZI

Base|
            EndOfBSS DCD |Image
ZI

Limit|
            adr r0, ResetEntry;    ResetEntry是復(fù)位運(yùn)行時(shí)域的起始地址,在boot nand中一般是0
            ldr r2, BaseOfROM;
            cmp r0, r2
            ldreq r0, TopOfROM;TopOfROM=0x30001de0,代碼段地址的結(jié)束
            beq InitRam
            ldr r3, TopOfROM
            ;part 1,通過(guò)比較,將ro搬到sdram里,搬到的目的地址從 | Image
RO

Base| 開始,到|Image
RO

Limit|結(jié)束
            
            0
            ldmia r0!, {r4-r7}
            stmia r2!, {r4-r7}
            cmp r2, r3
            bcc %B0;
            
            ;part 2,搬rw段到sdram,目的地址從|Image
RW

Base| 開始,到|Image
ZI

Base|結(jié)束
            sub r2, r2, r3;r2=0
            sub r0, r0, r2   
            InitRam ;carry rw to baseofBSS
            ldr r2, BaseOfBSS ;TopOfROM=0x30001de0,baseofrw
            ldr r3, BaseOfZero ;BaseOfZero=0x30001de0
            0
            cmp r2, r3
            ldrcc r1, [r0], #4
            strcc r1, [r2], #4
            bcc %B0
            ;part 3,將sdram zi初始化為0,地址從|Image
ZI

Base|到|Image
ZI

Limit|
            mov r0, #0;init 0
            ldr r3, EndOfBSS;EndOfBSS=30001e40
            1
            cmp r2, r3
            strcc r0, [r2], #4
            bcc %B1



------------------------------------------------------------

一 概述

Scatter file (分散加載描述文件)用于armlink的輸入?yún)?shù),他指定映像文件內(nèi)部各區(qū)域的download與運(yùn)行時(shí)位置。Armlink將會(huì)根據(jù)scatter file生成一些區(qū)域相關(guān)的符號(hào),他們是全局的供用戶建立運(yùn)行時(shí)環(huán)境時(shí)使用。(注意:當(dāng)使用了scatter file 時(shí)將不會(huì)生成以下符號(hào) Image
RW

Base, Image
RW

Limit, Image
RO

Base, Image
RO

Limit, Image
ZI

Base, and Image
ZI

Limit)


二 什么時(shí)候使用scatter file

       當(dāng)然首要的條件是你在利用ADS進(jìn)行項(xiàng)目開發(fā),下面我們看看更具體的一些情況。
1 存在復(fù)雜的地址映射:例如代碼和數(shù)據(jù)需要分開放在在多個(gè)區(qū)域。
2 存在多種存儲(chǔ)器類型:例如包含 Flash,ROM,SDRAM,快速SRAM。我們根據(jù)代碼與數(shù)據(jù)的特性把他們放在不同的存儲(chǔ)器中,比如中斷處理部分放在快速SRAM內(nèi)部來(lái)提高響應(yīng)速度,而把不常用到的代碼放到速度比較慢的Flash內(nèi)。
3 函數(shù)的地址固定定位:可以利用Scatter file實(shí)現(xiàn)把某個(gè)函數(shù)放在固定地址,而不管其應(yīng)用程序是否已經(jīng)改變或重新編譯。
4 利用符號(hào)確定堆與堆棧
5 內(nèi)存映射的IO:采用scatter file可以實(shí)現(xiàn)把某個(gè)數(shù)據(jù)段放在精確的地指處。
因此對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)scatter file是必不可少的,因?yàn)榍度胧较到y(tǒng)采用了ROM,RAM,和內(nèi)存映射的IO。


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
婷婷激情综合| av女在线播放| 91蝌蚪国产九色| 亚洲精品wwww| 妖精视频一区二区| 高清日韩av电影| 国产精品国产三级国产普通话蜜臀| 天堂精品一区二区三区| 国内精品2019| 天堂一区二区在线| 国产日韩欧美在线看| 亚洲第一页在线观看| 日韩国产欧美| 欧美精品久久一区二区| 加勒比在线一区| 欧美理伦片在线播放| 亚洲最新av在线| 国精产品久拍自产在线网站| av日韩电影| 欧美一级高清大全免费观看| 丰满大乳奶做爰ⅹxx视频| 国内高清免费在线视频| 在线这里只有精品| 香蕉视频xxxx| 男人资源在线播放| 欧美日韩国产色| 午夜免费福利视频在线观看| 国产精品一区二区三区四区色| 国产精品久久久久aaaa樱花| 久操网在线观看| 天天插天天狠天天透| 国产欧美一区二区精品婷婷| 日本免费成人网| 神马午夜dy888| 欧美激情资源网| 青草视频在线观看视频| 天天槽夜夜槽| 亚洲视频一区二区免费在线观看| 亚洲乱码中文字幕久久孕妇黑人| 毛片在线能看| 亚洲国产精品精华液网站| 午夜免费看毛片| av网站大全在线| 在线观看www91| 亚洲の无码国产の无码步美| 牛牛精品一区二区| 亚洲精品一区二区精华| 波多野结衣亚洲色图| 日韩在线观看中文字幕| 久久久97精品| 欧美日韩人妻精品一区在线| 国产第一页在线| 欧美精品高清视频| 夜夜春很很躁夜夜躁| 成人国产精品入口免费视频| 国产偷亚洲偷欧美偷精品| 久草网在线观看| 欧美亚洲大陆| 98精品国产自产在线观看| www.色亚洲| 国产一区二区你懂的| 国产精品成人一区二区三区| 一本加勒比hezyo黑人| 夫妻av一区二区| 成人一级生活片| 国产原创av在线| 91国偷自产一区二区三区成为亚洲经典 | 综合久久中文字幕| 久久久久亚洲| 91视频8mav| 91抖音在线观看| wwwwww.欧美系列| 免费大片在线观看| а√资源新版在线天堂| 日韩一区二区在线观看视频 | 免费黄色片在线观看| 五月开心婷婷久久| 国产亚洲色婷婷久久99精品91| 亚洲高清黄色| 中文字幕亚洲欧美日韩高清| 最近中文字幕av| 国产一区观看| 久久久久久久久久码影片| 天天影视色香欲综合网天天录日日录| 中国av一区二区三区| 在线观看国产一级片| 高清毛片在线观看| 亚洲人午夜精品免费| 中文字幕黄色av| 国产一区二区高清| 一区二区三区的久久的视频| 天堂av在线播放| 欧美三区免费完整视频在线观看| 又嫩又硬又黄又爽的视频| 福利片在线一区二区| 欧美在线视频观看| 韩国专线一区二三区| 99久久综合99久久综合网站| 日韩一级在线免费观看| 国产精品蜜臀| 中日韩午夜理伦电影免费| 久久黄色一级视频| 日本美女久久| 欧美高清视频一区二区| www.一区二区三区.com| 大白屁股一区二区视频| 黄色国产小视频| 天天综合av| 精品国偷自产在线视频99| 黄色一级a毛片| 国产一区二区91| 91国视频在线| 超碰97国产精品人人cao| 在线日韩av观看| 性做久久久久久久久久| 国产一区二区三区在线观看免费视频| 无码av天堂一区二区三区| 18网站在线观看| 亚洲日韩欧美视频一区| 亚洲黄色在线播放| 国产九色精品成人porny| 男人揉女人奶房视频60分 | 99综合99| 欧美一级成年大片在线观看 | 久久久精品99| 午夜国产精品视频| 亚洲成人第一| 男女啪啪在线观看| 在线日韩精品视频| 性xxxxbbbb| 91一区二区在线| 香蕉视频xxxx| 久久男人av| 99久久精品久久久久久ai换脸| 日本19禁啪啪吃奶大尺度| 91成人看片片| 日韩黄色在线播放| 日韩av在线播放中文字幕| 欧美aⅴ在线观看| 亚洲精品中文字幕| 98精品国产自产在线观看| 你懂的网站在线观看| 午夜精品福利视频网站| 精品少妇一二三区| 国产美女诱惑一区二区| 人妻久久久一区二区三区| 日韩激情电影免费看| 国产69精品久久久| av资源在线看| 欧美日韩精品综合在线| 亚洲视屏在线观看| 国产成人综合网| 99国产精品免费视频| 欧美黑人做爰爽爽爽| 国产亚洲一区在线播放| 国产黄在线观看| 亚洲欧美激情在线| 国产免费一区二区三区四区| 欧美国内亚洲| 麻豆映画在线观看| 自拍一区在线观看| 国产suv精品一区二区| 大香一本蕉伊线亚洲网| 8v天堂国产在线一区二区| 一级黄色录像大片| 成人激情校园春色| 黄色av网址在线观看| 欧美电影免费播放| 欧美精品一区二区性色a+v| 超碰中文在线| 日韩免费av片在线观看| 美女视频免费观看网站在线| 日韩欧美中文字幕公布| 成人1区2区3区| 国产亚洲成aⅴ人片在线观看| 精品无码国产污污污免费网站 | 国产精品久久久久9999高清| 成人性生活视频免费看| 亚洲第一会所001| 国产精品偷伦免费视频观看的| 原千岁中文字幕| 亚洲国产女人aaa毛片在线| 影音先锋一区二区资源站| |精品福利一区二区三区| 国产探花在线播放| 日韩高清不卡一区二区| 免费成年人高清视频| 影视先锋久久| 五月天男人天堂| av免费在线一区| 97人人干人人| 欧美人xxx| 午夜精品福利电影| 老司机在线免费视频| 日韩精品在线观| 国产情侣高潮对白| 欧美亚洲图片小说| 亚洲欧美激情国产综合久久久| 中文字幕中文乱码欧美一区二区| 久久精品无码人妻| 国产伦精品一区二区三区在线观看| 国产免费无码一区二区| 久久久久久久久久久妇女| 无码粉嫩虎白一线天在线观看 | 最新国产在线视频| 中文一区二区视频| 福利片在线播放| 欧美刺激脚交jootjob| 伊人影院蕉久552| 欧美性生交大片免网| 国产av无码专区亚洲a∨毛片| 亚洲国产高清在线观看视频| 国产福利久久久| 成人高清免费观看| 青青青视频在线免费观看| 秋霞av亚洲一区二区三| www.17c.com喷水少妇| 亚洲国产mv| 亚洲男人天堂2021| 都市激情久久综合| 亚洲在线观看视频| 亚洲国产精品精华素| 国产精品678| 成人77777| 青青久久av北条麻妃海外网| 天堂av在线资源| 亚洲97在线观看| 污视频在线观看免费| 欧美日本在线视频中文字字幕| 日本成在线观看| 精品国产一区二区三区久久狼黑人| 在线观看免费播放网址成人| 国产一区二区三区久久精品| 1024欧美极品| 色偷偷av一区二区三区乱| eeuss在线播放| 久久久av电影| 最新av在线| 97精品国产aⅴ7777| 国产一区电影| 国产精品成人一区| v天堂福利视频在线观看| 成人xxxxx| gogo久久| 好吊色欧美一区二区三区| 第84页国产精品| 欧美日韩国产一二| 成人污版视频| 糖心vlog在线免费观看| 欧美色资源站| 国产福利视频在线播放| 91综合网人人| 亚洲 国产 图片| 亚洲三级观看| 噜噜噜在线视频| 精品一区二区三区免费播放| 波多野结衣喷潮| 91性感美女视频| 蜜臀99久久精品久久久久小说| 国产精品乱码人人做人人爱| 一级片aaaa| 精品久久久久久亚洲精品| 日韩在线视频第一页| 欧美亚洲尤物久久| 91抖音在线观看| 色播久久人人爽人人爽人人片视av| 蜜桃视频中文字幕| 国内精品400部情侣激情| av电影在线观看| 91免费视频网站| av亚洲一区| 精品日韩在线播放| 久久99影视| 手机版av在线| 老妇喷水一区二区三区| 五月天婷婷丁香网| 91丨九色丨国产丨porny| 波多野结衣影片| 五月婷婷久久丁香| 欧美高清xxxx性| 亚洲欧美自拍一区| 午夜成在线www| 国产精品www色诱视频| 黄污视频在线观看| 欧美在线激情| 国产在线一二三区| 成人激情在线播放| 国产成人精品一区二区三区视频| 国产日韩欧美大片| 国产精品99一区二区三区| 人妻换人妻a片爽麻豆| 韩国精品免费视频| 黄色片免费观看视频| 亚洲第一在线综合网站| 尤物在线精品视频| 亚洲欧美精品一区| 亚洲美女电影在线| 成人午夜一级二级三级| 91大神在线观看线路一区| 国产精品久久国产| 欧美成人一品| 中文字幕免费在线看线人动作大片| 99久久国产综合精品女不卡| 中文字幕在线观看视频一区| 一本久久a久久精品亚洲| 尤物视频在线观看网站| 欧美成人精品一区| 18加网站在线| 亚洲一二区在线 | 激情五月亚洲色图| 亚洲免费婷婷| 国产在线综合网| 亚洲高清在线视频| 成人国产精品毛片| 精品中文字幕在线2019| av激情在线| 综合久久国产| 欧美一区二区三区另类 | 麻豆视频在线免费观看| 精品一区二区三区自拍图片区| а√中文在线天堂精品| 日本中文字幕高清| 麻豆精品一区二区综合av| 国产黄色免费视频| 欧美午夜在线观看| www.成人69.com| 国产精品丝袜视频| 中文字幕亚洲在线观看| 精品亚洲视频在线| 国产成人av福利| av中文字幕免费在线观看| 亚洲精品一区在线观看| 色视频免费在线观看| 精品国产中文字幕| 国产亚洲欧美日韩在线观看一区二区 | 中文字幕一区2区3区| 欧美乱熟臀69xxxxxx| 毛片毛片毛片毛片毛片毛片| 91免费国产视频| 欧美91在线| 成人免费毛片糖心| 亚洲欧美偷拍另类a∨色屁股| 国产小视频在线高清播放| 欧美激情久久久久| 国产精品高清乱码在线观看| 蜜臀久久99精品久久久酒店新书| 男女男精品视频网| 又色又爽又黄无遮挡的免费视频| 日韩欧美在线网站| 极品美乳网红视频免费在线观看| 日韩在线小视频| 91最新在线视频| 日本一道在线观看| 免费在线亚洲| 自拍偷拍色综合| 精品国产sm最大网站免费看| 国产天堂素人系列在线视频| 日韩av一区二区三区在线| 欧美xxx在线观看| av大片免费在线观看| 欧美日韩另类国产亚洲欧美一级| 在线天堂av| 日韩欧美国产二区| 亚洲三级影院| www.com亚洲| 欧美精品一区在线观看| 日本激情在线观看| 国产肉体ⅹxxx137大胆| 蜜臀av在线播放一区二区三区| 91久久精品国产91性色69| 日韩精品高清视频| 亚洲性图自拍| 成人小视频在线看| 成人h动漫精品一区二区| 亚洲精品自拍区在线观看| 97视频在线观看免费高清完整版在线观看| 四虎国产精品免费久久| 国产免费无码一区二区| 亚洲欧美一区二区在线观看| 欧洲有码在线视频| 亚洲free性xxxx护士白浆| 日韩电影二区| 国产成人无码精品亚洲| 日韩欧美一区在线| 国产淫片在线观看| 国产精品免费观看久久| av电影天堂一区二区在线观看| 欧美乱大交xxxx| 国产精品久久久久久久久免费看 | 亚洲第一中文字幕| 色婷婷视频在线观看| 农村妇女精品一二区| 91在线porny国产在线看| 国产高清大尺度一区二区不卡| 国产精品啪视频| 你微笑时很美电视剧整集高清不卡 | 国产第一页在线播放| 日韩欧美在线网站| 在线h片观看| 搡女人真爽免费午夜网站|