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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Licheepi zero SPI Flash 系统编译

發(fā)布時間:2024/3/13 windows 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Licheepi zero SPI Flash 系统编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Licheepi zero SPI Flash 系統(tǒng)編譯

在一些低成本應用場景,需要在SPI
flash上啟動系統(tǒng),這需要對Uboot和系統(tǒng)鏡像做些適配。

本文介紹SPI Flash鏡像的制作過程。

Flash分區(qū)規(guī)劃

這里 使用 xt25f128b, 16M SPI flash 作為啟動介質,規(guī)劃分區(qū)如下:

Uboot編譯配置

由于目前Uboot環(huán)境變量固定存放在1MB位置之內,所有留給uboot的空間固定到flash前1MB的位置不變。

每個分區(qū)的大小必須是擦除塊大小的整數倍,xt25f128b的擦除塊大小是64KB。

準備uboot

下載包含spi驅動的體驗版本uboot,該驅動目前尚未合并到主線

git clone -b v3s-spi-experimental https://github.com/Lichee-Pi/u-boot.git

配置Flash支持型號

執(zhí)行 make ARCH=arm menuconfig 打開uboot菜單配置,進入到
Device Drivers --> SPI Flash Support

注意看一下自己flash的廠家名稱,例如選上winbond SPI flash support
support用來支持測試用的flash:xt25f128b。

如果使用的是16MB以上的flash,需要勾選flash
bank支持選項,否則最多只能讀到16MB: CONFIG_SPI_FLASH_BAR

配置uboot支持xt25f128b

由于需要移植的 flash 芯片特性和 w25qxxx 系列的 flash 相似,所以可以直接復制過來,修改后如下
uboot工程:drivers/mtd/spi/spi_flash_ids.c
添加參數:

onst struct spi_flash_info spi_flash_ids[] = {...{"w25q128fw", INFO(0xef6018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP | SECT_4K) },{"xt25f128b", INFO(0x0b4018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP | SECT_4K) },... };

上面的數據格式為:

/* Used when the "_ext_id" is two bytes at most */ #define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \.id = { \....id_len = (!(_jedec_id) ? 0 : (3 + ((_ext_id) ? 2 : 0))), \.sector_size = (_sector_size), \.n_sectors = (_n_sectors), \.page_size = 256, \.flags = (_flags),

修改之后的文件

#ifdef CONFIG_SPI_FLASH_WINBOND /* WINBOND */{"w25p80", INFO(0xef2014, 0x0, 64 * 1024, 16, 0) },{"w25p16", INFO(0xef2015, 0x0, 64 * 1024, 32, 0) },{"w25p32", INFO(0xef2016, 0x0, 64 * 1024, 64, 0) },{"w25x40", INFO(0xef3013, 0x0, 64 * 1024, 8, SECT_4K) },{"w25x16", INFO(0xef3015, 0x0, 64 * 1024, 32, SECT_4K) },{"w25x32", INFO(0xef3016, 0x0, 64 * 1024, 64, SECT_4K) },{"w25x64", INFO(0xef3017, 0x0, 64 * 1024, 128, SECT_4K) },{"w25q80bl", INFO(0xef4014, 0x0, 64 * 1024, 16, RD_FULL | WR_QPP | SECT_4K) },{"w25q16cl", INFO(0xef4015, 0x0, 64 * 1024, 32, RD_FULL | WR_QPP | SECT_4K) },{"w25q32bv", INFO(0xef4016, 0x0, 64 * 1024, 64, RD_FULL | WR_QPP | SECT_4K) },{"w25q64cv", INFO(0xef4017, 0x0, 64 * 1024, 128, RD_FULL | WR_QPP | SECT_4K) },{"w25q128bv", INFO(0xef4018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP | SECT_4K) },{"w25q256", INFO(0xef4019, 0x0, 64 * 1024, 512, RD_FULL | WR_QPP | SECT_4K) },{"w25q80bw", INFO(0xef5014, 0x0, 64 * 1024, 16, RD_FULL | WR_QPP | SECT_4K) },{"w25q16dw", INFO(0xef6015, 0x0, 64 * 1024, 32, RD_FULL | WR_QPP | SECT_4K) },{"w25q32dw", INFO(0xef6016, 0x0, 64 * 1024, 64, RD_FULL | WR_QPP | SECT_4K) },{"w25q64dw", INFO(0xef6017, 0x0, 64 * 1024, 128, RD_FULL | WR_QPP | SECT_4K) },{"w25q128fw", INFO(0xef6018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP | SECT_4K) },{"xt25f128b", INFO(0x0b4018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP | SECT_4K) }, #endif

配置uboot默認環(huán)境變量

在文件 include/configs/sun8i.h
中添加默認bootcmd和bootargs的環(huán)境變量設置,注意添加的位置在“ #include
<configs/sunxi-common.h> ”的前邊。

#define CONFIG_BOOTCOMMAND "sf probe 0; " \"sf read 0x41800000 0x100000 0x10000; " \"sf read 0x41000000 0x110000 0x400000; " \"bootz 0x41000000 - 0x41800000"#define CONFIG_BOOTARGS "console=ttyS0,115200 earlyprintk panic=5 rootwait " \"mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,4M(kernel)ro,-(rootfs) root=31:03 rw rootfstype=jffs2" 環(huán)境命令解析:
  • sf probe 0; //初始化Flash設備(CS拉低)
  • sf read 0x41800000 0x100000 0x10000;
    //從flash0x100000(1MB)位置讀取dtb放到內存0x41800000偏移處。
    //如果是bsp的bin,則是0x41d00000
  • sf read 0x41000000 0x110000 0x400000;
    //從flash0x110000(1MB+64KB)位置讀取dtb放到內存0x41000000偏移處。
  • bootz 0x41000000 (內核地址)- 0x41800000(dtb地址) 啟動內核
啟動參數解析
  • console=ttyS0,115200 earlyprintk panic=5 rootwait
    //在串口0上輸出信息
  • mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,4M(kernel)ro,-(rootfs)
    root=31:03 rw rootfstype=jffs2
    //spi32766.0是設備名,后面是分區(qū)大小,名字,讀寫屬性。
  • root=31:03表示根文件系統(tǒng)是mtd3;jffs2格式

編譯uboot

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_defconfig #or make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig #or make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero480x272LCD_defconfig time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log

會在目錄下生成 u-boot-sunxi-with-spl.bin

linux內核編譯配置

linux內核基于github上的版本https://github.com/Lichee-Pi/linux.git,分支為最新的zero-4.13.y

內核選項配置

首先執(zhí)行make ARCH=arm licheepi_zero_defconfig定義常量菜單

然后執(zhí)行 make ARCH=arm menuconfig 打開內核菜單配置,

進入到 Device Drivers --> Memory Technology Device (MTD) support ,

確保選擇上mtd的 **<> Command line partition table parsing*
支持,該項目用來解析uboot傳遞過來的flash分區(qū)信息。

以及SPI-NOR 設備的支持。

添加對jffs2文件系統(tǒng)的支持,路徑在
File systems --> Miscellaneous filesystems --> Journalling Flash File System v2 (JFFS2) support

設備樹配置

修改dts配置添加spi flash節(jié)點

vi arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dts

添加spi節(jié)點配置:

