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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

图像识别DM8127开发攻略——UBOOT的移植说明

發布時間:2023/12/31 综合教程 51 生活家
生活随笔 收集整理的這篇文章主要介紹了 图像识别DM8127开发攻略——UBOOT的移植说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系統運維

圖像識別DM8127開發攻略——UBOOT的移植說明

根據前幾篇文章的介紹,想必大家對DM8127軟件架構有了全局的認識,下面我們從開發的角度進行裁剪移植最基本的BOOT軟件包,嵌入式開發人員拿到一個新的板子,就是要如何讓板子能跑得起自己編譯和移植的程序,這才有價值,否則直接拿別人的BIN文件直接燒寫到板子上沒啥意思。

一、DM8127 UBOOT編譯說明
DM8127 的UBOOT的版本是u-boot-2010.06, UBOOT代碼 和 以前的DM6446-DM368-DM3730平臺稍微不同,以前的DM6446-DM368分離UBL和UBOOT兩個軟件包,DM3730 分離出XLOADR和UBOOT兩個軟件包,而現在的DM8127是一個UBOOT軟件包,里面包含了UBOOTMIN和UBOOT,通過宏來編譯得到不同的BIN文件,這里有3個大的宏來區分不同的編譯模式。編譯UBOOTMIN 和 UBOOT命令和腳本見《圖像識別DM8127開發攻略——RDK軟件架構淺析及編譯》提到的總Makefile和U-BOOT文件夾對應的u-boot\\Makefile文件第3320行開始看 ti8148_ipnc_config,同時也要結合看include/configs/ti8148_ipnc.h。

A、#define CONFIG_TI814X_MIN_CONFIG
編譯得到UBOOTMIN(u-boot.min.nand 或者 MLO);
對應RDK總的Makefile編譯腳本:
ubootmin:
$(MAKE) ubootclean
$(MAKE) ubootbuild MAKE_TARGET=$(PLATFORMCFG)$(SYSTEM_CFG)min$(BINARY_MODE)
$(MAKE) ubootbuild MAKE_TARGET=u-boot.ti
ifeq ($(BINARY_MODE),sd)
cp $(UBOOTDIR)/u-boot.min.$(BINARY_MODE) $(TFTP_HOME)/MLO
cp $(UBOOTDIR)/u-boot.min.$(BINARY_MODE) $(UBOOTDIR)/MLO
else
cp -f $(UBOOTDIR)/u-boot.min.$(BINARY_MODE) $(TFTP_HOME)/u-boot.min.$(BINARY_MODE)
cp -f $(UBOOTDIR)/u-boot.min.$(BINARY_MODE) $(UBOOTDIR)/u-boot.min.$(BINARY_MODE).bk
cp -f $(UBOOTDIR)/u-boot.min.$(BINARY_MODE) /tftpboot/dm8127_min.bin
endif
我們的build_1_uboot-min-nand.sh就是調用上面的腳本執行else這種模式,得到u-boot.min.nand(dm8127_min.bin),這個是針對nand FLASH的情況,是要燒寫到板子NAND FLASH上面的。
而我們的build_1_uboot-min-sd.sh也是調用上面的腳本執行ifeq ($(BINARY_MODE),sd),得到MLO,工廠生產,軟件調試,最需要這個文件,因為剛做出來的板子NAND 是沒有程序的,需要把這個MLO文件和后面編譯總的U-BOOT得到的u-boot.bin一起COPY到SD卡(TF卡)。

B、#define CONFIG_TI814X_OPTI_CONFIG
編譯得到u-boot.opti.nand這個也是類似UBOOTMIN的宏編譯,只不過編譯得到的BIN文件是通過串口下載到板子上啟動。
對應RDK總的Makefile編譯腳本:
ubootopti:
$(MAKE) ubootclean
$(MAKE) ubootbuild MAKE_TARGET=$(PLATFORM_CFG)_ipnc_opti_nand
$(MAKE) ubootbuild MAKE_TARGET=u-boot.ti
cp $(UBOOTDIR)/u-boot.opti.nand $(TFTP_HOME)/u-boot.opti.nand
我們的build_1_uboot-min-opt.sh就是調用到這個腳本執行,得到u-boot.opti.nand,這個是通過PC端的串口軟件下載到板子上面去,有些產品設計的時候,由于特殊原因沒有SD卡,那么可以使用這種模式去軟件調試新生產出來的板子。編譯這種模式要注意修改u-boot/Include/configs/ti8148_ipnc.h這個文件,把很多沒用的功能屏蔽掉,比如:
#undef CONFIG_CMD_BDI
#undef CONFIG_GZIP
#undef CONFIG_ZLIB
#undef CONFIG_CMD_LOADB
#undef CONFIG_CMD_LOADS
#undef CONFIG_CMD_NFS
#undef CONFIG_CMD_SETGETDCR
#undef CONFIG_CMD_XIMG
#undef CONFIG_CMD_MISC
#undef CONFIG_CMD_ITEST
#undef CONFIG_CMD_FPGA
#undef CONFIG_CMD_EDITENV
#undef CONFIG_BOOTM_NETBSD
#undef CONFIG_BOOTM_RTEMS
#undef CONFIG_CMD_MISC
#undef CONFIG_CMD_IMI
#undef CONFIG_CMD_ITEST
#undef CONFIG_CMD_SOURCE
#undef CONFIG_CMD_IMLS
#undef CONFIG_CMD_ECHO
使用#undef裁剪u-boot的功能,保留網絡功能和NAND功能,如果不裁剪,得到的u-boot.opti.nand過大,是不能在DM8127片內的RAM運行的,u-boot.opti.nand和上面提到的MLO都是在DM8127片內的RAM運行,因為外存DDR3都還沒初始化!
那么軟件調試新生產出來的板子時,給板子選定串口BOOT模式(NAND沒程序就是自動默認其他BOOT模式),上電,按下圖使用串口工具比如SecureCRT,選擇編譯得到的u-boot.opti.nand,如果串口穩定,一般下載100%正常,回車進入熟悉的u-boot命令行模式。

上圖有時使用X modem 傳輸文件不成功,可以再使用Ymodem模式,波特率使用115200。

C、如果CONFIG_TI814X_MIN_CONFIG和CONFIG_TI814X_OPTI_CONFIG都沒有選上,那么就是編譯正常的UBOOT,得到u-boot.bin(dm8127_uboot.bin)
對應RDK總的Makefile編譯腳本:
ubootbin:
$(MAKE) ubootclean
$(MAKE) ubootbuild MAKE_TARGET=$(PLATFORMCFG)$(SYSTEM_CFG)config$(BINARY_MODE)
$(MAKE) ubootbuild MAKE_TARGET=u-boot.ti
cp -f $(UBOOTDIR)/u-boot.bin $(TFTP_HOME)/u-boot.bin
cp -f $(UBOOTDIR)/u-boot.bin $(UBOOTDIR)/dm8127_uboot.bin.bk
cp -f $(UBOOTDIR)/u-boot.bin /tftpboot/dm8127_uboot.bin
我們的build_2_uboot-all.sh就是調用上面的腳本,第一次編譯正常的UBOOT必須使用ubootclean,還有我們的build_2_uboot-tmp.sh是上面的腳本把$(MAKE) ubootclean去掉,在第一次編譯build_2_uboot-all.sh后,后面修改源碼某個文件,我們不需要每次都調用ubootclean,再重新對所有的文件編譯,太浪費時間。
提示:上面3種大的宏編譯模式,一定要結合RDK總Makefile和U-BOOT文件夾對應的u-boot\\Makefile文件第3320行開始的內容來理解。

二、UBOOT的裁剪和移植

1、 修改u-boot\\Makefile
以前寫過的其他DAVINCI平臺開發攻略都說過,第一步就是刪除不相關的文件,這樣才好理解這個DM8127平臺有哪些相關的文件和文件夾,哪些是不相關的,一目了然。
SUBDIRS = tools \\
#examples/standalone \\ (屏蔽,不要)
#examples/api (屏蔽,不要)
…….
#LIBS += api/libapi.a (屏蔽)

2、回到u-boot目錄下,把nand_spl和onenand_ipl文件夾去掉。
3、Include/configs/只保留ti8148_ipnc.h,其他全部刪除。
4、arch只保留arm文件
而arm/cpu文件里面只保留arm_cortexa8
arm_cortexa8文件里只保留

arch/arm/ Include/asm裁剪截圖見下圖:

5、board文件夾只保留提ti文件夾,ti下面只保留ti8148_ipnc

經過上面幾個步驟的暴力刪除,DM8127平臺的UBOOT簡潔了很多,保存備份很方便。

6、u-boot/include/configs/ti8148_ipnc.h重點修改
對于新手玩一個DEMO板來說,要把板子跑起程序來,其實移植工作很大一部分在這個文件下去修改,其他外設驅動初始化,則還沒有那么著急。等你弄熟DEMO板,然后再去開發自己設計的板子,比如使用新的DDR3啊,NAND FLASH啊,網口芯片啊等等。
下面本人直接把本公司的開發板u-boot源碼對于的/include/configs/ti8148_ipnc.h放上來逐步分析。
#ifndef __CONFIG_TI8148_IPNC_H
#define __CONFIG_TI8148_IPNC_H

