在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

調(diào)試故事:從 printf 到 Flash 及其他

王燕 ? 來(lái)源:十個(gè)名字V ? 作者:十個(gè)名字V ? 2022-07-19 10:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在 1990 年代,基本上有兩種基于工具的解決方案,用于在真實(shí)硬件上調(diào)試嵌入式軟件:一種是監(jiān)視器調(diào)試器,一種在嵌入式系統(tǒng)內(nèi)存中編程并響應(yīng)外部調(diào)試器軟件請(qǐng)求的軟件. 以及在線(xiàn)仿真器,一個(gè)(大型)硬件,它通過(guò)自適應(yīng)替換和仿真位于目標(biāo)硬件中的微控制器/處理器

pYYBAGLVc2GAaN_BAAH4npMSBeA428.jpg

圖 1:1980 年代末的在線(xiàn)仿真。

監(jiān)控調(diào)試器解決方案價(jià)格便宜,并實(shí)現(xiàn)了基本的調(diào)試功能;在線(xiàn)仿真器解決方案非常昂貴,使用復(fù)雜,而且適配經(jīng)常不穩(wěn)定且容易出錯(cuò)。作為回報(bào),開(kāi)發(fā)人員獲得了對(duì)微控制器/處理器所有總線(xiàn)的完全透明和訪問(wèn)權(quán)限。那時(shí),計(jì)時(shí)測(cè)量和代碼覆蓋率分析已經(jīng)成為可能。然而,半導(dǎo)體制造商必須為此目的開(kāi)發(fā)一種特殊的、所謂的帶有額外引腳的仿真芯片。對(duì)所有相關(guān)人員來(lái)說(shuō)都是一個(gè)關(guān)鍵的成本因素。

半導(dǎo)體的日益小型化和片上調(diào)試接口的引入對(duì)調(diào)試器作為開(kāi)發(fā)工具本身的架構(gòu)產(chǎn)生了重大影響。越來(lái)越多的以前在硬件中實(shí)現(xiàn)的功能現(xiàn)在在軟件中實(shí)現(xiàn)。開(kāi)發(fā)環(huán)境和調(diào)試器軟件變得更強(qiáng)大,硬件更小,帶寬和速度方面的性能不斷提高。但是,今天調(diào)試的基本用例仍然相同。

硬件調(diào)試進(jìn)化,瞄準(zhǔn)調(diào)試的“圣杯”

從 printf 到“just” flash 到斷點(diǎn)、實(shí)時(shí)監(jiān)視和單步執(zhí)行,這就是您可以簡(jiǎn)要描述調(diào)試的方式。原則上,調(diào)試用于驅(qū)動(dòng)程序開(kāi)發(fā)、板/硬件啟動(dòng)、啟動(dòng)過(guò)程等的開(kāi)發(fā)和故障排除,作為“低級(jí)”、硬件相關(guān)開(kāi)發(fā)的標(biāo)準(zhǔn)方法。一個(gè)調(diào)試器被迅速拿出來(lái),將軟件閃存到目標(biāo)硬件上,開(kāi)始執(zhí)行或通過(guò)斷點(diǎn)在代碼中的某個(gè)點(diǎn)停止它,檢查內(nèi)存區(qū)域和寄存器或操作它們測(cè)試,讀出調(diào)用堆棧等等。

在應(yīng)用方面,它簡(jiǎn)單易懂,原則上大多數(shù)開(kāi)發(fā)人員通過(guò)調(diào)試都可以理解。大多數(shù)時(shí)候,人們沒(méi)有時(shí)間深入處理調(diào)試器本身,從而可能發(fā)現(xiàn)“調(diào)試的圣杯”,這些附加功能最終可以節(jié)省大量調(diào)試和測(cè)試時(shí)間。例如,在這種情況下,一種被低估的技術(shù)是追蹤。它在不影響運(yùn)行時(shí)行為的情況下提供對(duì)軟件執(zhí)行的洞察。因此,開(kāi)發(fā)人員獲得了硬件上軟件執(zhí)行的真實(shí)圖像。可以發(fā)現(xiàn)軟件中偶爾出現(xiàn)的錯(cuò)誤和瓶頸。這只是調(diào)試器的許多替代用例的一個(gè)示例。