&spi0 {status ="okay";xt25f128b:xt25f128b@0 {compatible = "jedec,spi-nor";reg = <0x0>;spi-max-frequency = <50000000>;#address-cells = <1>;#size-cells = <1>;};};


型號列表在drivers/mtd/devices/m25p80.c文件中
這里的flash型號需要在下表之中,否則將無法識別:(注意容量也一定要對應)

static const struct spi_device_id m25p_ids[] = {/** Allow non-DT platform devices to bind to the "spi-nor" modalias, and* hack around the fact that the SPI core does not provide uevent* matching for .of_match_table*/{"spi-nor"},/** Entries not used in DTs that should be safe to drop after replacing* them with "spi-nor" in platform data.*/{"s25sl064a"}, {"w25x16"}, {"m25p10"}, {"m25px64"},/** Entries that were used in DTs without "jedec,spi-nor" fallback and* should be kept for backward compatibility.*/{"at25df321a"}, {"at25df641"}, {"at26df081a"},{"mx25l4005a"}, {"mx25l1606e"}, {"mx25l6405d"}, {"mx25l12805d"},{"mx25l25635e"},{"mx66l51235l"},{"n25q064"}, {"n25q128a11"}, {"n25q128a13"}, {"n25q512a"},{"s25fl256s1"}, {"s25fl512s"}, {"s25sl12801"}, {"s25fl008k"},{"s25fl064k"},{"sst25vf040b"},{"sst25vf016b"},{"sst25vf032b"},{"sst25wf040"},{"m25p40"}, {"m25p80"}, {"m25p16"}, {"m25p32"},{"m25p64"}, {"m25p128"},{"w25x80"}, {"w25x32"}, {"w25q32"}, {"w25q32dw"},{"w25q80bl"}, {"w25q128"}, {"w25q256"},/* Flashes that can't be detected using JEDEC */{"m25p05-nonjedec"}, {"m25p10-nonjedec"}, {"m25p20-nonjedec"},{"m25p40-nonjedec"}, {"m25p80-nonjedec"}, {"m25p16-nonjedec"},{"m25p32-nonjedec"}, {"m25p64-nonjedec"}, {"m25p128-nonjedec"},/* Everspin MRAMs (non-JEDEC) */{ "mr25h256" }, /* 256 Kib, 40 MHz */{ "mr25h10" }, /* 1 Mib, 40 MHz */{ "mr25h40" }, /* 4 Mib, 40 MHz */{ }, };

在上面我們沒有找到相應的型號,所以我們需要手動添加上去。添加完如下

static const struct spi_device_id m25p_ids[] = {/** Allow non-DT platform devices to bind to the "spi-nor" modalias, and* hack around the fact that the SPI core does not provide uevent* matching for .of_match_table*/{"spi-nor"},/** Entries not used in DTs that should be safe to drop after replacing* them with "spi-nor" in platform data.*/{"s25sl064a"}, {"w25x16"}, {"m25p10"}, {"m25px64"},/** Entries that were used in DTs without "jedec,spi-nor" fallback and* should be kept for backward compatibility.*/{"at25df321a"}, {"at25df641"}, {"at26df081a"},{"mx25l4005a"}, {"mx25l1606e"}, {"mx25l6405d"}, {"mx25l12805d"},{"mx25l25635e"},{"mx66l51235l"},{"n25q064"}, {"n25q128a11"}, {"n25q128a13"}, {"n25q512a"},{"s25fl256s1"}, {"s25fl512s"}, {"s25sl12801"}, {"s25fl008k"},{"s25fl064k"},{"sst25vf040b"},{"sst25vf016b"},{"sst25vf032b"},{"sst25wf040"},{"m25p40"}, {"m25p80"}, {"m25p16"}, {"m25p32"},{"m25p64"}, {"m25p128"},{"w25x80"}, {"w25x32"}, {"w25q32"}, {"w25q32dw"},{"w25q80bl"}, {"w25q128"}, {"xt25f128b"}, {"w25q256"},/* Flashes that can't be detected using JEDEC */{"m25p05-nonjedec"}, {"m25p10-nonjedec"}, {"m25p20-nonjedec"},{"m25p40-nonjedec"}, {"m25p80-nonjedec"}, {"m25p16-nonjedec"},{"m25p32-nonjedec"}, {"m25p64-nonjedec"}, {"m25p128-nonjedec"},/* Everspin MRAMs (non-JEDEC) */{ "mr25h256" }, /* 256 Kib, 40 MHz */{ "mr25h10" }, /* 1 Mib, 40 MHz */{ "mr25h40" }, /* 4 Mib, 40 MHz */{ }, };

然后我們添加xt25f128b flash的相關信息。
編輯drivers/mtd/spi-nor/spi-nor.c文件
添加信息如下:

{“xt25f128b”,INFO(0x0b4018, 0x0, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },

static const struct flash_info spi_nor_ids[] = {/* Atmel -- some are (confusingly) marketed as "DataFlash" */{ "at25fs010", INFO(0x1f6601, 0, 32 * 1024, 4, SECT_4K) },{ "at25fs040", INFO(0x1f6604, 0, 64 * 1024, 8, SECT_4K) },{ "at25df041a", INFO(0x1f4401, 0, 64 * 1024, 8, SECT_4K) },{ "at25df321", INFO(0x1f4700, 0, 64 * 1024, 64, SECT_4K) },{ "at25df321a", INFO(0x1f4701, 0, 64 * 1024, 64, SECT_4K) },{ "at25df641", INFO(0x1f4800, 0, 64 * 1024, 128, SECT_4K) },{ "at26f004", INFO(0x1f0400, 0, 64 * 1024, 8, SECT_4K) },{ "at26df081a", INFO(0x1f4501, 0, 64 * 1024, 16, SECT_4K) },{ "at26df161a", INFO(0x1f4601, 0, 64 * 1024, 32, SECT_4K) },{ "at26df321", INFO(0x1f4700, 0, 64 * 1024, 64, SECT_4K) },{ "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },/* EON -- en25xxx */{ "en25f32", INFO(0x1c3116, 0, 64 * 1024, 64, SECT_4K) },{ "en25p32", INFO(0x1c2016, 0, 64 * 1024, 64, 0) },{ "en25q32b", INFO(0x1c3016, 0, 64 * 1024, 64, 0) },{ "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) },{ "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) },{ "en25qh128", INFO(0x1c7018, 0, 64 * 1024, 256, 0) },{ "en25qh256", INFO(0x1c7019, 0, 64 * 1024, 512, 0) },{ "en25s64", INFO(0x1c3817, 0, 64 * 1024, 128, SECT_4K) },/* ESMT */{ "f25l32pa", INFO(0x8c2016, 0, 64 * 1024, 64, SECT_4K) },/* Everspin */{ "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },{ "mr25h10", CAT25_INFO(128 * 1024, 1, 256, 3, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },{ "mr25h40", CAT25_INFO(512 * 1024, 1, 256, 3, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },/* Fujitsu */{ "mb85rs1mt", INFO(0x047f27, 0, 128 * 1024, 1, SPI_NOR_NO_ERASE) },/* GigaDevice */{"gd25q32", INFO(0xc84016, 0, 64 * 1024, 64,SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)},{"gd25q64", INFO(0xc84017, 0, 64 * 1024, 128,SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)},{"gd25lq64c", INFO(0xc86017, 0, 64 * 1024, 128,SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)},{"gd25q128", INFO(0xc84018, 0, 64 * 1024, 256,SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)},/* Intel/Numonyx -- xxxs33b */{ "160s33b", INFO(0x898911, 0, 64 * 1024, 32, 0) },{ "320s33b", INFO(0x898912, 0, 64 * 1024, 64, 0) },{ "640s33b", INFO(0x898913, 0, 64 * 1024, 128, 0) },/* ISSI */{ "is25cd512", INFO(0x7f9d20, 0, 32 * 1024, 2, SECT_4K) },/* Macronix */{ "mx25l512e", INFO(0xc22010, 0, 64 * 1024, 1, SECT_4K) },{ "mx25l2005a", INFO(0xc22012, 0, 64 * 1024, 4, SECT_4K) },{ "mx25l4005a", INFO(0xc22013, 0, 64 * 1024, 8, SECT_4K) },{ "mx25l8005", INFO(0xc22014, 0, 64 * 1024, 16, 0) },{ "mx25l1606e", INFO(0xc22015, 0, 64 * 1024, 32, SECT_4K) },{ "mx25l3205d", INFO(0xc22016, 0, 64 * 1024, 64, SECT_4K) },{ "mx25l3255e", INFO(0xc29e16, 0, 64 * 1024, 64, SECT_4K) },{ "mx25l6405d", INFO(0xc22017, 0, 64 * 1024, 128, SECT_4K) },{ "mx25u6435f", INFO(0xc22537, 0, 64 * 1024, 128, SECT_4K) },{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, 0) },{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K) },{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_QUAD_READ) },{ "mx66l1g55g", INFO(0xc2261b, 0, 64 * 1024, 2048, SPI_NOR_QUAD_READ) },/* Micron */{ "n25q016a", INFO(0x20bb15, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_QUAD_READ) },{ "n25q032", INFO(0x20ba16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) },{ "n25q032a", INFO(0x20bb16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) },{ "n25q064", INFO(0x20ba17, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_QUAD_READ) },{ "n25q064a", INFO(0x20bb17, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_QUAD_READ) },{ "n25q128a11", INFO(0x20bb18, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) },{ "n25q128a13", INFO(0x20ba18, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) },{ "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_QUAD_READ) },{ "n25q512a", INFO(0x20bb20, 0, 64 * 1024, 1024, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ) },{ "n25q512ax3", INFO(0x20ba20, 0, 64 * 1024, 1024, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ) },{ "n25q00", INFO(0x20ba21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ) },{ "n25q00a", INFO(0x20bb21, 0, 64 * 1024, 2048, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ) },/* PMC */{ "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) },{ "pm25lv010", INFO(0, 0, 32 * 1024, 4, SECT_4K_PMC) },{ "pm25lq032", INFO(0x7f9d46, 0, 64 * 1024, 64, SECT_4K) },/* Spansion -- single (large) sector size only, at least* for the chips listed here (without boot sectors).*/{ "s25sl032p", INFO(0x010215, 0x4d00, 64 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25sl064p", INFO(0x010216, 0x4d00, 64 * 1024, 128, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25fl256s0", INFO(0x010219, 0x4d00, 256 * 1024, 128, 0) },{ "s25fl256s1", INFO(0x010219, 0x4d01, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25fl512s", INFO(0x010220, 0x4d00, 256 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s70fl01gs", INFO(0x010221, 0x4d00, 256 * 1024, 256, 0) },{ "s25sl12800", INFO(0x012018, 0x0300, 256 * 1024, 64, 0) },{ "s25sl12801", INFO(0x012018, 0x0301, 64 * 1024, 256, 0) },{ "s25fl128s", INFO6(0x012018, 0x4d0180, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25fl129p0", INFO(0x012018, 0x4d00, 256 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25sl004a", INFO(0x010212, 0, 64 * 1024, 8, 0) },{ "s25sl008a", INFO(0x010213, 0, 64 * 1024, 16, 0) },{ "s25sl016a", INFO(0x010214, 0, 64 * 1024, 32, 0) },{ "s25sl032a", INFO(0x010215, 0, 64 * 1024, 64, 0) },{ "s25sl064a", INFO(0x010216, 0, 64 * 1024, 128, 0) },{ "s25fl004k", INFO(0xef4013, 0, 64 * 1024, 8, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25fl008k", INFO(0xef4014, 0, 64 * 1024, 16, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25fl016k", INFO(0xef4015, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25fl064k", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },{ "s25fl116k", INFO(0x014015, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "s25fl132k", INFO(0x014016, 0, 64 * 1024, 64, SECT_4K) },{ "s25fl164k", INFO(0x014017, 0, 64 * 1024, 128, SECT_4K) },{ "s25fl204k", INFO(0x014013, 0, 64 * 1024, 8, SECT_4K | SPI_NOR_DUAL_READ) },{ "s25fl208k", INFO(0x014014, 0, 64 * 1024, 16, SECT_4K | SPI_NOR_DUAL_READ) },/* SST -- large erase sizes are "overlays", "sectors" are 4K */{ "sst25vf040b", INFO(0xbf258d, 0, 64 * 1024, 8, SECT_4K | SST_WRITE) },{ "sst25vf080b", INFO(0xbf258e, 0, 64 * 1024, 16, SECT_4K | SST_WRITE) },{ "sst25vf016b", INFO(0xbf2541, 0, 64 * 1024, 32, SECT_4K | SST_WRITE) },{ "sst25vf032b", INFO(0xbf254a, 0, 64 * 1024, 64, SECT_4K | SST_WRITE) },{ "sst25vf064c", INFO(0xbf254b, 0, 64 * 1024, 128, SECT_4K) },{ "sst25wf512", INFO(0xbf2501, 0, 64 * 1024, 1, SECT_4K | SST_WRITE) },{ "sst25wf010", INFO(0xbf2502, 0, 64 * 1024, 2, SECT_4K | SST_WRITE) },{ "sst25wf020", INFO(0xbf2503, 0, 64 * 1024, 4, SECT_4K | SST_WRITE) },{ "sst25wf020a", INFO(0x621612, 0, 64 * 1024, 4, SECT_4K) },{ "sst25wf040b", INFO(0x621613, 0, 64 * 1024, 8, SECT_4K) },{ "sst25wf040", INFO(0xbf2504, 0, 64 * 1024, 8, SECT_4K | SST_WRITE) },{ "sst25wf080", INFO(0xbf2505, 0, 64 * 1024, 16, SECT_4K | SST_WRITE) },/* ST Microelectronics -- newer production may have feature updates */{ "m25p05", INFO(0x202010, 0, 32 * 1024, 2, 0) },{ "m25p10", INFO(0x202011, 0, 32 * 1024, 4, 0) },{ "m25p20", INFO(0x202012, 0, 64 * 1024, 4, 0) },{ "m25p40", INFO(0x202013, 0, 64 * 1024, 8, 0) },{ "m25p80", INFO(0x202014, 0, 64 * 1024, 16, 0) },{ "m25p16", INFO(0x202015, 0, 64 * 1024, 32, 0) },{ "m25p32", INFO(0x202016, 0, 64 * 1024, 64, 0) },{ "m25p64", INFO(0x202017, 0, 64 * 1024, 128, 0) },{ "m25p128", INFO(0x202018, 0, 256 * 1024, 64, 0) },{ "m25p05-nonjedec", INFO(0, 0, 32 * 1024, 2, 0) },{ "m25p10-nonjedec", INFO(0, 0, 32 * 1024, 4, 0) },{ "m25p20-nonjedec", INFO(0, 0, 64 * 1024, 4, 0) },{ "m25p40-nonjedec", INFO(0, 0, 64 * 1024, 8, 0) },{ "m25p80-nonjedec", INFO(0, 0, 64 * 1024, 16, 0) },{ "m25p16-nonjedec", INFO(0, 0, 64 * 1024, 32, 0) },{ "m25p32-nonjedec", INFO(0, 0, 64 * 1024, 64, 0) },{ "m25p64-nonjedec", INFO(0, 0, 64 * 1024, 128, 0) },{ "m25p128-nonjedec", INFO(0, 0, 256 * 1024, 64, 0) },{ "m45pe10", INFO(0x204011, 0, 64 * 1024, 2, 0) },{ "m45pe80", INFO(0x204014, 0, 64 * 1024, 16, 0) },{ "m45pe16", INFO(0x204015, 0, 64 * 1024, 32, 0) },{ "m25pe20", INFO(0x208012, 0, 64 * 1024, 4, 0) },{ "m25pe80", INFO(0x208014, 0, 64 * 1024, 16, 0) },{ "m25pe16", INFO(0x208015, 0, 64 * 1024, 32, SECT_4K) },{ "m25px16", INFO(0x207115, 0, 64 * 1024, 32, SECT_4K) },{ "m25px32", INFO(0x207116, 0, 64 * 1024, 64, SECT_4K) },{ "m25px32-s0", INFO(0x207316, 0, 64 * 1024, 64, SECT_4K) },{ "m25px32-s1", INFO(0x206316, 0, 64 * 1024, 64, SECT_4K) },{ "m25px64", INFO(0x207117, 0, 64 * 1024, 128, 0) },{ "m25px80", INFO(0x207114, 0, 64 * 1024, 16, 0) },/* Winbond -- w25x "blocks" are 64K, "sectors" are 4KiB */{ "w25x05", INFO(0xef3010, 0, 64 * 1024, 1, SECT_4K) },{ "w25x10", INFO(0xef3011, 0, 64 * 1024, 2, SECT_4K) },{ "w25x20", INFO(0xef3012, 0, 64 * 1024, 4, SECT_4K) },{ "w25x40", INFO(0xef3013, 0, 64 * 1024, 8, SECT_4K) },{ "w25x80", INFO(0xef3014, 0, 64 * 1024, 16, SECT_4K) },{ "w25x16", INFO(0xef3015, 0, 64 * 1024, 32, SECT_4K) },{ "w25x32", INFO(0xef3016, 0, 64 * 1024, 64, SECT_4K) },{ "w25q32", INFO(0xef4016, 0, 64 * 1024, 64, SECT_4K) },{"w25q32dw", INFO(0xef6016, 0, 64 * 1024, 64,SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)},{ "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) },{ "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },{"w25q64dw", INFO(0xef6017, 0, 64 * 1024, 128,SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)},{"w25q128fw", INFO(0xef6018, 0, 64 * 1024, 256,SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)},{ "w25q80", INFO(0xef5014, 0, 64 * 1024, 16, SECT_4K) },{ "w25q80bl", INFO(0xef4014, 0, 64 * 1024, 16, SECT_4K) },{ "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, SECT_4K) },{"xt25f128b",INFO(0x0b4018, 0x0, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },{ "w25q256", INFO(0xef4019, 0, 64 * 1024, 512, SECT_4K) },/* Catalyst / On Semiconductor -- non-JEDEC */{ "cat25c11", CAT25_INFO( 16, 8, 16, 1, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },{ "cat25c03", CAT25_INFO( 32, 8, 16, 2, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },{ "cat25c09", CAT25_INFO( 128, 8, 32, 2, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },{ "cat25c17", CAT25_INFO( 256, 8, 32, 2, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },{ "cat25128", CAT25_INFO(2048, 8, 64, 2, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },{ }, };

開始編譯

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j32 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

準備鏡像文件

下載根文件系統(tǒng)

首先選擇rootfs文件系統(tǒng),我是用的是群朋提供的最小根文件系統(tǒng)
rootfs-brmin.tar.gz,大小只有3M左右,我已經制作好了jff2.img,可以直接使用下載地址在

https://download.csdn.net/download/weixin_41869691/16291690

制作jffs2文件系統(tǒng)

Flash支持jffs2文件系統(tǒng)格式,所以需要使用此該rootfs制作jffs2文件系統(tǒng)鏡像、

下載jffs2文件系統(tǒng)制作工具

apt-get install mtd-utils

解壓 rootfs-brmin.tar.gz

tar xzvf rootfs-brmin.tar.gz

計算好jffs的大小,可以使用zero_imager里的 make_jffs2.sh 16 生成

總空間是16M-1M-64K-4M=0xAF0000

mkfs.jffs2 -s 0x100 -e 0x10000 -p 0xAF0000 -d rootfs/ -o jffs2.img

  • 頁大小0x100 256字節(jié)
  • 塊大小0x10000 64k
  • jffs2分區(qū)總空間0xAF0000
  • jffs2.img是生成的文件系統(tǒng)鏡像。

最后將uboot,dtb,kernel,rootfs打包成一個系統(tǒng)鏡像,命令如下;

#!/bin/sh dd if=/dev/zero of=flashimg.bin bs=1M count=16 dd if=u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc dd if=sun8i-v3s-licheepi-zero.dtb of=flashimg.bin bs=1K seek=1024 conv=notrunc dd if=zImage of=flashimg.bin bs=1K seek=1088 conv=notrunc dd if=jffs2.img of=flashimg.bin bs=1K seek=5184 conv=notrunc

第一步: 生成一個空文件,大小是16MB
第二步: 將uboot添加到文件開頭
第三步: 將dtb放到1M偏移處
第四步: 將kernel放到1M+64K偏移處

第五步: 將rootfs放到1M+64K+4M偏移處

偏移大小是seek,單位是KB。

執(zhí)行完畢后生成鏡像文件 flashimg.bin

燒寫鏡像

下載sunxiflash燒寫工具

git clone -b spi-rebase https://github.com/Icenowy/sunxi-tools.git

note

注意是spi-rebase分支。

進入工具目錄執(zhí)行 make && sudo make install

如果出現:*fel_lib.c:26:20: fatal error: libusb.h: No such file or
directory*,那需要安裝libusb:

sudo apt-get install libusb-1.0-0-dev

進入fel模式

Zero有一個usb下載模式稱為fel模式,進入fel模式有下面幾種方式:

  • TF卡和spi flash 同時沒有可啟動鏡像;
    也就是說你不插卡,且焊接的是新的或者沒有有效鏡像的spi
    flash,那就上電自動進入fel下載模式
  • TF卡中有進入fel模式的特殊固件 fel-sdboot.sunxi
    如果你的spiflash已經有了啟動鏡像,那么需要在TF卡中燒入一個sunxi提供的
    啟動工具 (
    dd if=fel-sdboot.sunxi of=/dev/mmcblk0 bs=1024 seek=8 ),
    那么插入該TF卡啟動會進入fel模式;
  • 上電時SPI_MISO拉低到地
    該引腳為boot引腳,上電時出于低電平即會進入fel下載模式。
  • sunxi-fel的操作

    進入fel模式后使用usb數據線連接pc和zero,即可進行操作。

    sudo sunxi-fel version #查看連接的cpu信息 AWUSBFEX soc=00001681(V3s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000 sudo sunxi-fel spiflash-info #顯示flash信息 Manufacturer: Unknown (C2h), model: 20h, size: 33554432 bytes.

    執(zhí)行如下命令燒入我們前邊制作好的鏡像文件

    sudo sunxi-fel -p spiflash-write 0 flashimg.bin # -p 顯示進度條 # spiflash-info Retrieves basic information # spiflash-hex[dump] addr length Dumps SPI flash region in hex # spiflash-read addr length file Write SPI flash contents into file # spiflash-write addr file Store file contents into SPI flash

    SPI flash下載速度約50KB/s,等待5分鐘(16MB)或者10分鐘(32MB),燒寫完成,如果一切順利,重新上電zero那么就會進入linux系統(tǒng)了,賬號是root沒有密碼。

    附錄: 啟動日志

    U-Boot SPL 2017.01-rc2-00073-gdd6e8740dc-dirty (Mar 28 2021 - 01:54:30) DRAM: 64 MiB Trying to boot from sunxi SPIU-Boot 2017.01-rc2-00073-gdd6e8740dc-dirty (Mar 28 2021 - 01:54:30 +0800) Allwinner TechnologyCPU: Allwinner V3s (SUN8I 1681) Model: Lichee Pi Zero DRAM: 64 MiB MMC: SUNXI SD/MMC: 0 SF: Detected xt25f128b with page size 256 Bytes, erase size 4 KiB, total 16 MiB *** Warning - bad CRC, using default environmentIn: serial@01c28000 Out: serial@01c28000 Err: serial@01c28000U-Boot 2017.01-rc2-00073-gdd6e8740dc-dirty (Mar 28 2021 - 01:54:30 +0800) Allwinner TechnologyCPU: Allwinner V3s (SUN8I 1681) Model: Lichee Pi Zero DRAM: 64 MiB MMC: SUNXI SD/MMC: 0 SF: Detected xt25f128b with page size 256 Bytes, erase size 4 KiB, total 16 MiB *** Warning - bad CRC, using default environmentIn: serial@01c28000 Out: serial@01c28000 Err: serial@01c28000 Net: No ethernet found. starting USB... No controllers found Hit any key to stop autoboot: 0 SF: Detected xt25f128b with page size 256 Bytes, erase size 4 KiB, total 16 MiB device 0 offset 0x100000, size 0x10000 SF: 65536 bytes @ 0x100000 Read: OK device 0 offset 0x110000, size 0x400000 SF: 4194304 bytes @ 0x110000 Read: OK ## Flattened Device Tree blob at 41800000Booting using the fdt blob at 0x41800000Loading Device Tree to 42dfa000, end 42dff206 ... OKStarting kernel ...[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.10.15-licheepi-zero+ (nihao@nihao-XiaoXin) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) #6 SMP Sun Mar 28 08:51:06 CST 2021 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt:Machine model: Lichee Pi Zero [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] percpu: Embedded 14 pages/cpu @c3f63000 s24716 r8192 d24436 u57344 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 [ 0.000000] Kernel command line: console=ttyS0,115200 earlyprintk panic=5 rootwait mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,4M(kernel)ro,-(rootfs) root=31:03 rw rootfstype=jffs2 [ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes) [ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Memory: 55152K/65536K available (6144K kernel code, 199K rwdata, 1412K rodata, 1024K init, 262K bss, 10384K reserved, 0K cma-reserved, 0K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xc4800000 - 0xff800000 ( 944 MB) [ 0.000000] lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc0700000 (7136 kB) [ 0.000000] .init : 0xc0900000 - 0xc0a00000 (1024 kB) [ 0.000000] .data : 0xc0a00000 - 0xc0a31f00 ( 200 kB) [ 0.000000] .bss : 0xc0a33000 - 0xc0a7484c ( 263 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] Build-time adjustment of leaf fanout to 32. [ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=1 [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] arm_arch_timer: Architected cp15 timer(s) running at 24.00MHz (virt). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns [ 0.000007] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns [ 0.000018] Switching to timer-based delay loop, resolution 41ns [ 0.000138] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000343] Console: colour dummy device 80x30 [ 0.000379] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000) [ 0.000393] pid_max: default: 32768 minimum: 301 [ 0.000528] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000539] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.001231] CPU: Testing write buffer coherency: ok [ 0.001634] /cpus/cpu@0 missing clock-frequency property [ 0.001658] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.002018] Setting up static identity map for 0x40100000 - 0x40100058 [ 0.002763] smp: Bringing up secondary CPUs ... [ 0.002781] smp: Brought up 1 node, 1 CPU [ 0.002790] SMP: Total of 1 processors activated (48.00 BogoMIPS). [ 0.002797] CPU: All CPU(s) started in SVC mode. [ 0.003584] devtmpfs: initialized [ 0.006342] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5 [ 0.006638] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.006665] futex hash table entries: 256 (order: 2, 16384 bytes) [ 0.006819] pinctrl core: initialized pinctrl subsystem [ 0.007825] NET: Registered protocol family 16 [ 0.008277] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.009494] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers. [ 0.009510] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.020909] SCSI subsystem initialized [ 0.021188] usbcore: registered new interface driver usbfs [ 0.021249] usbcore: registered new interface driver hub [ 0.021344] usbcore: registered new device driver usb [ 0.021581] pps_core: LinuxPPS API ver. 1 registered [ 0.021591] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.021614] PTP clock support registered [ 0.021817] Advanced Linux Sound Architecture Driver Initialized. [ 0.023618] clocksource: Switched to clocksource arch_sys_counter [ 0.034049] NET: Registered protocol family 2 [ 0.034678] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.034710] TCP bind hash table entries: 1024 (order: 1, 8192 bytes) [ 0.034734] TCP: Hash tables configured (established 1024 bind 1024) [ 0.034821] UDP hash table entries: 256 (order: 1, 8192 bytes) [ 0.034868] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) [ 0.035077] NET: Registered protocol family 1 [ 0.035696] RPC: Registered named UNIX socket transport module. [ 0.035716] RPC: Registered udp transport module. [ 0.035721] RPC: Registered tcp transport module. [ 0.035727] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.037888] workingset: timestamp_bits=30 max_order=14 bucket_order=0 [ 0.046839] NFS: Registering the id_resolver key type [ 0.046892] Key type id_resolver registered [ 0.046899] Key type id_legacy registered [ 0.046946] jffs2: version 2.2. (NAND) ? 2001-2006 Red Hat, Inc. [ 0.051417] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) [ 0.051438] io scheduler noop registered [ 0.051445] io scheduler deadline registered [ 0.051651] io scheduler cfq registered (default) [ 0.055818] sun8i-v3s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver [ 0.123327] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled [ 0.126634] console [ttyS0] disabled [ 0.146912] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 31, base_baud = 1500000) is a U6_16550A [ 0.711492] console [ttyS0] enabled [ 0.715681] [drm] Initialized [ 0.721398] m25p80 spi32766.0: xt25f128b (16384 Kbytes) [ 0.726750] 4 cmdlinepart partitions found on MTD device spi32766.0 [ 0.733012] Creating 4 MTD partitions on "spi32766.0": [ 0.738182] 0x000000000000-0x000000100000 : "uboot" [ 0.743783] 0x000000100000-0x000000110000 : "dtb" [ 0.748907] 0x000000110000-0x000000510000 : "kernel" [ 0.754338] 0x000000510000-0x000001000000 : "rootfs" [ 0.760036] libphy: Fixed MDIO Bus: probed [ 0.764482] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.771009] ehci-platform: EHCI generic platform driver [ 0.776367] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.782564] ohci-platform: OHCI generic platform driver [ 0.788269] udc-core: couldn't find an available UDC - added [g_cdc] to list of pending drivers [ 0.797943] sun6i-rtc 1c20400.rtc: rtc core: registered rtc-sun6i as rtc0 [ 0.804824] sun6i-rtc 1c20400.rtc: RTC enabled [ 0.809359] i2c /dev entries driver [ 0.814225] input: ns2009_ts as /devices/platform/soc/1c2ac00.i2c/i2c-0/0-0048/input/input0 [ 0.823891] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0) [ 0.883660] sunxi-mmc 1c0f000.mmc: base:0xc48ae000 irq:23 [ 0.889996] usbcore: registered new interface driver usbhid [ 0.895655] usbhid: USB HID core driver [ 0.901162] NET: Registered protocol family 17 [ 0.905844] Key type dns_resolver registered [ 0.910261] Registering SWP/SWPB emulation handler [ 0.921360] usb_phy_generic.0.auto supply vcc not found, using dummy regulator [ 0.929304] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver [ 0.935148] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1 [ 0.946351] hub 1-0:1.0: USB hub found [ 0.950215] hub 1-0:1.0: 1 port detected [ 0.955007] using random self ethernet address [ 0.959500] using random host ethernet address [ 0.965051] usb0: HOST MAC 0a:4c:0a:fb:ad:c7 [ 0.969383] usb0: MAC 36:23:1c:5c:34:1c [ 0.973259] g_cdc gadget: CDC Composite Gadget, version: King Kamehameha Day 2008 [ 0.980840] g_cdc gadget: g_cdc ready [ 0.984859] sun6i-rtc 1c20400.rtc: setting system clock to 1970-01-01 00:00:23 UTC (23) [ 0.993097] vcc3v0: disabling [ 0.996144] vcc5v0: disabling [ 0.999113] ALSA device list: [ 1.002075] No soundcards found. [ 1.007541] random: fast init done [ 1.049938] random: crng init done [ 1.580278] VFS: Mounted root (jffs2 filesystem) on device 31:3. [ 1.587278] devtmpfs: mounted [ 1.591420] Freeing unused kernel memory: 1024K Starting logging: OK Starting mdev... modprobe: can't change directory to '/lib/modules': No such file or directory [ 5.688048] ------------[ cut here ]------------ [ 5.692711] WARNING: CPU: 0 PID: 86 at drivers/mtd/spi-nor/spi-nor.c:1183 spi_nor_write+0x138/0x1b4 [ 5.701820] Writing at offset 216 into a NOR page. Writing partial pages may decrease reliability and increase wear of NOR flash. [ 5.701825] Modules linked in: [ 5.716550] CPU: 0 PID: 86 Comm: touch Not tainted 4.10.15-licheepi-zero+ #6 [ 5.723585] Hardware name: Allwinner sun8i Family [ 5.728313] [<c010e2fc>] (unwind_backtrace) from [<c010b098>] (show_stack+0x10/0x14) [ 5.736055] [<c010b098>] (show_stack) from [<c03465c4>] (dump_stack+0x84/0x98) [ 5.743277] [<c03465c4>] (dump_stack) from [<c011b634>] (__warn+0xe8/0x100) [ 5.750235] [<c011b634>] (__warn) from [<c011b684>] (warn_slowpath_fmt+0x38/0x48) [ 5.757715] [<c011b684>] (warn_slowpath_fmt) from [<c0452fbc>] (spi_nor_write+0x138/0x1b4) [ 5.765973] [<c0452fbc>] (spi_nor_write) from [<c044b454>] (mtd_writev+0xa4/0xec) [ 5.773456] [<c044b454>] (mtd_writev) from [<c02fbec8>] (jffs2_flash_writev+0x414/0x4b0) [ 5.781541] [<c02fbec8>] (jffs2_flash_writev) from [<c02f4d48>] (jffs2_write_dnode+0xd4/0x328) [ 5.790145] [<c02f4d48>] (jffs2_write_dnode) from [<c02f9458>] (jffs2_do_setattr+0x280/0x558) [ 5.798661] [<c02f9458>] (jffs2_do_setattr) from [<c02f9754>] (jffs2_setattr+0x24/0x48) [ 5.806660] [<c02f9754>] (jffs2_setattr) from [<c020d990>] (notify_change+0x1c4/0x3d0) [ 5.814572] [<c020d990>] (notify_change) from [<c021e65c>] (utimes_common+0xa8/0x170) [ 5.822394] [<c021e65c>] (utimes_common) from [<c021e7d4>] (do_utimes+0xb0/0x144) [ 5.829869] [<c021e7d4>] (do_utimes) from [<c021ea10>] (SyS_futimesat+0xd0/0xfc) [ 5.837259] [<c021ea10>] (SyS_futimesat) from [<c0107580>] (ret_fast_syscall+0x0/0x3c) [ 5.845234] ---[ end trace d947ef19d0d7cd8d ]--- Initializing random number generator... done. Starting network: OKWelcome to Lichee Pi Lichee login:

    附錄:sunxi-fel幫助說明

    sunxi-fel v1.4.1-87-g78a7566Usage: sunxi-fel [options] command arguments--- [command---]-h, --help Print this usage summary and exit-v, --verbose Verbose logging-p, --progress "write" transfers show a progress bar-l, --list Enumerate all (USB) FEL devices and exit-d, --dev bus:devnum Use specific USB bus and device number--sid SID Select device by SID key (exact match)spl file Load and execute U-Boot SPLIf file additionally contains a main U-Boot binary(u-boot-sunxi-with-spl.bin), this command also transfers thatto memory (default address from image), but won't execute it.uboot file-with-spl like "spl", but actually starts U-BootU-Boot execution will take place when the fel utility exits.This allows combining "uboot" with further "write" commands(to transfer other files needed for the boot).hex[dump] address length Dumps memory region in hexdump address length Binary memory dumpexe[cute] address Call function addressreset64 address RMR request for AArch64 warm bootmemmove dest source size Copy <size> bytes within device memoryreadl address Read 32-bit value from device memorywritel address value Write 32-bit value to device memoryread address length file Write memory contents into filewrite address file Store file contents into memorywrite-with-progress addr file "write" with progress barwrite-with-gauge addr file Output progress for "dialog --gauge"write-with-xgauge addr file Extended gauge output (updates prompt)multi[write] # addr file --- "write-with-progress" multiple files,sharing a common progress statusmulti[write]-with-gauge --- like their "write-with-*" counterpart,multi[write]-with-xgauge --- but following the 'multi' syntax:<#> addr file [addr file [---]]echo-gauge "some text" Update prompt/caption for gauge outputver[sion] Show BROM versionsid Retrieve and output 128-bit SID keyclear address length Clear memoryfill address length value Fill memoryspiflash-info Retrieves basic informationspiflash-hex[dump] addr length Dumps SPI flash region in hexspiflash-read addr length file Write SPI flash contents into filespiflash-write addr file Store file contents into SPI flash

    參考資料

    http://blog.sina.com.cn/s/blog_5ed5a1f40100f3qq.html

    總結

    以上是生活随笔為你收集整理的Licheepi zero SPI Flash 系统编译的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    日本在线观看一区 | 亚洲精品免费视频 | 日韩av成人在线观看 | 中文免费在线观看 | 久久久久国产精品免费网站 | 免费看一级黄色 | 中文字幕永久在线 | 91黄色在线视频 | av大片免费在线观看 | 免费国产ww | 91精品国产一区二区在线观看 | 香蕉精品视频在线观看 | 一区二区三区在线播放 | 亚洲三级毛片 | 一区二区精品在线观看 | 欧美精品视 | 成人久久久电影 | 日韩理论 | a级国产乱理伦片在线观看 亚洲3级 | 亚洲aⅴ在线观看 | 麻豆久久精品 | 亚洲精品麻豆视频 | 天天爽夜夜爽人人爽曰av | 亚洲第一区精品 | 久视频在线 | 黄色av大片 | 久草在线一免费新视频 | 婷婷中文字幕 | 国产精品美女视频网站 | 国内外成人免费在线视频 | 欧美精品一区二区在线观看 | 成人在线视频网 | 免费一级黄色 | 中文字幕在线播放一区二区 | 亚洲永久国产精品 | 国产亚洲综合性久久久影院 | 91av精品 | 中文字幕在线一二 | 欧美日韩不卡一区 | 国产精品视频地址 | 国产精品免费久久久久久久久久中文 | 色片网站在线观看 | 91精品日韩 | 久青草视频 | 国产精品免费久久久久久 | 色综合久久久久 | 亚洲永久国产精品 | 亚洲精品成人av在线 | 日韩成人免费在线 | 亚洲精品午夜视频 | 国产一级片播放 | 久久五月网 | 一级一片免费看 | 亚洲va欧美va国产va黑人 | 国产亚洲免费的视频看 | 丁香久久综合 | 伊人网站 | 香蕉视频日本 | 玖玖视频国产 | 日韩精品欧美视频 | 成人性生交大片免费观看网站 | 91理论电影 | 欧美日韩在线视频观看 | 日韩区视频 | 久久热亚洲 | 91久久精品一区二区三区 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 国产精品视频99 | 日产乱码一二三区别免费 | 久久国产三级 | 久久免费的视频 | 99热精品久久| 美女国产在线 | 六月婷色 | 日韩精品一区二区不卡 | 国产精品日韩在线 | 婷婷综合五月天 | 国产一区二区不卡视频 | 在线你懂的视频 | 久久天天躁狠狠躁亚洲综合公司 | 2018精品视频 | 欧美一区二区视频97 | 9色在线视频 | 在线观看的a站 | 亚洲少妇天堂 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 在线观看亚洲国产精品 | 国产精品欧美久久久久久 | 日躁夜躁狠狠躁2001 | 精品久久一级片 | 黄色av成人在线观看 | 欧美性高跟鞋xxxxhd | 久草久视频 | 精品在线免费视频 | 亚洲成色777777在线观看影院 | 国产精品淫 | 操操操日日 | 久久久午夜电影 | 午夜久久福利视频 | 精品久久久久久国产91 | 亚洲免费色 | 亚洲视频精品 | 91精品无人成人www | 麻豆一精品传二传媒短视频 | 十八岁免进欧美 | 欧美视频日韩 | 国产精品女 | 久章草在线 | 伊人天天色 | 亚洲aaa级| 久视频在线播放 | 国产一区私人高清影院 | 精品国产区在线 | 天天插天天爽 | 欧美a在线看| 蜜桃av人人夜夜澡人人爽 | 青青看片 | 一区二区精品在线 | 国产男女爽爽爽免费视频 | 五月婷婷在线视频 | 天堂在线一区二区三区 | 超碰在97 | 亚洲精品在线一区二区三区 | 亚洲精品视频在线观看网站 | 国产精品久久久久久欧美 | 色激情在线| 99视频在线观看免费 | 视频二区在线 | 99视频+国产日韩欧美 | 五月婷婷开心中文字幕 | 午夜视频在线观看一区二区 | 中文不卡视频 | 99精品视频播放 | 亚洲视频 在线观看 | 51精品国自产在线 | 久久在线精品视频 | 岛国精品一区二区 | 特及黄色片 | 国产高清在线观看 | 欧美激情亚洲综合 | 久久精品一区二区三区中文字幕 | 97精品国产一二三产区 | 精品一区二区在线免费观看 | 欧美一区二区三区特黄 | 久久亚洲影视 | 成片免费观看视频999 | 精品国产伦一区二区三区观看方式 | 亚洲国产字幕 | 玖玖视频在线 | 日韩在线视频国产 | 一区二区三区在线电影 | 日韩免费看的电影 | 久久一精品 | 久久理伦片 | 好看的国产精品视频 | 成人免费视频播放 | 国产成人综合在线观看 | 27xxoo无遮挡动态视频 | 九九久久久久久久久激情 | 成 人 黄 色 视频 免费观看 | 一区二区三区精品在线 | 天天婷婷 | 国产精品久久久久久久久久三级 | 午夜性盈盈 | 亚洲a在线观看 | 日韩乱色精品一区二区 | 久久经典国产视频 | 日韩啪啪小视频 | 一级成人在线 | 日韩在线高清视频 | 黄a网 | 夜夜摸夜夜爽 | 91av蜜桃| 中文字幕丝袜美腿 | 日韩在线观看视频在线 | 日日爽日日操 | 国产男女免费完整视频 | 国产精品久久久久久久久久白浆 | 日本不卡123 | 精品免费在线视频 | 最近最新中文字幕视频 | 国产白浆在线观看 | 国产精彩视频一区 | 欧美日韩免费一区二区 | 在线 国产一区 | 97超碰国产精品女人人人爽 | 欧美日韩高清免费 | 午夜丁香视频在线观看 | 中文字幕在线观看国产 | 亚洲激情 欧美激情 | 亚洲影视九九影院在线观看 | 成人影音在线 | 亚洲片在线观看 | 国产中文在线视频 | 亚洲国产精品影院 | 黄网站色欧美视频 | 亚洲激情视频在线观看 | 丁香婷婷综合激情五月色 | 午夜久久影院 | av网站地址 | 成人亚洲精品久久久久 | 久久精品区 | 日韩剧情 | 天天插天天爽 | 中文字幕乱码一区二区 | 6080yy午夜一二三区久久 | 国产免费叼嘿网站免费 | 久草精品免费 | 久久综合五月 | 色综合久久88色综合天天免费 | 91精品免费| 天天干天天干天天色 | 久久久不卡影院 | a级片久久久 | 久久国产精品视频免费看 | 三级性生活视频 | 91理论片午午伦夜理片久久 | 深爱激情久久 | 日韩欧美在线不卡 | 亚洲 欧美 91| 一本一本久久a久久精品综合妖精 | 九九九九精品九九九九 | 久久精品电影 | 丁香九月激情综合 | 99性视频 | 青青看片| 天天躁日日躁狠狠躁 | 91香蕉嫩草 | 国产精品美乳一区二区免费 | 99爱精品视频 | 国产精品一区免费在线观看 | 国产精品久久人 | 久久久久国产精品免费免费搜索 | 久草视频在线看 | 欧美精品九九99久久 | 久久精品日韩 | 天天干夜夜擦 | 国产福利久久 | 黄色免费在线视频 | 国产很黄很色的视频 | 久久久精品网站 | 在线视频欧美亚洲 | www.少妇| 俺要去色综合狠狠 | 婷婷色狠狠 | 免费视频黄色 | 成人免费亚洲 | 久久午夜剧场 | 色婷婷亚洲 | 蜜臀av在线一区二区三区 | 成全在线视频免费观看 | 欧美韩国日本在线 | 免费福利视频网站 | 97视频在线免费 | 日韩 国产 | 91视频免费观看 | 亚洲国产精品成人精品 | 91干干干| 在线观看一区 | 欧美色黄| 91在线精品一区二区 | 亚洲一二区视频 | 九九热.com | 亚洲精品玖玖玖av在线看 | av成人在线网站 | 人人插人人澡 | 国产中文字幕三区 | 亚洲综合激情五月 | 色资源中文字幕 | 欧美成人在线免费 | 日本女人在线观看 | 日韩簧片在线观看 | 午夜免费电影院 | 久久亚洲免费 | www免费视频com| 中文在线免费观看 | 亚洲三级在线免费观看 | 99视频在线免费观看 | 一区二区丝袜 | 亚洲高清资源 | 香蕉视频在线播放 | 精品国产一区二区三区久久久 | 欧美一级黄大片 | 亚洲一级片av | 999久久久国产精品 高清av免费观看 | 久久久久久久久久久免费视频 | 色婷五月| 国产一区二区三区视频在线 | 天天拍天天操 | 国产成人精品在线 | 国产高清综合 | а天堂中文最新一区二区三区 | 少妇高潮流白浆在线观看 | 99热精品视 | 亚洲成人资源网 | 国产精品一区二区精品视频免费看 | 中文字幕视频 | 日韩电影在线观看一区二区 | 婷婷色综 | 欧洲在线免费视频 | 视频国产在线观看18 | 99精品网站 | 欧美性色综合网 | 丰满少妇一级片 | 免费网站在线观看人 | 免费在线观看日韩欧美 | 高清美女视频 | 成人一区影院 | 久草91视频 | 成人av直播| 日韩综合一区二区 | 日韩a在线看 | 日韩中文字幕一区 | 不卡国产视频 | 亚洲欧洲中文日韩久久av乱码 | 狠狠色噜噜狠狠 | 日韩欧美精品一区 | 九九久久久久久久久激情 | 免费观看午夜视频 | 91精品国产三级a在线观看 | 国产精品 999| 国内成人精品2018免费看 | 日韩特级黄色片 | 精品九九九 | 狠狠色狠狠色综合日日小说 | 日日干av | 日日干夜夜草 | 国产精品一区二区电影 | 在线 成人 | 久久九九国产精品 | 日韩免费一区二区三区 | 国产中文字幕大全 | 91福利国产在线观看 | 久久国产午夜精品理论片最新版本 | 亚洲精品麻豆 | 国产精品精品视频 | 亚洲精品综合在线 | 500部大龄熟乱视频使用方法 | 精品xxx| 五月天伊人| 九七在线视频 | 欧美亚洲专区 | 国产在线欧美日韩 | 色婷婷狠狠五月综合天色拍 | 久久久久综合视频 | 日韩久久在线 | 国产精品一区二区三区在线 | 国产精品女人网站 | 亚洲免费av在线 | 97色国产 | 日韩手机在线观看 | 成年人免费观看在线视频 | 久久久黄色免费网站 | 亚洲在线色 | 久久天堂精品视频 | 久久久精品久久 | 97超碰人人在线 | 欧美巨乳网 | 国产男女无遮挡猛进猛出在线观看 | 久久激情视频 久久 | 三级黄免费看 | 欧美一级电影 | 在线国产专区 | 超碰av在线 | 又爽又黄又刺激的视频 | 中文字幕网站视频在线 | av中文字幕第一页 | 欧美日韩18| av免费观看高清 | 天天天综合网 | 日韩成人精品一区二区三区 | 国产高清视频在线免费观看 | 日本中文字幕在线一区 | 日本中文字幕观看 | 亚洲精品久久久久中文字幕m男 | 久久综合9988久久爱 | 久久久国产影视 | 99久久精品日本一区二区免费 | 日本黄色黄网站 | 黄网站色成年免费观看 | 探花在线观看 | 精品久久久网 | 高清在线观看av | 日韩免费高清在线 | 东方av免费在线观看 | 97超碰人人 | 久久成人免费视频 | 国产精品久久久久久久久久久杏吧 | 精品96久久久久久中文字幕无 | 国产黄色观看 | 99久久夜色精品国产亚洲 | 日韩久久电影 | 一区二区精品久久 | 久草视频在线观 | 久草新在线 | 成人久久视频 | 色av资源网 | www.xxxx欧美 | 亚洲成人家庭影院 | 国产不卡av在线 | 婷婷色社区| 日韩三级.com| 天天操天天操天天干 | 91九色网站| 日韩欧美电影在线 | 国产精品久久久久久久久费观看 | 国内揄拍国内精品 | 激情偷乱人伦小说视频在线观看 | 免费观看丰满少妇做爰 | 在线观看视频一区二区三区 | 精精国产xxxx视频在线播放 | 欧美性久久久久久 | 96香蕉视频 | 国产成人久久精品77777综合 | 一级片视频在线 | 日本乱码在线 | 五月婷婷久草 | 国产精品99久久久久久小说 | 91精品国产入口 | 欧美日韩一区二区在线观看 | 成人av资源在线 | 中文字幕在线观看国产 | 美女福利视频在线 | 国产美女网站在线观看 | 国产视频18 | 国产一二区免费视频 | 精品福利在线 | 中文字幕一区二区三区久久蜜桃 | 精品一区av | 午夜精品福利一区二区三区蜜桃 | 国产精彩视频一区 | 国产一区二区手机在线观看 | a级国产乱理伦片在线观看 亚洲3级 | 天天插综合网 | h视频日本| 亚洲影院国产 | 91精品综合在线观看 | 成人免费一级 | 毛片3 | 欧美一二区视频 | 成人全视频免费观看在线看 | 免费看国产曰批40分钟 | 99久久这里只有精品 | 国产精品一区二区三区视频免费 | 国产一区二区在线免费播放 | 黄色a一级视频 | 人人爽人人爽 | 亚洲免费视频在线观看 | 深爱五月激情五月 | 精品99在线视频 | 国产精品专区一 | 91激情| 亚洲最大的av网站 | 国产九九九精品视频 | 国产精品毛片一区视频 | 欧美日韩伦理一区 | 久章草在线 | 亚洲欧美久久 | 天天射天天爱天天干 | 色久综合| 天天天天综合 | 免费的黄色av | 亚洲视频 一区 | 园产精品久久久久久久7电影 | 91精品国产电影 | 午夜视频一区二区三区 | 国产精品福利一区 | 水蜜桃亚洲一二三四在线 | 天天干天天干天天干 | 天天躁日日躁狠狠躁av中文 | 美女免费视频网站 | 亚洲精品国产精品国自产观看浪潮 | 久久免费99 | 天天干.com| 天天操天天干天天操天天干 | www久| 亚洲91网站 | 国产精品免费视频网站 | 欧美另类sm图片 | 婷婷在线色| 成人黄色小说在线观看 | 福利网址在线观看 | 婷婷五月在线视频 | 国内一级片在线观看 | www.夜夜操.com| 97视频网址 | 久久精品福利视频 | 天天躁天天狠天天透 | 国产成人黄色 | 中文字幕一区二区三区久久蜜桃 | 黄色小网站免费看 | 精品国产乱码久久久久 | 国产高清视频在线播放 | 国产免费不卡 | 欧美一区二区三区激情视频 | 国产一卡在线 | 在线观看 亚洲 | 日本精品在线 | 91人人干 | 久久久精品网站 | 国产a高清 | 天天爱综合 | 一区二区三区精品在线 | 91久久爱热色涩涩 | 丝袜美腿在线视频 | 俺要去色综合狠狠 | www亚洲一区 | 97超级碰碰 | av成人在线播放 | 四虎成人av | 国产91全国探花系列在线播放 | 久久国产经典 | 天天综合网 天天 | 久久久久久久久久久免费av | av在线一二三区 | 国产精品区一区 | 日日碰狠狠躁久久躁综合网 | 亚洲天堂在线观看完整版 | 伊人中文网 | 黄色免费网站大全 | 欧美日韩中文视频 | 成人动漫视频在线 | 免费在线国产 | 69视频在线播放 | 国产一区免费在线 | 麻豆精品视频 | 亚洲影视九九影院在线观看 | 国产伦理一区二区三区 | 人人插人人爱 | 天天综合网国产 | 久久免费视频一区 | 97在线资源 | 国产在线日韩 | 视频二区在线 | 五月婷婷视频在线观看 | 国产免费久久精品 | 久久视频在线视频 | 日韩aa视频| 亚洲国产成人精品电影在线观看 | 成人亚洲网 | 日韩免费观看av | 国产精品6 | 日韩免费视频线观看 | 99re8这里有精品热视频免费 | 亚洲人在线7777777精品 | 国产成人三级在线 | 久久综合九色综合97_ 久久久 | 久久久久久97三级 | 午夜视频日本 | 国产999视频在线观看 | 成人免费在线看片 | 成年人电影免费看 | 91精品久久久久久久久久久久久 | 99国产精品一区二区 | 精品99999 | 免费韩国av | 五月婷婷导航 | 久久久国产精华液 | 国产精品久久久久久久久久直播 | 亚洲九九 | 亚洲国产精品va在线看黑人 | 成人国产精品久久久春色 | 婷婷深爱网 | 国产中文a| 国产va精品免费观看 | www五月天com| 久久精品视频免费观看 | 日韩av高潮 | 国产精品毛片网 | 美女视频久久久 | 亚洲欧美经典 | 精品久久久久久久久中文字幕 | 91伊人久久大香线蕉蜜芽人口 | 中文字幕免费高清 | 在线观看资源 | 亚洲精品视频偷拍 | 六月激情| 99 色| 亚洲精品黄色在线观看 | 玖玖在线精品 | av在线看片 | 91精品国产成 | 成人免费在线观看av | 久久久精品视频成人 | 国产福利在线免费观看 | 2019中文最近的2019中文在线 | 国产免费专区 | 五月婷婷丁香 | 天天干夜夜操视频 | 欧美精品久久久久久久亚洲调教 | 久久高清国产 | 亚洲欧美精品一区 | 欧美日在线观看 | 国产精品毛片一区 | 成人av中文字幕在线观看 | 最近高清中文字幕 | 日韩欧美在线一区二区 | 热久久电影 | 亚洲一区精品二人人爽久久 | 成人精品久久久 | 胖bbbb搡bbbb擦bbbb | 国产一区二区三区视频在线 | 日韩精品中文字幕有码 | 日韩在线播放欧美字幕 | 黄色免费电影网站 | 四虎国产精 | 日韩网站在线免费观看 | 久久国语露脸国产精品电影 | 日韩特级黄色片 | 91av在线视频免费观看 | 日韩最新在线 | 黄色视屏在线免费观看 | 99精品国产在热久久下载 | 中文av在线天堂 | 最近高清中文字幕在线国语5 | 久久图 | 日韩精品中文字幕有码 | 日韩av网站在线播放 | 精品国产免费看 | 国产一性一爱一乱一交 | 91视频久久久久久 | 永久免费的av电影 | 又黄又爽免费视频 | 久久九九久久九九 | 蜜臀一区二区三区精品免费视频 | www.夜夜操 | 欧美成年网站 | 综合久久久久久 | 国产一区二区久久久 | 天天操夜夜操 | 国内外成人免费在线视频 | 日本在线视频一区二区三区 | 国产免费片 | 玖玖玖在线观看 | 精品久久久久久久久亚洲 | 免费看在线看www777 | 国产理论一区二区三区 | 日韩动漫免费观看高清完整版在线观看 | 91黄色免费网站 | 一区二区激情 | 激情综合五月网 | 在线观看 国产 | 国产午夜精品免费一区二区三区视频 | 天堂视频一区 | 久久久久久久久久亚洲精品 | www好男人 | 日日久视频 | 亚洲播放一区 | 麻豆91精品视频 | 97av在线| 午夜精品久久久久久久久久 | 91免费观看视频在线 | 探花视频在线观看+在线播放 | 亚洲最新av在线网址 | 国产视频色 | 91黄色影视 | 99精品国产在热久久下载 | 成年人在线 | 超碰97久久 | 99久久综合狠狠综合久久 | 日韩精品中文字幕在线观看 | 91亚洲精品久久久蜜桃网站 | 人人玩人人添人人 | 免费高清在线视频一区· | 亚洲精品男人天堂 | 日韩精品免费在线播放 | 超碰97人人爱 | 久久久久国产精品免费网站 | 一区二区不卡高清 | 97国产一区 | 黄色一级动作片 | 国产高清无av久久 | 国产精品视频地址 | 日韩精品免费在线视频 | av网站免费线看精品 | 日韩国产精品久久 | 青春草视频在线播放 | 国产专区在线 | 日本久久久影视 | 国产一级二级在线观看 | 91精品视频播放 | 福利一区在线 | 在线观看激情av | 91麻豆精品国产自产在线 | 国产做a爱一级久久 | 精品久久久久免费极品大片 | 精品二区视频 | 亚洲 中文字幕av | 91中文字幕网 | 日韩网站在线播放 | 5月丁香婷婷综合 | 2023天天干 | 亚洲成av人片在线观看www | 亚洲国产偷 | 国色天香在线 | 玖草在线观看 | 日韩免费在线播放 | 国产成人亚洲在线观看 | 中文字幕免 | 精品久久国产一区 | 国产精品久久视频 | 国产999免费视频 | 亚洲成av人影院 | 亚洲手机天堂 | 四虎www| 久久五月天色综合 | 国产高清在线 | 欧美日韩国产高清视频 | 成人久久| 97视频人人澡人人爽 | 天天干夜夜操视频 | 国产免费黄视频在线观看 | av中文字幕不卡 | 成人久久18免费网站麻豆 | 日韩精品一区二区在线观看视频 | 国产精品嫩草影院9 | 国产精品久久9 | 久久久久久久99精品免费观看 | 中文字幕色婷婷在线视频 | 国产手机精品视频 | 国产在线最新 | 精品天堂av| 亚洲精色| 果冻av在线| 波多野结衣精品 | 丝袜美腿亚洲 | 国产区欧美 | 成人国产精品一区二区 | 国产精品入口传媒 | 夜夜夜精品 | 亚洲1区在线 | 久草在线高清视频 | 91av综合| 久久久精品一区二区三区 | 韩国一区在线 | av电影中文字幕在线观看 | 又黄又刺激 | 91视频xxxx| 久久精品在线免费观看 | 天天干,天天射,天天操,天天摸 | 在线一区二区三区 | 国产最顶级的黄色片在线免费观看 | 日韩欧美有码在线 | 精品免费久久久久 | 日韩中文字幕视频在线 | 亚洲国产精品成人精品 | 国产黑丝一区二区 | 中文字幕亚洲综合久久五月天色无吗'' | 91av精品 | 婷婷六月综合亚洲 | 欧美91在线| 日韩精品在线视频免费观看 | 国产精品电影在线 | 成 人 黄 色 视频 免费观看 | 免费看搞黄视频网站 | 九九色网 | 黄色大片入口 | 蜜臀av性久久久久av蜜臀三区 | 91免费观看网站 | 国产 一区二区三区 在线 | 免费观看全黄做爰大片国产 | 国产免费高清 | 国产精品国产三级国产不产一地 | 日韩精品一区二区三区在线视频 | 99视频在线免费观看 | 国产探花 | ww亚洲ww亚在线观看 | 国产在线理论片 | 国产99久久99热这里精品5 | 免费在线看v | 久久久久伦理电影 | 丁香五月亚洲综合在线 | 99视频在线观看免费 | 日韩午夜精品福利 | 亚洲国内精品在线 | 精品在线观看一区二区 | 亚洲涩涩涩 | 精品免费观看视频 | 亚洲婷婷伊人 | 狠狠色噜噜狠狠狠狠2021天天 | av动态图片 | 天天操天天操天天操 | 一区二区三区在线免费播放 | 超碰97免费在线 | 中文字幕成人网 | 69视频国产 | 91免费观看视频在线 | 美女免费网视频 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 超级碰碰碰免费视频 | 国产高清免费在线播放 | 在线亚洲精品 | 成人黄色在线视频 | 波多野结衣电影一区二区三区 | 日日干网 | 天天操天天艹 | 天天爱天天操天天射 | 国产精品永久在线观看 | 91chinese在线| 精品资源在线 | 日本中文字幕在线播放 | 在线免费中文字幕 | 国产淫片免费看 | 日精品在线观看 | 久久高清片 | 不卡的av电影 | 777xxx欧美 | 欧美在线aa | 亚洲天堂免费视频 | 在线观看网站av | 国产精品国产三级在线专区 | 国产亚洲欧美日韩高清 | 国产精品永久久久久久久久久 | 国产精品国产三级国产 | 久久久久免费看 | 91中文字幕 | 国产成人一区二区三区免费看 | 香蕉网在线播放 | 色99之美女主播在线视频 | 亚洲播播 | 婷婷深爱 | 色综合久久中文综合久久牛 | 久久不色 | 日本久久久久久久久 | 成人欧美一区二区三区在线观看 | 亚洲精品视频网站在线观看 | 成人性生交大片免费看中文网站 | 91麻豆文化传媒在线观看 | 亚洲视频在线免费观看 | 激情久久网 | 99视频在线免费看 | 97在线视频网站 | 国产亚洲精品久久久久久久久久久久 | a午夜在线| 欧美日韩在线视频一区二区 | 操操日日 | 国产破处在线播放 | 91成人天堂久久成人 | 国产精品短视频 | 欧洲色吧| 久久影视精品 | 天天爱天天操天天干 | 中文字幕免费观看全部电影 | 欧美最新大片在线看 | avhd高清在线谜片 | 天堂av在线7| 中文字幕日本在线 | 丁香久久综合 | 国产视频在线观看一区 | 精品黄色视| 午夜久久精品 | 顶级bbw搡bbbb搡bbbb | 日韩视频免费观看高清 | 中文字幕在线影视资源 | 在线日韩中文字幕 | 久久久视频在线 | 五月天国产 | 久久99精品一区二区三区三区 | 欧美午夜精品久久久久 | 久久精品99国产精品酒店日本 | 国产一区二区三区免费在线观看 | 97精品国产97久久久久久春色 | 久草在线免费看视频 | 麻豆影视在线免费观看 | 精品在线观看视频 | 亚洲精品视频在线观看免费 | 欧美色精品天天在线观看视频 | 欧美热久久 | 免费瑟瑟网站 | 在线观看免费视频 | 欧美一区二区三区免费看 | 天天色天天骑天天射 | 伊人春色电影网 | 18做爰免费视频网站 | 久久久黄色av | 成人在线观看免费 | 成人黄色在线电影 | 精品视频在线免费观看 | 黄色大片av | 丁香婷婷自拍 | 一区二区日韩av | 久久精品日韩 | 欧美影片| 欧美日韩国产精品一区 | 色网站视频 | 久久精品国产一区二区 | 日本久久久久 | 日韩字幕| 久久精品国产成人精品 | 亚洲久在线 | 国产精品久久久久久久免费观看 | 超碰在线天天 | 91精品视频免费看 | 99精品久久久久久久 | 国产精品午夜8888 | 久久免费看a级毛毛片 | 国产一区二区午夜 | 日韩欧美在线观看一区二区三区 | 欧美成人猛片 | 精品一区二区在线播放 | 精品国产免费一区二区三区五区 | 亚洲电影一级黄 | 国产一级二级av | 福利一区在线视频 | 成人久久毛片 | 婷婷综合视频 | 日韩电影在线观看一区二区 | 久久精品理论 | 成人黄色影片在线 | 欧美a级在线免费观看 | 五月婷婷中文字幕 | av蜜桃在线| 亚洲国产精品va在线看 | 中文字幕欧美激情 | 在线免费视频 你懂得 | 久久精品5 | 国产淫片免费看 | 激情av网址 | 国产成人专区 | 午夜性色 | 国产亚洲视频在线 | 婷婷丁香激情网 | 免费av观看网站 | 91av片 | 人九九精品| 日韩av视屏 | 激情视频一区 | 天堂av一区二区 | 99这里都是精品 | 玖玖视频网| 亚洲在线高清 | 国产专区在线播放 | 精品综合久久 | 久久国产精品久久精品 | 综合激情网 | 香蕉精品视频在线观看 | 最新国产在线视频 | 成人网页在线免费观看 | 色婷婷久久久 | 亚洲经典视频在线观看 | 久久日本视频 | 91污污视频在线观看 | 999久久精品| 久久久久国产免费免费 | 欧美亚洲成人免费 | 欧美不卡视频在线 | 欧美日韩3p | 中文字幕 国产 一区 | 成年人网站免费观看 | 麻豆精品视频 | 在线观看久 | 999日韩 | 国产精品久久久久亚洲影视 | 国产精品日韩在线播放 | 日韩二区三区在线 | 麻花天美星空视频 | 毛片二区| 在线观看福利网站 | 亚洲欧美精品一区 | 美女福利视频 | 奇米影视8888在线观看大全免费 | 成人国产精品一区 | 在线影院中文字幕 | 免费91麻豆精品国产自产在线观看 | 久草免费色站 | 久久国产精品99久久久久 | 久久人人97超碰国产公开结果 | 国产香蕉视频 | 欧美视频网址 | 天天综合网 天天综合色 | 国际精品久久 | 日本激情动作片免费看 | av在线不卡观看 | 美女网站色 | 香蕉视频在线看 | 69亚洲视频 | 久久久片 | 干 操 插| 福利视频一区二区 | 在线成人高清电影 | 伊人六月 | 亚洲国产成人在线 | 顶级欧美色妇4khd | 日韩久久一区二区 | 免费成人结看片 | 国产精品久久99综合免费观看尤物 | 日韩.com| 日韩高清www | 区一区二在线 | 午夜精品一区二区三区在线视频 | 亚洲视频在线观看免费 | 99视频在线免费观看 | 伊人丁香 | 欧美日韩调教 | 国产精品久久久久久久久久久久 | wwwwww国产 | 亚洲日本一区二区在线 | 国产精品久久久久久久免费 |