/
#define CONFIG_TI814X_NO_RUNTIME_PG_DETECT
/
/
Display CPU info /
#define CONFIG_DISPLAY_CPUINFO 1 (允許串口打印CPU信息)
/
In the 1st stage we have just 110K, so cut down wherever possible */
#ifdef CONFIG_TI814X_MIN_CONFIG (使用make ubootmin,就編譯這里面的定義)

/ enable d-cache only on 2nd stage /
#define CONFIG_SYS_DCACHE_OFF

#define CONFIG_CMD_MEMORY / for mtest /
#define CONFIG_CMD_MISC / Misc functions like sleep etc/(支持sleep 1這種腳本命令)
#undef CONFIG_GZIP (ubootmin不需要過多的其他功能,使用#undef處理)
#undef CONFIG_ZLIB
#undef CONFIG_SYS_HUSH_PARSER
#define CONFIG_CMD_LOADB / loadb /
#define CONFIG_CMD_LOADY / loady /
#define CONFIG_SETUP_PLL
#define CONFIG_TI814X_CONFIG_DDR(在ubootmin里面必須對DDR3進行初始化,否則無法運行uboot)
#define CONFIG_TI814X_EVM_DDR3
#define CONFIG_ENV_SIZE 0x400 (ubootmin也有自己的boot 參數,字節很少)
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (8 * 1024))
#define CONFIG_SYS_PROMPT "TI-MIN#" (ubootmin命令行,不過一般只用于開發調試)*
/
set to negative value for no autoboot /
#define CONFIG_BOOTDELAY 0 (ubootmin在開發調試可以為1,ubootmin穩定后產品化為0)
#if defined(CONFIG_SPI_BOOT) /
Autoload the 2nd stage from SPI /
#error 1 (ubootmin不需要SPI BOOT的話,這里面不編譯)
#define CONFIG_SPI 1
#if defined(CONFIG_TI81XX_PCIE_BOOT)
#define CONFIG_CMDLINE_TAG 1 /
enable passing of ATAGs /
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_INITRD_TAG 1 /
Required for ramdisk support /
#define CONFIG_CMD_SOURCE
#define CONFIG_EXTRA_ENV_SETTINGS \\
"verify=yes\\0" \\
"bootcmd=source 0x80400000\\0" \\
""
/
user can override default size configuration here.

it will only come in effect if TI81xx_NO_PIN_GPMC
is defined in include/asm/arch/pcie.h
*/
#define CONFIG_BAR1_32 (0x1000000ULL)
#define CONFIG_BAR2_32 (0x800000ULL)
#define CONFIG_BAR3_32 (0xfffULL)
#define CONFIG_BAR4_32 (0x1001ULL)
#define CONFIG_REG2_64 (0x1000000ULL)
#define CONFIG_REG4_64 (0x2000000ULL)

#else //(CONFIG_TI81XX_PCIE_BOOT) (ubootmin不需要PCIE BOOT的話,這里面不編譯)
#define CONFIG_EXTRA_ENV_SETTINGS \\
"verify=yes\\0" \\
"bootcmd=sf probe 0; sf read 0x81000000 0x20000 0x40000; go 0x81000000\\0" \\

#endif //(CONFIG_TI81XX_PCIE_BOOT)

#elif defined(CONFIG_NAND_BOOT) / Autoload the 2nd stage from NAND /
//#error 2 //built: build_1_uboot-min-nand.sh sleep 1 (ubootmin需要NAND BOOT,一定 要編譯)
#define CONFIG_NAND 1
#define CONFIG_EXTRA_ENV_SETTINGS \\
"verify=yes\\0" \\
"bootcmd=mw.b 0x81000000 0x00 0x20000;nand read 0x81000000 0x20000 0x40000;go 0x81000000\\0" \\
(ubootmin存放在0x0—0x20000空間,uboot存放在0x20000---0x180000,這里ubootmin把uboot給跑起來,讀取NAND FLASH的UBOOT放到DDR3地址0x81000000,然后go命令BOOT起來)
#elif defined(CONFIG_SD_BOOT) / Autoload the 2nd stage from SD /
//#error 3 //built: build_1_uboot-min-sd (ubootmin需要SD BOOT的話,調試模式和生產模式,要編譯)
#define CONFIG_MMC 1
#define CONFIG_EXTRA_ENV_SETTINGS \\
"verify=yes\\0" \\
"bootcmd=mmc rescan 0; fatload mmc 0 0x80800000 u-boot.bin; go 0x80800000\\0" \\
(ubootmin從SD卡讀讀u-boot.bin,然后跑起來)
#elif defined(CONFIG_UART_BOOT) / stop in the min prompt /
#define CONFIG_EXTRA_ENV_SETTINGS \\
"verify=yes\\0" \\
"bootcmd=\\0" \\

#elif defined(CONFIG_ETH_BOOT) / Auto load 2nd stage from server /
#define CONFIG_EXTRA_ENV_SETTINGS \\
"verify=yes\\0" \\
"bootcmd=setenv autoload no;dhcp; tftp 0x81000000 u-boot.bin; go 0x81000000\\0"

#endif //defined(CONFIG_SPI_BOOT)

#elif defined(CONFIG_TI814X_OPTI_CONFIG) / Optimized code / (對應本文前面的介紹OPTI串口下載模式,需要這種編譯宏,對應make ubootopti)
#include <config_cmd_default.h> (這個.h里面的一些宏定義也可以進去屏蔽掉)

#define CONFIG_ZERO_BOOTDELAY_CHECK
#define CONFIG_ENV_SIZE 0x2000
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (32 1024))
#define CONFIG_ENV_OVERWRITE
#define CONFIG_SYS_LONGHELP
#define CONFIG_SYS_PROMPT "TI8127_OPTI#"
#define CONFIG_CMDLINE_TAG 1 /
enable passing of ATAGs /
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_INITRD_TAG 1 /
Required for ramdisk support /
#define CONFIG_BOOTDELAY 3 /
set to negative value for no autoboot */
#define CONFIG_NAND 1
#define CONFIG_SETUP_PLL
#define CONFIG_TI814X_CONFIG_DDR
#define CONFIG_TI814X_EVM_DDR3
#define CONFIG_SYS_DCACHE_OFF
#define CONFIG_SYS_ICACHE_OFF

#define CONFIG_CMD_BDI / bdinfo /
#define CONFIG_CMD_BOOTD / bootd /
#define CONFIG_CMD_CONSOLE / coninfo /
#define CONFIG_CMD_ECHO / echo arguments /
#define CONFIG_CMD_EDITENV / editenv /
#define CONFIG_CMD_FPGA / FPGA configuration Support /
#define CONFIG_CMD_IMI / iminfo /
#define CONFIG_CMD_ITEST / Integer (and string) test /
#ifndef CONFIG_SYS_NO_FLASH
#define CONFIG_CMD_FLASH / flinfo, erase, protect /
#define CONFIG_CMD_IMLS / List all found images /
#endif
#define CONFIG_CMD_LOADB / loadb /
#define CONFIG_CMD_LOADS / loads /
#define CONFIG_CMD_MEMORY / md mm nm mw cp cmp crc base loop mtest /
#define CONFIG_CMD_MISC / Misc functions like sleep etc/
#define CONFIG_CMD_NET / bootp, tftpboot, rarpboot /
#define CONFIG_CMD_NFS / NFS support /
#define CONFIG_CMD_RUN / run command in env variable /
#define CONFIG_CMD_SAVEENV / saveenv /
#define CONFIG_CMD_SETGETDCR / DCR support on 4xx /
#define CONFIG_CMD_SOURCE / "source" command support /
#define CONFIG_CMD_XIMG / Load part of Multi Image /