圖 2:硬件調(diào)試——嵌入式軟件開(kāi)發(fā)人員的日常業(yè)務(wù)。

微控制器、處理器和 SoC 帶來(lái)了新的挑戰(zhàn)

調(diào)試的發(fā)展伴隨著半導(dǎo)體的小型化、復(fù)雜性和速度的增加。在過(guò)去的 15 年中,嵌入式行業(yè),尤其是汽車(chē)行業(yè),在其產(chǎn)品中引入了許多附加功能,以滿(mǎn)足當(dāng)前和未來(lái)的環(huán)境法規(guī),減少一般的車(chē)禍數(shù)量,通過(guò)分銷(xiāo)更有效地開(kāi)發(fā)和生產(chǎn)車(chē)輛跨多個(gè)電子控制單元 (ECU) 的功能,而不是按功能開(kāi)發(fā)專(zhuān)用 ECU,并在競(jìng)爭(zhēng)中脫穎而出。

為了實(shí)現(xiàn)這一切,汽車(chē)行業(yè)需要半導(dǎo)體制造商通過(guò)開(kāi)發(fā)和生產(chǎn)更緊湊、更快的微控制器來(lái)滿(mǎn)足他們的要求。

這是嵌入式多核微控制器的誕生,即具有兩個(gè)或更多內(nèi)核的控制器。ECU 中從單核架構(gòu)向多核架構(gòu)的轉(zhuǎn)變給每個(gè)人帶來(lái)了新的挑戰(zhàn)。嵌入式軟件工具供應(yīng)商面臨著新問(wèn)題,從如何輕松訪問(wèn)多核 ECU 的所有內(nèi)核,到如何在不同內(nèi)核上分發(fā)嵌入式軟件和遺留軟件,這些內(nèi)核運(yùn)行效率最高,同時(shí)保持高性能。開(kāi)發(fā)嵌入式軟件的傳統(tǒng)方式此時(shí)已經(jīng)受到質(zhì)疑。

隨著高性能/計(jì)算平臺(tái)和多核系統(tǒng)的引入,現(xiàn)在甚至更復(fù)雜的處理器架構(gòu)被用于開(kāi)發(fā)高度復(fù)雜的應(yīng)用程序。調(diào)試在這里仍然扮演什么角色?

原則上,它仍然是基礎(chǔ)。除了微控制器的內(nèi)部閃存組件外,還必須運(yùn)行 SoC 外部閃存組件。調(diào)試器首先幫助控制引導(dǎo)過(guò)程,然后在下一步中仔細(xì)檢查這些處理器的各個(gè)部分和內(nèi)核以及在這些設(shè)備上運(yùn)行的軟件。除了標(biāo)準(zhǔn)調(diào)試功能之外,由于這些軟件系統(tǒng)的復(fù)雜性越來(lái)越高,時(shí)序分析、功能分析或 CPU 負(fù)載測(cè)量等分析選項(xiàng)也越來(lái)越多地被使用(圖 3)。這樣做的先決條件是所用半導(dǎo)體上的跟蹤接口的可用性以及相應(yīng)的調(diào)試器,其軟件實(shí)現(xiàn)這些功能。

pYYBAGLVc4KAPTDKAAewM1N-QHk669.jpg

圖 3:來(lái)自 iSYSTEM 的 winIDEA Analyzer;左邊是記錄的對(duì)象,右邊是它們的時(shí)間相關(guān)性。 (點(diǎn)擊展開(kāi))

半導(dǎo)體行業(yè)的技術(shù)發(fā)展正在改變軟件開(kāi)發(fā)過(guò)程,進(jìn)而將調(diào)試器作為工藝工具的基本工具。

軟件開(kāi)發(fā)過(guò)程和標(biāo)準(zhǔn)

分布式開(kāi)發(fā)團(tuán)隊(duì)、日益復(fù)雜的代碼庫(kù)、日益增長(zhǎng)的功能需求、標(biāo)準(zhǔn)化和時(shí)間壓力:即使在嵌入式軟件開(kāi)發(fā)中,在最短的時(shí)間內(nèi)將可靠和安全的產(chǎn)品推向市場(chǎng)的挑戰(zhàn)也只能通過(guò)更高程度的抽象和自動(dòng)化。

