MCU上玩轉Linux系列之十四:全新設計Boot來加載啟動Linux(1)-shell實現

原創 嵌入式Lee 2025-06-04 08:00

一. 前言

    目前我們的鏡像:boot程序,設備樹文件和內核鏡像都是一起放在芯片內部的FLASH中的, boot也僅僅是初始化了SDRAM然后跳到Linux內核處運行而已。

    隨著后面開發需求增加,會添加更多的驅動,內核鏡像也會越來越大,此時芯片內部的2MB FLASH就不夠用了,我們需要一個能從不同存儲介質加載LinuxSDRAM中運行的Boot,所以我們現在開始就來全新設計一個功能更完善的Boot

    為什么我們不移植UBOOT呢? 一方面UBOOT太大了,另一方面要體現我們玩轉的性質,我們本系列文章就是要從0開始玩轉Linux的方方面面,所以所有的東西我們都盡可能自己從0開始造,這樣有助于對整個Linux開發更加透徹的理解,以這種方式學習是最能夠深入的學習方式。且這樣才是學習之道,而不是被動接受別人的

    當你建立了一個又一個自己的輪子之后,你就像是嵌入式領域的哆啦A夢,任何需求你都可以從自己的輪子庫里快速找到素材來完成。而如果你只會使用別人的輪子,且得意于此,甚至以大論調不要重復造輪子來作為借口,且不深入理解使用的輪子的原理時,則永遠無法進步,只能在嵌入式門外看看算不上入門。

代碼見:https://github.com/qinyunti/stm32f429-boot.git


二. Boot的架構設計

    我們先按照現在的基本需求,來進行一個框架設計,后面再不斷實現,完善,迭代。

先簡單整理一下需求

1.準備基本的運行環境,SDRAM初始化等,這個現在已經具備。

2.要能夠實現外部存儲介質的讀寫。暫時先實現SPI FLASH后面再實現SD卡等存儲介質的讀寫。

3.要設計鏡像的存儲結構,比如HEAD信息的設計,從HEAD信息來判斷設備樹,內核鏡像從哪加載,加載到哪去等等。 具體細節我們后面實現時再詳細完善。

4.要能夠實現鏡像等文件的導入導出,實現xmodem方式傳輸文件。

5.需要有人機交互方式這里先實現簡單的SHELL和調試打印輸出等。然后實現一些有用的命令行:SPIFLASH的修改,查看,鏡像下載,導出,直接運行鏡像等等。

設計框架如下


有幾個大的功能需要實現

1.實現基于循環緩存區的串口驅動,方便基于此實現串口打印,xmodem文件傳輸,以及shell交互。

2.實現存儲介質SPI FLASH的驅動,提供讀寫接口,實現SHELL導入導出SPI FLASH數據。

3.實現鏡像存儲結構的設計,實現燒錄鏡像,加載鏡像運行。

后面我們就按照上述功能模塊來分多篇介紹。本篇先介紹串口驅動實現,shellxmodem實現部分。

三. 基于FIFO的串口驅動

    得益于我們公眾號之前分享的輪子,所以現在要實現這些功能就很簡單了。

基于FIFO的串口驅動,參見我們之前公眾號分享的文章《https://mp.weixin.qq.com/s/MvL9eDesyuxD60fnbl1nag 超級精簡系列之十三:超級精簡的循環FIFO,C實現》

https://mp.weixin.qq.com/s/vzjWu2LxpVGZw-msCooh8Q 超級精簡系列之十六:基于IO模擬+FIFO的串口驅動》

這里我們只需要串口初始化,接收中斷將收到的字節寫入FIFO,發送字節接口即可。移植我們的輪子非常簡單。詳見uart.c/h。這里不再贅述。

uart.c

#include <stdint.h>#include "stm32f429xx.h"#include "clock.h"//#define USART_SR_TXE  (1 << 7)//#define USART_CR1_RE  (1 << 2)//#define USART_CR1_TE  (1 << 3)//#define USART_CR1_RXNEIE  (1 << 5)//#define USART_CR1_UE  (1 << 13)static uint32_t reg_base[1]={0x40011000};#include "uart.h"#include "fifo.h"#define CriticalAlloc()#define EnterCritical() asm volatile ("cpsid i")#define ExitCritical()  asm volatile ("cpsie i")static uint8_t s_uart_rx_buffer[1029];static fifo_st s_uart_fifo_dev[2]={    {     .in = 0,     .len = 0,     .out = 0,     .buffer = s_uart_rx_buffer,     .buffer_len = sizeof(s_uart_rx_buffer),    },};void uart_rx_cb(int id, uint8_t* buff, uint32_t len){    fifo_in(&(s_uart_fifo_dev[id-1]), buff, len);}void uart1_irqhandler(void){    volatile uint32_t *USART_SR  = (uint32_t*)(reg_base[1-1] + 0x00);    volatile uint32_t *USART_DR  = (uint32_t*)(reg_base[1-1] + 0x04);    uint8_t ch;    /* 讀字節 */    if(*USART_SR & USART_SR_RXNE){        ch = (uint8_t)(*USART_DR);        /* 清中斷 讀DR自動清除標志 */        uart_rx_cb(1, &ch, 1);    }}void uart_init(int id, uint32_t baud){    if(id == 1){        volatile uint32_t *USART_BRR = (uint32_t*)(reg_base[id-1] + 0x08);        volatile uint32_t *USART_CR1 = (uint32_t*)(reg_base[id-1] + 0x0C);        volatile uint32_t *USART_CR2 = (uint32_t*)(reg_base[id-1] + 0x10);        volatile uint32_t *USART_CR3 = (uint32_t*)(reg_base[id-1] + 0x14);        uint32_t int_div, frac_div, val;        *USART_CR1 = USART_CR1_TE | USART_CR1_RE;        *USART_CR2 = 0;        *USART_CR3 = 0;        int_div = (25 * (clock_get_ahb()/2)) / (4 * baud);        val = (int_div / 100) << 4;        frac_div = int_div - 100 * (val >> 4);        val |= ((frac_div * 16 + 50) / 100) & 0xf;        *USART_BRR = val;        *USART_CR1 |= USART_CR1_UE;        *USART_CR1 |= USART_CR1_RXNEIE;        //NVIC_SetPriority(USART1_IRQn,2,0);        NVIC_EnableIRQ(USART1_IRQn);    }}uint32_t uart_send(int id, uint8_t* buffer, uint32_t len){    if(id == 1){        for(uint32_t i=0;i<len;i++)        {            volatile uint32_t *USART_SR  = (uint32_t*)(reg_base[id-1] + 0x00);            volatile uint32_t *USART_DR  = (uint32_t*)(reg_base[id-1] + 0x04);            while (!(*USART_SR & USART_SR_TXE));            *USART_DR = buffer[i];        }    }    return len;}uint32_t uart_read(int id, uint8_t* buffer, uint32_t len){    uint32_t rlen;    CriticalAlloc();    EnterCritical();    rlen = fifo_out(&(s_uart_fifo_dev[id-1]), buffer, len);    ExitCritical();    return rlen;}
uart.h
#ifndef UART_H#define UART_H#ifdef __cplusplusextern "C" {#endif  #include <stdint.h>void uart_init(int id, uint32_t baud);uint32_t uart_send(int id, uint8_t* buffer, uint32_t len);uint32_t uart_read(int id, uint8_t* buffer, uint32_t len);void uart1_irqhandler(void);#ifdef __cplusplus}#endif#endif