#undef CONFIG_CMD_BDI
#undef CONFIG_GZIP
#undef CONFIG_ZLIB
#undef CONFIG_CMD_LOADB
#undef CONFIG_CMD_LOADS
#undef CONFIG_CMD_NFS
#undef CONFIG_CMD_SETGETDCR
#undef CONFIG_CMD_XIMG
#undef CONFIG_CMD_MISC
#undef CONFIG_CMD_ITEST
#undef CONFIG_CMD_FPGA
#undef CONFIG_CMD_EDITENV
#undef CONFIG_BOOTM_NETBSD
#undef CONFIG_BOOTM_RTEMS
#undef CONFIG_CMD_MISC
#undef CONFIG_CMD_IMI
#undef CONFIG_CMD_ITEST
#undef CONFIG_CMD_SOURCE
#undef CONFIG_CMD_IMLS
#undef CONFIG_CMD_ECHO
(其實上面有些代碼是多余的,因為后面的#undef 是把前面定義的宏給取消了,本人這里是不想破壞TI RDK的架構,讓大家明白這個過程。由于OPTI模式編譯的BIN也是在內部RAM運行,必須裁剪不需要的UBOOT功能,只保留TFTP網絡燒寫NAND FLASH的功能就OK了)
#define CONFIG_EXTRA_ENV_SETTINGS \\
"verify=no\\0" \\
"bootdelay=0\\0" \\
"bootfile=uImage\\0" \\
"loadaddr=0x81000000\\0" \\
"bootargs=console=ttyO0,115200n8 mem=256M notifyk.VPSsm3_sva=0xBF900000 vram=50M ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs rw rootwait=1 rw lpj=4997120 ip=${ipaddr}:${serverip}:${gateway}:${subnet}::eth0:off\\0 "\\
"eraseall=nand erase\\0" \\
"uboot_tftp=tftp 0x81000000 dm8127_uboot.bin; go 0x81000000 \\0" \\
#define CONFIG_BOOTCOMMAND \\
"nboot 80007FC0 0 0x280000;bootm 80007FC0"
(本人這里只使用網絡TFTP下載運行UBOOT,燒寫的任務交給這個新運行起來的dm8127_uboot.bin,而不是使用這個OPTI模式的UBOOT)

#else //CONFIG_TI814X_MIN_CONFIG (下面這些定義就是編譯正常UBOOT的宏了,很多工作在下面做)

#include <config_cmd_default.h>
#define CONFIG_SERIAL_TAG 1
#define CONFIG_REVISION_TAG 1
#define CONFIG_SKIP_LOWLEVEL_INIT / 1st stage would have done the basic init /
#define CONFIG_ENV_SIZE 0x20000 (用一個BLOCK保存UBOOT參數:bootargs)
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (32 1024))
#define CONFIG_ENV_OVERWRITE
#define CONFIG_SYS_LONGHELP
#define CONFIG_SYS_PROMPT "TI8127_IPNC#"
#define CONFIG_SYS_HUSH_PARSER /
Use HUSH parser to allow command parsing /
#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
#define CONFIG_CMDLINE_TAG 1 /
enable passing of ATAGs /(支持從UBOOT傳參數給內核)
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_INITRD_TAG 1 /
Required for ramdisk support /
#define CONFIG_BOOTDELAY 1 /
set to negative value for no autoboot /
#define CONFIG_CMD_AUTOTEST /
for autotest /
/
By default, 2nd stage will have MMC, NAND, SPI and I2C support */
#define CONFIG_MMC 1
#define CONFIG_NAND 1
#define CONFIG_SPI 1
#define CONFIG_I2C 1
#define CONFIG_EXTRA_ENV_SETTINGS \\
"verify=yes\\0" \\
"bootfile=uImage\\0" \\
"ramdisk_file=ramdisk.gz\\0" \\
"loadaddr=0x81000000\\0" \\
"script_addr=0x80900000\\0" \\
"loadbootscript=fatload mmc 0 ${script_addr} boot.scr\\0" \\
"bootscript= echo Running bootscript from MMC/SD to set the ENV...; " \\
"source ${script_addr}\\0" \\
"ubifsargs=setenv bootargs console=ttyO0,115200n8 mem=80M notifyk.vpssm3_sva=0xBFD00000 vram=4M " \\
"cmemk.phys_start=0x85000000 cmemk.phys_end=0x89000000 cmemk.allowOverlap=1 earlyprintk " \\
"ip=${ipaddr} " \\
"rootfstype=ubifs root=ubi0:rootfs init=/init ubi.mtd=5,2048 " \\
"rootwait=1 rw lpj=4997120\\0" \\
"nfsargs=setenv bootargs console=ttyO0,115200n8 mem=80M notifyk.vpssm3_sva=0xBFD00000 vram=4M cmemk.phys_start=0x85000000 cmemk.phys_end=0x89000000 cmemk.allowOverlap=1 earlyprintk lpj=4997120 " \\
"ip=${ipaddr} " \\
"root=/dev/nfs rw nfsroot=${serverip}:/home/davinci/dm8127/v3.8.0/Source/ipnc_rdk/target/filesys,nolock\\0" \\
"squashfsargs=setenv bootargs console=ttyO0,115200n8 mem=80M notifyk.vpssm3_sva=0xBFD00000 vram=4M cmemk.phys_start=0x85000000 cmemk.phys_end=0x89000000 cmemk.allowOverlap=1 earlyprintk lpj=4997120 " \\
"ip=${ipaddr} " \\
"noinitrd rootfstype=squashfs root=/dev/mtdblock4\\0" \\
"eraseall=nand erase\\0" \\
"erase_env=nand erase 180000 40000\\0" \\
"tftp_boot=ipnc_ff_init 1;tftpboot 0x81000000 dm8127_kernel.bin;bootm\\0" \\
"nfsboot=ipnc_ff_init 1;run nfsargs;nand read ${loadaddr} 1C0000 400000;bootm ${loadaddr}\\0" \\
"userboot=ipnc_ff_init 1;nand read ${loadaddr} 1C0000 400000;bootm ${loadaddr}\\0" \\
"squashfsboot=run squashfsargs;ipnc_ff_init 1;nand read ${loadaddr} 1C0000 400000; bootm ${loadaddr}\\0" \\
"ubifsboot=ipnc_ff_init 1;run ubifsargs;nand read ${loadaddr} 1C0000 400000;bootm ${loadaddr}\\0" \\
"uboot_tftp=ipnc_ff_init 1;tftp 0x81000000 dm8127_uboot.bin; go 0x81000000\\0" \\
"updatemin=mw.b 0x81000000 0xFF 0x20000;tftp 0x81000000 dm8127_min.bin;nand erase 0x0 0x20000;nand write.i 0x81000000 0x0 20000\\0" \\
"updateuboot=mw.b 0x81000000 0xFF 0x40000;tftp 0x81000000 dm8127_uboot.bin;nand erase 20000 160000;nand write.i 0x81000000 20000 ${filesize}\\0" \\
"updatekernel=tftp 0x81000000 dm8127_kernel.bin;nand erase 1C0000 640000;nand write.i 0x81000000 1C0000 ${filesize}\\0" \\
"updatebasefs=tftp 0x81000000 dm8127_basefs.bin;nand erase 800000 2300000;nand write.i 0x81000000 800000 ${filesize}\\0" \\
"updateubifs=tftp 0x81000000 dm8127_ubifs.bin;nand erase 2B00000 6E00000;nand write.i 0x81000000 2B00000 ${filesize}\\0" \\
""
#define CONFIG_BOOTCOMMAND "run squashfsboot" /or run ubifsboot /
(這里定義上電UBOOT使用run ubifsboot或者 run nfsboot或者run userboot,可以在命令行使用:
Setenv bootcmd ‘run userboot’;saveenv去選擇默認上電啟動文件系統模式)
#define CONFIG_BOOTARGS \\
"console=ttyO0,115200n8 mem=80M notifyk.vpssm3_sva=0xBF900000 vram=4M ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs rw rootwait=1 lpj=4997120 ip=${ipaddr}\\0 "\\

#endif
(
上面的有UBOOT 參數適合DDR3 為512M字節系統,我們為了方便NFS調試,定義了nfsargs,如果主文件系統使用squashfs文件系統,我們就使用squashfsargs。如果主文件系統使用ubifs,我們就使用ubifsargs。如果自己設置新的參數,可以setenv bootargs XXXXXXXX,然后使用上面的run userboot。
本公司DM8127開發板NAND FLASH分區信息:
0x000000000000-0x000000020000 : "U-Boot-min"
0x000000020000-0x000000180000 : "U-Boot"
0x000000180000-0x0000001c0000 : "U-Boot Env"
0x0000001c0000-0x000000800000 : "Kernel"
0x000000800000-0x000002b00000 : "Squash"
0x000002b00000-0x000009900000 : "ubifs"
0x000009900000-0x00000e900000 : "userapp"
0x00000e900000-0x000020000000 : "user data"
根據這個信息,我們再看看前面的run updatemin ; run updateuboot; run updatekernel;run updateubifs;
這些命令腳本是本公司自己寫的,
run updatemin 通過TFTPSERVER 下載dm8127_min.bin并燒寫到NAND FLASH;
run updateuboot下載dm8127_uboot.bin燒寫到NAND;
run updatekernel下載dm8127_kernel.bin燒寫到NAND;
run updateubifs下載dm8127_ubifs.bin燒寫到NAND。
上面有些參數就是cmem共享內存的定義,參考APPRO的定義就可以了,我們DM8127使用全速模式,不是低功耗模式,也不是內存DDR3只有256M那種。
)

#define CONFIG_IPADDR 192.168.1.188 (我們這里定義開發環境的ipaddr)
#define CONFIG_SERVERIP 192.168.1.252 (我們這里定義開發環境的serverip,比如tftp,NFS的主機IP)
#define CONFIG_GATEWAYIP 192.168.1.1
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_ETHADDR 00:11:22:33:44:55
(我們這里定義板子的MAC地址,后面會在bootm.c添加代碼傳給kernel,見:
Arch/arm/lib/Bootm.c
在do_bootm_linux()加入:
#if 1 //added by jingbo
char buf1 = malloc(1024);
char
buf2 = malloc(32);

sprintf(buf2, eth=%s, getenv (ethaddr));
sprintf(buf1, %s %s, getenv (bootargs), buf2);
setup_commandline_tag (bd, buf1);

#endif
這段代碼就是如何把MAC地址通過bootargs傳給內核)

