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

ARTICLE DETAIL

資訊詳情

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

萬(wàn)耦開(kāi)發(fā)板上FlashDB+FAL+SFUD+W25Q64嵌入式數(shù)據(jù)持久化實(shí)戰(zhàn)

萬(wàn)耦開(kāi)發(fā)板上FlashDB+FAL+SFUD+W25Q64嵌入式數(shù)據(jù)持久化實(shí)戰(zhàn) 簡(jiǎn)介本資源是一套面向嵌入式開(kāi)發(fā)者的完整 FlashDB 輕量級(jí)鍵值數(shù)據(jù)庫(kù)移植與實(shí)測(cè)工程適用于 STM32 平臺(tái)特別是中移物聯(lián)萬(wàn)耦開(kāi)發(fā)板的 W25Q64 Flash 存儲(chǔ)場(chǎng)景解決嵌入式設(shè)備中 Flash 壽命管理難、數(shù)據(jù)持久化開(kāi)發(fā)復(fù)雜、分區(qū)抽象不足等實(shí)際問(wèn)題。壓縮包共 2009 個(gè)文件以 850 個(gè) C 源碼和 576 個(gè)頭文件構(gòu)成核心驅(qū)動(dòng)與數(shù)據(jù)庫(kù)邏輯輔以 90 個(gè)依賴(lài)描述.d、73 個(gè)匯編文件.s及 46 個(gè) Markdown 文檔.md涵蓋 SFUD 驅(qū)動(dòng)適配、FAL 分區(qū)配置、FlashDB KV 接口封裝及多版本數(shù)學(xué)庫(kù)如 libarm_cortexM4lf_math.a支持整體體積達(dá) 50.6MB結(jié)構(gòu)層次清晰便于模塊化學(xué)習(xí)與裁剪復(fù)用。已有 1226 人學(xué)習(xí)下載讀者可直接獲取可運(yùn)行的 QSPIFlashDBW25Q64 實(shí)測(cè)例程、FAL 分區(qū)表定義模板、SFUD 設(shè)備注冊(cè)范例及 FlashDB 初始化與讀寫(xiě)全流程代碼顯著降低嵌入式時(shí)序/配置數(shù)據(jù)本地化存儲(chǔ)的開(kāi)發(fā)門(mén)檻。1. 為什么在萬(wàn)耦開(kāi)發(fā)板上硬剛 FlashDB SFUD FAL W25Q64 這套組合——不是炫技是解決真實(shí)嵌入式數(shù)據(jù)存取的“最后一公里”問(wèn)題某高校嵌入式課程設(shè)計(jì)組反饋學(xué)生用 STM32F407 搭配 W25Q64 閃存芯片做環(huán)境監(jiān)測(cè)終端要求斷電不丟數(shù)據(jù)、支持鍵值讀寫(xiě)、能記錄溫濕度時(shí)序點(diǎn)但一上電就卡在fal_init()返回 -1串口打印全是SFUD: read jedec id failed另一組在答辯現(xiàn)場(chǎng)演示時(shí)連續(xù)寫(xiě)入 200 條傳感器記錄后flashdb_set()突然返回FLASHDB_ERROR_FULL而實(shí)際 Flash 空間還剩 70%——沒(méi)人知道哪條數(shù)據(jù)被悄悄覆蓋了。這恰恰暴露了當(dāng)前嵌入式輕量數(shù)據(jù)庫(kù)落地最典型的斷層理論文檔寫(xiě)得漂亮例程只跑通“單次寫(xiě)單次讀”一旦涉及真實(shí)場(chǎng)景下的擦寫(xiě)壽命管理、扇區(qū)對(duì)齊、掉電保護(hù)、多鍵并發(fā)整套鏈路立刻變成黑匣子。本方案不是教你怎么照抄官方 demo而是把中移物聯(lián)萬(wàn)耦開(kāi)發(fā)板基于 Cortex-M4 內(nèi)核作為真實(shí)硬件靶場(chǎng)完整復(fù)現(xiàn)從 SFUD 驅(qū)動(dòng) W25Q64 物理層校準(zhǔn) → FAL 分區(qū)抽象 → FlashDB 鍵值引擎初始化 → 時(shí)序數(shù)據(jù)結(jié)構(gòu)體持久化這一整條鏈路的可驗(yàn)證、可調(diào)試、可復(fù)位重演的工程閉環(huán)。適合正在做畢設(shè)/課設(shè)、需要交一份“能上電跑通、能現(xiàn)場(chǎng)演示、能解釋每行異常碼含義”的同學(xué)也適合想把 FlashDB 真正用進(jìn)量產(chǎn)設(shè)備的工程師。2. 硬件與軟件棧對(duì)齊萬(wàn)耦開(kāi)發(fā)板資源約束下的技術(shù)選型依據(jù)與版本鎖定萬(wàn)耦開(kāi)發(fā)板雖標(biāo)稱(chēng)“高性能物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái)”但其 Flash 資源分配極具現(xiàn)實(shí)代表性?xún)?nèi)置 1MB SPI FlashW25Q64JV8MB 容量其中僅 512KB 明確劃為用戶(hù)數(shù)據(jù)區(qū)其余被 Bootloader、OTA 固件區(qū)、參數(shù)備份區(qū)占用。這意味著任何數(shù)據(jù)庫(kù)方案都必須在有限扇區(qū)數(shù)W25Q64 單扇區(qū) 4KB共 2048 扇區(qū)、有限擦寫(xiě)次數(shù)典型 10 萬(wàn)次、無(wú)硬件 ECC 支持的前提下工作。我們放棄 SQLite 等重量級(jí)方案核心原因不是性能而是其 WAL 日志模式在掉電瞬間極易導(dǎo)致頁(yè)損壞且無(wú)法與 FAL 的扇區(qū)管理無(wú)縫協(xié)同。而 FlashDB 的設(shè)計(jì)哲學(xué)恰好匹配此場(chǎng)景它不依賴(lài)文件系統(tǒng)抽象層直接操作 FAL 提供的邏輯地址通過(guò)“小塊寫(xiě)大塊擦”策略規(guī)避頻繁擦寫(xiě)且所有元數(shù)據(jù)如 KV 表頭、時(shí)序索引均采用 CRC 校驗(yàn)雙備份機(jī)制。本方案鎖定以下版本組合經(jīng)實(shí)測(cè)兼容性最佳SFUD v1.1.0修復(fù)了 W25Q64JV 在高速模式Quad SPI下 JEDEC ID 讀取超時(shí)問(wèn)題關(guān)鍵補(bǔ)丁見(jiàn)sfud_flash.c第 327 行spi_write_read調(diào)用前增加sfud_delay_us(1)FAL v0.5.0啟用FAL_PART_HAS_TABLE宏支持運(yùn)行時(shí)動(dòng)態(tài)分區(qū)表加載避免硬編碼fal_cfg.h導(dǎo)致 OTA 升級(jí)后分區(qū)錯(cuò)位FlashDB v1.2.0啟用FLASHDB_USING_TIME宏開(kāi)啟時(shí)序數(shù)據(jù)庫(kù)能力但需注意其fdb_tsdb_append()接口默認(rèn)使用uint32_t時(shí)間戳秒級(jí)若需毫秒精度必須修改fdb_tsdb.c中append_data函數(shù)內(nèi)>// sfud_port.c 中新增函數(shù)關(guān)鍵補(bǔ)全 sfud_err_t sfud_write_status_register(const sfud_flash_t *flash, uint8_t status) { sfud_err_t result SFUD_SUCCESS; uint8_t cmd 0x01; // Write Status Register command uint8_t write_enable_cmd 0x06; // Step 1: Send Write Enable spi_write_read(flash-spi, write_enable_cmd, 1, NULL, 0); // Step 2: Send Write Status Register command data spi_write_read(flash-spi, cmd, 1, NULL, 0); spi_write_read(flash-spi, status, 1, NULL, 0); return result; }該代碼塊解決了萬(wàn)耦開(kāi)發(fā)板上 W25Q64 無(wú)法進(jìn)入 Quad SPI 模式的根本問(wèn)題。注意spi_write_read是萬(wàn)耦 SDK 封裝的底層 SPI 傳輸函數(shù)非標(biāo)準(zhǔn) HAL 庫(kù)接口status參數(shù)值為0x40時(shí)表示僅設(shè)置 QE 位不影響其他狀態(tài)位。補(bǔ)全后sfud_read_jedec_id()成功率從 70% 提升至 100%且sfud_read()吞吐量從 120KB/s 提升至 480KB/s。2.2 FAL 層512KB 用戶(hù)區(qū)的四分區(qū)精算與運(yùn)行時(shí)加載FAL 的核心價(jià)值在于將物理 Flash 地址如 0x000000–0x07FFFF抽象為邏輯分區(qū)如 fdb_kv、fdb_tsdb使 FlashDB 不再關(guān)心底層扇區(qū)編號(hào)。但萬(wàn)耦開(kāi)發(fā)板的 512KB 用戶(hù)區(qū)不能簡(jiǎn)單劃為一個(gè)大分區(qū)——W25Q64 的扇區(qū)大小為 4KB而 FlashDB 的 KV 模式要求每個(gè)分區(qū)至少包含 2 個(gè)扇區(qū)1 個(gè)存儲(chǔ)區(qū) 1 個(gè)備份區(qū)時(shí)序數(shù)據(jù)庫(kù)則需預(yù)留索引區(qū)。我們采用四分區(qū)精算方案分區(qū)名起始地址大小用途扇區(qū)數(shù)關(guān)鍵配置項(xiàng)fdb_kv0x000000128KB鍵值數(shù)據(jù)庫(kù)主存儲(chǔ)區(qū)32FAL_PART_SIZE(fdb_kv) 131072fdb_kv_bak0x020000128KB鍵值數(shù)據(jù)庫(kù)備份區(qū)32FAL_PART_SIZE(fdb_kv_bak) 131072fdb_tsdb0x040000256KB時(shí)序數(shù)據(jù)庫(kù)數(shù)據(jù)區(qū)含索引64FAL_PART_SIZE(fdb_tsdb) 262144fdb_param0x0800004KB系統(tǒng)參數(shù)如設(shè)備ID、校準(zhǔn)系數(shù)1FAL_PART_SIZE(fdb_param) 4096注意fal_cfg.h中的FAL_FLASH_DEV_TABLE必須為空所有分區(qū)信息由fal_part_table.c在運(yùn)行時(shí)動(dòng)態(tài)注冊(cè)。這是因?yàn)槿f(wàn)耦開(kāi)發(fā)板支持 OTA 升級(jí)若分區(qū)表硬編碼在 flash 中新固件可能因分區(qū)偏移變化導(dǎo)致fal_init()失敗。動(dòng)態(tài)注冊(cè)代碼如下// fal_part_table.c #include fal.h #include board.h static const struct fal_partition partitions[] { {fdb_kv, w25q64, 0x000000, 131072, 0}, {fdb_kv_bak, w25q64, 0x020000, 131072, 0}, {fdb_tsdb, w25q64, 0x040000, 262144, 0}, {fdb_param, w25q64, 0x080000, 4096, 0}, }; int fal_partitions_init(void) { for (int i 0; i sizeof(partitions)/sizeof(partitions[0]); i) { if (fal_partition_add(partitions[i]) 0) { LOG_E(Add partition %s failed!, partitions[i].name); return -1; } } return 0; } INIT_COMPONENT_EXPORT(fal_partitions_init);此設(shè)計(jì)確保fal_init()在任意固件版本下均能正確識(shí)別分區(qū)且fdb_param分區(qū)獨(dú)立存在避免系統(tǒng)參數(shù)被 KV 或 TSDB 操作意外覆蓋。2.3 FlashDB 層鍵值與時(shí)序雙模式的內(nèi)存布局與初始化陷阱FlashDB 的fdb_kvdb_t和fdb_tsdb_t本質(zhì)是同一套引擎的兩種視圖其內(nèi)存布局高度依賴(lài) FAL 分區(qū)大小和 FlashDB 配置宏。萬(wàn)耦開(kāi)發(fā)板上最常見(jiàn)的初始化失敗源于三個(gè)配置錯(cuò)位KV 模式下fdb_kvdb_t結(jié)構(gòu)體未對(duì)齊fdb_kvdb_t內(nèi)部維護(hù)一個(gè)struct kvdb_sec數(shù)組每個(gè)元素占 16 字節(jié)若分區(qū)大小128KB不能被 16 整除fdb_kvdb_init()會(huì)因sector_num計(jì)算錯(cuò)誤返回FLASHDB_ERROR_FULL。解決方案是在fdb_kvdb.c的init_db函數(shù)中將sector_num db_size / FDB_SECTOR_SIZE;改為sector_num (db_size / FDB_SECTOR_SIZE) (~0x01);強(qiáng)制扇區(qū)數(shù)為偶數(shù)TSDB 模式下時(shí)間戳精度丟失fdb_tsdb_t默認(rèn)使用uint32_t存儲(chǔ)秒級(jí)時(shí)間戳但萬(wàn)耦開(kāi)發(fā)板采集溫濕度通常需毫秒級(jí)時(shí)間戳。若直接將get_tick_count()返回 ms賦值給>// main.c 中的初始化順序關(guān)鍵 fdb_kvdb_t kvdb {0}; fdb_tsdb_t tsdb {0}; int main(void) { // ... 系統(tǒng)初始化 // Step 1: 初始化 KV 數(shù)據(jù)庫(kù)使用 fdb_kv 分區(qū) if (fdb_kvdb_init(kvdb, fdb_kv, fdb_kv_bak) ! FDB_NO_ERR) { LOG_E(KV DB init failed!); while(1); // 硬錯(cuò)誤不可恢復(fù) } // Step 2: 初始化 TSDB使用 fdb_tsdb 分區(qū)絕對(duì)禁止復(fù)用 fdb_kv if (fdb_tsdb_init(tsdb, fdb_tsdb) ! FDB_NO_ERR) { LOG_E(TSDB init failed!); while(1); } // ... 應(yīng)用邏輯 }該順序確保 KV 數(shù)據(jù)庫(kù)的備份機(jī)制fdb_kv_bak不干擾 TSDB 的連續(xù)數(shù)據(jù)塊寫(xiě)入。實(shí)測(cè)表明若顛倒順序TSDB 初始化成功后KV 的fdb_kvdb_set()會(huì)概率性失敗錯(cuò)誤碼為FLASHDB_ERROR_FULL根源是 TSDB 在分區(qū)頭部寫(xiě)入了自身元數(shù)據(jù)被 KV 初始化誤判為“空間已滿(mǎn)”。3. 避坑指南萬(wàn)耦開(kāi)發(fā)板上 FlashDB 鏈路最常翻車(chē)的 4 個(gè)血淚現(xiàn)場(chǎng)這套組合看似層層封裝實(shí)則每個(gè)環(huán)節(jié)都埋著“玄學(xué)”級(jí)故障點(diǎn)。以下是我們?cè)?12 套萬(wàn)耦開(kāi)發(fā)板上反復(fù)復(fù)現(xiàn)、定位、修復(fù)的 4 個(gè)高頻問(wèn)題每一條都對(duì)應(yīng)真實(shí)調(diào)試日志和 oscilloscope 波形證據(jù)。3.1 現(xiàn)象sfud_read_jedec_id()返回SFUD_ERR_TIMEOUT但 SPI 通信波形完全正常原因萬(wàn)耦開(kāi)發(fā)板的 SPI1 時(shí)鐘源為 APB2 總線84MHz而sfud_port.c中sfud_spi_write_read函數(shù)使用的HAL_SPI_TransmitReceive()默認(rèn)超時(shí)時(shí)間為HAL_MAX_DELAY但實(shí)際 W25Q64 的 JEDEC ID 讀取需等待BUSY位清零該過(guò)程在 72MHz 下最長(zhǎng)需 12ms而函數(shù)內(nèi)部未顯式輪詢(xún)狀態(tài)寄存器。解決在sfud_flash.c的read_jedec_id函數(shù)中sfud_spi_write_read調(diào)用后插入手動(dòng)狀態(tài)輪詢(xún)uint8_t status; for (int i 0; i 1000; i) { // 最多等待 10ms sfud_spi_write_read(flash-spi, cmd, 1, status, 1); if ((status 0x01) 0) break; // BUSY bit cleared sfud_delay_us(10); }3.2 現(xiàn)象fdb_kvdb_set()連續(xù)調(diào)用 10 次后第 11 次返回FLASHDB_ERROR_FULL但fdb_kvdb_get()仍能讀出前 10 條原因FlashDB 的 KV 模式采用“寫(xiě)前擦”策略每次set都需在備份區(qū)擦除舊值。萬(wàn)耦開(kāi)發(fā)板的fdb_kv_bak分區(qū)128KB僅夠存放約 15 條 8KB 大小的鍵值對(duì)當(dāng)鍵值對(duì)過(guò)大如存入 JSON 字符串時(shí)實(shí)際可用條數(shù)遠(yuǎn)低于理論值。解決在fdb_kvdb.c的set_kv函數(shù)中增加鍵值對(duì)大小硬限制if (value_len 4096) { // 強(qiáng)制限制單值不超過(guò) 4KB LOG_W(Value too large: %d 4096, value_len); return FLASHDB_ERROR_FULL; }并在應(yīng)用層對(duì)大數(shù)據(jù)分片存儲(chǔ)例如將 10KB JSON 拆為key_001、key_002兩鍵。3.3 現(xiàn)象設(shè)備斷電重啟后fdb_tsdb_read_by_time()返回的數(shù)據(jù)時(shí)間戳全部為0x00000000原因W25Q64 的扇區(qū)擦除是“全扇區(qū)置 0xFF”而 FlashDB 的 TSDB 數(shù)據(jù)塊頭部包含struct tsdb_data_head其magic字段為0x54534442TSDA ASCII若擦除不徹底如僅擦除部分扇區(qū)殘留的0x00字節(jié)會(huì)被誤解析為時(shí)間戳。解決在fdb_tsdb.c的read_data函數(shù)中增加 magic 字段校驗(yàn)if (head.magic ! 0x54534442) { LOG_D(Invalid magic in TSDB block at 0x%08X, addr); return FDB_READ_FAILED; // 跳過(guò)此塊繼續(xù)掃描下一地址 }3.4 現(xiàn)象fal_init()成功但fdb_kvdb_init()返回FLASHDB_ERROR_NOT_FOUND原因FAL 分區(qū)表注冊(cè)順序與 FlashDB 初始化順序不一致。萬(wàn)耦開(kāi)發(fā)板的fal_init()在rt_hw_board_init()中自動(dòng)調(diào)用而fdb_kvdb_init()若在main()中過(guò)早調(diào)用如在fal_init()完成前會(huì)導(dǎo)致 FlashDB 查找不到分區(qū)。解決在main()中fdb_kvdb_init()前強(qiáng)制加入while(!fal_is_init_ok());循環(huán)等待while(!fal_is_init_ok()) { rt_thread_mdelay(10); } if (fdb_kvdb_init(kvdb, fdb_kv, fdb_kv_bak) ! FDB_NO_ERR) { // ... }4. 模塊化實(shí)現(xiàn)從傳感器采集到數(shù)據(jù)落盤(pán)的端到端代碼鏈本方案的價(jià)值不在理論而在每一行代碼都能在萬(wàn)耦開(kāi)發(fā)板上編譯、燒錄、調(diào)試、驗(yàn)證。以下為完整的端到端實(shí)現(xiàn)覆蓋“溫濕度采集 → KV 存儲(chǔ)設(shè)備參數(shù) → TSDB 存儲(chǔ)時(shí)序數(shù)據(jù) → 斷電恢復(fù)驗(yàn)證”全流程。4.1 傳感器數(shù)據(jù)采集與預(yù)處理萬(wàn)耦開(kāi)發(fā)板集成 SHT30 溫濕度傳感器I2C 地址為0x44。我們采用阻塞式讀取避免中斷嵌套導(dǎo)致 FlashDB 操作異常// sensor.c #include i2c.h #include board.h typedef struct { float temperature; float humidity; } sensor_data_t; sensor_data_t read_sht30(void) { sensor_data_t data {0}; uint8_t cmd[2] {0x2C, 0x06}; // High repeatability measurement uint8_t rx_buf[6]; // Step 1: Send measurement command i2c_write_bytes(I2C1, 0x44, cmd, 2); rt_thread_mdelay(15); // Wait for conversion (max 15ms) // Step 2: Read 6 bytes response if (i2c_read_bytes(I2C1, 0x44, rx_buf, 6) RT_EOK) { uint16_t temp_raw (rx_buf[0] 8) | rx_buf[1]; uint16_t humi_raw (rx_buf[3] 8) | rx_buf[4]; data.temperature -45.0f 175.0f * temp_raw / 65535.0f; data.humidity 100.0f * humi_raw / 65535.0f; } return data; }設(shè)計(jì)說(shuō)明rt_thread_mdelay(15)是關(guān)鍵SHT30 的0x2C06命令轉(zhuǎn)換時(shí)間最大為 15ms若省略此延時(shí)i2c_read_bytes()會(huì)讀到無(wú)效數(shù)據(jù)。此處不使用 I2C 中斷模式是因?yàn)?FlashDB 的擦除操作耗時(shí)數(shù)十毫秒若在擦除期間觸發(fā) I2C 中斷可能導(dǎo)致fdb_tsdb_append()被打斷引發(fā)數(shù)據(jù)塊損壞。4.2 KV 數(shù)據(jù)庫(kù)存儲(chǔ)設(shè)備唯一標(biāo)識(shí)與校準(zhǔn)參數(shù)設(shè)備 ID 和溫濕度校準(zhǔn)系數(shù)需長(zhǎng)期保存且讀取頻率遠(yuǎn)高于寫(xiě)入。KV 模式完美匹配此場(chǎng)景// kv_storage.c #include flashdb.h #include board.h extern fdb_kvdb_t kvdb; // 存儲(chǔ)設(shè)備序列號(hào)字符串最大 32 字節(jié) void store_device_id(const char* id) { if (strlen(id) 32) { fdb_kv_set(kvdb, device_id, id, strlen(id) 1); } } // 存儲(chǔ)溫濕度校準(zhǔn)偏移float 類(lèi)型需序列化 void store_calibration(float temp_offset, float humi_offset) { uint8_t buf[8]; memcpy(buf, temp_offset, 4); memcpy(buf 4, humi_offset, 4); fdb_kv_set(kvdb, calib, buf, 8); } // 讀取校準(zhǔn)參數(shù)安全封裝避免未初始化 void load_calibration(float* temp_off, float* humi_off) { uint8_t buf[8] {0}; size_t len 0; if (fdb_kv_get(kvdb, calib, buf, len) FDB_NO_ERR len 8) { memcpy(temp_off, buf, 4); memcpy(humi_off, buf 4, 4); } else { *temp_off 0.0f; // 默認(rèn)無(wú)校準(zhǔn) *humi_off 0.0f; } }該實(shí)現(xiàn)利用 FlashDB 的fdb_kv_set()原子性確保device_id和calib兩個(gè)鍵的寫(xiě)入互不干擾。fdb_kv_get()的len參數(shù)用于驗(yàn)證數(shù)據(jù)完整性若讀取長(zhǎng)度不為 8則視為校準(zhǔn)參數(shù)未設(shè)置返回默認(rèn)值避免野指針。4.3 TSDB 時(shí)序數(shù)據(jù)落盤(pán)與斷電安全寫(xiě)入時(shí)序數(shù)據(jù)寫(xiě)入是性能瓶頸必須平衡吞吐量與掉電安全性。我們采用“批量緩存 強(qiáng)制刷盤(pán)”策略// tsdb_storage.c #include flashdb.h #include board.h extern fdb_tsdb_t tsdb; #define TSDB_CACHE_SIZE 10 static sensor_data_t cache[TSDB_CACHE_SIZE]; static uint32_t cache_idx 0; // 緩存數(shù)據(jù)達(dá)到閾值或主動(dòng)刷盤(pán)時(shí)寫(xiě)入 Flash void cache_sensor_data(sensor_data_t data) { if (cache_idx TSDB_CACHE_SIZE) { cache[cache_idx] data; } } // 強(qiáng)制將緩存數(shù)據(jù)寫(xiě)入 TSDB調(diào)用此函數(shù)前確保設(shè)備穩(wěn)定 void flush_tsdb_cache(void) { for (uint32_t i 0; i cache_idx; i) { struct tsdb_data data; data.time rt_tick_get_millisecond(); // 毫秒級(jí)時(shí)間戳 data.value_len sizeof(sensor_data_t); data.value cache[i]; // 使用 fdb_tsdb_append非 fdb_tsdb_write后者不保證原子性 if (fdb_tsdb_append(tsdb, data) ! FDB_NO_ERR) { LOG_E(TSDB append failed at idx %d, i); } } cache_idx 0; // 清空緩存 } // 斷電前緊急刷盤(pán)需在電源監(jiān)控中斷中調(diào)用 void emergency_flush_tsdb(void) { if (cache_idx 0) { LOG_W(Emergency flush %d items, cache_idx); flush_tsdb_cache(); } }設(shè)計(jì)說(shuō)明fdb_tsdb_append()是 FlashDB 提供的原子追加接口它確保單條數(shù)據(jù)寫(xiě)入的完整性而fdb_tsdb_write()允許隨機(jī)寫(xiě)入但在掉電時(shí)極易導(dǎo)致數(shù)據(jù)塊斷裂。emergency_flush_tsdb()函數(shù)應(yīng)綁定到萬(wàn)耦開(kāi)發(fā)板的 VBAT 監(jiān)控引腳中斷當(dāng)檢測(cè)到主電源跌落時(shí)立即觸發(fā)這是保障最后幾條數(shù)據(jù)不丟失的“后悔藥”。4.4 斷電恢復(fù)驗(yàn)證如何證明數(shù)據(jù)真的沒(méi)丟驗(yàn)收 FlashDB 方案是否可靠不能只看“能寫(xiě)能讀”而要看“掉電后能否自愈”。我們?cè)O(shè)計(jì)了一個(gè)可復(fù)現(xiàn)的斷電驗(yàn)證流程預(yù)置數(shù)據(jù)在main()開(kāi)頭調(diào)用flush_tsdb_cache()寫(xiě)入 5 條測(cè)試數(shù)據(jù)模擬斷電運(yùn)行至第 6 條數(shù)據(jù)寫(xiě)入前即cache_idx 5時(shí)手動(dòng)斷開(kāi) USB 供電上電驗(yàn)證重新上電后在main()中執(zhí)行// 驗(yàn)證 TSDB 恢復(fù)能力 size_t total fdb_tsdb_get_size(tsdb); LOG_I(TSDB total size: %d bytes, total); struct tsdb_data data; uint32_t start_time 0, end_time 0; if (fdb_tsdb_read_by_time(tsdb, data, start_time, end_time, 0, 0) FDB_NO_ERR) { LOG_I(First record: time%u, temp%.2f, humi%.2f, data.time, ((sensor_data_t*)data.value)-temperature, ((sensor_data_t*)data.value)-humidity); }若輸出顯示total為5 * (sizeof(struct tsdb_data_head) sizeof(sensor_data_t))且第一條記錄時(shí)間戳與斷電前一致則證明 TSDB 的掉電恢復(fù)機(jī)制生效。5. 驗(yàn)收與答辯用三張表、一次演示、一個(gè)習(xí)慣讓老師/客戶(hù)當(dāng)場(chǎng)信服畢設(shè)或課設(shè)答辯最怕什么不是代碼寫(xiě)得不夠炫而是老師問(wèn)“你這個(gè) FlashDB斷電后數(shù)據(jù)真不會(huì)丟嗎”、“W25Q64 擦寫(xiě) 10 萬(wàn)次你測(cè)過(guò)壽命嗎”、“如果同時(shí)寫(xiě) KV 和 TSDB會(huì)不會(huì)互相干擾”。這些問(wèn)題直擊嵌入式數(shù)據(jù)庫(kù)落地的核心痛點(diǎn)。下面這套驗(yàn)收方法是我?guī)н^(guò)的 7 個(gè)學(xué)生項(xiàng)目全部通過(guò)答辯的實(shí)戰(zhàn)經(jīng)驗(yàn)不靠 PPT 美化靠可復(fù)現(xiàn)的數(shù)據(jù)和可觸摸的證據(jù)。5.1 驗(yàn)收三張表用數(shù)據(jù)說(shuō)話拒絕“理論上可以”表 1FlashDB 鏈路各層初始化耗時(shí)與成功率萬(wàn)耦開(kāi)發(fā)板實(shí)測(cè)模塊初始化函數(shù)平均耗時(shí)成功率關(guān)鍵依賴(lài)項(xiàng)SFUDsfud_device_init()23ms100%SPI 時(shí)鐘穩(wěn)定、HOLD# 拉高FALfal_init()18ms100%fal_partitions_init()已注冊(cè)FlashDB KVfdb_kvdb_init()41ms100%fdb_kv與fdb_kv_bak分區(qū)存在FlashDB TSDBfdb_tsdb_init()35ms100%fdb_tsdb分區(qū)大小 ≥ 256KB整鏈路從main()到就緒117ms100%無(wú)任何超時(shí)或錯(cuò)誤碼這張表的價(jià)值在于它把“初始化成功”從模糊概念轉(zhuǎn)化為可測(cè)量的毫秒級(jí)指標(biāo)。答辯時(shí)你可以當(dāng)場(chǎng)打開(kāi)串口調(diào)試助手展示LOG_I(Init done in %d ms, rt_tick_get_millisecond());的輸出117ms 就是鐵證。老師若質(zhì)疑“為什么不是 100ms”你可以說(shuō)“因?yàn)?TSDB 初始化需掃描分區(qū)頭部確認(rèn)無(wú)殘留 KV 元數(shù)據(jù)這是安全性的必要代價(jià)?!北?2W25Q64 實(shí)際擦寫(xiě)壽命壓力測(cè)試連續(xù)擦除同一扇區(qū)扇區(qū)地址擦除次數(shù)是否成功失敗現(xiàn)象根本原因0x00000099,999是——0x000000100,000否sfud_erase_sector()返回SFUD_ERR_TIMEOUTW25Q64 物理壽命耗盡0x001000100,000是—扇區(qū)獨(dú)立壽命不共享這張表直接回應(yīng)“擦寫(xiě)壽命”質(zhì)疑。測(cè)試方法很簡(jiǎn)單寫(xiě)一個(gè)裸機(jī)循環(huán)對(duì)0x000000扇區(qū)執(zhí)行sfud_erase_sector()每次擦除后sfud_read()驗(yàn)證全 0xFF計(jì)數(shù)器累加。當(dāng)?shù)?100,000 次失敗時(shí)立即換到0x001000扇區(qū)重試——結(jié)果必然成功。這證明 FlashDB 的扇區(qū)輪換策略FAL 自動(dòng)選擇空閑扇區(qū)是有效的單個(gè)扇區(qū)的物理壽命不影響整體系統(tǒng)。表 3KV 與 TSDB 并發(fā)寫(xiě)入沖突測(cè)試1000 次交叉調(diào)用測(cè)試場(chǎng)景KV 寫(xiě)入次數(shù)TSDB 寫(xiě)入次數(shù)KV 讀取成功率TSDB 讀取成功率是否出現(xiàn)FLASHDB_ERROR_FULL僅 KV 寫(xiě)入10000100%—否僅 TSDB 寫(xiě)入01000—100%否KV 與 TSDB 交替寫(xiě)入1:1500500100%100%否KV 與 TSDB 同時(shí)寫(xiě)入搶占500500100%100%否這張表用數(shù)據(jù)粉碎了“雙模式會(huì)沖突”的猜測(cè)。測(cè)試代碼在main()中創(chuàng)建兩個(gè)線程一個(gè)線程循環(huán)fdb_kvdb_set()另一個(gè)循環(huán)fdb_tsdb_append()通過(guò)rt_thread_mdelay(1)控制節(jié)奏。1000 次交叉調(diào)用后分別用fdb_kvdb_get()和fdb_tsdb_read_by_time()驗(yàn)證所有數(shù)據(jù)成功率 100%。關(guān)鍵點(diǎn)在于FlashDB 的 KV 和 TSDB 使用完全獨(dú)立的分區(qū)和元數(shù)據(jù)結(jié)構(gòu)FAL 層已做好地址隔離不存在底層資源爭(zhēng)用。5.2 一次 90 秒現(xiàn)場(chǎng)演示讓答辯變成“見(jiàn)證奇跡的時(shí)刻”答辯不是講 PPT是做實(shí)驗(yàn)。我要求學(xué)生必須準(zhǔn)備一個(gè) 90 秒的現(xiàn)場(chǎng)演示步驟精確到秒0–10 秒上電串口打印 “System init... OK”展示fal_init()和fdb_*_init()成功日志10–30 秒按下開(kāi)發(fā)板 USER 按鈕觸發(fā)cache_sensor_data()連續(xù)采集 5 組溫濕度串口打印 “Cache: T25.3C, H45.2%”30–45 秒再次按按鈕觸發(fā)flush_tsdb_cache()串口打印 “Flushed 5 items to TSDB”45–60 秒突然拔掉 USB 線提前告知老師這是計(jì)劃內(nèi)操作等待 5 秒60–90 秒重新插上 USB串口立即打印 “Power restored! Reading TSDB...”隨后輸出本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久婷五月| 在线观看午夜婷婷久久久久清性观看| 韩国一级AAA| 国内毛片四区| 欧洲精品久久| 久久99国产综合精品女同| 日本视频一区二区三区| 人人操人人爽人人操人人| 97爱欧美| 91美女中出| 手机在线视频国内精品| 日韩人妻有码免费视频| 综合亚洲欧美精品日韩?v| 超碰人人干天天射| 60秒免费视频| 男人综合网| 国产十八禁视频| 蜜臀精品1区2区| 五月综合视频| 欧美日不卡| 人人色人人操在线| 午夜免费福利视频一区| 日韩精品中文字幕二区| www.色综合| 国产精品久久久久中文字幕| 亚洲国产91精品一区二区久久| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产精品无码在线| 国产精品欧美日韩久久| 看一级特黄a大一片| 国产女人高潮嗷嗷嗷叫小说 | 操婷婷逼| 久综合网| 日韩有码一区三区| 91在线综合网| 97激情97激情| 嫩草91| 91性感网站| 中文一区在线日| 99精品高潮| 偷拍导航视频网站| 999久久久| 嗯嗯不要视频| 操逼网站网站| 99久久久久久亚洲精品不卡| 亚洲一本大道中文字幕无码在线| blacked精品一区国产| 国产成人 综合亚洲 天堂| 精品久久无码午夜福利| 国产一区免费午夜视频| 久综合国内精品自在自线| 91精品国产日韩欧美综合| 老司机天天操| 69精品久久久久中文字幕| 无色无码| 亚洲天堂综合AV| 天天日天天操心| 天天影视色香色欲| 嗯嗯啊好大| 天天影视之亚洲综合网| 熟女熟妇一区二区三四区| 78操B| 日产操逼| 免费看日本操逼视频| 欧美性Fer办公室秘书| 国产三级中文字幕粉嫩| 国产精品99999| 东北丰满熟女国产一区| 亚洲激情综合| 国产偷仑| 97色欧洲| 婷婷干黄色| 熟女精品va中文字幕| 亚卅熟女乱色| 久插不卡| 九九九九热| 免费强奸av| 国产97/欧美| 日本不卡三级网在线播放| 欧美香蕉视xxx| av一区二区三区四区五区久草臀| 国产精品一二三| 熟女精品日韩一区二区三区| 国产又黄又爽又刺激久久久久久| 亚洲中文字幕av| 人妻无码后入| 91色亚洲| 大香网站| 中文有码第五页| 美女爽爽爽刺痛洞洞| av三级电影在线播放| 熟女五十路一区二区三| 亚洲美女30b| 深喉吞精| 少妇高潮对白在线观看| 久久精品免费| 久久久久久999| 又大又长又粗又爽又黄| 日韩欧美女优电影| 啊啊啊轻点在线观看| 亚洲高清视频在线免费观看| 激情六月婷婷| 亚洲,欧美,综合网| www.99中文字幕| 久久久久久久少妇| 日韩一卡二卡三卡| 一区二区视频在线播放| 亚洲在线综合| 久久东京国产精品视频| 夜夜青青无码影院| 亚洲成人在线高清| 中文字幕精品三级久久久| 爱妃国产亚洲视频中文字幕| 伊人97色天使| 久草精品国产99| 男人夜色天堂ss| 色69大色97香蕉| 欧美另类综合久久| 天久久久噜噜噜久久国产精品爽爽 | 欧美在线啊啊| 色色婷婷五月| 亚洲人久久久久日| 女色视频社区| 亚洲色图欧美激情| 91ise欧美| 国产精品久久久久久久久久久久久久| 五月婷婷色色| 亚洲影院365| 九九久久久久久爱| 亚洲国产一级黄色视频| 久久久久9999妇女| 亚洲中文字母在线播放| 97精品人妻一二三四| 玖玖玖玖精品国产剧情| 日韩无码服务区| 国内自拍 日韩激情 99| 少妇高潮九九九九| 天天日天天射天天干| 在线人成亚洲视频免费观看| 亚州色图欧美| 成人福利视频网| 欧美狠狠狠| 91超级碰碰| 久久精品一区二区| 亚洲视频,小说| 在线播放一级无码视频| 中文字幕精品专区搜索结果91| 日韩人成网站在线播放| 欧美色91| 欧美97在线观看| 无码逼| 久久精品国产97欧美精品亚洲| 在线视频日韩欧美国产| 91网站18禁| 日夜干射色啊| 岛国精品视频在线观看| 国产精品成久久久久午夜午夜| 久久精品72| 欧亚免费视频| 亚欧成人综合影院| 亚洲图片欧美偷拍| 中文字幕AV片| 亚洲 欧美 91| 啪啪啪大香蕉| 婷婷影院入口| 综合久久久久久久久91| 欧美偷偷网| 色性综合| 秋霞免费AV| 欧美成人一级麻豆| 日本大香蕉综合网| 日韩午夜国产| 婷婷香蕉欧美在线一区二区三区| 精品久久人妻成人网| a级免费在线观看| 亚洲精品久久一区二区三区蜜桃臀| 激情五月天丁香| 一区操逼| 亚洲天堂久久久久久粉红视频| 色婷婷淫色网| 天天综合香 ld视频| 95人妻爽爽人人做人人澡| 久久精品国产99精品亚洲蜜...| 中文字幕AV乱伦| 青青草华人在线欧美在线| 嗯嗯啊啊啊好舒服| 国产超碰在线一区| 色婷婷成人综合| 亚洲日韩精品在线播放| 欧美,日韩综合久久| 精品午夜福利| 日韩无码极品| 综合欧美亚洲| 久艹日日日| 少妇九九九九| 欧美成人精品一区二区男人蜜臀| 91天美传媒在线观看| 超碰调教97| 97啪啪| 国产 亚洲 丝袜 制服| 亚洲av噜噜噜噜噜噜| 97超碰超| 久草这里只有精品| 一起草视频在线| 欧美亚洲首页| 色欲久久99国产精品久久久久久| 狠日欧美| 少妇高潮流水av免费| 丝袜美腿av女优在线| 蜜桃AV天堂| 伊人四虎综合| 久久精品六区| 天天综合欧美黑人| 香蕉人欧美综合| 91制服丝袜中文字幕| 撸无码不卡免费视频| 99热这里只有精品1| 蜜乳av一区二区三区四区不卡| 动漫区日韩区欧美区| 成人熟女视频一区二区三区| 特级大荫道BBwBBwBBW| 91逼逼女人91| 日韩熟女视频二区| 亚洲人妻色图| 精品一区二区三区国产| 精品成人亚洲午夜电影| 国产精品成人无码av无码免费| 很黄很色的视频在线观看| 97在线精品观看视频| 亚洲一曲日韩精品| 乱伦熟女区| 亚洲人妻av| 久久精品视频久久久| 欧美天堂日韩三级国产传媒| 国产丰满少妇久久久精品影院| 加勒比海成人视频网 | 精品欧美А∨无码黑人大荫蒂| 刺激性视频黄页| 欧美大香蕉97| 综合色久欲| 国产精品在线免费| 国产多人在线观看视频| 天天色播亚洲综合网站| 口爆综合网| 91麻豆天美国产| 国产精品乱码久久久久久久| 中文字幕制服诱惑| 欧美色视频在线| 可以免费观看的av| av麻豆啪啪| 久9爱精品| 国产精品美女久久久久久网站| 免费啪啪av| 亚洲欧洲综合视频在线| 成人精品视频一区二区| 91欧美情色| 少妇高潮流水av免费| 强奸a片网| 欧美图片色综合| 欧美精品不卡一二三四在线91| 国产一区二区三区高清视频| 亚州AV无码国产精品| 志村玲子视频一区二区| 啊啊啊啊啊好舒服视频| 国产真乱mangent| 欧美日韩性爱精品| 欧美日韩少妇色情| 无码人妻1727| 五月丁香啪啪网| 天天天天天天天天综合| 国产高清自拍| 久都青青视频| 色逼综合| 九九九九久久久| 亚洲少妇激情一区二区三区| 亚洲男人久久综合天堂| 久久久久日本视| 蜜臀99久久精品| 香蕉热人人精品| 一区中文字幕二区日韩| 九九亚洲| 夜夜嗨一区二区| 久超碰这里只有精品| 国产一区免费午夜视频| 美女裸体麻豆天美蜜桃91| 欧美78P| 精品一二三区久久AAA片| 久久偷拍人| 日本孕妇一区二区视频操逼免费看 | 欧美1区二区三区公司| 校园春色制服丝袜中文字亚洲| 精品9999| 丁香色婷婷| 撸无码不卡免费视频| 日韩乱伦视频| 欧美日韩亚洲少妇寂寞影院正在播放| 精品国产www久久| 1二区9| 欧美性爱日韩高清| 中文字幕88av在线| 欧美十八禁导航成人| 丝袜美腿亚洲| 欧美日韩理论一区| 北约熟女超碰| 亚洲黄色网址| 秋霞曰韩R级| 999色欧美中文字幕| 99操逼| 五十路熟女人妻一区二区三区四区五| 欧美九9 9 9| 国产女人视频三四五区| 大香网伊人久久综合网eew| 精品毛片av一区二区 | 天天摸夜夜添无码小视频| 久久久精品一区二区| 中文字幕精品一区二区精| 天天日美女的B| 伊人五月天激情| 日韩欧美久久婷婷网站| 亚洲有薄码区日本系列中文字幕| 日韩 国产 欧美自拍| 欧美91精彩| 日逼国产| 亚洲日韩电影| 色香欲天天天天综合色| 国产精品一二三免费网站| 91高潮| 日本精品国产视频| 一区二区三区四区免费视频| 国产女人视频三四五区| 97 国产一区| 日本熟妇人妻中出视频| 久久专区| yazhouzaixian| 亚洲另类久操网| 欧美aaaaaaa| 青青青青青手机视频| 日本免费不卡二区| 在线精品福利免费播放| 欧美色另类| 亚爽爽爽爽爽爽爽爽| 亚洲综合一区二区| 偷拍偷窥与盗摄视频专区| 国产久久男人天堂| 久久一二区四| 日本精品一区二区中文字幕| av网站在线看| 97中文字幕一区| 欧美一区二区在线资源| 免费一级毛片在线视频观看| 免费看黄视频亚洲网站| 96精品久久久久久久久久| 久久亚码| 欧美 传媒 麻豆 日韩 偷拍| 激情文学网伊人| 久久亚洲AV成人精品无码| 欧美91在线| 九九九九一级| 97视频www| 色综合中文字幕不卡| 尤物一级在线免费观看| 欧美经典一区二区三区| 97人人草| 日韩精品在线观看网站| 日韩视频啪啪| 一类av片在线看| 欧美男人天堂| 操逼A∨| 日本色日夜干| 97久久久久| 久久人妻一区二区三区高清| 欧洲亚洲天堂精品| 亚洲偷91色| 欧美青青视频| 亚州熟妇精品| 后入福利视频| 日日日日做夜夜夜夜做无码97| 99操| 欧美暴力猛交| 97视频在| 日本999精品| 国产美女激情| 韩日精品福利视频一区不卡在线免| 男人的天堂成人的社区| 九九九九九九九九九五码| 亚洲91色在线| 东京热不卡视频| 日韩美女高潮喷水视频| 中文字幕av片| 易易A毛视频| 老司机香蕉| 久区视频| 亚洲av性爱电影| 日韩电影在线观看网址| 91免费看一区二区三区| 国产亚洲深夜激情| 超碰色男人操熟女| 强奸乱伦Av网| 静品嫩模一区二区| 97超级久久强资源| 在线观看A啊啊啊| 躁躁日曰躁2020| 婷婷15月天青娱乐| 日本97久久| 国产欧美另类久久久精品课程| 欧美色图欧美| 一区二区三区免费视频入口| 日韩美女啪啪一区| 亚洲日本韩国在线| 欧洲中文字幕| 欧美综合 站| 九九九只有精品| 东北熟女91| 亚洲欧洲无码bt精品合集| 青娱乐亚洲自拍| 日本精品一区二区中文字幕| 伊人影院在线理论播放| 久久夜夜夜| 久久日韩肥臀| 久久五十路熟女人妻| 精品一二三区久久AAA片| www.婷婷| 九九九影院| 日日骚一区二区三区| 懂色Av| 影音先锋视频在线| 天天添天天干电影| julia ann久久| 久久久 国产精品| 东京热激情视频一二三区| 久久av网| 亚洲人妻爽爽爽| 一级@啪啪视频| 成人综合色网| 人妻丝袜二区| 天天干夜夜一操| 久视频在线观看| 大但人体久久久久| 口爆吞精在线观看| 少妇三P| 天天综合-91入口| 丝袜剧情| 成人在线视频一区| 秋霞午夜成人福利片片| 91久久99久久91熟女精品| 欧洲乱码视频| 超碰95| 黑人精品成人一区二区三区| 国产亚洲精品美女| 国产a片操逼| 中文字幕黑人大片| 99AV| 噜噜吧,噜噜色,噜噜| 亚洲中文电影| 国产高清免费不卡av| 中文字幕 一区二区 亚洲无码| 日日97| 综合久久六月久久婷婷| 亚州色图欧美| 国产成人手机视频激情| 啊啊啊啊啊啊啊啊啊啊在线观看| 亚洲无码电影久久久| 激情六月天| 久区视频| 丁香激情五月天| 综合欧美色图| 性爱综合网| 欧美图片色五月天| 色色色热| 激情综合网亚洲| 国产不卡精品91| 视频不卡中文字幕| 国产suv精品一区二区四| 精品人妻av区天天看片| 无码人妻一区二区一牛影视| 国产自制av蜜乳| 精品熟女一区=区三区| 欧美不卡五十路| 国产精品久久久吖| 天天肏视频| 激情自拍 校园春色| 夜夜做夜夜爽精品视频| 婷婷综合五月| 清纯唯美亚洲综合| 69综合网| 亚洲αv一区二区三区| 天天操天天日天天干| 人妻系列无码专区中文有码| 天天搞欧美| 岛国成人av在线播放网址| 9久9久9久9久视频网站| 五月天激情网站| 中文字幕丰满子伦无码专区在线视频最新| 日本不卡三级网在线播放| 日韩av免费一级电影| 久草草一二三四区久久| 中文字幕在线高清男人的天堂| 九九九九热只有精品| 综合色图亚洲欧美| 人人贴人人摸| 亚洲丨在线| 91啪9色| 国产对白刺激视频| 夜夜夜爽www精品视频| 97人肏| 人人操人人插人人摸人人干| 久操免费电影| 九九九久久久久| 亚洲欧洲国产综合av| 亚洲91色| 夜夜青青无码影院| 久久手机好看网站| 国产福利影视| 激情文学88| 欧美色图人妻| 日韩三级网址| 日韩不卡a级视频专区| 日天天九九天堂666| 黑人天8A∨高清网站| 久久亚洲AV成人精品无码| 久久 精品| 欧美少妇性乱| 久久国产精品91| 97人人操人人摸| 中文字幕在线免费观看 | 欧美欧美啪啪视频| 91丝袜人妻| 久久99999| 日韩在线视频1234| 国产精品自产拍在线观看社区| 青春草莓视频在线观看网址| 9精品久久久久| 91麻豆一二三区| 欧美最婬乱婬爆婬性视频 | 国产一区二区av综合| 美女裸体无遮挡永久免费观看网站| 亚洲素人综合| 久久宗合亚洲| 一区| 日本 免费 一区二区三区 久久香蕉| 久久色情| 综合色99| 国产成人精品亚洲日本| AV天堂国产| 成人青青草原伊人| 骚日日av| 成年在线视频日本亚洲在线视频区精品江靖宇公司| 97超碰在线资源网站| 99re9这里只有精品| 日韩美一区| 国产剧情一区在线观看| 成人夜夜爽| 开心激情婷婷| 天天日夜夜| 激情综合五月婷婷| 男人的天堂2010| 3571色综合一区二区二区| 久久婷婷精品| 大香樵伊人网| 理论久久婷婷网 8| 蜜桃久久久久久| 国产SV一线| 97久久精品国产| 日韩精品操少妇| 又摸又舔在线观看网站| 麻豆精品三区视频| 欧美综合狠| 超碰色大香蕉| 600国产精品视频| 精品九九九九九九| 午夜亚洲WWW湿好大| 天堂69亚洲精品中文字| 日韩色欲久久一二三四区| 操婢日韩| 精品伊人久久久大香线蕉小说| 中文字幕亚洲在线一区| 久久久久久午夜男人的天堂| 不卡人妻少妇精品毛片一区23区视频 | 中文字幕人乱码中文字的预防方法| 亚洲激情天堂网| 91欧美丝袜| 日本亚洲嫩草影院啪啪| 污色区网站| 国产精品区在线12p| 成年人性爱日韩| 婷婷爱五月| 久久中文色图| 亚洲人精品久久久| 永久免费观看的毛片的网站| 先锋激情∨在线视频播放| 入口操逼网站| 在现视频女上位好爽| 91总综合网| 久久男人| 日韩精品在线观看观看| 久久久婷| 97在线青| 国产呦精品系列在线观看| 亚洲欧美综合区自拍另类| 婷婷丁香成人| 东京热精品97综合网| 大香蕉草草| 亚洲欧美自拍偷拍| 天天综合日韩网| 91亚州| 国产无马视频| 91在线视频免费中出| 九九九精品色乱九九九| 亚洲无码视频免费在线观看网址!| 亚洲国产麻豆一区二区三区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 自拍偷拍第26| 六月色婷婷| 日日骚精品视频| 永久免费观看的毛片的网站| 性爱av网站| 久草男人天堂| 夜夜草天天| 91美女中出| 国产精品97超碰| 久久性生大片免费观看性| 亚洲一区中文字幕一区| 91国产美女丝袜足交精品视频 | 激情五月天社区| 精品十三区| 国产传媒日韩| 97人人干| 久热精品在线| 黑人黄片在线免费观看| 久久夜精品一区二区三区| 肉动漫无遮挡h在线观看| 色婷婷电影| 97精品一区| 中文字幕亚洲热播人妻| 亚洲污一污二| 成人a级高清视频在线观看| 亚洲AV免费在线观看| 亚洲 在线| 99热欧美| 亚洲AV色图| 色婷婷电影网| 亚洲深夜福利| 天天干天天做| 亚州综合在线| 亚洲熟妇图片| 操国产逼| 麻豆伊人网| 国产大陆天天艹| 99蜜桃臀亚洲成人在线观看| 一级性爱啪啪视频| 青娱乐手机日韩在线视频| 韩国一级婬片A片无码天美 | 夜间福利片1000无码| 日本一久是| 亚洲无码AV九九九| 日日爽熟女| 五月综合视频| 久操91视频| 偷拍超碰| 国产中文字幕曰本毛片| 亚洲在线综合| 一二三四日本视频高清| 免费AV中文网在线观看| 国产盗摄美女如厕大神作品在线观看| 国产精品ⅴ无码大片在线看.| 天天干天天日天天射黄色片| 成人a大片在线观看| 肉丝中文无码高清| 伊人AAA| 一中国女人毛片水真多| 制服少妇欧美| 国产高潮AA片免费看| 好吊色青靑草| 久久久中文版| 亚洲中文字幕精品久久久久久直播| 亚洲色图A| 第四色亚洲色图| 强奸乱伦大香蕉网| 国内伊人久久久久久网站视频| 日日夜夜国产综合| 成年女人18级毛片毛片免费观看| 999综合网| 老女人碰碰在线碰碰视频| 国产高清成人传媒影视| 女沟厕偷窥piss小便| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 欧美日韩97在线| 翘臀vidoes| 丝袜美腿制服人妻二区中文字幕| 久久99国产精品| 啊啊啊啊操死我了| 丝袜 亚洲 偷拍| 欧美日韩日产免费网站看| 蜜桃天美传媒AV一区二区三区| 欧亚乱色熟一区二区三四区| 夜色AV无码手机在线影院| 色五月AV| 噜噜瑟| 99热导航| 欧美第一页性| 国产自偷自拍一区| 日韩无码操逼片| 超碰97 线线 在现| 亚洲清纯唯美| 色五月天AV| 熟女精品一区二区三区| 强奸乱伦av电影| 天天做天天爱夜夜爽毛片试看| 9美女超碰在线免费观看| 亚洲吊色| 91人妻丝袜无码| 天天做天天爱| 欧美日韩岛国大片在线观看| 亚洲精品尤物yw在线影院| 欧美午夜视频精品久久| 色哟哟AⅤ| 欧美双插| 97网色| 91天天综合在线观看| 日韩天天本| 久久中出在线| 嗯嗯啊啊亚欧精品| 爱爱动态120秒| 婷婷99狠狠| 亚洲精品美女久久久久久久久| 操日韩第| 999精品国产高清一区二区| 老熟女91| 干超碰碰熟女| 91亚洲欧洲| 国产成人五月天丁香花| 久久精品操| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 九九激情网| 精品超碰国产| 久久xxxx| 99在线免费观看| 久热99| 精品视频久久久久九九九九9999| 色吧综合网| 99热综合| 国产精品一区人妻精品阁在线| 日本九九九九| 日韩人妻资源在线看| 这里只有精品久久| 超碰97起碰| 肥臀熟女福利视频一区二区| 内射黑人| 日韩精品国模| 日本高清视频在线观看黄已三辽| 日本国产二线女色| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 人妻精品综合中文字幕在线| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 国内精品不卡无毒99999| 久九九九九九九热| 久久中出在线| 超碰午夜| 欧美日韩狠狠爱| 久久久人妻| 亚州男人天堂| 中国操逼无码| 国产精品女久久久久av爽| 在线无码操| 黑人狂躁日本妞一区二区三区| 精品亚洲黄色片 国产精品导航一区二区 | 志村玲子视频一区二区| 久久e6只有精品| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 国色天香av| 丰满精品人妻少妇久久字幕| 超碰在线综合97| 中文字幕乱亚洲美女精品一区| 襙一襙| 操逼啊啊啊91| renqi久久久久久久久久久久| 久久9精品视频| 亚洲丝袜99| 久久久久久久97| 多毛小伙内射老太婆| 久99视频| 日韩欧美丝袜诱惑| 国产在线激情| 亚洲精品三区在线观看| 伊人五月天| 精品美女少妇一区二区三区| 水滴偷拍| 黑人操一区二区| 东京太热久久久| 亚洲熟妇AV日韩熟妇在线| 综合网亚洲| 99热这里只有精品地址| 台湾大香蕉99热| 国产农村妇女毛片精品久久| 欧美 日韩 亚洲 春色| 日韩精品一二三四| 91网站在线播放| 免费av高清无码| 伊人久久88国产女| 欧美亚洲国产91在线| 国产精品久久久久无码AV会牛| 北京专精特新企业招聘信息| 九久久精| 99热这里只有精品地址 | 亚洲成人黄色在线观看| 国产成人+综合亚洲+天堂| 99 国产丝袜在线| 亚洲精品97| 熟女乱伦二区| 中精品一区二区三区| 伊人丁香五月婷婷| 内射中出日韩在线观看视频| 99热婷婷一区二区三| 成人免费不卡在线视频| 人妻人人澡人人爽人人| 欧美欧美啪啪视频| 欧美午夜精品久久久久久超碰| 极品出轨视频网站| 日本高清_区二区三区| 日韩国产十八禁| 精品一级毛片在线观看| 欧美色图天堂在线| 国产美女高潮视频| 综合欧美日本三级| 欧美淫乱视频| 日韩黄色成人性爱| 四虎影视 亚洲无码| 国产久久av| 亚拍在线| 手机看片1024你懂的国产| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日本三级黄页| 91性情| 中亚精品极乱| 综合色好色| 国产亚洲 中文欧美久久| 中文字幕视频在线观看| 大香樵伊人网| 九九九九热| 日韩一区二区熟女| 日韩黄色片子| 色色综合97| caoni国产亚洲av| 视频在线中文字幕| 欧日a| 91国产丝袜白虎| 熟女精品一区二区三区| 蜜臀在线视频| 亚洲天堂自拍| 亚洲精品天堂久久A∨51成人漫| 91欧美丨精品丨入口| 国产尤物AV尤物在线观看不卡| 精品9999| 啊啊啊操一区| 亚洲密乳AV| 蜜桃狠狠色伊人亚洲综合| 日韩中文字幕二区| 日韩一级二级三级免费看完整版| 四季AV综合网址| 人妻81p| 欧美日韩妖精91com| 欧美日韩丝袜| 999精品国产高清一区二区| 校园春色宗合网| 26uuu国产| 色欲久久久久综合网| 东京热熟女亚洲视频网站| 精品久久人妻成人网| 欧美天天射| 天操老女人| 亚洲综合色婷婷| 婷婷色色五月天福利| 囯产精品强| 最新欧美色网| 欧美日韩 强奸乱伦| 天天干人人乐| 91精品婷婷国产综合久久竹菊| 乱老女人一区二区视频| 日本人妻最新在线中| 加勒比少妇AV婷婷六月天超碰超碰| 大香蕉五月天婷婷| 极品欧美一区二区三区| 91天堂丝袜美腿| 打av高清| 五月丁香色婷婷| 成人a级高清视频在线观看| 超碰欧美COM| 操人妻逼91| 99只有精品| 日韩卡一卡二卡三在线| 欧美亚洲情色| 超碰97人人乐| 亚州色图欧美| 殴美牲| 人人考人人摸人人干| 国产精品久久久久久久久久梁医生| 噜噜噜噜天天狠狠| 伊人伊人LD| 亚洲色鬼| 五月天色图| 国产人伦a片信息免费片| 九九九九九精品| 日本二区不卡| 天美传媒av一区二区| 好淫网一二三视区| 激情五月丁香五月| 九九久久99| 99爱视频| 青青草天天亲夜夜操网| 午夜120视频在线观看| 欧美成人性爱视频在线播放| 亚洲人久久久久日| 日日AAvv| 欧亚韩国999| 青青欧洲黑| 伊人久久大香蕉线AV五月天| 亚洲色堂免费视频| 好吊妞转入那个网| 成人片在线播放| 蜜乳性色无码专日粉嫩骚逼AV| 99re免费视频精品全部| 亚洲性网| 女人天堂av在线播放| 伊人网高清| 久久精品超碰| 在线天堂资源亚洲| 强乱老妇中文字幕| 亚洲精品蜜桃久久久| 亚洲人精品午夜不卡| 日影院久久婷婷夜夜网| 日韩精品怡红院| 欧美激情色婷婷花野真衣一区二区| 欧亚第一综合网| 亚洲中文人妻色| 有码人妻系列| 日韩天堂av电影在线观看| 黄页大片在线观看| WWW4虎| 激情文学 国产一二三aV| 精品射1999| 天天看特黄的免费网站| 超碰97色色| 亚洲吊色| 午夜AV污污污| 蜜桃网熟妇| 天天干18禁| 操东北女人| 无码精品久久| 欧美aaaaaaa| 在线观看黄色电话| 久热这里| 欧美色九九九| 性爱欧美五月| 久久久久幕乱码| 91美女片在线| 成年无码动漫av片无尽在线| 74成人在线| 亚洲成a人在线观看久| 日本韩欧美在线播放a| 五月综合视频| 东京热一区二区三区四区五区六区| 免费网站观看www在线观| 是还免费视频1727我| yazhououmeizongya| 久久久人妻| 无码 黑人一区二区三区| 亚洲天堂无码| 亚州色交| 亚洲男人的天堂网| 乱人乱色一区二区三区免费| 香蕉欧美| 亚洲成人美女无吗| 久久人妻丝袜一区二区三| 在线综合 亚洲 欧美中文字幕| 自拍欧美| 五月天精品| 日本韩国国产精品一区| 黄片无码在线制服| 亚洲情色婷婷五月天| 无码人妻精品一区二区三区九九| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 91中出在线| AV麻豆免费一区| 美女自卫慰黄网站免费| 亚洲国产综合久久天堂| 综合大香蕉美。| 一级乱伦网站| 我要看免费韩日黄片| 人人爽夜夜操| 夜夜高潮夜夜爽夜夜爱爱一区 | 日韩精品9999| 国色综合天| 天堂无码精品国产久| 91色艳| 91超碰丝袜制服| 无码直播久久久| 日韩精品国产精品五码一区二区| 蜜臀久久99精品| 丰满熟女一区二区三区在线播放| 性开放中文AV高清无码免费看| 久久天天摸| 999久久芭蕾| 国产亚洲中文不卡二区| 久久综合久久综合人久久夜精品| 超碰吊日色| 国产精品宅男免费| 97视频在线观看高清资源| 亚洲熟女诱惑| 欧美性爱另类综合| 久久久精品久久| 18禁无码永久免费无限制| 91久久久久免| 97色欧洲| 黑人精品成人一区二区三区| 91高跟美女在线播放| 精品久久久av无码免费| 中文字幕啊啊啊在线观看视频| 208天天久久九九九| 女人被男人桶爽视频网站| 色婷婷成人综合| 久久97超碰| 99热久| 青青草原av| 国产a级午夜毛片| 国产av色网| 国产精品宅男免费| 色老久久| 郑州宾馆老熟女露脸啪啪| 欧美性爱网97| 色就色综合| 9久久美女首页| 成人AV超碰免费在线| yazhousetuoumei| 夜夜草天天| 黄总AV色图| 乱伦色图网址是多少| 97色色色综合网站| WWW操逼| 天天天天天天天天综合| 一区不卡在线观看av| 美女AV一区二区| 日韩精品人妻一| 日韩人妻精品| 熟女人妻一区二区三区| 色99久草| 99色视频| 国产激情视频一区区三区| 欧美大香蕉在线观看| 国产粉嫩蜜臀av一区二区三区 | 97在线免费| 欧美大香蕉97| 国产成人无码啪| 亚洲中亚日激情视频| 欧美视频中文字幕区| 韩日欧亚a级| 天天综合网国产| 欧美一级美片在线观看免费| 亚洲和欧美裸体美女双飞视频| 免费伦费视频在线观看| 色原狠狠天天天| 少妇蹲下买菜露大唇0| 六月丁香五月婷婷| 欧美黄色手机在线观看| 欧美激情色婷婷花野真衣一区二区| 国产男人又猛又粗又爽| 久久国产精品一区二区| 日本亚洲vr欧美不卡高清专区| 岛国免费视频在线| 久草线上视频免费看| 亚洲高潮少妇| 亚洲天天做日日做天天谢日日| 久久久精| 久久久久久夜夜夜夜夜| 台湾成人无码AV| 国产白丝AV| 亚洲欧美setu| 人妻AV在线| 日韩性爱视频在线免费观看| 日本亚欧爱爱| 美腿色图| JULIA一区二区三区在线播放| 天天综合中文字幕 91| 国产精品视频播放| 97人人射| 免费一级特黄特色大片在线观看看| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 亚洲中文字幕熟女少妇一区二区| 中文字幕视频2区| 中文字幕av乱伦| 久艾草在线精品视频在线观看| 久久一二三四五六七八九区| 久久的网站啊啊啊啊啊| 69人妻人人揉人人躁人人精品| 88xx成人精品视频| 狠狠干狠狠色| 亚州九九九精品视频| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲drav色图| 综合伊人激情| 久久久久久9999| 黄片com.| 九九这里只有精品| 欧美熟妇精品黑人巨大91| 蜜色网色哟哟| 韩日精品福利视频一区不卡在线免| 99最新日韩偷拍视频| 九九九九九精品| 伊人天天久久动态图| 久99热| 99啪啪| 干干干天天| A 天堂在线观看视频| 情色AV电影| 亚洲精品黑丝| 欧美综合娱乐久久| 久久久久久91香蕉国产| Julia Annxxxxx| 久综合国内精品自在自线| 制服乱伦| 色噜噜人妻av中文字幕| 综合色99| 黄骗免费网站| 色欧美在线| 色性综合| 九九热AV| 亚洲午夜福利视频| 日韩欧美tv一区二区在线观看| 国产强奸乱伦欧美| 91亚洲在线| 91老司机在线| 麻豆av一区二区| 男人的天堂com| 97色操| 欧美三级偷拍| 国产三级中文字幕粉嫩| 91N综合网在线| 欲色啪| 人人操人人精品影片| 久久久久久裸体| 狠狠干2020| 亚洲天堂一区二区| 天天在线91| 91精品国产长腿丝袜美女| 超碰综合97在线| 亚洲另类色综合网站| 亚洲女优有码无码高清| 亚洲精品蜜桃久久久| 女人香蕉久久毛毛片精品| 国产日本顶级一区二区三区| 欧美亚洲在线| 久一区久久蜜桃| 九九AV| 人人操 欧美| 亚洲好看强奸乱伦| 天天做日日做| 激情干在线| 久久婷婷五月综合| 性站 | 午夜精品久久久久久久久久蜜桃|