四. 打印

    移植xprintf前面已經介紹,這里需要換一下輸出接口

static void xprintf_out(int ch){    uint8_t c=(uint8_t)ch;    uart_send(1, &c, 1);}

五. SHELL

  還是參考我們之前實現的輪子https://mp.weixin.qq.com/s/XLmbJn0SKoDT1aLdxHDrbg 一個超級精簡高可移植的shell命令行C實現

添加shell.c/h; shell_func.c/h

Shell的讀寫接口

static uint32_t shell_read(uint8_t *buff, uint32_t len){    return uart_read(1,buff,len);} static void shell_write(uint8_t *buff, uint32_t len){    uart_send(1,buff,len);}

設置3秒內按回車進入shell

static int wait_key(uint32_t timeout){    uint32_t cur;    uint32_t pre = get_ticks();    uint8_t c;    xprintf("Press Enter Key To Go To SHELL...\r\n");    while(1){        if(uart_read(1,&c,1) > 0){            if(c == 0x0D){                return 1;            }        }        cur = get_ticks();        if((cur - pre) >= timeout*1000){            return 0;        }    }}     if(wait_key(3)){        shell_set_itf(shell_read, shell_write, (shell_cmd_cfg*)g_shell_cmd_list_ast, 1);        while(1){            shell_exec();        }    }

測試如下

我們再添加一個打印任意內存地址的函數

shell_func.c中添加

static void printmemfunc(uint8_t* param);

g_shell_cmd_list_ast中添加

{ (uint8_t*)"printmem",     printmemfunc,     (uint8_t*)"printmem mode[hex/dec] addr[hex] len datasize[8/16/32] sig[1/0]"}, 

實現如下