#ifndef CONFIG_TI814X_OPTI_CONFIG
#define CONFIG_AUTO_COMPLETE (UBOOT命令補全功能一定要打開,否則在uboot命令行無法使用tab鍵補全命令)
#define CONFIG_CMDLINE_EDITING(這個支持UBOOT命令行光標鍵查詢歷史命令,一般和CONFIG_AUTO_COMPLETE結合使用,一定要加上)
#endif

#define CONFIG_SYS_GBL_DATA_SIZE 128 / size in bytes reserved for
initial data
/

#define CONFIG_MISC_INIT_R 1
#ifndef CONFIG_TI814X_MIN_CONFIG
#define CONFIG_TI814X_ASCIIART 1 / The centaur /
#endif
#define CONFIG_SYS_AUTOLOAD "yes"
#ifndef CONFIG_TI814X_OPTI_CONFIG
#define CONFIG_CMD_CACHE
#define CONFIG_CMD_ECHO
#endif

/*

Miscellaneous configurable options
*/

/ max number of command args /
#define CONFIG_SYS_MAXARGS 32
/ Console I/O Buffer Size /
#define CONFIG_SYS_CBSIZE 512
/ Print Buffer Size /
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE \\

sizeof(CONFIG_SYS_PROMPT) + 16)
/ Boot Argument Buffer Size /
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
/ memtest works on 8 MB in DRAM after skipping 32MB from start addr of ram disk/
#define CONFIG_SYS_MEMTEST_START (PHYS_DRAM_1 + (64 1024 1024))
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START \\
(8 1024 1024))
#if defined(CONFIG_CMD_AUTOTEST)
#define CONFIG_SYS_MEMTEST_SIZE 0x10000000 / autotest memory size/
#endif
#undef CONFIG_SYS_CLKS_IN_HZ / everything, incl board info, in Hz /
#define CONFIG_SYS_LOAD_ADDR 0x81000000 / Default load address /
#define CONFIG_SYS_HZ 1000 / 1ms clock /

/ Hardware related /

/**

Physical Memory Map(這里定義2組DDR3的片選地址,每組256M,總共512M字節)
/
#define CONFIG_NR_DRAM_BANKS 2 /
we have 2 banks of DRAM /
#define PHYS_DRAM_1 0x80000000 /
DRAM Bank #1 /
#define PHYS_DRAM_1_SIZE 0x10000000 /
256 MB /
#define PHYS_DRAM_2 0xB0000000 /
DRAM Bank #2 /
#define PHYS_DRAM_2_SIZE 0x10000000 /
256 MB */

/**

Platform/Board specific defs
*/
#define CONFIG_SYS_CLK_FREQ 20000000
#define CONFIG_SYS_TIMERBASE 0x4802E000

/*

NS16550 Configuration (定義串口的時鐘等等)
/
#define CONFIG_SERIAL_MULTI 1
#define CONFIG_SYS_NS16550
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE (-4)
#define CONFIG_SYS_NS16550_CLK (48000000)
#define CONFIG_SYS_NS16550_COM1 0x48020000 /
Base EVM has UART0 */
#define CONFIG_SYS_NS16550_COM2 0x48022000

#define CONFIG_BAUDRATE 115200
#define CONFIG_SYS_BAUDRATE_TABLE { 110, 300, 600, 1200, 2400, \\
4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }

/*

select serial console configuration
*/
#define CONFIG_SERIAL1 1
#define CONFIG_CONS_INDEX 1
#define CONFIG_SYS_CONSOLE_INFO_QUIET

#if defined(CONFIG_NO_ETH)
#undef CONFIG_CMD_NET
#else
#define CONFIG_CMD_NET
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_PING
#endif

#if defined(CONFIG_CMD_NET)
#define CONFIG_DRIVER_TI_CPSW
#define CONFIG_MII
#define CONFIG_BOOTP_DEFAULT
#define CONFIG_BOOTP_dns
#define CONFIG_BOOTP_DNS2
#define CONFIG_BOOTP_SEND_HOSTNAME
#define CONFIG_BOOTP_GATEWAY
#define CONFIG_BOOTP_SUBNETMASK
#define CONFIG_NET_RETRY_COUNT 10
#define CONFIG_NET_MULTI
#define CONFIG_PHY_GIGE
/ increase network receive packet buffer count for reliable TFTP /
#define CONFIG_SYS_RX_ETH_BUFFER 16
#endif

#if defined(CONFIG_SYS_NO_FLASH)
#define CONFIG_ENV_IS_NOWHERE
#endif

/ NAND support /
#ifdef CONFIG_NAND
#define CONFIG_CMD_NAND
#define CONFIG_NAND_TI81XX
//#define GPMC_NAND_ECC_LP_x16_LAYOUT 1 //Jingbo: for 16BIT NAND
#define GPMC_NAND_ECC_LP_x8_LAYOUT 1 //Jingbo: for 8bit NAND
#define NAND_BASE (0x08000000) (NAND FLASH芯片的片選地址 )
#define CONFIG_SYS_NAND_ADDR NAND_BASE / physical address /
/ to access nand /
#define CONFIG_SYS_NAND_BASE NAND_BASE / physical address /
/ to access nand at /
/ CS0 /
#define CONFIG_SYS_MAX_NAND_DEVICE 1 / Max number of NAND /
#endif / devices /

/ ENV in NAND /
#if defined(CONFIG_NAND_ENV)
#undef CONFIG_ENV_IS_NOWHERE
#define CONFIG_ENV_IS_IN_NAND 1
#ifdef CONFIG_ENV_IS_IN_NAND
#define CONFIG_SYS_MAX_FLASH_SECT 520 / max number of sectors in a chip /
#define CONFIG_SYS_MAX_FLASH_BANKS 2 / max number of flash banks /
#define CONFIG_SYS_MONITOR_LEN (256 << 10) / Reserve 2 sectors /
#define CONFIG_SYS_FLASH_BASE boot_flash_base
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
#define MNAND_ENV_OFFSET 0x180000 / environment starts here /(這里我們定義uboot bootarg參數保存的起始地址)
#define CONFIG_SYS_ENV_SECT_SIZE boot_flash_sec
#define CONFIG_ENV_OFFSET boot_flash_off
#define CONFIG_ENV_ADDR MNAND_ENV_OFFSET
#endif

#ifndef ASSEMBLY
extern unsigned int boot_flash_base;
extern volatile unsigned int boot_flash_env_addr;
extern unsigned int boot_flash_off;
extern unsigned int boot_flash_sec;
extern unsigned int boot_flash_type;
#endif
#endif / NAND support /

#ifndef CONFIG_TI814X_OPTI_CONFIG
/ SPI support /
#ifdef CONFIG_SPI (如果使用SPI接口的FLASH,這個宏一定要編譯,我們公司板子沒用SPI FLASH)
#define CONFIG_OMAP3_SPI
#define CONFIG_MTD_DEVICE
#define CONFIG_SPI_FLASH
#define CONFIG_SPI_FLASH_WINBOND
#define CONFIG_CMD_SF
#define CONFIG_SF_DEFAULT_SPEED (75000000)
#define CONFIG_CODEC_AIC26 1
#endif

/ ENV in SPI /
#if defined(CONFIG_SPI_ENV)
#undef CONFIG_ENV_SIZE
#undef CONFIG_ENV_IS_NOWHERE
#define CONFIG_ENV_IS_IN_SPI_FLASH 1
#ifdef CONFIG_ENV_IS_IN_SPI_FLASH
#define CONFIG_ENV_SIZE 0x2000 /use a small env /
#define CONFIG_SYS_FLASH_BASE (0)
#define SPI_FLASH_ERASE_SIZE (4 1024) / sector size of SPI flash /
#define CONFIG_SYS_ENV_SECT_SIZE (2
SPI_FLASH_ERASE_SIZE) / env size /
#define CONFIG_ENV_SECT_SIZE (CONFIG_SYS_ENV_SECT_SIZE)
#define CONFIG_ENV_OFFSET (96 SPI_FLASH_ERASE_SIZE)
#define CONFIG_ENV_ADDR (CONFIG_ENV_OFFSET)
#define CONFIG_SYS_MAX_FLASH_SECT (1024) /
no of sectors in SPI flash /
#define CONFIG_SYS_MAX_FLASH_BANKS (1)
#endif
#endif /
SPI support */

/ ENV in MMC /
#if defined(CONFIG_MMC_ENV)
#undef CONFIG_ENV_IS_NOWHERE
#define CONFIG_ENV_IS_IN_MMC 1
#define CONFIG_SYS_MMC_ENV_DEV 0
#undef CONFIG_ENV_SIZE
#undef CONFIG_ENV_OFFSET
#define CONFIG_ENV_OFFSET (722931024)
#define CONFIG_ENV_SIZE (8
1024)
#endif / MMC support /

