<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    linansengling

     

    u-boot移植日記(新手必讀)(轉(zhuǎn)載http://bbs.chinalinux.com/blog.php?tid=176&starttime=0&endtime=0)

    幾經(jīng)艱辛,終于基本完成了u-boot在s3c44b0的移植工作,在些記錄一下在移植過程中所碰到的困難和解決方法(一些心得),作為日后參考之用,也希望能夠幫到其它有需要的人^_^。
    1.來由:
    在我搞完ucos后(本來我是想學(xué)uclinux的,不過在對(duì)系統(tǒng)一無所知的情況下,還是先學(xué)一下ucos比較實(shí)際^_^,從中也可以對(duì)系統(tǒng)有個(gè)清晰的概念),我意識(shí)到要搞系統(tǒng)的話一個(gè)功能強(qiáng)大的bootloader是必不可少的,而我的板上自帶的是armboot(其實(shí)我個(gè)人覺得應(yīng)用在ARM上的話armboot已經(jīng)足夠了,畢竟u-boot也是從armboot中發(fā)展過來的,純屬個(gè)人意見),如果我的板上自帶光盤有已經(jīng)移植好的armboot源代碼供我參考的話,我想我也不會(huì)花這么多時(shí)間去搞u-boot,可恨的是我的光盤上只有armboot.bin這個(gè)二進(jìn)制文件,而沒有源文件,沒辦法,我下定主意自己搞一個(gè),考慮了一番后我選擇了u-boot,畢竟參考資料相對(duì)比較多,再我學(xué)完u-boot后再回頭看armboot,簡(jiǎn)直是一個(gè)爐里出的餅,這是后話。
    ? ? 2.準(zhǔn)備:
    ? ?? ?? ? 說是容易,做起來卻挺難。因?yàn)榫幾gu-boot要在linux環(huán)境下,而不能在我們平時(shí)所熟悉的ads下那么直觀。首先要建立好交叉編譯環(huán)境,這個(gè)交叉編譯環(huán)境可以自己來做,不過完全沒必要,而且難度也挺大,一般是下載人家編譯好的工具。我剛開始在這里就郁悶了很久,現(xiàn)在會(huì)了以后覺得原來就是這么簡(jiǎn)單,在些我把方法說清楚,希望不會(huì)再有人為這個(gè)問題郁悶了^_^:
    1)在網(wǎng)上下載一個(gè)u-boot源代碼,我用的是1.1.2版本的,最新的應(yīng)該是1.1.4的吧,其實(shí)差不多,那就像我那樣下載一個(gè)1.1.2版本的吧。把源文件解壓,這個(gè)應(yīng)該不用說了吧,學(xué)過linux的人應(yīng)該會(huì),不會(huì)的話我想你繼續(xù)做下去也困難,那就先裝個(gè)linux用下吧(我用的是RedHat的,哦對(duì)了,編譯程序是需要gcc編譯器的,所以安裝方式一定要選擇工作站哦^_^)。好了,解壓后你發(fā)現(xiàn)在u-boot.1.1.2目錄下有Makefile這個(gè)文件吧?讓我們看看它里面的內(nèi)容,最簡(jiǎn)單的方法就是vi Makefile了。我們要看的是它選擇的是哪一個(gè)交叉編譯器。可以看到這一項(xiàng):
    ifeq ($(ARCH),arm)
    CROSS_COMPILE = arm-linux-
    看到吧,也就是說這里所用的交叉編譯器是arm-linux-gcc了,(u-boot默認(rèn)是用這個(gè)的,也有用arm-elf-gcc的,網(wǎng)上有個(gè)工具包arm-elf-tools-20030314.sh,我試過用它來編譯,沒有問題,順便提一下,arm-elf-gcc是用來編譯uClinux內(nèi)核的工具來的)那你就下載一個(gè)arm-linux-的交叉編譯器吧,我是在網(wǎng)上下載cross-2.95.3.tar.bz2這個(gè)文件,然后解壓得到2.95.3版本的交叉編譯工具的,具體設(shè)置如下(參考網(wǎng)上資料):
    2)在宿主機(jī)上建立arm-linux-gcc交叉編譯環(huán)境
    在RedHat Linux系統(tǒng)下以root用戶登錄,
    將cross-2.95.3.tar.bz2文件復(fù)制到/目錄下,
    安裝:
    # tar jxvf cross-2.95.3.tar.bz2
    這個(gè)命令會(huì)在你的/usr/local/arm/2.95.3目錄下安裝 arm-linux-gcc 交叉編譯程序,
    然后在PATH變量中添加一項(xiàng):/usr/local/arm/2.95.3/bin.
    [root@localhost root]# export ATH=/usr/local/arm/2.95.3/bin:$PATH

    把PATH=/usr/local/arm/2.95.3/bin:$PATH添加到/ETC/bash_profile文件中
    或者
    在/etc/bashrc文件中添加一項(xiàng):
    export PATH=/usr/local/arm/2.95.3/bin:$PATH
    測(cè)試:
    把終端關(guān)閉,重新打開后執(zhí)行如下命令:
    # arm-linux-gcc –v
    好了,建立好交叉編譯環(huán)境后可以試著編譯u-boot了

    這里提幾個(gè)注意點(diǎn):
    1.不可用winRAR解壓u-boot-1.1.2.tar.bz2或u-boot-1.1.2.tar.gz這種文件(就個(gè)可能新手會(huì)犯,一般熟悉linux命令的人應(yīng)該都不會(huì)這樣做吧,在此還是要提一下)
    2.可能下載的文件有一些中間文件會(huì)阻礙編譯的運(yùn)行,所以在編譯前最好來個(gè)徹底清除,在u-boot.1.1.2目錄下運(yùn)行命令:make distclean (其實(shí)這個(gè)命令在Makefile文件下就有)我當(dāng)時(shí)為這個(gè)問題郁悶了很久,希望你們不會(huì)像我這樣^_^);
    3,有些人為了方便想在cygwin下編譯,但是經(jīng)常在網(wǎng)上看到在這個(gè)虛擬平臺(tái)下編譯有很多的問題,要配置的東西也多,而且好像我用過那個(gè)vi沒有l(wèi)inux環(huán)境下的好用,所以最好還是不要用這個(gè)軟件了吧,如果你真的離不開windows的話可以像我這樣裝個(gè)虛擬機(jī),在虛擬機(jī)下再裝linux的系統(tǒng),具體參考這個(gè)網(wǎng)站):
    http://fedora.linuxsir.org/doc/vmware/
    3)好了,現(xiàn)在開始測(cè)試你的交叉編譯器搞好沒有。在u-boot.1.1.2目錄下執(zhí)行如下命令:
    1)Make distclean (再次強(qiáng)調(diào))
    2)Make B2_config(隨便再個(gè)現(xiàn)成的試試^_^)
    3)Make (沒錯(cuò)的話應(yīng)該會(huì)生成u-boot.bin文件,發(fā)生錯(cuò)誤的話也不怕,只要細(xì)心看一下哪里錯(cuò)就行了,gcc碰到錯(cuò)誤后會(huì)退出編譯,所以可以一個(gè)個(gè)錯(cuò)誤來改,一般的問題都是沒找到編譯器(可能你沒裝或者裝的不對(duì),例如人家用的是arm-linux-而你裝的是arm-elf-,如果你裝了的話看看你的環(huán)境變量設(shè)好了沒有,前面有講,如果不關(guān)編譯器的事的話那就再看看,一般是文件的后綴不對(duì),有些文件后綴是大寫的,例如start.S但是如果你的是start.s小寫的話那當(dāng)然找不到(解決方法很,把它改成大寫就行了)。細(xì)心看吧,不用怕,它都有注明路徑,很容易可以找到的))
    如果以上步驟都無誤的話那么恭喜你,你的交叉編譯環(huán)境可以用來編譯你的u-boot源代碼了,可以開始以下階段。
    3.移植:
    說時(shí)遲那時(shí)快,現(xiàn)在開始移植工作(以下是我一步步重新做一遍,力求說得詳細(xì)點(diǎn),感謝我吧^_^)
    我以B2板子的程序做為模板來做.
    #cd u-boot-1.1.2
    #cd board
    #cp -R dave myboard (這是我取的板子名字,可以換上你的,但是后面的也要跟著來換哦^_^)
    #cd myboard
    #mv B2 myboards3c44b0 (自己取個(gè)板子名)
    #cd myboards3c44b0
    # mv B2.c myboards3c44b0.c
    修改myboards3c44b0里面的Makefile, 把B2改成myboards3c44b0,編譯時(shí)如果報(bào)的其它類似找不到B2的錯(cuò)誤也是把相應(yīng)的B2改成myboards3c44b0來處理。

    1)其中的myboards3c44b0.c文件是板的初始化代碼,看一下就知道,根據(jù)你的板上自帶的44binit.s來修改吧。memsetup.S文件主要是存儲(chǔ)器的初始化設(shè)置,其實(shí)也是44binit.s里面的一部分。
    2)其實(shí)board這里要修改的不多,先跳過flash部分吧,我們來看一下cpu設(shè)置部分吧。
    u-boot-1.1.2里面已經(jīng)加入了對(duì)s3c44b0的支持,讓我們來看一下cpu/s3c44b0里面的部分吧。
    看到start.S這個(gè)文件了嗎?要修改的其實(shí)并不多,按照你的板設(shè)置一下中斷跳轉(zhuǎn)矢量就行了,或者上網(wǎng)查一下吧,應(yīng)該很容易看明的。其中cpu.c這個(gè)文件簡(jiǎn)直不用修改,再來看一下serial.c這個(gè)文件吧,改一下波特率的設(shè)置就行,就是你用多少M(fèi)的CPU頻率的話對(duì)應(yīng)的波特率參數(shù)設(shè)置問題,其實(shí)B2已經(jīng)做得不錯(cuò)的了,很多子程序都不用自己寫的了^_^,在我的板上是這樣設(shè)置的,參考一下吧:
    #if CONFIG_S3C44B0_CLOCK_SPEED==66 ,把所有的這些66改成60,原因,我的實(shí)驗(yàn)板上用的頻率是60(44B0最高頻率為64M)。然后其它分頻系數(shù),寄存器初始化設(shè)置,可以參考一下44blib.c,在這里我給出我的設(shè)置出來吧,可以參考一下。

    case 115200:
    #if CONFIG_S3C44B0_CLOCK_SPEED==60
    divisor = 32;

    UFCON0 = 0x0;
    ULCON0 = 0x03;
    UCON0 = 0x245;
    UBRDIV0 = divisor;

    我在這方面算術(shù)不好,所以都是參考人家的。

    3)好,再加上個(gè)頭文件:
    cd u-boot-1.1.2/include/configs
    cp B2.h myboards3c44b0.h
    這個(gè)頭文件其實(shí)要改的地方還挺多的,我等下再說怎樣修改。先回到u-boot.1.1.2目錄,

    4)在Makefile里面加上這部分,不會(huì)的話就模仿B2來寫吧^_^
    在B2的這部分文件
    B2_config:unconfig
    @./mkconfig $(@:_config=) arm s3c44b0 B2 dave
    后面加上這部分:
    myboards3c44b0_config:unconfig
    @./mkconfig $(@:_config=) arm s3c44b0 myboard3c44b0 myboard

    切記在@./mkconfig $(@:_config=) arm s3c44b0 myboard3c44b0 myboard前面的是Tab來的,萬萬不能用空格代替,因?yàn)樗强窟@個(gè)來識(shí)別命令的!
    ? ?
    5)好,現(xiàn)在可以在u-boot-1.1.2目錄下執(zhí)行如下命令:
    Make distclean(還是用這個(gè)吧,比較徹底)
    Make myboards3c44b0_config
    Make
    看看有沒有錯(cuò),有錯(cuò)的話按著提示來改,如果沒錯(cuò)的話應(yīng)該就能生成u-boot.bin這個(gè)文件,現(xiàn)在還不能用哦,因?yàn)檫@幾是B2的一個(gè)仿制品而已(注:在我的機(jī)上到這一步可沒有報(bào)錯(cuò)哦,你一步步按著來做的話應(yīng)該也不會(huì)有什么錯(cuò)誤吧^_^)。


    6)好,現(xiàn)在繼續(xù)修改u-boot-1.1.2/include/configs/myboards3c44b0.h這個(gè)文件。
    #define CONFIG_INIT_CRITICAL1? ?? ?? ?這個(gè)在cpu/s3c44b0/start.S里面用到,如果你的u-boot程序不是在sdram中調(diào)試而是固化到flash中運(yùn)行的話,這個(gè)必不可少。
    找到 #define CONFIG_B2? ?? ?? ? 1? ?? ???把B2改成myboards3c44b0吧(不然就不會(huì)編譯你的板了)
    找到 #define CONFIG_S3C44B0_CLOCK_SPEED? ?75? ?你的44b0x應(yīng)該沒有75M吧 我的是改成60的
    找到Size of malloc() pool這部分設(shè)置,改成這樣吧,反正我是照著人家來做的,你自己研究下吧^_^。

    #define CFG_MONITOR_LEN(256 * 1024)/* Reserve 256 kB for Monitor*/
    #define CFG_ENV_SIZE? ?(64*1024)/* 1024 bytes may be used for env vars*/
    #define CFG_MALLOC_LEN(CFG_ENV_SIZE + 128*1024 )
    #define CFG_GBL_DATA_SIZE128/* size in bytes reserved for initial data */
    #define CFG_ENV_IS_IN_FLASH??1??這個(gè)必不可少,如果你想把你的參數(shù)保存到flash的話(有些板是保存到EEPRAM中去的,但是s3c44b0的話還是保存到flash吧)
    #define CFG_ENV_ADDR(PHYS_FLASH_1+0x40000)??這個(gè)就是你的參數(shù)保存在flash里的起始地址了
    #define CFG_ENV_OFFSET0x40000? ?? ?這個(gè)我后來看它源程序發(fā)現(xiàn)如果你上一步?jīng)]有設(shè)置它的起始地址的話就會(huì)用它來作默認(rèn)地址的了
    #define CONFIG_AUTO_COMPLETE

    其它地方?jīng)]有深究哦,有些好像不要也行,你就試試吧。

    找到Hardware drivers部分,這應(yīng)該是網(wǎng)絡(luò)芯片設(shè)置吧,參考一下這個(gè)吧(要看芯片的):
    #define CONFIG_DRIVER_RTL8019? ?? ???這個(gè)就要看你的板上用的是什么網(wǎng)卡了(這個(gè)是臺(tái)灣出的,有10M)
    #define RTL8019_BASE0x06000000? ?這個(gè)是網(wǎng)卡相就寄存器的起始地址
    以下部分我試過不要也行,你試下吧
    #define RTL8019_BUS320
    #define CONFIG_SMC_USE_16_BIT
    #undef??CONFIG_SHOW_ACTIVITY
    #define CONFIG_NET_RETRY_COUNT10? ?應(yīng)該是重試的次數(shù)吧

    #define CONFIG_BAUDRATE115200??設(shè)置波特率

    #define CONFIG_COMMANDS( CONFIG_CMD_DFL | \
    CFG_CMD_DATE | \
    CFG_CMD_ELF| \
    CFG_CMD_NET? ? | \
    CFG_CMD_EEPROM| \
    CFG_CMD_I2C| \
    CFG_CMD_FAT | \
    CFG_CMD_JFFS2)
    把CFG_CMD_EEPROM改成CFG_CMD_FLASH吧,雖然不改也是可以的,具體沒考究。

    以下是板上env參數(shù)設(shè)置,看一下吧,其實(shí)我覺得了解一下就行的了,只是一些初始設(shè)置值,以后可以用命令setenv??saveenv來修改的。
    #define CONFIG_BOOTDELAY3? ?? ?? ?? ?? ? 這個(gè)就是運(yùn)行bootcmd之前的等待時(shí)間
    #define CONFIG_BOOTARGS??"devfs=mount root=ramfs console=ttyS0,115200" 引導(dǎo)uClinux的時(shí)候傳遞的參數(shù),不會(huì)就先不用管它也行。
    #define CONFIG_ETHADDR00:50:c2:1e:af:fb? ? 網(wǎng)卡的物理地址MAC
    #define CONFIG_NETMASK??255.255.255.0? ?? ? 掩碼地址,設(shè)置過ip的人都應(yīng)該知道吧
    #define CONFIG_IPADDR? ?192.168.0.30? ?? ?? ? 這是你板上網(wǎng)卡8019的ip地址
    #define CONFIG_SERVERIP192.168.0.10? ?? ? 這是你宿主機(jī)的ip地址,以后用tftp下載的時(shí)候用到,一定要跟你的宿主機(jī)一致才行。
    #define CONFIG_BOOTFILE"u-boot.bin"? ?? ???這個(gè)就是你要下載文件的默認(rèn)名字
    #define CONFIG_BOOTCOMMAND"bootm 0x50000"? ?這是bootdelay后運(yùn)行的命令

    Miscellaneous configurable options部分,參考一下吧:
    #defineCFG_LONGHELP/* undef to save memory*/
    #defineCFG_PROMPT"s3c44b0=>"? ?這是進(jìn)入命令模式下的提示符,改個(gè)帥一點(diǎn)的吧
    #defineCFG_CBSIZE256/* Console I/O Buffer Size*/
    #defineCFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
    #defineCFG_MAXARGS 100/* max number of command args*/
    #define CFG_BARGSIZECFG_CBSIZE/* Boot Argument Buffer Size*/

    #define CFG_MEMTEST_START? ? 0x0C400000/* memtest works on*/
    #define CFG_MEMTEST_END0x0C800000/* 4 ... 8 MB in DRAM*/
    #undef??CFG_CLKS_IN_HZ/* everything, incl board info, in Hz */
    #defineCFG_LOAD_ADDR0x0c008000默認(rèn)的下載地址
    #defineCFG_HZ1000/* 1 kHz */
    #define CFG_BAUDRATE_TABLE??{ 9600, 19200, 38400, 57600, 115200 } 可供選擇的波特率


    Physical Memory Map部分,比較重要,修改你的sdram和flash的地址和容量。
    #define CONFIG_NR_DRAM_BANKS1? ?我們只占用了一個(gè)Bank用來映射sdram
    #define PHYS_SDRAM_10x0c000000? ???sdram的起始地址
    #define PHYS_SDRAM_1_SIZE0x00800000? ???sdram的容量(8M)
    #define PHYS_FLASH_10x00000000? ???flash的起始地址
    #define PHYS_FLASH_SIZEflash的容量(2M)
    #define CFG_FLASH_BASEPHYS_FLASH_1? ?定義多個(gè)名字而已,其它地方會(huì)用到


    FLASH organization部分,看注釋應(yīng)該知道了吧,參考一下:
    #define CFG_FLASH_ERASE_TOUT4120000/* Timeout for Flash Erase (in ms)*/
    #define CFG_FLASH_WRITE_TOUT4000/* Timeout for Flash Write (in ms)*/


    按著來一步步的做應(yīng)該不難,這里提一下vi程序的用法,其實(shí)在google一搜就找到了,不過為了方便大家,還是說一聲吧,
    在命令模式下:
    按/ xxx再回車即可搜索到你所需要的內(nèi)容(xxx),再按n搜索下一個(gè),按shift+n搜索上一個(gè)
    按:xxx即可跟到你想要的行
    按:set nu顯示行號(hào)
    其它查書都可以找到就不說了。

    做到這個(gè)時(shí)候,你可以再編譯一下,看有沒有錯(cuò),這一步我就沒有幫你們做了,不過我覺得應(yīng)該不會(huì)有問題吧,下載到ram中運(yùn)行,看看效果。


    7)終于到了flash的設(shè)置部分了,這完全是我個(gè)人悟出來的,網(wǎng)上資料好像講得不是先清楚。
    首先介紹一下flash的識(shí)別吧,每塊flash都有一個(gè)id,前部分用來說明生產(chǎn)廠家,后部分用來說明它的容量,類型,位數(shù)等。它們的定義是在u-boot-1.1.2/include/flash.h中,就以我的ssts9vf1601為例:
    #define SST_MANUFACT0x00BF00BF??這是生產(chǎn)廠家id
    #define SST_ID_xF16010x234B234B??這是它的型號(hào),容量,位數(shù)等id
    #define FLASH_SST160A0x0046? ?? ? 這個(gè)我還說不清楚,有個(gè)要注意的問題是像sst160是不能用奇地址的,我做的過程中是把SST160A改成SST1601的,懶得幫它創(chuàng)一個(gè)
    好了,相信你已經(jīng)找到你的板上所用的flash對(duì)應(yīng)的id號(hào)了吧?現(xiàn)在就來談?wù)勗趺锤摹?br />先進(jìn)入u-boot-1.1.2/board/myboards3c44b0/common/flash.c
    它里面已經(jīng)幫SST160A設(shè)置好了,我的做法是把SST公司的160A都改成1601,是不是很簡(jiǎn)單,當(dāng)然你也可以幫1601再寫一分,但是我是個(gè)懶人,所以我就樣做了^_^

    到這里還有個(gè)問題沒提到的,就是如果你重新用setenv saveenv 設(shè)置了參數(shù),但是復(fù)位后會(huì)發(fā)現(xiàn)怎么沒有保存到的(不信你試試看)。其實(shí)我是故意留到這里講的,應(yīng)該它不會(huì)報(bào)錯(cuò),可以說是比較隱秘的問題,所以我故意放到這里來說,以引起你的重視。
    解決方法:vi u-boot-1.1.2/board/myboard/common/flash.c
    找到這個(gè)函數(shù):write_buff
    里面有這句話:#ifdef CONFIG_B2
    要把B2改了,因?yàn)槲覀兊陌宀唤蠦2,那叫什么呢?原來是在這里定義的:u-boot-1.1.2/include/configs/myboards3c44b0.h
    里面有這句話:#define CONFIG_HFRK 你不喜歡HFRK這個(gè)名字也行,可以改成別的名字,只不過相應(yīng)地前面的B2也要改成這個(gè)名字而已。


    4.后記:
    ??本來是想剛做好的時(shí)候?qū)懙模呛髞戆l(fā)現(xiàn)有些功能實(shí)現(xiàn)不了,所以就停住了筆,等我搞好了以后,又急著去學(xué)習(xí)uClinux的移植,真的很忙,現(xiàn)在終于抽空把它寫完。雖然有些地方還沒說清楚(畢竟我對(duì)它的了解還不是很深,但我相信在我以后移植系統(tǒng)的過程中會(huì)逐步加深對(duì)它的了解),我還是希望它能成為最詳盡的u-boot移植新手指導(dǎo),對(duì)u-boot移植的初學(xué)者起到實(shí)質(zhì)性的作用,這樣就不枉我花了這么多的心思來寫這個(gè)文檔。

    posted on 2006-11-20 22:53 fds 閱讀(705) 評(píng)論(0)  編輯  收藏 所屬分類: ARM/liunx


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆分類(12)

    隨筆檔案(13)

    文章分類(1)

    文章檔案(2)

    相冊(cè)

    收藏夾(3)

    my like

    最新隨筆

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 两个人的视频高清在线观看免费| 久久精品免费一区二区喷潮| 亚洲性色高清完整版在线观看| 亚洲国产天堂在线观看| 每天更新的免费av片在线观看| 亚洲中文字幕乱码熟女在线| 中文字幕亚洲无线码| 国产亚洲漂亮白嫩美女在线 | 亚洲中文字幕无码专区| 久久国产免费一区二区三区| 在线观看亚洲精品国产| 国产精品视频免费观看| 亚洲美女自拍视频| 美女被cao免费看在线看网站| 一区二区三区免费在线视频 | 人人狠狠综合久久亚洲88| 中文字幕一区二区免费| 亚洲午夜在线播放| 亚洲精品制服丝袜四区| 午夜两性色视频免费网站| 在线观看免费无码专区| 亚洲卡一卡2卡三卡4卡无卡三| 永久免费av无码网站大全| 久久午夜无码免费| 一二三区免费视频| 久久国产精品亚洲综合| 免费国产高清视频| 亚洲一区二区三区免费| 亚洲精品无码av中文字幕| 在线看片免费不卡人成视频| 国产免费久久久久久无码| 99久久国产亚洲综合精品| 亚洲精品线在线观看| 亚洲欧洲自拍拍偷精品 美利坚| 国产一精品一AV一免费| 国产成人亚洲毛片| 国产亚洲精品成人AA片| 亚洲国产超清无码专区| 亚洲免费视频网站| 国产亚洲精品国产| 亚洲宅男天堂在线观看无病毒 |