static void printmemfunc(uint8_t* param){  uint32_t addr;  uint32_t len;  uint8_t mode[64];  int datasize;  uint8_t* tmp8_u;  uint16_t* tmp16_u;  uint32_t* tmp32_u;  int8_t* tmp8_i;  int16_t* tmp16_i;  int32_t* tmp32_i;   int sig;#if 0  if(5 == sscanf((const char*)param, "%*s %s %lx %ld %d %d", mode, &addr, &len, &datasize, &sig))#else  char* p =(char*)param;  while(1){  /* 跳過%*s部分 */    if((*p > 'z') || (*p < 'a')){      break;    }else{      p++;    }  }  while(1){  /* Skip leading spaces */    if(*p != ' '){      break;    }else{      p++;    }  }  uint8_t* p_mode = mode;  while(1){  /* mode部分 */    if((*p > 'z') || (*p < 'a')){      break;      *p_mode = 0;    }else{      *p_mode = *p;      p_mode++;      p++;    }  }  long tmp;  xatoi(&p, &tmp);  addr = tmp;  xatoi(&p, &tmp);  len = tmp;  xatoi(&p, &tmp);  datasize = tmp;  xatoi(&p, &tmp);  sig = tmp;#endif  {    if(strncmp((const char*)mode,"hex"3) == 0)    {      if(datasize == 8)      {        tmp8_u = (uint8_t*)addr;        for(uint32_t i=0; i<len ;i++)        {          if(i%16 == 0)          {            xprintf("\r\n[%08x]:",addr+i*1);          }          xprintf("%02x ",tmp8_u[i]);        }        xprintf("\r\n");      }      else if(datasize == 16)      {        tmp16_u = (uint16_t*)addr;        for(uint32_t i=0; i<len ;i++)        {          if(i%16 == 0)          {            xprintf("\r\n[%08x]:",addr+i*2);          }          xprintf("%04x ",tmp16_u[i]);        }        xprintf("\r\n");      }      else if(datasize == 32)      {        tmp32_u = (uint32_t*)addr;        for(uint32_t i=0; i<len ;i++)        {          if(i%16 == 0)          {            xprintf("\r\n[%08x]:",addr+i*4);          }          xprintf("%08x ",tmp32_u[i]);        }        xprintf("\r\n");      }      else      {        xprintf("datasize must be 8/16/32\r\n");      }    }    else if(strncmp((const char*)mode,"dec"3) == 0)    {      if(datasize == 8)      {        if(sig == 0)        {          tmp8_u = (uint8_t*)addr;          for(uint32_t i=0; i<len ;i++)          {            if(i%16 == 0)            {              xprintf("\r\n");            }            xprintf("%d ",tmp8_u[i]);          }          xprintf("\r\n");        }        else        {          tmp8_i = (int8_t*)addr;          for(uint32_t i=0; i<len ;i++)          {            if(i%16 == 0)            {              xprintf("\r\n");            }            xprintf("%d ",tmp8_i[i]);          }          xprintf("\r\n");        }      }      else if(datasize == 16)      {        if(sig == 0)        {          tmp16_u = (uint16_t*)addr;          for(uint32_t i=0; i<len ;i++)          {            if(i%16 == 0)            {              xprintf("\r\n");            }            xprintf("%d ",tmp16_u[i]);          }          xprintf("\r\n");        }        else        {          tmp16_i = (int16_t*)addr;          for(uint32_t i=0; i<len ;i++)          {            if(i%16 == 0)            {              xprintf("\r\n");            }            xprintf("%d ",tmp16_i[i]);          }          xprintf("\r\n");        }      }      else if(datasize == 32)      {        if(sig == 0)        {          tmp32_u = (uint32_t*)addr;          for(uint32_t i=0; i<len ;i++)          {            if(i%16 == 0)            {              xprintf("\r\n");            }            xprintf("%d ",tmp32_u[i]);          }          xprintf("\r\n");        }        else        {          tmp32_i = (int32_t*)addr;          for(uint32_t i=0; i<len ;i++)          {            if(i%16 == 0)            {              xprintf("\r\n");            }            xprintf("%d ",tmp32_i[i]);          }          xprintf("\r\n");        }      }      else      {        xprintf("datasize must be 8/16/32\r\n");      }    }    else    {      xprintf("mode must be [hex/dec]\r\n");    }  }}

測試打印0x080000016word如下

六. 總結

    以上基于我們之前積累的輪子,完善了串口驅動提供了對應的串口讀寫接口方便其他模塊使用。實現了shell,現在就可以在boot時按回車進入shell,進行交互操作。以一個打印任意mem地址處內容的shell命令實現為例,演示了shell命令行的添加方法,后面就可以不斷擴展shell指令,添加更多的功能。



評論
  • 產品使用18V供電,配套4串鋰離子電池,需要設計一個充電器。因為輸入18V,電池最高 16.8V,壓差僅 1.2V。因為壓差太小。使用開關型的充電控制芯片不穩定。嘗試自行設計一個。整體采用分立三極管 + TL431架構,分4個功能單元:使能控制回路、限流環路、TL431 精密恒壓反饋環路、PNP 功率管主功率輸出回路;實現完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經 R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導通,對地拉低 R1、R2 組成的分壓控制節點電位;該節點直
    southcreek 2026-08-07 13:45 350瀏覽
  • 做藍牙音箱的工程師大概都碰過這個局面。產品要連手機放歌,要本地播開機提示音和按鍵音,還要接 App 做配網和狀態上報。三件事拆開,早先的常規做法是音頻藍牙一顆料、數傳藍牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍牙、BLE 數傳和 MP3 本地播放三樣全包了。對藍牙音箱來說,最實在的好處就
    唯創知音語音芯片 2026-08-06 15:14 296瀏覽
  • 在EMC測試過程中,傳導發射(Conducted Emission,CE)超標是工程師最常遇到的問題之一。更令人頭疼的是,同樣的超標曲線背后,可能對應著完全不同的干擾機理:有的是差模噪聲沿電源回路傳播,有的是共模電流通過寄生路徑耦合,還有些問題甚至并非來自電源本身,而是負載、電纜布局或接地結構引起的連鎖反應。 · 150kHz~1MHz 超標:多為差模噪聲為主,干擾沿火線-零線回路傳輸。 · 1MHz~30MHz 超標:通常共模噪聲占主導,干擾通過火線/零線對地回路傳播。 如果條件允許,用電流探
    譽磁電磁兼容EMC 2026-07-31 18:45 511瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩定起振的成品,要經過十幾道精密工序。它內部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個生產過程里哪怕0.1微米的誤差,都會直接廢掉整批產品,這也是小尺寸晶振過去長期依賴進口,國內廠商花了十幾年才啃下量產硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 393瀏覽
  • 摘要在防爆電氣設計中,只參照芯數選型而忽略額定載流量,長期滿負荷運行會出現插頭發熱、接觸面氧化、IP67 密封受熱老化等問題。結合常用 3 針 3 孔、4 芯、5PIN、8PIN 圓形防爆連接器,制作分級電流參數對照表,區分冷壓免焊接、焊接兩種接線結構的安全載流數值,設置合理電流冗余系數,搭配使用環境修正參數,規范防爆接近開關連接器、防爆法蘭插座的選型計算方式。關鍵詞圓形防爆連接器,載流參數表,防爆法蘭插座,防爆端子接頭,IP67 防爆防水接插件1 產品概述圓形防爆連接器觸點載流能力由插針直徑、
    kyfbest科迎法電氣 2026-08-03 09:18 128654瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 128521瀏覽
  • 導語在現代高速數字電路設計中,信號的完整性已不僅是理想波形推演,而是一場與物理非理想特性正面博弈的工程實踐。濾波器芯片作為凈化傳輸鏈路的關鍵屏障,其核心挑戰在于:能否有效識別并濾除那些隱匿在電平跳變過程中的亞納秒級瞬態脈沖干擾,這類干擾持續極短,卻足以在高速鏈路中引發誤觸發。然而,傳統函數發生器受限于采樣率與邊沿速率,根本無法忠實復現如此狹窄且陡峭的異常波形。針對此困境,德思特TS-AWG7000系列任意波形發生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態脈沖提供精細刻畫,配合SPG
    德思特測試測量 2026-08-05 14:06 5瀏覽
  • 在物聯網從“萬物互聯”邁向“萬物智聯”的進程中,LTE Cat.1憑借其在速率、成本與網絡覆蓋之間的完美平衡,正成為中低速物聯網市場的絕對主力。隨著2G/3G網絡的逐步退網以及新國標對終端設備智能化、定位功能的強制要求,Cat.1模組迎來了爆發式的增長窗口。在這一關鍵節點,基于華為海思Hi2131芯片設計的LTE Cat.1模組,憑借其在能效、射頻、架構及物理規格上的底層創新,成功打破了“高性能必高功耗”的傳統魔咒,為行業提供了極具競爭力的連接最優解。核心技術優勢:重塑Cat.1能效與連接標桿海
    用戶1778981989717 2026-08-05 21:04 177瀏覽
  • 在前六期中,我們已經分別討論了 CRA 的適用范圍、整體影響、漏洞通報義務、風險評估與技術文檔證據鏈、第三方組件與 SBOM 供應鏈治理,以及產品上市后的支持期、安全更新、用戶說明和終止支持管理。到這里,企業已經能夠回答幾個核心問題:產品是否落入 CRA 適用范圍,產品由哪些組件構成,企業如何證明自己在設計、開發和上市前采取了必要的安全措施,以及產品上市后如何持續維護和安全下線。但對于真正準備落地 CRA 合規的企業來說,還有一個更現實的問題:CRA 的法規條文相對原則化,企業應當如何把“網絡安
    虹科云科技 2026-08-03 16:51 177723瀏覽
  • ?摘要:低價大流量卡正全面退市,政策收緊已成定局。面對傳統號卡的不確定性,隨身WiFi憑借穩定連接、多設備共享、獨立設備和靈活套餐等優勢,成為務實可靠的備選方案。1、流量卡黃金時代要結束了通信行業正迎來一場前所未有的“地震式”調整——曾讓無數用戶追捧的低價大流量卡,正在全速退出各大平臺。這早已不是一次普通的競合,而是一場趨勢性的行業洗牌。回望過去,19元200G的神卡,那時真是“睡著都能笑醒”,便宜到不敢相信,爽到忍不住炫耀。那些日子,好像隨便刷、隨便看,流量自由觸手可及。可如今,回頭再看,那種
    愛上電路設計 2026-08-03 10:21 128896瀏覽
  • 文:杜杰編輯:侯煜當地時間7月28日,美國特朗普政府落地最新科技封鎖政策,美國聯邦通信委員會(FCC)正式更新《受管制清單》,新增兩大類設備——境外生產的先進機器人設備、境外生產的聯網電力逆變器。FCC在官方情況說明書中明確,該類境外制造產品,“會對美國國家安全或美國民眾的人身安全構成無法承受的風險”。本次新規設置明確豁免機制:經美國國防部(DoW)、電力逆變器品類經美國國土安全部(DHS)審核并授予“有條件批準”,認定對應設備品類不存在重大安全風險,即可獲得準入豁免。同時政策嚴格執行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 336瀏覽
我要評論
0
點擊右上角,分享到朋友圈 我知道啦
請使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 独行侠字幕| 刀郎田震唱哭全场| melody在线播放高清观看女超人| 女友的闺蜜电影| 韩日R| 爱情公寓盗墓笔记| 济南到北京动车时刻表| 《花儿与少年》被曝重启| 整蛊专家3| 男按摩师吸乳房HD中字| 《淑女飘飘拳》免费观看全集| 守护天使国语版| 17.3电影在线观看| 妈妈的星星号| 本乡爱电影免费观看2023年上映| 朋友的女人| 年代秀20120706| 高清棒球大联盟未删减| 抹布女电视剧全集| 战狼9欧式少女中文版| 终极追捕演员表| 空即是空电影完整版| 欧美日韩电影维修工的艳遇5 | 霜花店qvod| 男人女人一起愁愁愁电视剧观看在线 | 《哈哈哈哈哈 第六季》| 八仙饭店伊波拉病毒| 熊出没新版| 三个傻boy| 十二猴子| 修理工的艳遇Bd| 《之后2》高清在线观看| 布拉芙夫人在线免费观看| 法航空姐3观看| 独行月球在线观看| 金坛市| 甜性涩爱高清全集| 永远的母亲| 肯纳詹姆斯《空乘》| 湖北卫视综合频道| 庄子哪个学派| 铜铜钢铿锵锵锵免费观看高清免费观| 名侦探柯南713| 环翠峪门票| 伦理法国护士完整版| 九尾狐传说| 越南腐剧《雇佣契约》| 斯巴达成HR版| 青春之旅电影| 《4位少妇精油按摩记》 | 黑帮大佬的365第二季免费观看| 虚颜电视剧一共多少集| 跟部长出差的温泉之旅在线观看| 大尺度动作片| 骑士动漫| 乐游原电视剧免费观看完整版| 崛起之第三帝国| 禽我无删减版在线观看| 日本电影《律师坠落》的剧情简介魔| 山河令36集全集免费播放| 借爸爸的种子(美囯版)| 恒大世俱杯录像| 麦乐迪和父亲争执电影 | 妻子的姐姐1| 张军高凌| 杨敏思版1-5电视大结局在线观 | 蛇姬恋泰剧未删减版本| 3d蒲团肉完整版高清| 父女乱之小芳的快乐生活| 淑女欲望日记| 缺德法师| 千指大人| 美女死尸| 电视剧魂断秦淮| 人猿泰山hr版1995在线观看| 梁祝艳谭电影全部播放| CAROLINEDUCEY| 阿彻恶男| 炎炎夏日| 销售的销售秘密1HD中字| 赌博默示录第三季| 温泉旅行2在线观看| 《偿还3》完整版| 特殊客房1983经典版介绍| 站着再来一次30集免费看| 尸家重地 国语| 巜人妻私密按摩师2| 一起长大电视剧| 女儿的朋友1免费观看全集电视剧| 战狠6免费观看全集| 无处藏身全集电视剧免费观看| 两人互换麦子3| 无上战神| 楼下的租客| 坎贝奇《品味人生无憾》免费播放 | 小鲤鱼跳龙门电影| 慈禧太后秘密生活| 越狱全集| 一生一世谢霆锋高圆圆| 怀集县| 杨钰莹情陷红楼| 疯狂动物城(国语版)普通话| 风间由美《义子的侵犯》| 现在就出发二免费观看完整版| 火影忍者静音| 士兵突击电视剧全集免费| 《伦理按摩2》大片| 加勒比海盗4(惊涛怪浪)电影| 琼海市| 大宅门在线观看| 上海滩主题曲简谱| 混血儿的摇篮曲在线观看完整版| 3d肉蒲团 蓝燕| 斗破苍穹年番第56集免费观看| 悠悠寸草心第1部| 黑雾电视剧免费观看完整版 | 傲世九重天主题曲| 赤板栗牙医电影观看| 熊出没免费全集观看| 蝴蝶与鲸鱼| 意大利《荒岛女儿国》在线播放电影| 美人图秋瓷炫被搓奶第几分钟| 宁安如梦电视剧免费观看全集播出| 电影大兵的寝室美剧免费观看全集 | 高压监狱2在线观看完整免费高清原声 | 还愿多少钱| 情非情电视剧全集免费播放| 《茂盛的森林》免费观看| 唐人街探案3正片完整版免费观看| 隐形帽子在线观看| 《热血青春》凯帕克| 太子妃她是隐藏大佬全集免费| 雾都奇遇夜电影免费观看| 美味快递中字2015| 酒店激战第1-5集免费观看李丽珍| 韩泼水门高管停职| 大话女儿国| 白峰电影在线播放2019年| 千王之王重出江湖| 包拯大干秦香莲| 台剧黛比《浪漫家教》在线观看| 樱兰高校男公关部电影版| 刻在你心底的名字免费观看完整版 | 爱情与灵药在线观看| 安娜的妈妈偷看儿子手机是哪一集 | 和讨厌的部长去出差旅| 凡人修仙传动漫超清4K| 高清《致命弯道11》| 农场保卫战满天星| 拜托了机长剧情介绍| 天注定在线观看完整版| 女律师的坠落日语版| 银河护卫队圣诞特别篇| 隔离七日晴| 韩剧想你| 轻轻的告诉你简谱| 勤劳的继拇中字| 火线传奇3| 兔子先生第一季第8期| 《欢迎光临》电视剧免费版| 无声蛙鸣免费观看全集完整版| 黑洞频率| 美国电影想要爸爸播种| 宁夏卫视节目表| 入青云电视剧免费观看完整版高清| 《急诊护士》无删减播放| 红豆女之恋| 德田重男的电影播放| 情陷夜中环2| 女官女相:权倾朝野短剧全集| 三妹影院在线观看免费播放电视剧| 疯狂鉴宝团| 隐秘的真相短剧免费观看| xl司令动漫第一季全集无马赛克 | 一双绣花鞋电影| 《百劫红颜》| 儿子与情人免费播放| 男性按摩师按摩私处电影| 消失的十一层| 金战演员表| 玉环县| 韩国产理伦片在线观看| 舒淇的献身集| 《塞伦三部曲》在线观看| 八十八佛忏悔文唱诵| 中国好声音直播现场| 《和部长一起去出差旅》在线观看 | 哈利波特1中文版| 铿锵免费看在线观看| 杀死比尔1完整版电影| 年轻丰满的继母3免费| 玻钻之争国语版全集优酷| 日本无尺码小浪花| 野兽电影在线观看| 阿部夏树的电影| 二龙湖爱情故事2免费看| 怦然心动50免费完整版| 金花瓶3之爱的供养| 偶然闯入的世界电视剧免费观看| 爱不懂事| 越南丰满BBWBBW| 女销售卖房子视频| 欲望爱人电影线观看完整| 明星换脸免费观看方法 | 石敢当之雄峙天东电视剧| 太原电视台新闻频道| 半兽人的魔法世界| 男生和女生拔萝卜| 性教育电影下载| 隐形帽| 斗破苍穹58| 星际迷航1百度影音| 杨思敏版1~5集全集电视剧| 《妻子的选择》| 食味阿远| 韩剧《隐形的帽子》免费观看| 青岛DJ小可| 韩国毛片同学韩妈妈屮文字惹| 李采潭电影全部全集免费观看| 为爱所困电视剧| 仁心解码第一部| 宫心计国语| 一路走来一路读| 火影忍者国语版| 《机智的医生生活》电视剧| 梦回鹿鼎记| 高压监狱1时43分多少| 快乐星球全集| 人世间电视剧全集免费观看高清| 《牙医姊妹》完整版1986| 陈陈相因| 善良的医生在线观看| 《瓜达卢佩的玫瑰》电影免费观看 | 热血无赖怎么玩不了| 神武天尊在线观看| 倔强驱魔师免费观看| 哈利波特与魔法石百度影音| 年经母年3| 周生如故在线播放免费观看 | 印度藏歌| 圣特罗佩姑娘们满天星电影| 鬼吹灯之牧野诡事第二季电视剧| 千王1991| 牝教师樱花动漫| 苹果香原唱| 江湖夜雨十年灯电视剧| 又见逍遥电视剧免费观看全集| 电视剧九九全集播放| 斗罗大陆155集柳二龙| 金装鬼打鬼| 倔强驱魔人の花子在线免费观看| 甜蜜家园免费观看| 酒店1-75集全集免费| 影音资源网| 陀枪师姐4| 近距离恋爱电影版| 千金与佣人电影观看里的揉大白兔 | 北京辉子哥| 详情: 解决学生的性爱烦恼不穿内衣裤的美波老师硬硬教学 _美波汐里 - 91n | 一起来看流星雨动漫| 漂亮的保姆完整版中文字幕| 麻豆《维修艳遇》在线| 日本战狼4免费国语| 新金品梅2013电影| 善良的的瘦子| 刀郎2002年的第一场雪| 伊拉克被迫暂停人民币结算| 锵锵锵锵锵锵锵锵电视剧免费观看| 谈判官电视剧免费观看完整版 | 老九影院| 法国护士长2006| 好男人影视在线观看西瓜| 合肥话评书| 日本伦理片女律师的多落 | 高清凤仙花未删减| xxxx69美国| 美国电影大全免费观看高清完整版| 电影三人一次性体检 | 《朋友夫妻:交换3》| 恋恋茶园电视剧免费| 非人哉のエロ动漫| 夫妻俩一起按摩精油在线观看 | 狂野情人动漫| 红娘子大结局| 高清137号案件未删减| 3对1,初次体检2| 《恋恋红尘》电视剧| 新闻联播预告彩蛋| 杨敏1-5集全集免费看| 免费论理片| 理想之城在线| 电影偷窥者| 插曲的痛60全集免费观看高清| 把娇妻借给朋友泄欲4| 上网赚钱的方法| 交换的温度4| 平成假面骑士| 《我的后半生》全集免费观看| 满天星电影免费观看| 男女愁愁电影免费观看| 筋膜黏连| 中业岛地图| 凯帕克全部电影| 命中注定我爱你免费观看| 追凶者也未删减| 《花与蛇·1》| 我的小姨全集在线观看| 我爱搞笑52g免费观看完整版 | 务川| 龙帅归来:都市风云全集免费| 我和黑帮大佬的的365在线观看| 哥哥的老婆韩国电影| 姐妹牙医完整版免费 在线观看| 铠真传 武士骑兵未删减| 坐火车旅行电影| 临潭县| 日本混血大学生按摩电影 | 甄嬛传全集迅雷下载| 愿有人陪你颠沛流离电视剧| 向连仓士献上纯洁| 《我的性生活》电影| 咒术回战第三季| 但愿你所求都能如愿是什么歌| 釜山行2在线观看免费观看完整版| 乡村小站玉儿嫂| 法国空少观看| 哪吒3在线观看免费版高清电影| 永生动漫在线观看免费全集高清| 《被可怕的科长欺负的新人| 她的伪装| 天使的翅膀简谱| 新僵尸先生国语高清| 黑白配视频免费大全在线观看| 说散就散 下载| 风暴西瓜在线观看免费完整版| 法国空姐2024满天星法版:星辉照耀下的职业光芒| 年轻的母亲节4| 韩国电影免费观看高清完整版在线 | 在线看庆余年| 坚果之王第一名是什么| 珠海航展2016时间表| 美景之屋6无删减电影| 风儿阵阵吹全集| 猎场下载| 人猿泰山主演1995版| 《活着》电影完整版| 极道之恋| 秘密访客| 酒店1-70集免费观看高清| 诡异电梯| 八佰免费完整版在线观看| 韩剧出轨的女人免费完整高清电视剧| 苍老师电视剧36集全免费播放| 播放阿宝| 天上掉下个猪八戒全集 | 《替夫还债3》| 爱情与灵药在线观看| 卧底达子| 插曲的痛30集全集| 阿黛尔的生活未删| 简言的夏冬在线观看| 苍狼突击队电视剧全集在线观看| 爱有几何莫妮卡免费观看完整版| 紫钗奇缘粤语版| 把冰块一个一个挤出去| 孙老倔的春天倩倩| 韩国金银瓶电影在线观看 | 旅行时给儿子做了一次| 肯兰德桑德兰黑白配在线观看| 庆余年2电视剧免费全集在线观看| 女女女hd| 风语电视剧在线观看免费完整版| 高压监狱在线观看完整免费高清原声满天星奔跑吧式叫庆 | 北上电视剧免费观看| 法国电影《私人助理》叫什么名字| 五号特工组1部全集| 垃圾桶披萨| 强心脏110524| 女超人麦乐迪法国电影免费观看 | 美景之屋6版本全集在线观看 | 儿媳与爸爸免费观看电视剧全集| xl司令全集在线观看完整版高清| 侏罗纪公园4完整版| 断背山高清下载| 电视剧出逃的公主| 黑白配高清国语全集在线看| 善良的嫂子手机在线| 用烤箱烤鸡翅| 妈妈的男朋友5集理论| 倔强驱魔师1-4集免费动漫在线观看樱 | 《overflower》真人版在线| 一边亲\边下奶免费视频| 抗倭侠侣| 品味人生坎贝奇免费完整版| 癫凤狂龙| 《公的浮之手中字》免费| 库拉乌幻之记忆| 粉红大白菜在线观看 | 黑衣人小方| 在菲被绑架中国人遗体疑发现| 悲惨遭遇免费观看全集在线| 豪门弃妇:翻身成商业女王全集免费| 帝王计划怪兽遗产电视剧免费观看| 有鬼住隔壁国语| 过度保护的加穗子| 虎兄虎弟电影| 棘手狂情电影完整版| 黑白配中文完整| 韩剧命运派对| 李崇霄的经典作品回顾| 小伙被嘲买不起泡面一怒包圆| 一闪一闪亮星星电视剧| 蛇经常吐舌头是因为什么呢| 武山县| 高压监狱在线观看完整免费高清原声高烧美国电影| 一个人在黑夜里寻找散文诗宋湘波| 李玟墓地杂草已被清除| 疯狂小女生法国满天星剧情介绍 | 红衣美女| 全职法师第五季动漫免费观看全集| 斯诺登电影| 瑜伽室里的激情在线观看| 夏家三千金电视剧全集免费| 《私人航空》在线看| 处女膜电影| 善良的姐姐在线| 功夫教练| 比天堂还美丽 电视剧| 《贝拉6》免费观看高清| 热力四射2下载| 唐砖电视剧| 大山深处110| 幻影忍者动画片| 七姐妹电视剧免费观看全集在线| 年轻的姐夫在线| 反击第一季| 饥饿的女儿国| 泰国电视剧美人计| 非主流婚礼| 斩服少女完整版在线观看| 儿媳的滋味在线观看| 桃花运电视剧| 变形金刚4高清完整版| 三年在线现看免费大金三年中文| 韩剧《上司的秘密》电视剧 | 隐身的蓝色帽子免费完整版电影| 一楼一凤闷骚影院首页| 亲切的金子粤语趴桌子| 小贤和橘子今天的最新视频| 真维斯属于什么档次| 《勇敢的心》完整版免费观看| 丰胸乳房按摩电影| 天蚕变电视剧| 儿媳份的味道| 斗罗大陆免费观看完整版高清在线| 啄木鸟:女版《壮志凌云》音译成中文| 大赢家大鹏| 短道速滑王蒙| 日本变态整人节目| 双女任务高清无删减| 虎口脱险| 神龙斗士第二部| 特利迦奥特曼中文版| 插曲的痛全集在线观看| 唐朝豪放| 赘婿在线播放| 禁止的爱在线观看 国语版| 荷尔蒙3中文版| 狮子王2| 电影《人脉王》在线观看| 扫黑风暴免费播放| 远大前程2011| 美式忌讳6-10| 行尸走肉第三季13| 野王电影在线观看全集| 三年大片大全国语版| 电影《特殊游泳课》完整版| 《赤足惊魂》| 和部长一起去出差电影| 慈禧的生活秘史免费播放| 广场舞花好月圆夜| 美丽蜜桃2电视剧全集免费完整版| 《军事不当》在线播放| 天空之城钢琴曲教学| 重生之商业帝国| 在线看连续剧| 晚娘2| 噬血狂袭第二季| 美国电影免费观看平台| 高管绑架案神秘李娜身份揭晓| 战狼欧试少女九| 朋友的妈妈2观有限中字| 少女荷尔蒙6中文版| 电视剧甜蜜完整版免费观看| 衡阳市| 年轻的邻居中文版| 诱人的教师在线完整版| 美国女按摩师2无删减版电影观看| 超碰10| 郎平说全红婵是现象级运动员| 激战丛林2罗莎卡拉免费播放| 绝叫日剧在线观看免费| 少女3完整版14岁电影| 法国面具男鬼舞步| 女特警电视剧| 电影《牙医郝板栗》免费观看| 水饺皇后电影| 《激战丛林》-罗莎·卡拉乔洛免费观 | 上海上海电视剧| 聊斋志异之风月宝鉴3D版| 战至巅峰3| 绅士们电影完整免费版| 丁·度的《妇产科》| 聊斋志异之陆判徐锦江版 电影名字叫什么| 十万个冷笑话6| 我是大明星奇迹少年| 维斯塔小镇家长会2免费观看| 《束缚游戏》在线观看第一季| 庶女有毒:嫡姐避让全集免费| 新乌龙山剿匪记电视剧| 封神榜陈浩民版高清| 朋友的爸爸在线| 《激战丛林》完整版在线观看电影| 死神来了3的d9版| 365天今时之欲在线观看百度| 韩国午夜剧场《分娩按摩2》HD免费在线观看高清完整版-如意影院 | 高清异国日记未删减| 沉香如屑电视剧免费观看55集| 暴走卡车少女6| 度华年电视剧免费观看全集在线播放| 春江水暖| 铿锵锵锵锵锵免费观看电视剧 | 古惑仔6胜者为王国语高清| 老农民60集完整版电视剧| 保罗禁忌5大结局禁忌| 苏菲亚公主第二季中文版| 七天电影| 电影《推油》完整版免费观看 | 维修工人的艳遇视频| 你们一个一个来我好痛| 覆雨翻云之一代仙魔| xl司令动漫。视频| 杏林春暖无删减| 四大美人满天星免费| 孤零飘落燕| 初恋逆袭全集免费| 棒棒tv| 伦敦奥运会男子篮球决赛| 倚天屠龙记邓超版| 牙医姐妹完整版免费 在线观看 | 《白鹿原》电影完整版免费观看| 京城绯闻电视剧| 风暴来临| 冲上云霄2土豆| 甜蜜惩罚完整版| 万人之上短剧| 高清《幽灵狙击手》电影| 我的中国心 伴奏| 荷尔蒙6第一集| 日本游客在圆明园拍照被网红制止| 果果别动队| 性能之巅1-5| 波多野结衣的电影| 欲魔电影| 中国X站在线免费观看| 偷心俏佳人下载| 宝鸡市| 冰雪十一天| 光荣时代| 爱维侦察DVD版在线播放| 奔跑吧第十二季首播| 我和岳交换夫妇交换系列| 日本厨房激情3| 潘多拉之境1983满天星版资源| 做爰欲海潮| 日本电影妈妈爱上儿子的同学免费观看| 情欲世界| 瓦房店市| 冬春的日子电影| 贾旭明张康新闻联播| 激情丛林男主角还演过什么电影 | 民警抓嫌犯时遭车重压身亡| 探吃的猫女完整版| 激情社区在线观看| 《遇见王沥川》免费观看| 白峰电影在线观看免费第8集| 桂宝之爆笑闯宇宙| 熊猫烧香杀毒软件| 怪兽娘奥特怪兽拟人化计划| 爱如潮涌电视剧| 诱人的女房东3| 王老五的艰难爱情| 名侦探柯南:独眼的残像| 学生妈妈5个字ID| 逆天狂妃:邪王靠边站全集免费| 暖暖在线观看免费观看高清中文| 和女部长一起去出差旅电影叫什么名字 | 奥特大战争| 伦理《生殖按摩》| 异世界来的男生泰剧免费观看全集| 花子君第二季免费观看| 贵妃还乡在线观看| 《不当交易》完整版在线观看| 凪光主演的电影免费播放钱断情始| 我在北京 挺好的| 麻吉弟弟| 色情教师4| 《山2》电影| 高h乱np甄宓| 厨房激战4电影完整版| 《恶霸财阀》完整免费观看| 复活电影免费观看完整版高清| 短裙公主超可爱| 凯莉布鲁克满天星三部曲是哪| 斗罗大陆全集在线观免费观看| 三度诱惑| 水润女人电视剧在线播放免费| 宁安如梦35集| 斗破苍穹年番大结局| 电影灯草花和灯高清免费普通话版| 霍比特人意外旅程百度影音| 王大花的革命生涯| 高压监狱1小时45分是什么意思| 电视剧虎刺红全集免费播放| 情侣交换日记| 黑色眼泪日语完整版| 地铁惊魂2009| 美国队长3下载| 夫人的侄子1994剧情简介| 星梦天使国语版| 闲话行尸第一季| 私人女子| 原始战争电影| 天地英豪第三部| 韩国爸爸b的种子| 印度电视剧长女的幸福生活| 高清《地府阎王》免费观看| 法国电影法国空少| 最强大脑第九季| 古墓丽影3电影| 电影在线观看坎贝奇| 异兽魔都| 电影小小的我| 《overflower》第1季免费观看全集| 电影《剑雨》免费观看| 菲律宾电影《女仆》播放| 战狼6免费观看在线播放下载电影视频| 我的老婆大人是80后| 世上只有妈妈好免费观看第一集| 人猿泰山1995 1小时34分意大利,就有了| 梦犯追凶| 旗开得胜集体舞| 意大利《妇产科》满天星播放| 柯南万圣节的新娘| 盟军敢死队4| 映山红简谱| 电视剧枣树湾免费观看 | 平凡的浮生| 庆余年2免费高清观看西瓜| 强殖装甲动画| 法国空姐看完整免费高清原声奔跑吧 | 电视剧楚留香传奇| 女超人免费完整版满天星| 好男人观看免费高清完整在线| 刀剑乱舞花丸第二季| 四月女友| 甜蜜妈妈动漫在线观看全集| 夫人韩剧| 井川里予和别人打扑克牌的链接| 电影《蛇妖1988》空姐满天星在线观看 | 3dmax奥特之母在线播放| 《和讨厌的部长出差旅》电影在线观看 | 没有罩子的瑜伽老师| 向井蓝之特殊治疗医护工作内容与背 | 567电影| 挣扎吧当亚君| 大头怪婴| 落魄贵族琉璃免费观看动漫| 生龙活虎小英雄| 宝贝今天你在上面| 急诊护士完整版在线观看| 爱搞网在线观看| 不屈的媳妇| 伦理《法国护士长》观看| 艳姆电视剧全集在线观看| 海绵宝宝全集| 婆婆妈妈电视剧免费观看| 两个好媳妇中文版歌词的背景故事| 璀璨人生 电视剧| 春宫真情人| 日本战狼10电影免费播放国语| 电影《姐妹花》免费观看国语 | 电视剧日出在线观看完整版| 小樱桃影视| www.shyongshi| 《甜蜜家园》电视剧| 铿锵锵锵锵在线观看免费载| 天注定 字幕| 电视剧怪侠欧阳德| 《羞耻(克罗地亚版) 第三季》| 五月天情色电影| 鬼画符国语| 林俊杰成都演唱会| 盲盒电影酒店免费观看| 默杀在线观看完整免费高清| 淄博电视台| 天赐的声音第五季| 韩剧电影免费在线播放| 李桢航资料| 法警小队 第一季| 死神来了6国语完整版免费观看| 1500美元等于多少人民币| 国乒提前包揽混双冠亚军| 酒店激战第1-5集免费观看伊丽莎白尖 | 笑傲江湖高清| 我一个人的假期| 失落的秘符下载| 八戒八戒8电影免费观看高清版| 苹果在线观看免费| 真 倚天屠龙记| 插曲痛全集免费观看| 阿波罗18号| 女忍者忍法帖2| 皋兰县| 僵尸道长1粤语| 鬼灭之刃游郭篇免费观看| 为全人类 第五季| 丰满年轻的继拇5| 谍战深海之惊蛰电视剧全集免费观看| 危情少女| 日本电影漂亮的售楼小姐| 好看的美国爱情片| 将门嫡女沙场:不输男儿郎短剧全集 | 天网cctv| 一枪战三母国语版免费播放| 金银1-5普通话少女潘| 袁娅维冲榜成功| 丛林拯救记| 女儿国3满天星版美国| 英雄时代| 他母亲的房子| 红海行动2| 白峰高清在线观看免费| 奥尔多占星者| 戈壁母亲电视剧全集免费观看| 日喀则市| 文旅产业从“流量”变“留量” | 插曲的痛高清片| 镖人动画| 李小龙电影全集国语高清| 牵牛的夏天手机铃声| 《别有用心的妻子》| 鸿雁于飞刀郎| 奇妙大营救| 人猿泰山Hrd| 大红灯笼高高挂 电影| 神女峰的迷雾| 长寿区| 死神少爷| 龙猫电影完整免费普通话在线观看| 越南电影《暴行》| 万家灯火养生2013| 九重紫连续剧| 电影轮换2免费版| 中国海军击溃海盗| 狂飙支队电视剧全集免费播放| 麦乐迪女超人在线| 善良的保姆在线观看| 高清《人生第一次》在线观看| 霍金怎么说话| G点| 冷宫逆袭短剧全集| 刘老根第一部| 妻子去朋友公司上班| 白峰电影84集免费播放| 十大奇冤高清| 监狱风云3国语完整版播放| 24世纪性格爱情指南| 唾弃你的坟墓2| 八毫米 电影| 拉芙蕾丝| 女超人(麦乐迪)| 我要结婚啦| 魔乳秘剑帖无修版01| 澜沧| 电影《在丈夫面前被劫匪欺负》电影| 色女仆网站| 背叛在线观看免费完整版电视剧 | 潘粤明前妻| 一起相愁愁全集免费观看 | 男女一起愁愁愁电影全集播放免费观| 需要爸爸得种子| 千星之城电影高清完整版在线观看| 海贼战队豪快者45| 美姊妹牙医完整版在线观看| 韩剧财阀家的小儿子| 复仇从离婚开始短剧全集| 丧家之女| 《维修工的艳遇》2| 让子弹飞完整版免费观看| 钟表馆事件电视剧| 雷诺阿电影| 《绝版渔夫荒淫史》| 古惑仔5国语免费版在线播放| 昭和女子物语1-4集| 韩剧《新乌托邦》在线观看| 《落魄贵族琉璃川》动漫免费| 央视回应不转播国足比赛| 六姊妹电视剧在线观看全集完整版| 男人和女人一愁愁愁电视剧在线| 蜡笔小新新番| 妻子的秘密教学动漫| 调教女佣2| 今天开始恋爱吧| 妙女兵1978普通话版| 分手达人| Overfloor第一季在线观看| 牵着你的手| 鸡宝厨房| 你懂的在线电影| 《卢旺达玫瑰》完整版| 倔强的驱魔师1-4集免费观看| 食人鱼3d第二部| 最美的时候遇见你在线观看完整版| 韩国电影美容店的特别待遇5中字| 《被舍弃的人们》| 遇见波莉| 魔法灰姑娘 电影| 女战狼6国语高清免费看| 炸天小姐满天星观看| 老婆9在线观看免费版电视剧| 一屋老友记 国语| 女超人电影在线观看完整免费高清悬疑片| 嫂子的诱惑3| 危险伴侣| 电影法国空乘免费观看| 插曲的痛全集免费播| 电影《美味快递员2》| 人生若只如初见解释| 折腰韩剧日剧免费观看| 时光大盗| 经营婚姻 电视剧| 媳妇和妈短剧免费完整版| 《悲惨遭遇》1980年| 银魂261| 隋唐英雄4| 翁虹全部电影| 法航空姐11季最新更新内容| 诛仙第三季1-26全集| 烈火英雄电影| 偷偷藏不住46集初吻|