/ NOR support / (NOR FLASH芯片的支持,我們公司基本不用NOR FLASH了)
#if defined(CONFIG_NOR)
#undef CONFIG_CMD_NAND / Remove NAND support /
#undef CONFIG_NAND_TI81XX
#undef CONFIG_SKIP_LOWLEVEL_INIT
#define CONFIG_TI814X_CONFIG_DDR
#define CONFIG_SETUP_PLL
#define CONFIG_TI814X_EVM_DDR3
#undef CONFIG_ENV_IS_NOWHERE
#ifdef CONFIG_SYS_MALLOC_LEN
#undef CONFIG_SYS_MALLOC_LEN
#endif
#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1
#define CONFIG_SYS_MALLOC_LEN (0x100000)
#define CONFIG_SYS_FLASH_CFI
#define CONFIG_FLASH_CFI_DRIVER
#define CONFIG_FLASH_CFI_MTD
#define CONFIG_SYS_MAX_FLASH_SECT 512
#define CONFIG_SYS_MAX_FLASH_BANKS 1
#define CONFIG_SYS_FLASH_BASE (0x08000000)
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
#define CONFIG_ENV_IS_IN_FLASH 1
#define NOR_SECT_SIZE (128 1024)
#define CONFIG_SYS_ENV_SECT_SIZE (NOR_SECT_SIZE)
#define CONFIG_ENV_SECT_SIZE (NOR_SECT_SIZE)
#define CONFIG_ENV_OFFSET (2
NOR_SECT_SIZE)
#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
#define CONFIG_MTD_DEVICE
#endif / NOR support /

/ No I2C support in 1st stage /
#ifdef CONFIG_I2C

#define CONFIG_CMD_I2C
#define CONFIG_CMD_DATE
#define CONFIG_I2C_MULTI_BUS (注意:DM8127支持I2C0,I2C1,I2C2幾個I2C總線)
#define CONFIG_SYS_RTC_BUS_NUM 0
#define CONFIG_TPS65911_I2C 1
#define CONFIG_RTC_TPS65911 1 (比如這里電源管理芯片 使用I2C0總線)
#define CONFIG_CODEC_AIC3104 1
#define CONFIG_SENSOR_MT9J003 1
#define CONFIG_HARD_I2C 1
#define CONFIG_SYS_I2C_SPEED 100000 (I2C總線使用100K速率)
#define CONFIG_SYS_I2C_SLAVE 1
#define CONFIG_SYS_I2C_BUS 0
#define CONFIG_SYS_I2C_BUS_SELECT 1
#define CONFIG_DRIVER_TI81XX_I2C 1

/ EEPROM definitions /
#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 3
#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 6
#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 20

#endif

/ HSMMC support / (HSMMC這里我們沒有用到)
#ifdef CONFIG_MMC
#define CONFIG_CMD_MMC 1
#define CONFIG_GENERIC_MMC
#define CONFIG_OMAP_HSMMC
#define CONFIG_DOS_PARTITION 1
#define CONFIG_CMD_FAT 1
#endif
#endif / CONFIG_TI814X_OPTI_CONFIG /
/ U-boot Version /
#define CONFIG_VERSION_VARIABLE
#ifdef CONFIG_TI814X_MIN_CONFIG
#define CONFIG_IDENT_STRING " DM8127_IPNC_3.80.00 min"
#else
#define CONFIG_IDENT_STRING " DM8127_IPNC_3.80.00"
#endif
/ Unsupported features /
#undef CONFIG_USE_IRQ

#endif / ! __CONFIG_TI8148_IPNC_H /

好了,u-boot/include/configs/ti8148_ipnc.h這個最重要的平臺信息匯總文件修改告一段落。

7、u-boot/arch/arm/lib/board.c和u-boot/board/ti/ti8148_ipnc/evm.c的修改
無論是ubootmin還是uboot,所有的DDR3初始化,NAND初始化,PLL初始化,外設芯片初始化,GPIO管腳復用設置,都在這兩個文件去修改。當然修改之前,一定要先了解DM8127的管腳復用,如果嵌入式軟件工程師特別是驅動工程師不了解這個管腳復用,根本就玩不轉DM8127。我們先看源碼:
u-boot/board/ti/ti8148_ipnc/mux.h
還要就是要看DM8127 芯片DATASHEET第153頁開始的表格(PINCNTLx Registers MUXMODE Functions),同時結合DM8127用戶手冊sprugz8g.pdf去分析DM8127功能模塊的復用情況。
這里本人舉個例子:
/ 256-UART5_RXD 227-UART5_TXD /
/ldz_add (228)GP3_20:rs485_2_en/
/ -228 / BIT(0), BIT(5), BIT(5), BIT(7),
這里是復用寄存器表從225到228對應的地址偏移,上面我們要把GP3_20設置成GPIO模式,使能UART5,那么UART5對應PINCNTLx Registers MUXMODE Functions的管腳和對應的寄存器偏移地址是226和227,BIT(5)表示使用UART5,里面的(5)標示第5種模式就是使用UART5,GP3_20要配置成GPIO模式必須設置228寄存器偏移地址為BIT(7),里面的(7)表示GPIO模式。 (0)表示默認disable模式或者TI對應管腳默認模式。
上面提到的DM8127功能模塊初始化,我們需要看看board.c的sequence[]里面的初始化函數和evm.c的board_init()函數??梢詮倪@兩個文件去修改添加一些初始化,GPIO默認狀態初始化等等,看源代碼就清楚了,這里不累贅。
DM8127的UBOOT裁剪和簡單移植上面基本介紹結束,本人這里是介紹比較簡單,因為人家TI 第3方APPRO RDK軟件包做得很好了,比如在UBOOT測試一些外設硬件,可以看看common\\ cmd_autotest.c,非常有用,當然你要在UBOOT添加很多功能,可以自己在這個RDK的UBOOT軟件包的基礎上深入去設計。有關DM8127開發攻略基本寫得差不多了,本人總發現時間不夠用,公司除了開發完DM8127各種客戶定義功能,還得忙開發廉價平臺海思平臺Hi3516A/D,這個廉價平臺1080P方案也基本開發結束。公司現在全力開發支持深度學習算法得一個新的嵌入式平臺,國內某個獨角獸公司已經推出類似產品了,還有其他大公司也開發出產品了,我們也不能落后太多,到時候再公布,為一些有好算法的公司提供可靠嵌入式平臺。本人這里再次強調一下,DM8127適合傳統機器視覺算法運行,運行不了深度學習算法。在很多圖像分析方面,不一定要使用深度學習算法。還有, TI 的浮點DSP非常適合不同功能的C/C++算法移植,海思平臺的算法是固化到芯片,只能做某方面的圖像處理,而FPGA對很多只專長C/C++算法的而欠缺硬件知識來說,開發FPGA是一件很痛苦的事情,現在產品生命周期很短,抓緊時間搶占市場才是王道,否則到后期產品打價格戰,后來推出沒價格優勢的平臺會輸得很慘。

總結

以上是生活随笔為你收集整理的图像识别DM8127开发攻略——UBOOT的移植说明的全部內容,希望文章能夠幫你解決所遇到的問題。

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