因此,經(jīng)典意義上的開(kāi)發(fā)工具必須比以往更加通用。以前由微控制器專(zhuān)家專(zhuān)門(mén)用作與硬件相關(guān)的開(kāi)發(fā)工具,現(xiàn)在越來(lái)越多地可以在各種軟件開(kāi)發(fā)情況中找到調(diào)試器。調(diào)試器仍然是通過(guò)標(biāo)準(zhǔn)調(diào)試接口連接到實(shí)際目標(biāo)硬件,目的是開(kāi)發(fā)和測(cè)試盡可能接近實(shí)際硬件的嵌入式軟件。

除了簡(jiǎn)單地連接到目標(biāo)硬件之外,調(diào)試器還提供更高級(jí)的調(diào)試功能,包括測(cè)試功能。在這里,開(kāi)發(fā)人員可以跟蹤正在運(yùn)行的軟件的執(zhí)行情況。為此,可以檢查程序狀態(tài),并在某些條件下停止程序的執(zhí)行。這是在對(duì)被測(cè)軟件的影響最小或沒(méi)有影響的情況下完成的。專(zhuān)業(yè)的調(diào)試解決方案還可以實(shí)時(shí)記錄軟件中的過(guò)程(跟蹤)、記錄時(shí)鐘周期范圍內(nèi)的執(zhí)行時(shí)間以及評(píng)估與測(cè)試相關(guān)的軟件處理部分(代碼覆蓋率)。

pYYBAGLVc4-ABr8dAAOq6GAVak8027.jpg

圖 4:如今,調(diào)試器提供的 API 可通過(guò)平滑和自動(dòng)化的工具轉(zhuǎn)換來(lái)實(shí)現(xiàn)開(kāi)發(fā)和測(cè)試流程。

