久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Zephyr第21期:設(shè)備樹(shù)與Kconfig配合、低功耗調(diào)優(yōu)及調(diào)試實(shí)戰(zhàn)

Zephyr第21期:設(shè)備樹(shù)與Kconfig配合、低功耗調(diào)優(yōu)及調(diào)試實(shí)戰(zhàn) 九月一晃就過(guò)Zephyr 愛(ài)好者月刊也走到第 21 期了。這個(gè)月在社區(qū)里轉(zhuǎn)了一圈最明顯的感受是大家已經(jīng)不怎么討論“Zephyr 能不能用”而是都在琢磨“怎么把 Zephyr 用細(xì)”。討論熱度最高的幾類話題集中在設(shè)備樹(shù)Devicetree與 Kconfig 的配合方式、低功耗調(diào)試時(shí)的定位手段、日志與 shell 在資源緊張板子上的協(xié)作搭配。這期月刊就按這個(gè)主線走先盤(pán)點(diǎn)主線代碼和周邊生態(tài)進(jìn)展再拆幾個(gè)實(shí)打?qū)嵉膶?shí)戰(zhàn)問(wèn)題最后把高頻排查清單和近期社區(qū)案例整理到一起。無(wú)論你是剛接觸 Zephyr、還在跟 west 和 overlay 較勁的入門(mén)開(kāi)發(fā)者還是已經(jīng)在產(chǎn)品里維護(hù)過(guò)驅(qū)動(dòng)、電源管理和升級(jí)鏈路的老手這期內(nèi)容應(yīng)該都有你能直接拿走的點(diǎn)。1. 月度盤(pán)點(diǎn)主線代碼與社區(qū)生態(tài)的最新風(fēng)向1.1 主線代碼庫(kù)穩(wěn)定壓倒一切這一輪主線開(kāi)始明顯放慢新特性的合入節(jié)奏關(guān)注點(diǎn)整體轉(zhuǎn)向穩(wěn)定、回歸套件和文檔補(bǔ)全。放在前兩年每一次版本更新都會(huì)帶來(lái)一批設(shè)備樹(shù) binding 或者驅(qū)動(dòng) API 的調(diào)整跟著主線跑的板卡廠商和做產(chǎn)品的開(kāi)發(fā)者其實(shí)相當(dāng)累。主線這時(shí)候主動(dòng)踩一腳剎車(chē)對(duì)生產(chǎn)項(xiàng)目反而是好事你不需要每隔一個(gè)季度就重新做一輪適配。從合并請(qǐng)求的數(shù)量也能看出這個(gè)趨勢(shì)。每周合入主線的改動(dòng)從高峰期的兩百多個(gè)回落到一百出頭其中接近三分之一是文檔、測(cè)試和重構(gòu)類修改真正動(dòng)到內(nèi)核調(diào)度、內(nèi)存管理這些核心路徑的提交很少。這種狀態(tài)通常意味著一個(gè)功能完整的內(nèi)核正在被認(rèn)真打磨。我個(gè)人的習(xí)慣是在這種窗口期多讀主線提交的核心補(bǔ)丁因?yàn)榇a變動(dòng)小、注釋全、評(píng)審細(xì)節(jié)都在比功能密集期好理解得多。工具鏈方面也有讓日常迭代變舒服的改進(jìn)。構(gòu)建系統(tǒng)對(duì)較新版本編譯器、生成器的適配基本跟上增量構(gòu)建速度在連續(xù)幾個(gè)版本之后有了肉眼可見(jiàn)的提升。以前改一次 prj.conf 就要等半分鐘重新生成配置的日子現(xiàn)在快了不少。另一個(gè)值得留意的方向是內(nèi)核里對(duì)多核配置和低功耗模型的持續(xù)清理主次核啟動(dòng)同步、緩存一致性抽象這些容易出隱蔽問(wèn)題的地方都有人在認(rèn)真收斂。Rust 支持也在這段時(shí)間里變得更加可用了。雖然它在生產(chǎn)項(xiàng)目里還不是主流選擇但至少在 demo 和組件層面的集成度已經(jīng)高了很多后續(xù)做新項(xiàng)目選型時(shí)可以把它納入評(píng)估范圍而不只是停留在“聽(tīng)說(shuō)過(guò)”的階段。1.2 周邊生態(tài)藍(lán)牙與智能家居設(shè)備依舊熱鬧藍(lán)牙協(xié)議棧一直是 Zephyr 的優(yōu)勢(shì)項(xiàng)目這個(gè)月的社區(qū)反饋里好幾個(gè)做定位和測(cè)距的同行都提到了信道探測(cè)能力的進(jìn)展。年初大家還在討論“能不能測(cè)通”現(xiàn)在討論的是“誤差能不能穩(wěn)定到厘米級(jí)”。這類功能的實(shí)用性在于它不需要額外硬件直接用已有射頻鏈路做測(cè)距對(duì)標(biāo)簽、門(mén)鎖、室內(nèi)導(dǎo)航這類產(chǎn)品有很強(qiáng)的吸引力。智能家居方向也保持著很高的熱度。Matter 跑在 Zephyr 上的案例越來(lái)越多有人分享從設(shè)備樹(shù)配置到認(rèn)證測(cè)試的完整鏈路也有人踩了不少坑比如網(wǎng)絡(luò)層緩沖區(qū)配小了導(dǎo)致入網(wǎng)失敗這類經(jīng)驗(yàn)比官方文檔里寫(xiě)的更貼近實(shí)戰(zhàn)。另外一個(gè)值得關(guān)注的現(xiàn)象是電子價(jià)簽、傳感器標(biāo)簽這類用紐扣電池的超低功耗產(chǎn)品明顯變多圍繞廣播同步、周期喚醒、無(wú)線升級(jí)的方案討論非?;钴S。工具鏈周邊也有好消息?,F(xiàn)在很多開(kāi)發(fā)者會(huì)直接給編輯器裝設(shè)備樹(shù)語(yǔ)法高亮和 Kconfig 提示插件配合代碼補(bǔ)全新手寫(xiě) overlay 不再像以前那樣全靠背。社區(qū)里還有人維護(hù)了針對(duì) sample 工程的快速模板start 一個(gè)項(xiàng)目只要幾分鐘入門(mén)門(mén)檻又低了一截。2. 實(shí)戰(zhàn)拆解設(shè)備樹(shù)、Kconfig 與驅(qū)動(dòng)注冊(cè)的配合方式2.1 先把數(shù)據(jù)流捋清楚比背語(yǔ)法有用很多開(kāi)發(fā)者在設(shè)備樹(shù)和 Kconfig 上栽跟頭不是因?yàn)閷?xiě)錯(cuò)語(yǔ)法而是沒(méi)想明白這兩個(gè)東西到底誰(shuí)說(shuō)了算。我習(xí)慣用一句話概括它們的分工設(shè)備樹(shù)描述“硬件長(zhǎng)什么樣”Kconfig 描述“軟件要什么功能”binding 則是兩者之間的翻譯官。設(shè)備樹(shù)里的每個(gè)節(jié)點(diǎn)最終會(huì)通過(guò) binding 文件翻譯成一組編譯期宏驅(qū)動(dòng)代碼再用DT_INST_這類宏讀取節(jié)點(diǎn)上的屬性值。Kconfig 則負(fù)責(zé)決定驅(qū)動(dòng)要不要編進(jìn)來(lái)、日志級(jí)別開(kāi)多少、某個(gè)功能模塊是否啟用。兩者之間最常見(jiàn)的關(guān)聯(lián)方式是 Kconfig 里寫(xiě)一句depends on DT_HAS_..._ENABLED意思是只有設(shè)備樹(shù)里出現(xiàn)了對(duì)應(yīng)節(jié)點(diǎn)這個(gè)驅(qū)動(dòng)才允許被打開(kāi)。這條依賴關(guān)系把握住了你就能反過(guò)來(lái)理解“為什么我明明在 prj.conf 里打開(kāi)選項(xiàng)編譯卻沒(méi)效果”這類問(wèn)題。拿生活場(chǎng)景類比一下設(shè)備樹(shù)是物業(yè)給的房屋結(jié)構(gòu)圖Kconfig 是裝修時(shí)勾選的選項(xiàng)清單。結(jié)構(gòu)圖不能替你做開(kāi)放式廚房但沒(méi)有結(jié)構(gòu)圖你根本不知道哪里是承重墻。Zephyr 的驅(qū)動(dòng)開(kāi)發(fā)也是這個(gè)邏輯硬件描述不對(duì)軟件開(kāi)關(guān)開(kāi)得再猛最終也到不了你想要的效果。2.2 overlay 三板斧改節(jié)點(diǎn)、加屬性、對(duì)狀態(tài)應(yīng)用級(jí)開(kāi)發(fā)里與硬件配置打交道最多的是 overlay 文件。一個(gè)典型的 overlay 要干三件事給某個(gè)控制器掛上新外設(shè)、調(diào)整外設(shè)的引腳或頻率參數(shù)、把節(jié)點(diǎn)的status從默認(rèn)的 disabled 改成 okay。下面這個(gè)偽示例基本覆蓋了最常見(jiàn)的寫(xiě)法/ { chosen { zephyr,console spi_screen; }; gpio_keys { compatible gpio-keys; key0: key_0 { gpios gpio0 5 (GPIO_PULL_UP | GPIO_ACTIVE_LOW); }; }; }; i2c0 { status okay; clock-frequency I2C_BITRATE_FAST; lm7548 { compatible lm75; reg 0x48; }; };這段代碼里需要注意幾個(gè)點(diǎn)。chosen節(jié)點(diǎn)修改的是系統(tǒng)的默認(rèn)控制臺(tái)或者默認(rèn)顯示設(shè)備一旦改錯(cuò)shell 可能就跑到一塊沒(méi)有驅(qū)動(dòng)的設(shè)備上現(xiàn)象就是開(kāi)機(jī)后串口沒(méi)有任何輸出。gpio_keys這類自帶 compatible 的抽象節(jié)點(diǎn)通常依賴對(duì)應(yīng)的 input 或 GPIO 子系統(tǒng)開(kāi)啟光寫(xiě)設(shè)備樹(shù)不打開(kāi) Kconfig 選項(xiàng)節(jié)點(diǎn)不會(huì)生效。I2C 控制器下的從設(shè)備除了status之外還要有正確的reg地址從設(shè)備地址寫(xiě)偏了驅(qū)動(dòng)初始化能過(guò)但通信時(shí)大概率收不到 ACK。overlay 文件與板級(jí) dts 文件是層層追加的關(guān)系。板子自帶的 dts、應(yīng)用目錄下的 app.overlay、命令行里用-DEXTRA_DTC_OVERLAY_FILE指定的額外文件三者會(huì)按順序合并后面的配置覆蓋前面。所以群里經(jīng)常有人問(wèn)“為什么我改了板子的 dts 沒(méi)反應(yīng)”多半就是被應(yīng)用層 overlay 覆蓋了。2.3 驅(qū)動(dòng)注冊(cè)骨架看懂初始化優(yōu)先級(jí)就夠了驅(qū)動(dòng)實(shí)例化是很多新手跨不過(guò)去的坎但它的核心骨架其實(shí)不長(zhǎng)。下面是一個(gè)常見(jiàn)驅(qū)動(dòng)的簡(jiǎn)化模板#define DT_DRV_COMPAT my_vendor_mydev static int mydev_init(const struct device *dev) { /* 讀取設(shè)備樹(shù)屬性、準(zhǔn)備硬件、注冊(cè)回調(diào) */ return 0; } #define MY_DEV_INIT(n) \ DEVICE_DT_DEFINE(mydev_##n, mydev_init, NULL, \ my_data_##n, my_cfg_##n, \ POST_KERNEL, 40, NULL); DT_INST_FOREACH_STATUS_OKAY(MY_DEV_INIT)DT_INST_FOREACH_STATUS_OKAY會(huì)自動(dòng)遍歷設(shè)備樹(shù)里所有 compatible 匹配且 status 為 okay 的節(jié)點(diǎn)一次性生成多個(gè)實(shí)例。這意味著你不需要為每個(gè)傳感器手動(dòng)寫(xiě)一份初始化代碼新增一塊板子時(shí)只需要改設(shè)備樹(shù)。初始化級(jí)別是容易踩坑的地方。Zephyr 把初始化分成幾個(gè)階段EARLY在最早期跑然后是PRE_KERNEL_1、PRE_KERNEL_2、POST_KERNEL最后是APPLICATION。如果驅(qū)動(dòng)要給其他驅(qū)動(dòng)提供服務(wù)通常放在POST_KERNEL如果它依賴內(nèi)核調(diào)度能力并且需要比較晚就緒再放到APPLICATION。同一級(jí)別里優(yōu)先級(jí)數(shù)字越小越先執(zhí)行。實(shí)際調(diào)試中遇到“另一顆芯片的復(fù)位引腳還沒(méi)拉高我這邊的驅(qū)動(dòng)已經(jīng)去訪問(wèn)它了”的問(wèn)題八成就是初始化優(yōu)先級(jí)沒(méi)排對(duì)。注意在新版本主線里傳統(tǒng)的DEVICE_DT_DEFINE寫(xiě)法正在被新的設(shè)備模型過(guò)渡方案替代但“先定義實(shí)例、再設(shè)置級(jí)別與優(yōu)先級(jí)”的思路沒(méi)有變。遷移時(shí)重點(diǎn)關(guān)注宏名稱和屬性讀取方式的變化邏輯結(jié)構(gòu)基本可以照搬。3. 想省電低功耗調(diào)優(yōu)的一次完整復(fù)盤(pán)3.1 先把省電這件事拆成三層很多開(kāi)發(fā)者剛接觸低功耗時(shí)第一反應(yīng)是讓主線程多睡一會(huì)兒但真正的省電往往發(fā)生在沒(méi)人注意到的 idle 路徑里。Zephyr 的電源管理至少可以拆成三個(gè)層面來(lái)理解。內(nèi)核層面tickless 模式讓 idle 線程不再被固定周期時(shí)鐘截?cái)?。沒(méi)有可運(yùn)行線程時(shí)內(nèi)核會(huì)盡量讓 CPU 在更低功耗的狀態(tài)里待著直到有中斷或定時(shí)器事件把它喚醒。設(shè)備層面運(yùn)行時(shí)電源管理負(fù)責(zé)在驅(qū)動(dòng)不再使用外設(shè)時(shí)把外設(shè)切到 suspend 狀態(tài)。SoC 層面則是選擇睡眠模式的深淺比如輕度睡眠、深度睡眠、關(guān)斷模式等。這三個(gè)層次缺一不可。只做設(shè)備 suspend內(nèi)核還按固定節(jié)拍醒來(lái)功耗降得有限只做 tickless外設(shè)仍然保持全速供電也談不上省電。想要把電池壽命從一周拉到一個(gè)月必須同時(shí)配合使用。3.2 一個(gè)帶外部中斷喚醒的小工程配置模板這里分享一個(gè)我最近在傳感器采集設(shè)備上調(diào)試的配置工程不大但很能說(shuō)明問(wèn)題。板子平時(shí)處于 idle等待外部 GPIO 中斷喚醒醒來(lái)后讀取一次傳感器數(shù)據(jù)再繼續(xù)睡。prj.conf 里的關(guān)鍵配置大致如下CONFIG_PMy CONFIG_PM_DEVICEy CONFIG_PM_DEVICE_RUNTIMEy CONFIG_PM_SLEEP_STATES_SLEEP_1y注意不同版本的內(nèi)核對(duì)這些配置項(xiàng)的名字可能略有調(diào)整以你當(dāng)前內(nèi)核版本的 Kconfig 幫助說(shuō)明為準(zhǔn)。重點(diǎn)理解這幾項(xiàng)是把“系統(tǒng)級(jí)睡眠、設(shè)備級(jí)電源管理、運(yùn)行時(shí)自動(dòng)掛起”都打開(kāi)缺一個(gè)測(cè)試出來(lái)的功耗曲線都會(huì)不一樣。驅(qū)動(dòng)側(cè)的喚醒路徑可以簡(jiǎn)化為下面這種結(jié)構(gòu)#include zephyr/pm/device.h #include zephyr/pm/device_runtime.h static void gpio_wake_isr(const struct device *port, struct gpio_callback *cb, uint32_t pins) { /* 喚醒中斷里只做標(biāo)記具體業(yè)務(wù)放到線程里處理 */ } int main(void) { /* 先把傳感器外設(shè)掛起再讓系統(tǒng)進(jìn)入 tickless idle */ pm_device_runtime_put(sensor_dev); while (1) { k_sleep(K_MSEC(1000)); } }這個(gè)結(jié)構(gòu)里最容易被忽略的是中斷回調(diào)里的處理邏輯。中斷里如果直接做傳感器讀取不但耗時(shí)還可能在睡眠恢復(fù)流程未完成時(shí)訪問(wèn)外設(shè)導(dǎo)致總線錯(cuò)誤。正確做法是先置一個(gè)標(biāo)志位喚醒線程看到標(biāo)志后再執(zhí)行讀取并在讀取結(jié)束后重新調(diào)用pm_device_runtime_put把外設(shè)掛回低功耗狀態(tài)。3.3 低功耗調(diào)試的排查順序表低功耗問(wèn)題定位起來(lái)比普通功能 bug 更容易讓人抓狂因?yàn)楝F(xiàn)象都在電流數(shù)字上不好打斷點(diǎn)。把常見(jiàn)現(xiàn)象、可能原因和第一步動(dòng)作列成一張表能省很多時(shí)間。現(xiàn)象可能的根因先做這一步睡眠時(shí)電流比預(yù)期高很多調(diào)試串口、shell 或日志后端仍在等待數(shù)據(jù)睡眠前顯式關(guān)閉日志輸出或改用無(wú)日志后端能睡但醒不過(guò)來(lái)喚醒源 GPIO 配置錯(cuò)誤或中斷標(biāo)志未使能確認(rèn) GPIO 是否映射到 SoC 的喚醒控制器檢查觸發(fā)邊沿喚醒后外設(shè)讀數(shù)異常外設(shè)恢復(fù)順序不對(duì)或沒(méi)有正確重新初始化在喚醒線程里先調(diào)用設(shè)備恢復(fù)接口再訪問(wèn)外設(shè)反復(fù)被固定周期喚醒某個(gè)周期線程或定時(shí)器仍在運(yùn)行用 thread_analyzer 列出線程找到周期性任務(wù)并拉長(zhǎng)周期這套排查順序我基本每次都能用上尤其是第一行。很多人測(cè)功耗時(shí)沒(méi)有意識(shí)到 UART 調(diào)試口的收發(fā)器在睡眠狀態(tài)下依然耗電直接把萬(wàn)用表打到微安檔測(cè)出來(lái)的數(shù)字大得離譜。先把調(diào)試通道全部關(guān)掉再測(cè)一次往往會(huì)得到一個(gè)完全不同的基線。4. 高頻問(wèn)題排查清單與實(shí)用工具建議4.1 鏈接報(bào)錯(cuò)先別急著改代碼遇到undefined reference這類鏈接錯(cuò)誤時(shí)我的第一個(gè)動(dòng)作從來(lái)不是翻開(kāi)源碼找符號(hào)而是反查這個(gè)符號(hào)對(duì)應(yīng)的 Kconfig 依賴和設(shè)備樹(shù)節(jié)點(diǎn)狀態(tài)。很大概率是下面三種情況之一驅(qū)動(dòng)依賴的外設(shè)節(jié)點(diǎn)在設(shè)備樹(shù)里是 disabled、對(duì)應(yīng)的 Kconfig 選項(xiàng)沒(méi)有打開(kāi)、或者 binding 文件與節(jié)點(diǎn) compatible 對(duì)不上。舉一個(gè)典型場(chǎng)景項(xiàng)目中添加了一個(gè) I2C 傳感器設(shè)備樹(shù)里節(jié)點(diǎn)寫(xiě)好了驅(qū)動(dòng)也放進(jìn)了源碼目錄但編譯時(shí)就是報(bào)某個(gè)dt_開(kāi)頭的符號(hào)沒(méi)定義。查下來(lái)發(fā)現(xiàn)傳感器的驅(qū)動(dòng)depends on DT_HAS_..._ENABLED而應(yīng)用配置里根本沒(méi)有打開(kāi)對(duì)應(yīng)的 Kconfig 選項(xiàng)。設(shè)備樹(shù)有了、驅(qū)動(dòng)文件也有了中間的開(kāi)關(guān)沒(méi)合閘最終結(jié)果自然是沒(méi)編進(jìn)去。注意不要為了省事在代碼里直接判斷設(shè)備樹(shù)宏是否存在然后寫(xiě)兩個(gè)分支。正確做法是讓驅(qū)動(dòng)聲明依賴關(guān)系然后在 prj.conf 里顯式開(kāi)啟對(duì)應(yīng)功能。這樣編譯期就能發(fā)現(xiàn)問(wèn)題而不是等到運(yùn)行時(shí)莫名其妙地缺少設(shè)備。線程棧溢出也是鏈接之后經(jīng)常出現(xiàn)的運(yùn)行時(shí)問(wèn)題表現(xiàn)形式通常是某個(gè)線程蹦跳異常。排查時(shí)不用猜直接看編譯產(chǎn)物和運(yùn)行時(shí)統(tǒng)計(jì)。west build -b qemu_cortex_m3 -d build app west build -t menuconfig west flash如果改動(dòng)了全局工具鏈路徑或者做了大范圍配置調(diào)整store 構(gòu)建目錄里可能留著舊的生成文件這時(shí)候才需要用west build -p always做一次全量重建。平時(shí)別動(dòng)不動(dòng)加-p always每次全量重建的等待時(shí)間會(huì)讓你懷疑人生。4.2 日志配置三件套日志調(diào)試在 Zephyr 里體驗(yàn)不錯(cuò)但前提是配置對(duì)了。我維護(hù)的項(xiàng)目里調(diào)試期的日志配置一般是這三件套CONFIG_LOGy CONFIG_LOG_MODE_IMMEDIATEy CONFIG_LOG_BACKEND_UARTy CONFIG_LOG_TIMESTAMP_64BITy日志模式的取舍值得多說(shuō)一句。IMMEDIATE模式強(qiáng)調(diào)實(shí)時(shí)性日志消息直接在調(diào)用上下文里輸出時(shí)間戳順序和真實(shí)事件更接近特別適合排查喚醒時(shí)序和中斷路徑問(wèn)題。但它會(huì)把輸出阻塞塞進(jìn)業(yè)務(wù)代碼里影響實(shí)時(shí)性。量產(chǎn)版本可以切回 deferred 模式由日志線程統(tǒng)一處理減小中斷開(kāi)銷(xiāo)代價(jià)是日志可能延遲幾毫秒才落盤(pán)。模塊級(jí)日志開(kāi)關(guān)同樣重要#define LOG_MODULE_NAME mymod #define LOG_LEVEL LOG_LEVEL_DBG #include zephyr/logging/log.h LOG_MODULE_REGISTER(mymod);按模塊登記日志后你可以單獨(dú)調(diào)整某一個(gè)模塊的日志級(jí)別而不影響全局日志。在社區(qū)提問(wèn)時(shí)帶時(shí)間戳的日志片段幾乎是最有效的排障素材比截圖和口述靠譜得多。4.3 Shell 是排障好幫手別只當(dāng)它是娛樂(lè)功能調(diào)試階段開(kāi)啟 shell對(duì)排查系統(tǒng)內(nèi)部狀態(tài)有極大幫助。集成CONFIG_SHELL、CONFIG_THREAD_ANALYZER之后通過(guò)串口終端就能直接觀察運(yùn)行情況uart:~$ kernel threads uart:~$ thread_analyzerkernel threads能列出所有線程及其狀態(tài)、優(yōu)先級(jí)、剩余棧空間看到某個(gè)線程棧占用接近上限時(shí)就可以提前調(diào)大棧而不是等它崩潰。thread_analyzer則是從內(nèi)核的調(diào)度數(shù)據(jù)里直接解讀 CPU 使用率在“為什么這個(gè)任務(wù)卡住了”“到底哪個(gè)線程在占用 CPU”這些問(wèn)題上它能給出最直接的回答。類似的還有kernel stacks、kernel uptime等命令。這些命令在本地跑 QEMU 模擬板卡時(shí)一樣能用所以強(qiáng)烈建議把模擬運(yùn)行環(huán)境作為學(xué)習(xí)時(shí)的第一站先熟悉這些工具再上真板調(diào)效率高很多。5. 社區(qū)案例復(fù)盤(pán)三個(gè)印象深刻的調(diào)試與選型故事5.1 傳感器讀數(shù)跳變的元兇是上電時(shí)序有同行分享過(guò)一個(gè) I2C 溫濕度傳感器的案例現(xiàn)象很詭異設(shè)備大部分時(shí)間正常每隔一段時(shí)間讀數(shù)會(huì)跳變十幾度。一開(kāi)始懷疑信號(hào)質(zhì)量示波器抓出來(lái)的波形卻很干凈。后來(lái)把上電時(shí)序完整畫(huà)出來(lái)才發(fā)現(xiàn)傳感器的復(fù)位引腳和另一顆外設(shè)的片選引腳掛在同一個(gè) GPIO 控制器下面而設(shè)備樹(shù)里兩個(gè)驅(qū)動(dòng)的初始化優(yōu)先級(jí)設(shè)置得不巧導(dǎo)致某次總線訪問(wèn)窗口恰好撞上了復(fù)位釋放和片選切換的競(jìng)爭(zhēng)窗口。解決辦法并不復(fù)雜調(diào)整兩個(gè)設(shè)備在設(shè)備樹(shù)里的初始化優(yōu)先級(jí)讓復(fù)位釋放嚴(yán)格早于另一顆外設(shè)的上電。這個(gè)案例給我的觸動(dòng)是傳感器類問(wèn)題并不總是 I2C 波形問(wèn)題上電時(shí)序和設(shè)備樹(shù)初始化順序這種“隱性依賴”在 RTOS 項(xiàng)目里往往才是真正的坑。5.2 把固件體積壓下來(lái)的三個(gè)抓手另一個(gè)印象很深的案例是有人在資源緊張的板子上做固件瘦身。目標(biāo)很明確Flash 空間已經(jīng)不足以容納新功能但產(chǎn)品又不能換大容量芯片。最終落地了三板斧。第一步用線程分析器挨個(gè)看棧占用把兩個(gè)明顯偏大的 2KB 線程棧降到了 1KB。第二步是清理日志路徑去掉打印里的浮點(diǎn)格式化并把不必要的 shell 模塊從量產(chǎn)配置中剔除。第三步是開(kāi)啟鏈接時(shí)間優(yōu)化讓編譯器跨編譯單元做裁剪。經(jīng)過(guò)這幾步固件體積從 70KB 級(jí)降到了 45KB 左右騰出來(lái)的空間足夠加一個(gè)日志緩存區(qū)和一個(gè)配置參數(shù)分區(qū)。這里有個(gè)細(xì)節(jié)值得借鑒每一步改動(dòng)后都要保留一份構(gòu)建產(chǎn)物方便回歸對(duì)比。體積優(yōu)化最容易出現(xiàn)“這里省 100 字節(jié)、那里省 200 字節(jié)最后功能卻悄悄壞了”的尷尬局面有對(duì)比產(chǎn)物能快速定位是哪一步引起了行為變化。5.3 遠(yuǎn)程升級(jí)鏈路比新功能更值錢(qián)第三件事和 OTA 升級(jí)相關(guān)。一個(gè)做室外設(shè)備維護(hù)的團(tuán)隊(duì)原本一直靠現(xiàn)場(chǎng)接線灌固件后來(lái)決定引入遠(yuǎn)程升級(jí)。他們的方案不算激進(jìn)分區(qū)塊存放鏡像、升級(jí)包帶簽名校驗(yàn)、升級(jí)完成后做版本回滾保護(hù)失敗后自動(dòng)切回舊分區(qū)。復(fù)雜點(diǎn)在于升級(jí)時(shí)機(jī)和斷電處理。設(shè)備原本沒(méi)有做斷電保護(hù)如果升級(jí)到一半掉電最壞情況是設(shè)備變磚。于是他們額外做了一個(gè)引導(dǎo)階段的完整性檢查每次啟動(dòng)時(shí)校驗(yàn)當(dāng)前區(qū)鏡像不完整就強(qiáng)制回滾。這套鏈路里沒(méi)有太多花哨的東西但它把“升級(jí)失敗還能回來(lái)”這個(gè)底線守住了。對(duì)長(zhǎng)期無(wú)人值守的設(shè)備來(lái)說(shuō)一個(gè)穩(wěn)定的升級(jí)鏈路確實(shí)比多接一種傳感器更有價(jià)值。6. 資源索引與下期預(yù)告這期月刊臨近收尾按慣例整理幾個(gè)值得收藏的資料方向。官方文檔里的設(shè)備樹(shù)指南和電源管理專題是我反復(fù)會(huì)去看的。我不會(huì)一上來(lái)整篇啃而是帶著具體問(wèn)題查某個(gè)屬性怎么定義、某個(gè)狀態(tài)切換是什么語(yǔ)義、某個(gè)驅(qū)動(dòng)模板長(zhǎng)什么樣。代碼倉(cāng)庫(kù)里的 samples 目錄是另一個(gè)金礦幾乎每個(gè)子系統(tǒng)都有配套的示例工程遇到“這個(gè)驅(qū)動(dòng)應(yīng)該怎么寫(xiě)”類的問(wèn)題先在 samples 里搜同款比自己從零摸索快得多。社區(qū)方面官方論壇、實(shí)時(shí)聊天室和中文社區(qū)都值得常駐。提問(wèn)時(shí)帶上工程版本、板卡型號(hào)、設(shè)備樹(shù)片段和帶時(shí)間戳的日志通常很快能得到有效反饋。下期月刊想聊的話題我已經(jīng)在列大綱了多核配置與 AMP 模式下的實(shí)際調(diào)度表現(xiàn)Rust 組件從 demo 走向可用的邊界在哪以及傳感器框架在高并發(fā)采樣下的瓶頸分析。如果你有特別想看的主題也歡迎在評(píng)論區(qū)點(diǎn)題。最后說(shuō)一點(diǎn)個(gè)人體會(huì)。做 Zephyr 項(xiàng)目這幾年我最深的感受是這個(gè)系統(tǒng)雖然上手曲線偏陡但一旦理解了設(shè)備樹(shù)、Kconfig 和驅(qū)動(dòng)模型之間的相互作用后續(xù)開(kāi)發(fā)幾乎是“一次學(xué)習(xí)、處處復(fù)用”。這期里講的不少細(xì)節(jié)看起來(lái)零散本質(zhì)上都是在幫你建立這套關(guān)聯(lián)認(rèn)知。希望第 21 期月刊能讓你在下一個(gè)項(xiàng)目里少踩幾個(gè)坑多留出點(diǎn)時(shí)間做真正有意思的功能。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
少妇久久久| 亚洲性网| 亚洲国产精品V?在线播放| 伊人成人情色综合| 91 亚洲 欧美 日韩 国产 综合| 蜜桃臀一区二区三区久久| 久久黄黄| 狠狠爱综合网| 国产女生在线| 久操凹凸视频| 少妇熟女1区2区3区| 色综合91好| 色偷综合| 久久丝袜| 91天堂网| 另类天堂| 性色AV蜜色av色欲av| 蜜臀久久99'精品久久久| 狠狠操狠狠插| 天天摸,夜夜摸| 国产精品一二三在线看| 免费观看国产不卡av| 97亚洲精品| 午夜噜噜噜| 国产精品丝袜久久亚洲不卡| 男人天堂站| 久久黄黄| 国产污视频麻豆传媒一区二区| 这里只有精品视频在线| 久9视频| 天天插夜夜操| 美女视频尤物网在线看| 中文字幕乱在线伦视频中文字幕乱码在线| 少妇国产不卡| caorenqi shipin| 99热只有这里有精品| 国产精品69人妻无码久久久| 人人艹亚洲| 日韩在线一区高清在线| 国产日韩在线播放av| 人人干黄色| 久久av无码| 九九综合久久| 久久超碰免费的| 国产九九久久久精品| 天天影视色香色欲| 91人妻人人妻| 丁香婷婷激情五月天无毒不卡| 亚洲欧美日韩有码| 超碰97首页| 啊啊啊啊好疼视频| 中文乱码字幕观看视频| 操一操摸一摸| 色综合天天| 欧美一级国产一级| 五月丁香啪啪啪| 五月婷婷爱六月丁香色| 精品夜夜澡人妻无码| 91在线欧色| 九九九久千久久激情蜜桃在线看 | 99热这里只有精| 97一区二压| 超碰日韩美妻| a男人的天堂久久一级A毛片 | 欧洲射精91| av亚洲天堂资源网站| laoshunv91| 日韩人人精品| 国产农村妇女精品| 97人人模人人爽人人| 国产高潮AA片免费看| 91久久久久免| 欧美色九九| 3PAV乱伦视频| 熟女色综合久久| 日比av无码| 色y情视频免费看| 在线人人人人人人精品超 | 曰本道人妻久久久在线不卡色视频| 久射吧| 天天色欧美| 国产又黄又爽又刺激久久久久久| 五月天激情四射| 超碰 av 女人天堂| 欧亚无码视频| 情侣开房子拍 日韩无码 女的很漂亮| 国产精品色| 国产在线综合福利网站| 色综合久久久久| 99RE在线视频精品,这里只有精品| 97精品一区| 熟女这里只有精品6| 色色色热| 97 国产精品| 亚洲激情在线观看一区| 中文字幕黑人大片| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | www.国产高潮精品| 午夜九九| 日本狠狠干| 99这里只有精品| 99亚洲精品| 日韩无码专区| 欧美草草高清日韩视频| 色综合婷婷| 国产吹潮女在线观看| 国产区日韩区在线观看| 麻豆天美国美国产| 色与欲影视| 国产大学生高潮在线播放| 久久久久一本一区二区青青蜜月| 久久午夜色播影院免费高清| 欧美另类色图片| 综合色区偷拍| 99国内精品| 欧美性爱超碰97| 亚洲Av无码成人精品国产| 午夜舔阴达高潮视频免费看| 亚洲欧美一区二区三区在钱蜜桃 | 口爆吞精在线观看| 丝袜色综合| 精品中文字幕第一页| 精品一久久久| 91在线视频免费播放| 蜜臀人妻少妇久久在线观看| 精品美女久久久久| 青青草视频在线观看一区二区| 男女国产精品| 国产av高清版| 影音先锋每日最新资源在线观看| 熟妇女人妻呻吟久久AV| 伊人久久综合影院| 五十路人妻在线| 欧美黑人精品一区二区| 久操免费在线| 欧美精品 - 91爱爱| 级做a爱无码性色永久免费| 欧美精品第3页| 亚洲天堂资源网| 国产欧美第五页| 亚洲色图欧美一区二区不卡| 欧美午夜色妇色鬼| 1禁看欧美黄片免费看| 国产丝袜一区二区三区| 激情六月天| 91丝袜美女视频| 性色avv| 无码精品久久| 夜夜国自区| 精品久久99| 操逼操2| 国产黄色在线播放观看| 人妻喷水| 99久久com免费视频′| 操逼视频色| 台湾佬中文娱乐网久久久久久久久久com | 五月天久久人妻| 女人天堂AV五区在线| 国产日韩精品suv| 欧美亚洲日韩16色| 韩国女主播青草福利视频| 日本狂喷奶水在线播放212| 中文字幕乱偷人妻久久艾草网| 国产又大又硬又长又粗| 熟妇乱伦一区二区| 亚洲综合色在线| 国内91熟女人妻丝袜天天精品视频在线 | 美女上床网站| av在线人气| 国产强奸超碰AV| 99热在线观看| 啊啊啊啊好爽好舒服一区二区易域| 91麻豆天美传媒HD| 日夜啪电影| 青椒国产97在线熟女| 96一区二区三区| 嗯嗯啊啊好疼| 亚洲淫乱骚妇AV| 国产超碰| 国产精品色片一区二区| 国产一级高跟丝袜| 欧美亚洲小说| 欧美,日韩,中文,另类| 中文字幕天天天天天| 亚洲综合性网址| 色五月婷婷久久| 久综合国内精品自在自线| 日本2020一区二区| 亚洲日韩黑丝| 麻豆天美在线喷水AV| 日韩三级一区| 婷婷久久久| 99热在线观看| 欧美黄片欧美黄片xxx| 美女久久久| 全国男人天堂网| 中文字幕视频免费| 日韩欧美水蜜桃人妻| 欧美黄页在线| 性爱久久| 婷婷五月天网| 亚洲午夜av| 影音先锋中文字幕日本好一区二区| 日韩性爱小视频| 久久系列| 人人性爱视频免费| 国产在线视频午夜精华在| 97色色色| 97综合久久| 熟女人妻一区二区三区| 欧美 色 亚洲| 欧美性爱精品七区| 亚洲中文字幕精品一区| 摸奶性爱视频网站在线免费播放| 少妇久久久| 火箭成精品视频884必出精品| 香蕉精品二区二区| 欧美人妻少妇| 中国农村熟妇毛片视频| 欧美1区二区三区公司| 国产乱伦亚洲色图高清无码| 啊a一区在线| 日本三级人妻a人妻一在线| 东京热激情视频一二三区| 色情婷婷| 久久久久9久久久久| 99热色这里只有精品| 天天综合,91综合永久| 久久草草欧美精品| 曰本精品久久久| 1二区9| 少妇熟女视频一区二区三区 | 天天躁日日躁AAA片李宗瑞| 亚洲精品亚洲人成在线麻豆| 欧美日韩成人在线| 91 丝袜在线| 美女让帅哥通她小鸡鸡| 人妻精品一区二区三区| 亚洲黄色视频在线观看视频| 3P乱轮视频| 任你爽视频| 白丝AV网站| 色麻豆AV| 国产无码精品久久久久久| 国产中文字幕在线点播| 天天色综合天天操| 日本 免费 一区二区三区 久久香蕉 | 中文字幕版| 欧美激色| 操屄日韩| 色色色综合网| 精品乱码久久久久| 91精品国产综合久久久蜜臀酒店| 久久99午夜精品一区人妻| 人人爱操| 婷婷香网站| 欧美色图20P| 370p日韩欧美亚洲精品| 婷婷中文字幕| 日日嗨AV一区二区夜夜| 加勒比伊人| 精品性爱一二三区| 嗯嗯啊啊好疼| 亚洲一区操| 91狠狠色丁香婷婷综合久久| 日韩久草| 精品国产一区二区三区香蕉欧美 | 色妺妺AⅤ| 日本国产高清色www视频在线| 亚洲丝袜二区| 国产精品97超碰| 天天澡天天爽日日AV| 亚洲色图日韩精品| 九九热视频这里只有精品| 综合网少妇| 东京热男人的天堂精品| 久久亚州高清| 26uuu最新| 婷婷综合网站| 欧美性五月| 九九干| 欧美五区| 亚洲āv网址在线观看| 日韩久久三区| 精品亚洲天堂| 五月丁香亭亭| 精品九区| 99久久9| 色香综合天天影视综合 | 亚洲超碰AV| 久久免费精品96| 欧美日韩黄片精品在线| 国产小炒后入式| 丰满人妻被猛烈进入中| 操B久久| 亚洲A曰本VA欧美VA视频| 成人 日韩欧美一区| 欧美啪啪啪91| 麻豆人妻精品一区二区| 欧美在线啊啊| 久久久久久性爱视频| 九九九网站| 96AV精品| 在线观看不卡一区二区三区| 国产精品网站免费| 免费αⅴ在线观看| 蜜臀aV午夜一区二区三区| 操逼片国产| 91精产一区二区三区| 2019久久久久久久久福利| A啊啊在线观看| 乱论91| 九一性生活免费视频| 91操人| 日韩欧美麻豆| 欧美综合加勒比在线| 亚洲春色一区二区三区| 歐美性天天| 多乙久久久久久| 日本不卡一二区| 日本亚洲vr欧美不卡高清专区| 青娱乐淫乱1314| 欧亚日韩三区| 激情小说五月天| 精品久| 97色色,97综合| 日韩欧美中文| 性猛交| 亚洲免费97免费| 每日更新AV| 91一区二匹| 欧美日韩亚洲高清不卡一区二区三区| 无套内射人妻在线播放| 欧美人妻制服| 玖玖久久久| 东京热视频网| 精品一区二区啪啪啪| 中文伊人大香蕉视频| 日韩黄片影院| 大香蕉狠狠爱| 亚州欧美综合| 日韩天堂av电影在线观看| 国产高清精品一区二区三区毛片| 撸无码不卡免费视频| 夜夜狼人妻| 精品性爱一区二区| 精品视频一区二区| 精品免费成人久久| 大香蕉啪啪啪啪在线| 97香蕉碰碰人妻国产欧美| a片在线播放| 深爱伊人影院| 欧洲精品网| 大胆91| 91c色| 中文字幕蜜乳av| 久草毛片| 鸥美极品| 色五月激情AV在线| 99国产在线绯色一区| 大香蕉丝袜一级片| 久久精品国产亚洲AV无码做| 88xx成人精品视频| 男人亚洲天堂| 欧美激情高清性猛交| 青青草玖玖爱| 97国产天堂岛| 97日视频| 色 亚洲 91| 国产精品2020| 91丝袜美腿网站| 东京热亚洲一区二区| 思思热影视| 午夜一区二区三区国产| 午夜福利激情在线视频| 手机午夜电影神马久久| 欧美不卡在线一区二区| 日日夜夜精品| 国产高清在线观看欧美| 国产欧美一级在线观看| 日本性爱网址| 麻豆这里只有精品| 丁香五月激情综合| 青青草中文-久久青草精品一区二区三 | 久久99999| 国产免费大片| 看黑人AV不卡| 九九成人精品| 日韩精品9区| 天天澡天天爽日日av| 国产亚洲欧洲在线观看| AV丝袜少妇| 91色综合激情| 日本孕妇孕交| 人妻熟女一区二区在线视频| 视频二区美腿制服人妻欧美| 人妻熟女一区二区三区视频| 91欧美综合| 热99这里有精品综合久久 | 中文字幕国产在线天堂| 91欧洲国产成人久久精品网站| 久久专区| 色色网91| 国产伦乱91| 色五月婷婷在线| 殴美牲| 怡春院久久| 97免费在线视频| 国产家庭乱伦表演| 欧美日韩国产高清在线一二三区 | 99热免费| 日本孕妇孕交| 超碰色97| 国产精品探花色| 欧美麻豆成人同性GⅤ在线| 天天爽人人综合免费7799| 色久综合| 97 国产一区| 亚州综合电影| 亚洲熟女一区二区| 日韩免费簧片| 五月色网| 人妻熟妇久草在线| 玖草在线视频| 囯产操逼片| 中文高清一区二区的| 久久久久9999妇女| 黑人性欧美| 在线中文字幕| 国产一级黄色片在线观看| 操逼视频亚洲| 91色图片| 欧美色图亚洲激情| 强奸乱伦大香蕉| 99在线观看| 精品网站99999| 精品传媒在线一区| 操高情无码| 91人妻丝袜无码| 国产熟女自拍| 日本黄色大片一级视频免费麻豆| 天天91~综合入口| 蜜桃狠狠色伊人亚洲综合 | 色网亚洲人| 欧美成人性爱视频在线播放| 爱我干综合| 校园春色亚洲无码| 强奸乱伦AV一天堂网| 丁香五月综合| 在线观看 99热| 日本一道在线播放高清| 欧美一区91大爱| 青青草AV色| 亚洲第一狼人丝袜美女另类 | 清纯唯美综合亚洲| 91精品啪在线观看国产城中村| 大香蕉综合| 国产白丝av| 91碰碰碰| 欧美中文综合| 爽爽淫人网| 亚洲国产天堂| 色五月av| 超碰99re| 97天天爽| 中文字幕天堂在线| 啊嗯好大视频在线观看| 亚洲一二三四区| 亚洲一欧洲中文字幕在线| 天天影视射综合网| 一本大道不卡一二三区| 天天摸天天碰天天添青青| 超碰95| 色嘟嘟人妻天堂网| 国产9区| 人人天天欧洲| 国产强奸乱伦第1页| 日韩亚洲美州欧洲综三区一品在线| 国产熟女一区二区| 99热亚洲天堂| 看免费一级在线播放毛片| 三级片大波波| 特级特黄一级毛片免费| 色偷综合| 婷婷五月天伊人| 国产精品久久久久久久久久久久久久吹 | 中文字幕一区二区视频在线观看| 日韩女优在线| 日韩无码三级影院| 少妇高潮喷水无套久久久久久| 黄色免费网页无码| 久热精品在线| 91麻豆天美国产欧美日| 先锋影音av先锋一区| 日本99一区二区| 国产精品久久久久中文字幕| 日曰骚久久精品| 色性综合| 五月婷网站| 抽插一区二区视频| 天天摸夜夜摸| 精品一区二区人妖| 亚洲激情网| 亚洲啪啪综合?v一区综合精品区| 天堂国产AV| 亚洲情色中文字幕一区| 91无码精品| 亚洲综合影视| 蜜桃av综合网发布| 日本一区二区不卡| 亚洲欧美啪啪| 蜜臀在线免费观看在线免费观看| 国产午夜激片Av毛片不卡| 欧美日韩色| 97久久久精品| 激情一区二区三区在线观看| 青娱乐亚洲自拍| 久久岛国| 欧美 亚洲 综合 制服 另类| 丁香五月综合| 中国大陆国产高清AⅤ毛片| 久区视频| 天天大干大香蕉| 91亚洲精品青草| 免费在线观看国内色片网站网址 | 亚洲操逼网| 国产传媒午夜理伦精品| 久久久久久久久久9| 日日噜噜夜夜久久亚洲一区二区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 久久免费精品视频免一| 91久久久亚洲| 欧美熟妇精品黑人巨大91| 精品小视频在线| 男人的天堂2010| 91 亚洲 欧美 日韩 国产 综合| 日本不卡一区二区| 人妻91少妇| 欧美极品少妇| 日韩精品作爱导航| 毛片久久| 亚洲天堂2020| 亚洲人妻爽爽爽| 日日日日做夜夜夜夜做无码97| 亚洲综合888| 3571色综合一区二区二区| 午夜理论片在线观看免费| 草草影院日本第一页| 成人精品无码| 日本在线观看网址| 91少妇| 欧美日韩在线小说| 人妻丝袜日本| 久九九九| 色婷婷国产精品一区在线观看| 欧洲亚洲人妻无码久久三区四区| 亚洲人精品久久久| 99精品无码| 91中文字幕在线观看| 久草毛片| 欧美人妖内射| 91九色丨风韵犹存| 国产精品免费久久久久久久久久| 色牛aV| 五月丁香六月综合缴清无码| 日本一区二区三区午夜观看| 2019精品国产无码成人| 中文字幕日韩人妻视频| 中文字幕精品探花视频| 日韩大香蕉AV影片| 极品另类| 岛国福利在线精品播放| 国产精品一区二区校花| 性爱乱伦一区| 色噜噜狠狠色综无码久久合欧美| 欧美极品女人的天堂| 中文高清一区二区的| 欧美中文字幕男人天堂久久精品 | 久久久久久九九九| 无码137片内射在线影院| 日本性爱欧美性爱| 国产92麻豆天美精品色欲5| 日韩乱插| 四虎永久在线精品免费网址 | 欧美在线啊啊| 91影库| 日韩去日本高清在| 蜜桃久久综合视频| 天天色怡春院| 诱惑网综合| 国产午夜福利电影免费在线观看| 成人福利视频网| 少妇一线天久久久久久| 99蜜桃臀亚洲成人在线观看| 97在线播放| 人妻二区| 噜噜噜噜天天狠狠| 思思热在线视频免费| 亚洲欧综合另类无码一区| 亚洲天堂区| av线电影| 女人天堂av在线播放| 中文字幕亚洲永久精品| 精品精品精品| 中文字幕精品三级久久久| 国产高清自拍| 国产精选三级在线观看| 九月AV| 久久久无码精品人妻二区| 在线毛片片免费观看| 国产97色在线| 91处女视频在线观看| 国产一区在线看| 顶级丝袜熟女一区二区三区| 无码一区二区三区四区五区六区七区八区九区十区视频 | 老熟妇乱轮| 一区二区娱乐网站| 蜜臀久久久国产| 97国产超碰| 精品一区二区亚洲国产| 国产精品久久久久久久久久久久久久久 | 久热一区二区| 第一高清av中文字幕| 97欧美色资源| 最新av中文字幕高清| 人人天天欧洲| 欧美性暴力猛交| 大地资源在线观看中文第二页| 香港日本韩国人妇99www.wccm20| 女人精品内射国产99| 五月激情小说| 99精品九九九九九九| 美女国产一区二区久久| 国产美女口爆吞精| 免费av在线播放二区| 精品久久久av| 天天综合网日韩| 人妻激情偷乱视频一区二区三区 | 中文一区在线视频| 精品成人女人久久| 成年人三级黄色片视频| 大香伊人在线一区| 岛国在线免费视频| 日本999精品视频| 亚洲巨爆乳一区二区三区四季网| 天天日日舔舔| 青娱乐休闲视频在线观看| 人妻少妇精品一区二区三区| 78精品| 农村妇女一级二级三级视频| 久久春色| 熟妇人妻一区二区| 欧美日韩午夜精品一区二区三区| 综合网~91综合网| 久久久精品91八戒| av72网| 在线可观看的黄色网址| 久久久一二三四区| 91欧美| 懂色Av| 九九九久久久久| 北约熟女超碰| 台湾佬中文娱乐网久久久久久久久久com | 天天干一区二区| 欧美成年人性爱视频免费观看| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 国内亚洲高清无码| 免费啊啊啊| 96久久精品一二三区色欲| 欧美性色欧美| 99热99re超碰精品| 岛国片在线播放| 91艹| 亚洲综合色男人网| 岛国片在线视频网站| 91色色综合| 超碰在线91| 精品久久久久久AV无码| 欧美综合传媒| 欧美|91色综合| 强奸乱伦大香蕉| 亚洲深夜福利| 嗯嗯啊啊好疼| 五月激情在线| 日本熟女免费視颖| 超碰久超碰久| 96国产污污污丝袜| 密臀成人视频久久久| 天美AV片| 欧美日韩国产高清在线一二三区 | 欧美性视频二区三区| 五月婷婷六月丁香| 国产91乱伦| 91美女小视频| 97欧美色综合| 亚洲91网。| 婷婷99| 91丨豆花丨熟女| 精品国产乱码久久久A| 日本大香蕉| 亚洲,欧美,春色,另类| 国产操偷| AV一起草在线| 精…码一二三区| 国产精品电| 久操 高清| 亚洲男人天堂Av| 久久av成人无码免费| 亚洲情色综合| 亚州,欧美在线| 91天天爱| 蜜伊人色综合97| 激情五月天色播| 一起草精品人妻| 日韩精品碰碰| 免费看片黄| 精品国产乱码久久久久久蜜臀| 精品一区二区三区蜜桃臀www| 久久色激情一区二区三区| 久久婷婷亚洲| 91|九色|国产熟女| 日本五十路熟女一区二区| 成全动漫视频观看免费下载| 青青草毛片| 欧美性高潮| 少妇熟女视频一区二区三区| 91精品国产乱码| 国产美女口爆吞精| 一区二区三区 丝袜高跟| 九九天堂| 玖玖人人爱| 精品国产乱码久久久久久久久1| 色99视频| 丁香五月性| 亚洲精品亚洲人成人网| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 欧美 日韩 亚洲 春色| 韩国三级一线观看久| AAAA级日本片免费视频| 神马久久久久| a级免费在线观看| 国产高清亚洲日韩一区| 欧美精品久久96人妻无码| 97爱爱| 亚洲欧美一区二区网址| 久久中文字幕不卡人妻| 国产家庭乱伦表演| 亚洲精品国产无码高清| 日日噜噜夜夜狠狠视频无| 男人天堂黄片| 日韩无码黄色片| A 天堂在线观看视频| 久精品无码av一区二免费国产在线观看| 欧美人妻久久精品二区三区 | 啪啪啪男女亚洲中文字幕99| 中国91AV| 国产老太乱伦一区| 欧美gv在线观看| 99国产在线 精品 视频| 婷婷中文网| 欧美日韩91| 国产女上位好爽在线| 99天天超碰| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | av在线播放国产一区| 操逼1区| 99ri在线视频| 亚洲一区二区三区久久 亚洲一区二区| 小草精彩毛片| 国产免费久久精品99re韩国| 亚洲美腿丝袜香蕉影视欧美成人| 欧美92| 偷拍 欧美 日韩| 五月天丁香婷婷综合网站| 五月天久久久| 啊啊啊97视频| 99精品无码| 亚洲无码视频免费在线观看网址!| 蜜乳av一区二区| 麻豆这里只有精品| 天天干天天日天天射黄色大片| 男人网站婷婷| 欧美美女视频| 亚洲欧美综合区自拍另类| 一级免费啪啪片| 一区,二区,三区网站| 曰韩香蕉97| 97爱爱爱| 国产一级αv免费看片| 久久久啊啊| 深夜激情| 天天干天天燥| 男人的天堂不卡一区二区| 久超超碰| 好爽免费视频| 亚洲砖码砖专无区2023| 亚州操操穴网| 国产精品另类| 亚洲国产精品无码AV在线| 色av中文字| 日韩无码服务区| 日韩综合成人免费视频| 久久久无码国精品无码三区三区| 久久动漫精品视频这里只有精品| 日本综合色图| 婷婷综合网站| 日本精品九九九| 黄片qw| 日韩情色视频| 丝袜 中出 制服 人妻 美腿 中文字幕| 国产在线强奸视频| 精品人妻1237| 超碰99re| 99啪啪| 性欧美| 丁香五月综合| 成人黄页| 亚洲图片日本AⅤ欧美在线| 九色 人妻 大香蕉| 91精品久久久久| 日本精品第一视频在'| 久草草一二三四区久久| A片A5445444| 国产区性爱在线视频秋霞豆 | 操碰97| 蜜桃久久一区二区| 欧美熟妇操操视频| 精品射1999| 人人做人人妻人人夜视频| 国产精品探花视频| 性性欧美| 久久精品国产亚洲AV高清演员表| 久久久久密| 91在线视频国产网站| 激情婷婷五月天| 夜夜嗨一区二区三区直播内容| 激情综合二| 国产和美国毛片| 无码日韩人妻av一| 啊啊啊啊啊啊啊啊啊在线观看| 久久精品国产亚洲AV高清演员表| 五月天久久婷婷亚洲| 亚洲性爱乱操x| 一区 欧美 日韩 麻豆| 9色国产精品一区粉嫩| 国产精品一二三免费网站| 精品国产乱子伦一区二区三区,精品一 | 日本精品高清一二区一本到| 国产精品乱码久久久、久久| 福利在线黄片| 噜噜噜噜天天狠狠| 人妻少妇一区二区| 日本淫乱女一区二区三区视频| 天天操女人| 囯戸精品高潮呻吟旡码| 99在线视频播放| 国产精品制服丝袜清纯唯美| 91 国产丝袜在线播放-百度| 自拍偷拍2025在线观看| 78m啪啪啪| 大香蕉AV丝袜| 国产一区二区三三视频| 欧美老妇综合网| 日本熟女不卡视频| 熟妇艹鸡八| 欧美性爱一级操| 国产精品久久蜜乳av| 中文一区二区婷婷视频| 熟女这里只有精品6| 熟女91网| 天美AV片| 做爱A级亚欧| 九九九九亚洲| 亚州色站 日韩电影| av无码精品久久久久| 91N综合网| 蜜桃臀 后入 一区 二区 三区 在线| 74成人在线| 日1区2区3区2020| 射丝袜高跟鞋99| 极品尤物女神在线观看| 香蕉99秘 一区精品蜜桃臀| 大香蕉99热| 亚洲五月婷| 蜜乳AV免费观看| 不卡六六在线91| 91在线视频免费中出| 成人美女av| 人人操人人93| 久久精品国产亚洲AV片多多 | 射 色综合| 加勒比在线视频一区二区三区| 欧美性夜| 风骚少妇视频中文字幕| 搡老女人老妇女老妇老熟女怎么读| 金莲网址| 一级黄色性爱裸体视频| 91痴汉| 久久伊人青青草| 日韩AV电影网站| 亚洲欧美一区二区三区一猛片| 男人天堂网站| 大香蕉99re| 伊人久久亚洲中文字幕不卡| 久久久久久久久久久六六| 亚洲一本色道中文无码aV天美| 亚洲欧洲成人在线电影| 东京热,男人的天堂| 91超碰碰在线| 欧美第38页| 欧美亚洲国内自拍| 久久丁香五月婷婷| 免费A V在线播放| 岛国在线免费视频| 免费a v| 密臀在线一区尤物| 欧美久久人体| 夜色97| 老女人老91妇女老热女| 欧美超碰96| 91网站18在线观看| 精品区9| 99色综合| 激情综合亚洲| 色情综合| 欧美性生活综合| 强奸乱伦日韩AV| 国产精品嫩草影院免费| 日本十八禁免费看污网站| 国产成久久综合片| 国内毛片欧美香蕉精品| 亚洲精品97| site:sinbotex.com| 欧美激情精品| 久久精品电影在线| 亚洲色电影在线| 精品免费囯产一区二区三区| 99热线麻豆| 99视频自拍区| 狠狠入| 啊啊啊免费| 午夜精品久久一区二区| 91狠狠综| 人妻精品免费一二三区| 爱妃国产亚洲视频中文字幕| 国产无码三级视频在线观看| 日韩 国产 欧美自拍| 久久精品国产99精品亚洲蜜...| 蜜乳AV免费观看| 精品久久久久久中文字幕三区| 家庭乱伦国产| 狠狠色噜噜狠狠狠狠狠色综合久久| 操逼操逼逼操操逼91 | 久久久久久中文版| 免费成人在线熟妇网| 久久同城AV| 夜夜爽夜夜摸夜夜操免费视频| 天天综合站| 激情在线青青操| 欧美色综合| 亚洲欧洲综合av在线| 亚洲最大的综合性av| 日本人妻A片成人免费看片| 天美精品av| 91视频成人福利网站在线一区 | 成人五月天丁香激情综合| 无码免费在线观看黄色片| 成人八戒网站| 久久天堂婷婷网| 大吊色| 久久精品日韩专区免费观看| 久久黄人人爽视频| 中文字幕一区二区三区四区在线视频| 久久久久久久亚洲Av无码| 日韩婷婷| 自拍盗摄一区| 中文字幕免费看| 大学生美女口爆| 成人三一级一片aaa| 激情综合五月| 天天日天天射天天干| 欧美特黄视频网站| 一起草三级AV电影在线观看 | 乱伦图一区| 五月婷婷激情网| 婷婷香网站| 精品对白久久不卡| 香蕉久久AⅤ...| 99色综合| 五十路人妻在线| 国产高清自拍视频| 亚洲熟女av日韩熟女| 用力操死我| 亚洲天堂一二| 无码人妻精品一区二区中文| 亚洲五月丁香花狠狠干一区二区三区 | 女人的久久久| 无卡一区=区| 久操操AV电影| 午夜精品一区二区三区三上悠亚| 亚洲精品蜜桃久久久久久久| 五十路三区在线| 亚洲强奸乱伦影视网| 蜜桃视频一区二区三区在线观看| 综合网少妇| 艹少妇网站| 超硑97精品| 中文字幕99999| 无码国产精品午夜不卡( | 三级激情网站| 丰满人妻一区二区三区在线| 久久久无码精品人妻二区 | 久久精品一区二区三区蜜桃臀| 18禁止看精品中文字幕| 久久精品小视频| 色噜噜人妻av中文字幕| 手机在线播放国产福利| 亚洲成人一二三区| 久久久久夜夜夜夜| 免费精品99| 亚洲脚交| 久久人人舔人人爽舔人人av片| 日韩av色图综合| 免费a v| 97超碰美国| 我想要 啊 啊 啊| 久久曰曰| 秘书高跟黑色丝袜国产91在线| 一类无码操逼视频| 97日视频| 亚洲无码成人精品| 色五月69夫妻| 国产强奸乱伦无码视频| 久久人人妻| 综合97| 亚洲天堂色图| 日韩兔费看黄片| 久久久久精| 国产女大学生AV| 久久久久久久久久久久久久9999| 欧美色宗合| 91大神电影天堂| 日本爽爽爽爽爽爽免费视频| 亚洲男人天堂2012| 国产午夜在线观看视频| 北京美女一区二区| 中文字幕91页| 热久久无毒不卡| 综合五月婷婷| 亚洲欧美黄| 91xingse| 在线亚洲 欧美 日本专区| 日少妇亚洲版| 亚洲 自拍偷拍 欧美| 国产风韵犹存熟妇三区| 超碰人人超在线观看| 四虎AV在线播放| 超碰亚洲欧美日韩无| 久久国产逼| 强奸熟女一区二区三区| 自拍大香蕉乱插| 大香蕉啪啪啪| 在线a亚洲视频播放在线| 啊啊啊啊啊啊好湿好爽视频| 天天操人人操狠狠插| 久久这里| 九九色婷婷| 看日韩黄片| 亚洲超碰综合网| 亚洲精品99| 欧美特大AA级黄片| 亚洲怡春院| 91 手机在线播放 绯色| 日韩精品一区二区高清| 精品一区99999| 亚洲色图久久成人| 国产欧美成人第一页在线观看| 欧美第五页| 欧美日韩免费专区在线| 天天操天天干一区二区 | 韩日色费| 91AV国产精品| 熟妇亚洲一区二区三区| 高清无码 国产精品| 亚洲色人阁| 亚洲爱爱视频一区二区| 干b在线性社区| 大香蕉99热| 综合久| 国产日韩手机视频在线| 日本 情色 1区2区3区| 混色激情av| 亚洲欧综合另类无码一区| 欧美天天射| 1024午夜激情男人的天堂| 97人肏| 亚洲国产一区二区三区四区国产| 久96热在线观看视频| www.成人无码| 啊啊啊97视频| 蜜臀久久99精品久久久久久久久| 精品国产人成在线| 精品免费视频国产一区| 久久精品成人| 搞中出视频在线观看| 2020中文字幕| 国产97色在线| 久久成人午夜精品影院| 麻豆三极片| 老司机香蕉久久久久| 啊啊啊啊啊啊啊在线| 欧洲乱码一区二区| 亚洲综合五月天婷婷丁香| 亚洲最新a在线观看| 国产精品99精品视频网站| 91丝袜在线播放| 91中出在线| 青青操视频在线| 人人妻人人色| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 99蜜桃臀久久久欧美精品网站| 操操AV电影| 操人无码| 欧亚免费视频| 国产色呦呦| 九色精品视频导航1| 人妻色偷色噜| 亚洲天堂男人天堂| 久久中文字幕在线观看| 88在线一区二区三区| 日韩黄色小说| 91黑丝操| 91超碰在线播放| 91精产一区二区三区| 91N综合在线| 亚洲精品 超碰| 久久精品一区| 有码色中文字幕在线观看| 嗯嗯啊啊亚欧精品| 中文字幕版| 日韩三级在线观看mp4| 亚洲人在线| 国产视频一区二区三区久久亚洲天堂| 25国产精品免费观看| 五月婷婷丁香六月| 中文字幕五区| 青娱乐亚洲热| 激情图片亚洲色图| 综合网欧| m欧洲一级午老| 久久人妇| 97欧美色| 大香久久| 国产高清亚洲日韩一区| 欧美巨大性舒爽顶到了| 99亚洲精品| 亚洲av综合色区无码一| 91丨熟女丨丰满熟女| 婷婷午夜| 暖暖精品二区三区观看|