成年人免费在线观看网站 | 国产在线播放不卡 | 99日韩精品 | 色婷av| 久久99精品久久久久婷婷 | 国产精品久久久久久久久久久久午夜 | 精品一区二区三区在线播放 | 日韩欧美一区二区在线 | 国产精品成人自产拍在线观看 | 91精品在线视频 | 婷婷丁香自拍 | 五月天婷婷综合 | 成年人电影毛片 | 日韩精品一区二区三区丰满 | 亚洲精品色 | 毛片精品免费在线观看 | 亚洲国产中文字幕 | 91看片看淫黄大片 | 久久精品一区二区三区中文字幕 | 成人精品久久久 | 日韩综合一区二区三区 | 丁香av在线| www.av中文字幕.com | 精品国产一区二区三区男人吃奶 | 亚洲激情综合网 | 国产精品观看视频 | 98精品国产自产在线观看 | 精品国内自产拍在线观看视频 | 欧美成人影音 | 97福利社| 精产嫩模国品一二三区 | 911久久香蕉国产线看观看 | 久久久免费看视频 | 九九免费在线观看视频 | 日韩高清免费在线观看 | 91精品免费在线 | av888.com| 五月激情电影 | 最近免费中文字幕mv在线视频3 | 天堂成人在线 | 91丨九色丨国产在线 | 婷婷网在线| 欧美在线观看视频一区二区 | 天天干夜夜夜操天 | 免费a v在线| 欧美乱淫视频 | 亚洲91在线 | 国产黄色一级片在线 | 国产经典三级 | 国产超碰97| 日本中文字幕在线观看 | 亚洲欧美视频网站 | 97综合视频 | 日韩理论在线 | 日韩综合一区二区三区 | 国产成人三级在线播放 | 中文字幕资源网在线观看 | av最新资源| 国产成人综合图片 | 久久成人麻豆午夜电影 | 九九国产精品视频 | 久久久久久久久久久黄色 | 一区二区三区免费在线观看视频 | 成人黄大片视频在线观看 | 国产午夜精品一区二区三区四区 | 91在线91拍拍在线91 | 一区二区视频免费在线观看 | 欧美精彩视频在线观看 | 欧美 国产 视频 | 国产精品视频内 | 激情综合中文娱乐网 | 天天拍夜夜拍 | 九九色在线观看 | 国产精品一区二区久久久久 | 日本黄色大片免费 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 精品国产一区二区三区av性色 | 一区二区久久久久 | 日韩欧美视频一区二区 | 久久免费视频在线观看6 | 69精品久久| 91少妇精拍在线播放 | 久久精品直播 | 欧美精品久久99 | 91九色成人蝌蚪首页 | 日韩一区二区三区免费视频 | 五月婷婷婷婷婷 | 久久亚洲精品电影 | 久久久免费国产 | 成人免费在线视频观看 | 激情深爱.com | 日韩av高清在线观看 | 中文字幕免费高清 | 精品中文字幕视频 | 欧美日在线观看 | 日韩欧美一区二区三区在线 | 久久久亚洲国产精品麻豆综合天堂 | 热久精品 | www日韩在线观看 | 99久久精品国产免费看不卡 | 国内精品久久久精品电影院 | 免费观看的黄色片 | 亚洲福利精品 | 亚洲激情国产精品 | 久久在现 | 久久久久久久久久久久av | 色综合咪咪久久网 | 美女网站一区 | 久久精品香蕉视频 | 91在线看免费 | 成人小视频免费在线观看 | 在线观看亚洲精品 | 一区二区三区韩国免费中文网站 | 久久精品福利 | 五月婷婷丁香激情 | 久久不射网站 | 就要色综合 | 日韩二级毛片 | 日韩精品免费一线在线观看 | 亚洲国产免费 | 夜夜操天天干, | 成人网在线免费视频 | 欧美色图一区 | 91av视频在线观看 | 免费成人av在线 | 一本一本久久a久久精品综合妖精 | 99视频精品全国免费 | 美女网站视频免费都是黄 | 日韩电影在线观看一区二区三区 | 黄色国产成人 | 在线有码中文字幕 | 色综合天天色综合 | 在线视频91 | 国产免费资源 | 欧美日产在线观看 | 中文在线最新版天堂 | 国产精品毛片久久蜜 | 中文字幕免费一区 | 色99色| 成人91在线 | 欧美日韩成人 | 99热手机在线观看 | av在线免费观看不卡 | 国产中文自拍 | 日韩视频一区二区三区在线播放免费观看 | 99热这里精品 | 96精品高清视频在线观看软件特色 | 成人少妇影院yyyy | 91av短视频| 亚洲高清视频在线观看 | 玖操| 91精品一区二区三区蜜臀 | 在线观看视频亚洲 | 国产999精品久久久影片官网 | 久久国产影院 | 久久精品99视频 | 国产亚洲欧美一区 | 在线 成人 | 99久久电影| 国产成人一区二区三区免费看 | 久久久久久久久久久影院 | 亚洲狠狠 | 国产欧美精品一区二区三区 | 九九导航| 久久综合九色综合久久久精品综合 | 欧洲高潮三级做爰 | 中文字幕 成人 | 永久免费毛片 | 亚洲午夜精品在线观看 | 五月天色站 | 国产精品久久久久久久久久三级 | 日韩免费专区 | 欧美精品久久久久久久亚洲调教 | 亚洲手机av | 国产午夜一区 | 欧美日韩超碰 | 亚州激情视频 | 国产精品久久久久久久久久尿 | 99视频精品全国免费 | 在线 影视 一区 | 激情久久伊人 | 天天做天天爱天天综合网 | 午夜视频免费播放 | 中文在线a在线 | 黄网站色成年免费观看 | 亚洲精品国 | 亚洲黄色小说网址 | 国产精品原创 | 午夜久久美女 | 久久久国产高清 | 中文字幕麻豆 | 91精品1区 | 欧美在一区 | www成人精品 | 日本久久久久久久久久久 | 国产91精品一区二区 | 中文字幕在线一区观看 | 欧美伦理电影一区二区 | 欧美日韩精品在线免费观看 | 国产日产精品一区二区三区四区的观看方式 | 91网站在线视频 | 亚洲视频免费视频 | 亚洲精品国产成人 | 天天操天操 | 麻豆视频在线观看免费 | 欧美日韩精品影院 | 999久久久久 | 最新中文字幕在线资源 | 在线免费观看的av | 久久久久麻豆 | 91在线精品秘密一区二区 | 日韩欧美国产成人 | 国产精品涩涩屋www在线观看 | 午夜av激情 | 久久99九九99精品 | 中文字幕123区 | 久草久草视频 | www.伊人色.com | 亚洲激情中文 | 男女视频91| 天天操夜夜爱 | 国产999精品 | 色网免费观看 | 国产伦理一区 | 色av色av色av| 一区二区三区在线视频111 | 特级黄色片免费看 | 欧美日韩视频免费看 | 中文字幕首页 | 日韩视频免费观看高清 | 色综合久久66 | 久久久久久综合 | 天天综合在线观看 | 欧美一区二区三区四区夜夜大片 | 91麻豆免费版 | 少妇bbr搡bbb搡bbb| 午夜视频播放 | 国内精品在线观看视频 | h网站免费在线观看 | 日韩av手机在线看 | 国产在线欧美 | 免费亚洲电影 | 91免费高清视频 | av中文字幕第一页 | 国产资源免费在线观看 | 777久久久 | 二区三区视频 | 毛片精品免费在线观看 | 深爱激情五月综合 | 又大又硬又黄又爽视频在线观看 | 日韩成人精品 | 五月婷婷丁香 | 国产精品久久久久免费观看 | 日韩高清精品免费观看 | 久久精品视频99 | 日韩高清免费在线 | 五月婷婷久 | 奇米777777 | 天天操夜夜干 | 亚欧日韩成人h片 | av黄色在线播放 | 欧美一区二区在线免费看 | 日韩电影在线视频 | 亚洲久草在线视频 | 成人亚洲欧美 | 伊人网av | 国产在线永久 | 色婷婷国产精品一区在线观看 | 91亚洲视频在线观看 | 99在线精品视频观看 | 国产精品免费一区二区 | 中文字幕一区二区三区乱码在线 | 亚洲精品在线一区二区 | 日批视频在线播放 | 久久久官网 | 麻豆一区二区三区视频 | 91污污 | 欧美一区二区三区四区夜夜大片 | 国产最新精品视频 | 丁香电影小说免费视频观看 | 天天超碰 | 国产精品国产三级国产aⅴ9色 | 亚洲日本va中文字幕 | 国产精品第一 | 成人在线视频一区 | 91av视频网站 | 中文字幕日韩在线播放 | 久久综合日 | 午夜视频免费播放 | 色婷婷综合久久久久中文字幕1 | 免费av视屏 | 天天曰天天爽 | 亚洲最大成人网4388xx | 韩日电影在线 | 国产午夜精品av一区二区 | 国产又粗又猛又爽又黄的视频先 | 99久久久久免费精品国产 | 91在线网址 | 91网在线看| 中国一级特黄毛片大片久久 | 日韩专区在线观看 | 欧美日韩性视频在线 | 国产精品久久久久久久久久白浆 | 亚洲精品高清在线观看 | 99综合影院在线 | 精品国产成人av在线免 | 欧美一级高清片 | 女人久久久久 | 精品国产_亚洲人成在线 | 五月天欧美精品 | 精品美女久久久久久免费 | 韩国一区二区在线观看 | 三级黄在线 | 国产无套精品久久久久久 | 欧美激情综合网 | 欧美91精品国产自产 | 婷婷激情久久 | 久久国产露脸精品国产 | 精品亚洲网 | 久久久久久久久久久久久久av | 人人射av | 久热免费在线观看 | 天天操天天射天天舔 | www·22com天天操 | 成人午夜影视 | 看国产黄色片 | 91精品国产一区 | 五月婷婷丁香 | 中午字幕在线观看 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 激情 婷婷| 久久久久国产精品一区 | 成人av在线亚洲 | 婷婷亚洲综合五月天小说 | 国产黄视频在线观看 | 欧美成人一区二区 | 日本精品视频在线播放 | 98涩涩国产露脸精品国产网 | 日韩视频一区二区在线 | 国产精品一区二区你懂的 | 久久久国产精品人人片99精片欧美一 | 99久久99久久精品免费 | 五月宗合网 | 亚洲四虎在线 | 久久精品国产一区二区电影 | 国产人免费人成免费视频 | 毛片网在线观看 | 在线免费黄色av | 成人福利在线观看 | 中国精品一区二区 | 国产丝袜在线 | 国产香蕉视频在线播放 | 国产在线视频在线观看 | 久久免费视频3 | av黄色在线播放 | 国产福利av | 日韩一级成人av | 欧美在线a视频 | 人人澡人人草 | 可以免费观看的av片 | 久久人人爽人人爽人人片av免费 | 人人超碰免费 | 99欧美 | 中文字幕电影高清在线观看 | 探花视频免费在线观看 | 免费色网 | 69亚洲乱 | 日韩免费| 最新av在线免费观看 | 九九九在线观看视频 | 久久久国产精品一区二区中文 | 日韩国产在线观看 | 精品女同一区二区三区在线观看 | 日韩伦理片hd | 亚洲精品大全 | 亚洲精品国产免费 | 日韩在线观看a | 日本一区二区三区免费看 | 国产区高清在线 | 亚洲一区天堂 | 97超碰在线久草超碰在线观看 | 91成版人在线观看入口 | 免费在线观看黄色网 | 美女网站视频免费都是黄 | 欧美精品九九 | 久草在线久 | 蜜桃麻豆www久久囤产精品 | 一级片视频免费观看 | 91高清视频免费 | 久久一区二区三区四区 | 久久美女免费视频 | 中文字幕色在线 | 免费av成人在线 | 91av网站在线观看 | 国产极品尤物在线 | 中文字幕在线观看一区 | 国产剧情一区 | 91精品在线免费 | 国产视频色 | 日韩综合色 | 超碰国产97| 欧美人牲 | 欧美日本一二三 | 国产精品久久久久四虎 | 在线观看国产一区二区 | 国产精品系列在线 | 国内精品久久久久影院一蜜桃 | 日韩在线观看视频免费 | 免费h在线观看 | 麻豆一区二区三区视频 | 国产精品久久久久久久久久ktv | 免费看短 | 激情网站五月天 | 在线免费观看不卡av | 婷婷五月在线视频 | 中文字幕在线影视资源 | 97超碰国产精品女人人人爽 | 久久久精品一区二区三区 | 一级黄色在线视频 | 久热av| 九色视频网 | 久草视频中文 | 福利一区在线 | 精品国产理论片 | 成年人免费观看国产 | 国产 字幕 制服 中文 在线 | 国产一级淫片在线观看 | 久久久99精品免费观看 | 天天拍夜夜拍 | 91桃色免费视频 | 日韩高清dvd | 国产一级视频在线观看 | 激情视频综合网 | 国产网站av | 久久精品免视看 | 又黄又爽的免费高潮视频 | 在线观看www视频 | 久草网站在线观看 | 一区二区欧美日韩 | 91插插插免费视频 | 欧美久久久久久久久久久久久 | 精品中文字幕视频 | 天天做日日做天天爽视频免费 | 午夜男人影院 | 日韩欧美在线中文字幕 | 久草在线免费看视频 | 精品一二区| 欧美做受xxx | 国产91精品在线播放 | 亚洲视频分类 | 国产免费黄视频在线观看 | 成人av在线直播 | 天天色草| 色视频在线观看 | 日本成人a| 91大神在线看 | 国产精品男女视频 | 国产在线视频一区二区 | 国产麻豆视频 | 日韩视频免费在线观看 | 黄色影院在线播放 | 日韩二区三区在线 | 亚洲精品乱码白浆高清久久久久久 | 不卡精品 | 欧美高清视频不卡网 | 日本中文字幕免费观看 | 在线免费观看不卡av | 国产传媒一区在线 | 国产伦精品一区二区三区四区视频 | 中文字幕在线免费看线人 | 超碰精品在线观看 | 成人aaa毛片 | 在线一区av| 亚洲午夜精品福利 | 九九三级毛片 | 婷婷色网 | 午夜精品剧场 | 婷婷色视频 | 免费在线日韩 | 天天射综合| 国产精品一区专区欧美日韩 | 97色综合 | 天天色天天骑天天射 | 日韩在线观看第一页 | 69国产精品视频 | 国产成人精品电影久久久 | 人人爱人人射 | 97在线免费视频观看 | 色九九视频 | 三级动态视频在线观看 | 久久色视频 | 亚洲天堂视频在线 | 91在线视频| 欧美淫aaa免费观看 日韩激情免费视频 | 91精品国产亚洲 | 韩国av一区二区 | 精品久久久久久久久中文字幕 | 日韩一区二区免费视频 | 国产精品爽爽久久久久久蜜臀 | 亚欧日韩av | 99久久婷婷国产一区二区三区 | 婷婷激情站 | 国产区精品在线观看 | 中文字幕有码在线观看 | 91精品办公室少妇高潮对白 | 麻豆视频大全 | 久久精品9 | 久久综合九色欧美综合狠狠 | 中文字幕在线观看视频一区二区三区 | 国产亚洲精品成人av久久ww | 精品一区二区免费 | 99在线视频网站 | 草樱av | 国产一线二线三线在线观看 | 国产经典 欧美精品 | 亚洲美女精品区人人人人 | 免费国产在线精品 | 最近中文字幕完整视频高清1 | 成年人免费看 | 欧美激情第八页 | 天天干天天干天天干天天干天天干天天干 | 在线激情影院一区 | 激情久久婷婷 | 成人资源在线观看 | 成年人免费观看国产 | 91av成人| 国产视频在线免费 | 久久黄色美女 | 精品国产中文字幕 | 国产色网 | 亚洲精品国产成人av在线 | 视频国产区 | 国产精品九九九九九 | 国产高清无线码2021 | 国产91精品久久久久 | 日韩在线视 | 日本最新一区二区三区 | 97成人精品视频在线观看 | 99精品欧美一区二区三区 | 麻豆视频免费观看 | 亚洲精选久久 | 18国产精品福利片久久婷 | 久久国产精品视频观看 | 日韩中文字幕a | 欧美美女视频在线观看 | 国产成人久久久77777 | 中文字幕日韩免费视频 | av东方在线 | 欧美三人交 | 久久视频国产精品免费视频在线 | 欧美成人日韩 | 日韩精品中文字幕在线观看 | 黄色在线小网站 | 国产精品久久久久久久久久直播 | 日韩电影一区二区在线观看 | 日韩欧美精品免费 | 国产黄色片一级三级 | 在线成人av | 国产精品一区二区久久精品爱涩 | 成人资源在线观看 | 在线观看黄网站 | 97视频网址 | 国产精品国产自产拍高清av | 欧美污污视频 | 天天草网站 | 亚洲成a人片综合在线 | 91麻豆免费看 | 天天色视频 | 亚洲精品乱码久久久久v最新版 | 一区二区三区在线不卡 | 看v片| 国产成人在线综合 | 波多野结衣久久资源 | 免费看污在线观看 | 精品久久久久久亚洲综合网 | 91精品入口 | 成人动漫精品一区二区 | 亚洲黄色在线观看 | 国产韩国日本高清视频 | 久久av影院 | 视频国产在线观看18 | 五月天综合 | 毛片a级片 | av在线播放观看 | 不卡精品 | 国产高清av | 国产中文字幕视频 | 在线观看成年人 | 草久热 | 在线观看日韩免费视频 | 亚洲精品玖玖玖av在线看 | 日精品在线观看 | 有码中文在线 | 午夜精品久久久 | 日韩av手机在线观看 | 91精品国产乱码久久桃 | 成人影音在线 | 视频在线一区 | 国产综合在线观看视频 | av大片网址 | 色噜噜在线观看 | 亚洲精品视频免费观看 | 日韩免费一区 | 国产福利一区二区三区在线观看 | 91一区在线观看 | 手机在线小视频 | 天堂av免费观看 | 久久福利精品 | 亚洲aaa毛片 | 精品国产视频在线 | 久久亚洲国产精品 | 日韩欧美国产精品 | 成人永久视频 | 91精品爽啪蜜夜国产在线播放 | 亚洲电影一级黄 | 日韩欧美在线综合网 | 国产视频精选在线 | 亚洲aⅴ久久精品 | 激情婷婷| av在线一级| 成人亚洲精品国产www | 久久久午夜影院 | 免费合欢视频成人app | 日韩精品视频网站 | 亚州中文av | 草久视频在线观看 | 最新高清无码专区 | 日韩欧美精品一区二区三区经典 | 亚洲人成精品久久久久 | 午夜a区| 伊人视频 | 久久精品99精品国产香蕉 | 91在线中字 | 在线观看成人一级片 | 天堂av在线网站 | 毛片美女网站 | 国产亚洲视频在线免费观看 | 成人h视频在线 | 日本黄色免费网站 | 亚洲精品一区二区久 | 午夜的福利 | 久久99精品久久久久久 | 在线播放 日韩专区 | 色综合五月天 | 字幕网在线观看 | 天天av在线播放 | 97精品国产97久久久久久久久久久久 | av在线播放网址 | 深夜福利视频在线观看 | 97视频成人| 亚洲综合欧美日韩狠狠色 | av福利在线| 18女毛片| 91网页版免费观看 | 日韩高清免费在线 | 日韩一级电影在线观看 | 久久久这里有精品 | 夜夜视频欧洲 | 亚洲国产网址 | 91精品一区国产高清在线gif | 色av婷婷 | 一区二区三区手机在线观看 | 国产一区二区不卡视频 | 毛片黄色一级 | 91九色最新 | 四虎国产精品免费观看视频优播 | 免费黄a大片 | www.久久色 | 精品久久网站 | 久草在线手机视频 | 亚洲欧洲中文日韩久久av乱码 | ,久久福利影视 | 亚洲国产精品一区二区久久hs | 国产日产精品一区二区三区四区 | 国产精品一区二区三区久久 | 国产免费一区二区三区最新 | 美女久久精品 | 91亚州| 国产精品网站一区二区三区 | 久久精品视频在线免费观看 | 久草视频播放 | 成人永久免费 | 六月丁香激情综合色啪小说 | 999在线视频| 久久99热这里只有精品 | 天天色综合久久 | 国产精品视频永久免费播放 | 成人久久免费 | 人人插超碰 | 国产污视频在线观看 | 亚洲一区二区三区在线看 | 欧美在线视频一区二区三区 | 97国产精品免费 | 国产精品久久久久久久久久东京 | 日本精品va在线观看 | 久久成人国产精品一区二区 | 国产一区免费观看 | 久久精品牌麻豆国产大山 | 久久99国产综合精品免费 | 最近的中文字幕大全免费版 | 国产精品久久久久久久久久东京 | 五月天六月丁香 | 四虎在线免费视频 | 狠狠干.com| 国产精品a成v人在线播放 | 国产日本在线 | 少妇精69xxtheporn| 国产99精品在线观看 | 国产精品乱码久久久久久1区2区 | 美女久久一区 | 超碰在线公开免费 | 亚洲精品视频免费在线 | 亚洲日本三级 | 久久久午夜精品理论片中文字幕 | 日本在线中文在线 | 亚洲影院国产 | 亚洲蜜桃av | 国产成人区 | 五月婷婷中文网 | 日韩在线无 | 91香蕉嫩草 | 国产精品爽爽久久久久久蜜臀 | www.久久爱.cn | 99久久精品国产免费看不卡 | 涩涩网站在线观看 | 国产精品一区二区av | 四虎影视久久久 | 久草免费在线 | 久久国产精品视频免费看 | 欧美精品在线观看免费 | 亚洲精品1234区| 狠狠操操| 午夜精品久久久99热福利 | 在线观看激情av | 亚洲美女免费精品视频在线观看 | 97视频免费| www久久九| 亚洲欧美国内爽妇网 | 成人黄大片视频在线观看 | 色a在线观看 | 久久久久久久久福利 | 成人av在线直播 | 久久国产精品电影 | 亚洲欧美日韩在线一区二区 | 欧美一级在线看 | 视频一区二区免费 | 久久这里只有精品首页 | 久久综合五月 | 久久亚洲区 | 狠狠色丁香 | av先锋影音少妇 | 久久精品波多野结衣 | 国产破处精品 | 中文字幕丰满人伦在线 | 中文字幕电影高清在线观看 | 亚洲第一中文网 | 国产精品久久久99 | av在线一| 日日夜夜免费精品视频 | www.国产在线 | 国内精品视频在线播放 | 免费看黄在线网站 | 99精品欧美一区二区 | 久久久久久久久久久国产精品 | 国产高清中文字幕 | 91网页版在线观看 | 狠狠干激情 | 99久免费精品视频在线观看 | 2019中文字幕网站 | 日韩字幕 | 国产精品久久一区二区三区不卡 | 亚洲精品456在线播放乱码 | 国产在线 一区二区三区 | 91九色蝌蚪视频 | 成人va在线观看 | 国产精品美女免费看 | 亚洲一级黄色av | 在线免费观看不卡av | 久久久影院一区二区三区 | 99热最新在线 | 玖玖国产精品视频 | av亚洲产国偷v产偷v自拍小说 | 欧美日韩一区二区三区在线免费观看 | 福利av影院 | 国产综合精品久久 | 久久国产成人午夜av影院潦草 | 久久伊人五月天 | 亚洲黄色大片 | 免费久久精品视频 | 美女国产免费 | 国产操在线 | 最新高清无码专区 | 国产视频一区二区在线 | 国产毛片aaa | 国产精品一区二区久久 | 成人蜜桃 | 欧美一级性生活片 | 国产视频欧美视频 | av字幕在线| 亚洲aⅴ免费在线观看 | 欧美日韩一区久久 | 成人毛片在线观看 | 精品一区久久 | 日韩电影在线观看一区二区 | 午夜美女福利 | 亚洲人久久 | 免费观看9x视频网站在线观看 | 豆豆色资源网xfplay | 视频 国产区 | 国产九色在线播放九色 | 欧美专区亚洲专区 | 天天射色综合 | 欧美 日韩 国产 中文字幕 | 欧美 日韩 久久 | 久久久久久久久免费 | 超碰在线最新 | 97国产精品久久 | 亚洲精品字幕在线观看 | 91av综合 | 国产男男gay做爰 | 久久免费福利 | 人人爽人人爽 | 日韩三级在线观看 | 在线视频久久 | 九九免费在线观看视频 | 天天摸日日操 | 国内精品久久久久国产 | 国产视频在线免费 | 中文字幕在线免费播放 | 在线观看的av | 91久久精品一区二区三区 | 精品免费久久久久 | 亚洲精品国产自产拍在线观看 | 人人狠狠综合久久亚洲 | 黄色三级免费看 | 欧美专区国产专区 | 香蕉视频一级 | 久久精品国产久精国产 | av片子在线观看 | 久久99视频免费 | 婷婷丁香在线 | 亚洲精品字幕在线观看 | 黄色a级片在线观看 | 欧美成人aa| 在线黄频 | 五月天丁香视频 | 中文国产字幕 | 国产精品毛片久久久久久久 | 国产又粗又猛又色 | 久久刺激视频 | 国精产品满18岁在线 | 亚洲成人黄色 | 中文字幕有码在线 | 成年人免费看片网站 | 久久天堂精品视频 | 综合久久久久 | 98超碰在线观看 | 激情伊人 | av中文字幕在线播放 | 日本最大色倩网站www | 亚洲 欧美 国产 va在线影院 | 中文字幕久久亚洲 | 在线观看一区视频 | 国产精品久久久久久久久大全 | 日韩毛片在线一区二区毛片 | 久久99这里只有精品 | 久久久福利视频 | 国产精品综合av一区二区国产馆 | 欧美另类高清 videos | 丁香五月亚洲综合在线 | 国产精品日韩在线播放 | 丝袜美腿在线视频 | 国内精品久久久久影院优 | 中文字幕在线视频第一页 | 亚洲黄色av网址 | 国产婷婷视频在线 | 91av小视频 | 91免费的视频在线播放 | 国产亚洲视频中文字幕视频 | 欧美国产日韩一区二区 | 久草在在线 | 在线导航av| 日韩在线视频二区 | 香蕉97视频观看在线观看 | 久久久久亚洲天堂 | 久久久精品国产免费观看同学 | 国产精品日韩在线观看 | 久久久久国产精品厨房 | 五月天堂色 | 91精品视频一区 | 91精品一区二区三区久久久久久 | 亚洲在线视频观看 | 三级毛片视频 | 97操操操 | 激情五月播播久久久精品 | 欧美成人在线网站 | 免费高清无人区完整版 | 97视频人人免费看 | 色视频在线看 | 福利视频在线看 | 国产成人一区二区三区影院在线 | 丁香视频免费观看 | 中文字幕999 | 麻豆国产精品一区二区三区 | 国产成人精品999在线观看 | 在线中文字幕视频 | 91久久丝袜国产露脸动漫 | 国产精品成人自产拍在线观看 | 久久草在线精品 | 免费色av| 国产91对白在线 | 91在线91 | 免费在线观看视频一区 | 中文字幕一区二区三区乱码在线 | 欧美在线观看小视频 | 精品美女在线观看 | 五月天久久综合网 | 国产精品成人自拍 | 日韩欧美视频二区 | 亚洲欧美怡红院 | 又湿又紧又大又爽a视频国产 | 国产午夜精品一区二区三区四区 | 最新日韩视频在线观看 | 久久免费在线观看 | 天天综合入口 | 福利一区二区三区四区 | 亚洲dvd| 又黄又爽又刺激视频 | 国产日产av | 99热 精品在线 | 国产流白浆高潮在线观看 | 精品一区二区精品 | 97人人澡人人添人人爽超碰 | 中文字幕精品三区 | 日韩欧美网站 | 精品久久久久久亚洲综合网 | 黄色片网站大全 | 四虎影视欧美 | 日本精品久久久久久 | 国产精品久久一区二区无卡 | 亚洲国产中文在线观看 | 日本精品视频网站 | 久色免费视频 | 免费日韩一区二区三区 | 日韩一级电影网站 | 亚洲激色| 亚洲视屏一区 | 亚洲精品资源 | 国产中文字幕国产 | 色wwwww| 草免费视频 | 自拍超碰在线 | 天天射网站 | 精品麻豆 | 91精品国产麻豆国产自产影视 | 久草在线视频在线 | 久草电影免费在线观看 | 国产黄色片在线免费观看 | 国产真实在线 | 日韩免费电影网站 | 一区二区不卡高清 | 国产98色在线 | 日韩 | 久一久久 | 97超在线视频 | 婷婷草| 一区二区三区免费在线 | 精品一区二区在线免费观看 | 久久久人人爽 | 成人av片免费看 | 成年人看片网站 | 亚洲国产小视频在线观看 | 欧美在线视频精品 | 精品一区电影 | 中文字幕av在线电影 | 天天干亚洲 | 久久不卡日韩美女 | 久久99久久99精品免视看婷婷 | 91天堂素人约啪 | 国产小视频国产精品 | 超碰在线人人草 | 99精品国产福利在线观看免费 | 精品国产人成亚洲区 | 国产视频2区 | 日三级在线 | 福利视频在线看 | 亚洲砖区区免费 | 中文字幕色站 | 久草精品在线观看 | 国产自产高清不卡 | 国产在线视频一区二区三区 | 婷婷在线色| 国内久久精品视频 | 亚洲精品色视频 | 国产在线高清精品 | 4438全国亚洲精品在线观看视频 | 丁香九月婷婷 | 欧美精品免费在线观看 | 欧美日韩国产一区二区三区在线观看 |