為了讓客戶(hù)能夠靈活地使用所有這些功能,調(diào)試器制造商提供了通用接口 (API),可以將這些工具集成到客戶(hù)的開(kāi)發(fā)和測(cè)試過(guò)程中(圖 4)。這些接口必須適合解決各種各樣的任務(wù)(開(kāi)發(fā)、測(cè)試、驗(yàn)證和驗(yàn)證軟件和硬件)。這里的標(biāo)準(zhǔn)是支持編程(C、C++C#Java 等)和腳本語(yǔ)言(Python 等),以便從另一個(gè)(也是客戶(hù)特定的)應(yīng)用程序“遠(yuǎn)程控制”開(kāi)發(fā)工具。基本上,該過(guò)程的一部分可以在開(kāi)發(fā)和測(cè)試期間實(shí)現(xiàn)自動(dòng)化。

此外,當(dāng)今的調(diào)試器提供了所謂的“mini-HIL”功能(用于測(cè)試的硬件在環(huán)、測(cè)量和激勵(lì)模塊)來(lái)生成或測(cè)量數(shù)字和模擬信號(hào),同時(shí)記錄和關(guān)聯(lián)程序執(zhí)行. 這使得在軟件開(kāi)發(fā)過(guò)程中盡可能早地進(jìn)行非常接近現(xiàn)實(shí)的測(cè)試成為可能。所有這些都是從已知環(huán)境中實(shí)現(xiàn)的,幾乎是即時(shí)的,無(wú)需學(xué)習(xí)新的方法。

這些用于測(cè)試自動(dòng)化的靈活接口的典型用例是持續(xù)集成 (CI)。CI 通過(guò)將開(kāi)發(fā)人員的更改或新創(chuàng)建的代碼集成到與團(tuán)隊(duì)共享的存儲(chǔ)庫(kù)中來(lái)支持敏捷/分布式軟件開(kāi)發(fā)和測(cè)試。為此目的,有幾個(gè)合適的持續(xù)集成服務(wù)器,例如 Jenkins、GitLab、TeamCity、CircleCI 或 GitHub Actions。通過(guò)集成,通過(guò)內(nèi)部或云中托管的 CI 軟件觸發(fā)一系列快速且高度自動(dòng)化的步驟(稱(chēng)為“管道”)。管道通常包括并結(jié)合構(gòu)建、靜態(tài)分析、單元和系統(tǒng)測(cè)試。

pYYBAGLVc5WABkNoAAHw3Vd5ae4420.jpg

圖 5:持續(xù)集成基礎(chǔ)設(shè)施的管道,包括構(gòu)建、靜態(tài)分析、單元測(cè)試、系統(tǒng)測(cè)試,最后是可交付產(chǎn)品。

經(jīng)典調(diào)試器因此成為在真實(shí)硬件上進(jìn)行測(cè)試的測(cè)試工具。

通常,軟件也可以在 PC 平臺(tái)上進(jìn)行廣泛的測(cè)試,與目標(biāo)硬件無(wú)關(guān)。然而,并非所有潛在錯(cuò)誤都在模擬環(huán)境中檢測(cè)到:例如,所需的硬件外圍通常不可用,或者應(yīng)用程序的行為與真實(shí)硬件不同,時(shí)序行為不同,或者交叉編譯器生成目標(biāo)- 特定的目標(biāo)代碼,因此與用于測(cè)試環(huán)境的編譯器的代碼不同。

因此,有必要在早期盡可能接近真實(shí)硬件進(jìn)行測(cè)試,以確保最終產(chǎn)品的正確功能以及應(yīng)用程序的準(zhǔn)確時(shí)序行為。

ISO26262 和 DO-178C 等安全標(biāo)準(zhǔn)會(huì)影響工具的功能范圍以及向客戶(hù)提供這些功能正確性的證明。特別是在航空領(lǐng)域,工具制造商被要求在工具認(rèn)證方面進(jìn)行合作已經(jīng)有很長(zhǎng)一段時(shí)間了——但最近在汽車(chē)行業(yè)也需要通過(guò) ISO26262 進(jìn)行合作。

為此,工具制造商必須為與特定用例相關(guān)的工具的功能正確性創(chuàng)建驗(yàn)證選項(xiàng)。這些可以是組織措施,例如開(kāi)發(fā)過(guò)程的外部審計(jì)或獨(dú)立第三方對(duì)工具的認(rèn)證,或支持客戶(hù)執(zhí)行正確性證明的參考工具套件。上述使用調(diào)試器自動(dòng)化測(cè)試過(guò)程的方法非常適合實(shí)施此類(lèi)工具鑒定過(guò)程。

結(jié)論:更復(fù)雜的調(diào)試器,不斷發(fā)展的新業(yè)務(wù)模型

調(diào)試器越來(lái)越多地變成了一個(gè)過(guò)程工具。調(diào)試器的基本功能找到了它們的普通應(yīng)用,并輔以強(qiáng)大的分析功能。軟件日益復(fù)雜,軟件開(kāi)發(fā)本身使用的大量軟硬件工具及其相互依賴(lài)性,推動(dòng)了工具制造商、芯片供應(yīng)商和客戶(hù)之間對(duì)知識(shí)轉(zhuǎn)移和咨詢(xún)服務(wù)的需求。

參與這些發(fā)展的各方之間持續(xù)和開(kāi)放的溝通是成功的關(guān)鍵。今天,客戶(hù)不再想購(gòu)買(mǎi)工具,他們想隨時(shí)隨地使用它們。嵌入式軟件開(kāi)發(fā)和軟件測(cè)試的新商業(yè)模式將發(fā)揮作用,其中工具、知識(shí)轉(zhuǎn)移和咨詢(xún)是一種常見(jiàn)的產(chǎn)品,最終是一種服務(wù)。正如軟件行業(yè)所發(fā)生的那樣,訂閱業(yè)務(wù)模式也越來(lái)越適合全球嵌入式軟件開(kāi)發(fā)和測(cè)試。

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5144

    文章

    19590

    瀏覽量

    316025
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1672

    瀏覽量

    151289
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    610

    瀏覽量

    34603
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    調(diào)試時(shí)Memory窗口中Flash內(nèi)容不更新的原因和解決辦法

    調(diào)試時(shí)在代碼中對(duì)Flash進(jìn)行寫(xiě)操作時(shí)(比如Bootloader對(duì)Code Flash進(jìn)行升級(jí)操作,Application對(duì)Data Flash進(jìn)行寫(xiě)操作),Memory窗口中
    的頭像 發(fā)表于 04-01 09:18 ?420次閱讀
    <b class='flag-5'>調(diào)試</b>時(shí)Memory窗口中<b class='flag-5'>Flash</b>內(nèi)容不更新的原因和解決辦法

    STM32CubeIDE在線(xiàn)調(diào)試時(shí),如何配置擦除Flash的部分Page?

    STM32CubeIDE在線(xiàn)調(diào)試時(shí),如何配置擦除Flash的部分Page
    發(fā)表于 03-13 08:02

    STM32F407 Flash寫(xiě)入數(shù)據(jù)失敗的原因?怎么解決?

    STM32F407VGT6 標(biāo)準(zhǔn)庫(kù) 往Flash中寫(xiě)入數(shù)據(jù),寫(xiě)入完成后再次讀取,發(fā)現(xiàn)沒(méi)有寫(xiě)入成功。printf 打印擦除和寫(xiě)入的步驟發(fā)現(xiàn),返回的 FLASH_Status 都是 7。關(guān)于錯(cuò)誤碼
    發(fā)表于 03-11 06:08

    STM32G030F6P6寫(xiě)FLASH最后8字節(jié)出錯(cuò)怎么解決?

    返回值是HAL_ERROR,寫(xiě)其他位置正常。 __set_PRIMASK(1); /* 關(guān)中斷 */ /* FLASH 解鎖 */ HAL_FLASH
    發(fā)表于 03-07 07:19

    DLP4500EVM是否支持自動(dòng)循環(huán)FLASH加載圖片BUFFER中?

    中,沒(méi)有DLPLCR4500GUI-***-********.zip文件,能不能給出一個(gè)下載地址? 2. 一直沒(méi)有找到這個(gè)文件DLPR350PROM_v2.0.0.bin,能不能提供一下? 3. DLP4500EVM是否支持自動(dòng)循環(huán)FLASH加載圖片
    發(fā)表于 02-27 06:50

    DeepSeek:入門(mén)精通

    DeepSeek:入門(mén)精通
    發(fā)表于 02-08 18:00 ?122次下載

    科技云報(bào)到:大模型云端,“AI+云計(jì)算”還能講出什么新故事

    科技云報(bào)到:大模型云端,“AI+云計(jì)算”還能講出什么新故事
    的頭像 發(fā)表于 01-07 13:27 ?362次閱讀

    stdio.h實(shí)現(xiàn)了printf函數(shù)?

    我們平時(shí)包含的 stdio.h 頭文件,里面是不是實(shí)現(xiàn)了 printf 函數(shù)? 為什么會(huì)有這個(gè)疑問(wèn)?因?yàn)槊看问褂?printf,就得包含 stdio.h ,這就導(dǎo)致很多同學(xué)誤以為,stdio.h
    的頭像 發(fā)表于 12-18 10:28 ?573次閱讀

    51單片機(jī)中為什么很少出現(xiàn)printf的身影

    51單片機(jī)中為什么很少出現(xiàn) printf 的身影?是用不了嗎? 不是的,51單片機(jī)可以用 printf,只是不建議使用。 平時(shí)我們?cè)诓僮飨到y(tǒng)上寫(xiě)C語(yǔ)言代碼,使用 printf 可以把數(shù)據(jù)寫(xiě)到標(biāo)準(zhǔn)輸出
    的頭像 發(fā)表于 12-03 10:46 ?1306次閱讀
    51單片機(jī)中為什么很少出現(xiàn)<b class='flag-5'>printf</b>的身影

    將編譯器部分Flash復(fù)制TMS320F28xxx DSC上的RAM

    電子發(fā)燒友網(wǎng)站提供《將編譯器部分Flash復(fù)制TMS320F28xxx DSC上的RAM.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 11:02 ?0次下載
    將編譯器部分<b class='flag-5'>從</b><b class='flag-5'>Flash</b>復(fù)制<b class='flag-5'>到</b>TMS320F28xxx DSC上的RAM

    《TSMaster開(kāi)發(fā)入門(mén)精通》——?jiǎng)?chuàng)作者背后的故事...

    背后的故事由汽車(chē)行業(yè)暢銷(xiāo)書(shū)作者楊金升老師牽頭,同星智能研發(fā)團(tuán)隊(duì)和應(yīng)用支持團(tuán)隊(duì)全力參與的《TSMaster開(kāi)發(fā)入門(mén)精通》書(shū)籍已由清華大學(xué)出版社印付。此書(shū)一經(jīng)上架,就獲得汽車(chē)行業(yè)人士的一致認(rèn)可和好
    的頭像 發(fā)表于 09-02 08:01 ?675次閱讀
    《TSMaster開(kāi)發(fā)<b class='flag-5'>從</b>入門(mén)<b class='flag-5'>到</b>精通》——?jiǎng)?chuàng)作者背后的<b class='flag-5'>故事</b>...

    NAND Flash其他類(lèi)型存儲(chǔ)器的區(qū)別

    NAND Flash作為一種基于NAND技術(shù)的非易失性存儲(chǔ)器,具有多個(gè)顯著優(yōu)點(diǎn),這些優(yōu)點(diǎn)使其在數(shù)據(jù)存儲(chǔ)領(lǐng)域得到了廣泛應(yīng)用。以下是對(duì)NAND Flash優(yōu)點(diǎn)的詳細(xì)闡述,并簡(jiǎn)要探討與其他類(lèi)型存儲(chǔ)器的區(qū)別。
    的頭像 發(fā)表于 08-20 10:24 ?1274次閱讀

    使用char指針參數(shù)的os_printf會(huì)導(dǎo)致異常怎么解決?

    我正在嘗試調(diào)試一些代碼,需要顯示字符指針的內(nèi)容。但每次它都會(huì)給出一個(gè)例外。 static void ICACHE_FLASH_ATTR someCb(const char *data
    發(fā)表于 07-11 06:56

    請(qǐng)問(wèn)est_printf為什么要使用堆棧空間?

    我正在嘗試解決 ESP8266_RTOS V3.0 中的問(wèn)題 ets_printf用于將調(diào)試消息轉(zhuǎn)儲(chǔ)出通信端口。 ets_printf使用 ets_io_vprintf(ets_putc
    發(fā)表于 07-09 07:47

    串口連續(xù)接收同時(shí)寫(xiě)入FLASH數(shù)據(jù)不全怎么解決?

    在學(xué)習(xí)寫(xiě)一個(gè)Bootloader的過(guò)程中,想要通過(guò)串口助手直接把bin文件發(fā)到STM32并寫(xiě)入APP_FLASH。 35kB的bin文件,只能成功寫(xiě)入十幾個(gè)字節(jié),還每次都不一樣多。 把波特率
    發(fā)表于 07-04 07:30
    主站蜘蛛池模板: 日本三区四区免费高清不卡 | 操操操操操 | 免看乌克兰a一级 | 深夜视频在线播放视频在线观看免费观看 | 欧美在线成人午夜影视 | 在线免费观看黄色小视频 | 日韩特级 | 五月sese| 人阁色第四影院在线观看 | 清纯漂亮小美女准备啪啪 | 视频 在线 | 综合成人在线 | 美女喷白浆视频 | 四虎四虎 | 亚洲人成影网站~色 | 天天干人人干 | 国产免费美女 | 一区二区不卡免费视频 | 性做久久久久久久免费观看 | 四虎影在线永久免费观看 | 思思99re66在线精品免费观看 | 老师今晚让你爽个够 | 大看蕉a在线观看 | 五月激情综合婷婷 | 我不卡老子影院午夜伦我不卡四虎 | www4hu| 欧美 亚洲 国产 精品有声 | 国产精品午夜久久久久久99热 | 在线播放一区二区精品产 | va国产 | 黄色片xxxx | 日本一卡二卡≡卡四卡精品 | 人人看人人鲁狠狠高清 | 天天干夜夜操视频 | 亚洲一区在线观看视频 | 日本黄色免费大片 | 午夜大片免费完整在线看 | 校园 春色 欧美 另类 小说 | 久久精品国产免费中文 | 国产无套粉嫩白浆 | 年轻的护士3 |