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

ARTICLE DETAIL

資訊詳情

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

整車控制器開(kāi)發(fā)源代碼:模塊劃分、狀態(tài)機(jī)設(shè)計(jì)與工程落地

整車控制器開(kāi)發(fā)源代碼:模塊劃分、狀態(tài)機(jī)設(shè)計(jì)與工程落地 簡(jiǎn)介整車控制器VCU開(kāi)發(fā)源代碼包主要面向電動(dòng)汽車與混合動(dòng)力汽車控制系統(tǒng)的開(kāi)發(fā)者、算法工程師及嵌入式軟件研究者用于解決VCU底層驅(qū)動(dòng)、控制策略、狀態(tài)機(jī)管理與故障處理等核心開(kāi)發(fā)問(wèn)題。包內(nèi)文件共88個(gè)以C源文件、頭文件及目標(biāo)文件為主體源文件和頭文件對(duì)應(yīng)驅(qū)動(dòng)與算法模塊目標(biāo)文件便于查看編譯產(chǎn)物同時(shí)附有PDF軟件說(shuō)明書(shū)、原理圖、PCB圖、Map與LST調(diào)試文件以及mcp、prm、ini等嵌入式工程配置文件壓縮包約118.77MB整體屬于可二次開(kāi)發(fā)的完整工程包。已有1260人學(xué)習(xí)下載適合具備汽車電子基礎(chǔ)并希望深入理解VCU軟硬件全貌的讀者。除完整源代碼含CAN通信、控制算法、狀態(tài)機(jī)與故障處理外還提供軟件說(shuō)明書(shū)涵蓋系統(tǒng)概述、模塊接口、調(diào)試方法、ISO 26262安全規(guī)范及測(cè)試方案同時(shí)包含原理圖與PCB圖可支撐從代碼閱讀、硬件理解到二次開(kāi)發(fā)的全流程。1. 整車控制器開(kāi)發(fā)源代碼為什么說(shuō)源碼才是真正的設(shè)計(jì)文檔經(jīng)常能看到這種場(chǎng)面手邊放著一沓整車控制器的需求文檔、接線圖和總線協(xié)議大部分內(nèi)容已經(jīng)和技術(shù)發(fā)布版本對(duì)不上。真正把上下電時(shí)序、故障等級(jí)、扭矩路徑理順的往往是那份被壓在設(shè)計(jì)文檔底下的“整車控制器開(kāi)發(fā)源代碼”。代碼里看到的不是孤立的語(yǔ)句而是一輛車從休眠到上高壓、從運(yùn)行到安全下電的完整決策鏈。對(duì)新人來(lái)說(shuō)這套源碼是理解整車控制器的地圖對(duì)正在搭項(xiàng)目的工程師來(lái)說(shuō)它是一份可以裁剪、移植和反復(fù)驗(yàn)證的基座。下面這些內(nèi)容就圍繞這份源碼講清模塊怎么分、環(huán)境怎么搭、核心邏輯怎么寫(xiě)、踩過(guò)哪些坑以及交付前如何快速驗(yàn)證。適合想入門(mén)的嵌入式工程師也適合正在查“翻車”現(xiàn)場(chǎng)的老手。2. 整車控制器源碼的骨架模塊劃分與狀態(tài)機(jī)設(shè)計(jì)2.1 從功能需求到源碼模塊先分清基礎(chǔ)軟件和應(yīng)用軟件整車控制器的源碼看似文件很多拆開(kāi)其實(shí)就兩類。一類是跟芯片和硬件強(qiáng)相關(guān)的基礎(chǔ)軟件比如MCU寄存器初始化、時(shí)鐘、GPIO、ADC采集、CAN控制器、看門(mén)狗、EEPROM另一類是與車型策略強(qiáng)相關(guān)的應(yīng)用軟件比如上下電狀態(tài)機(jī)、擋位管理、扭矩仲裁、能量回收、故障診斷和降級(jí)策略。我見(jiàn)過(guò)不少新人一上來(lái)就在 main 函數(shù)里寫(xiě)業(yè)務(wù)邏輯ADC采集和擋位判斷混在一起最后連一個(gè)獨(dú)立的上電時(shí)序都測(cè)不了。常見(jiàn)做法是先把這兩層分開(kāi)基礎(chǔ)軟件提供接口應(yīng)用軟件只管“拿數(shù)據(jù)、做判斷、發(fā)指令”不碰寄存器。這樣分最直接的好處是移植。換一顆MCU或者換塊板卡時(shí)基礎(chǔ)軟件層改動(dòng)幾十個(gè)文件應(yīng)用軟件可以不動(dòng)。評(píng)審時(shí)也能分頭看硬件組同學(xué)看 bsp策略組同學(xué)看 app界面清楚問(wèn)題也好追。更重要的一點(diǎn)是整車的功能安全要求里很多故障檢測(cè)和降級(jí)邏輯要反復(fù)論證如果策略代碼里到處都是寄存器操作論證成本會(huì)高到讓人崩潰。所以無(wú)論源碼來(lái)自哪個(gè)項(xiàng)目我拿到手的第一件事就是畫(huà)一畫(huà)它的分層邊界。分層之后還需要定義穩(wěn)定的模塊接口。舉例來(lái)說(shuō)基礎(chǔ)軟件要向上層提供“讀通道電壓”“發(fā)CAN報(bào)文”“獲取系統(tǒng)時(shí)間”這類接口而不是讓?xiě)?yīng)用層直接操作某個(gè)寄存器地址。這樣應(yīng)用層在 PC 仿真環(huán)境里也能編譯運(yùn)行只要把基礎(chǔ)軟件替換成模擬實(shí)現(xiàn)。一個(gè)典型的接口頭文件長(zhǎng)這樣/* bsp/can.h */ #ifndef BSP_CAN_H #define BSP_CAN_H #include stdint.h int bsp_can_init(uint32_t baudrate); /* 初始化CAN控制器 */ int bsp_can_tx(uint32_t can_id, const uint8_t *data, uint8_t len); /* 發(fā)送一幀 */ void bsp_can_set_rx_handler(void (*handler)(uint32_t id, const uint8_t *data, uint8_t len)); /* 注冊(cè)接收回調(diào) */ #endif頭文件里只暴露函數(shù)原型和必要的類型不暴露寄存器。這樣應(yīng)用層代碼在 PC 上編譯時(shí)只需要用另一個(gè)bsp_can_sim.c提供同樣的函數(shù)簽名就能跑策略邏輯。很多人問(wèn)源碼為什么能仿真秘密就在這里邊界接口清晰硬件依賴被擋在 bsp 層。2.2 上下電狀態(tài)機(jī)如何約束代碼結(jié)構(gòu)整車控制器的核心是上下電管理這段邏輯最怕寫(xiě)成一大串 if-else 嵌套。常見(jiàn)做法是狀態(tài)機(jī)先定義狀態(tài)再定義事件然后按“當(dāng)前狀態(tài)事件→動(dòng)作下一狀態(tài)”的方式組織。推薦用表驅(qū)動(dòng)而不是在 switch-case 里寫(xiě)一堆轉(zhuǎn)移邏輯因?yàn)楸眚?qū)動(dòng)更容易評(píng)審和測(cè)試也方便打印出完整的轉(zhuǎn)移矩陣。在源碼里狀態(tài)通常分這么幾類休眠態(tài)、喚醒態(tài)、低壓附屬上電態(tài)、主繼電器閉合態(tài)、運(yùn)行態(tài)、故障態(tài)、下電過(guò)程態(tài)。每一個(gè)狀態(tài)都有進(jìn)入動(dòng)作、周期動(dòng)作、退出動(dòng)作。比如進(jìn)入主繼電器閉合態(tài)時(shí)要先做絕緣檢測(cè)、預(yù)充、等待母線電壓達(dá)到閾值全部通過(guò)后才進(jìn)入運(yùn)行態(tài)任何一步超時(shí)都會(huì)進(jìn)到故障態(tài)。這樣約束下來(lái)整個(gè)源碼的骨架非常穩(wěn)定后面加“特殊工況”也只需要在狀態(tài)表中加一行轉(zhuǎn)移記錄而不是到處打補(bǔ)丁。狀態(tài)機(jī)的實(shí)現(xiàn)通常依賴一個(gè)“當(dāng)前狀態(tài)”全局變量和一個(gè)“執(zhí)行周期”定時(shí)任務(wù)??刂浦芷谝话愣ㄔ?10ms 或更短但上下電這種慢邏輯可以放在 100ms 任務(wù)里扭矩仲裁這類快邏輯必須放在 10ms 任務(wù)里。源碼里的任務(wù)調(diào)度如果只是簡(jiǎn)單的定時(shí)器輪詢就要保證每個(gè)任務(wù)的實(shí)際執(zhí)行時(shí)間遠(yuǎn)小于周期否則看門(mén)狗就會(huì)出來(lái)“主持公道”。很多人第一次跑整車控制器源碼時(shí)發(fā)現(xiàn)上不了高壓?jiǎn)栴}往往不是策略而是 100ms 任務(wù)里寫(xiě)了阻塞延時(shí)把整個(gè)調(diào)度周期拖到 200ms 以上。這里還牽扯到一個(gè)容易被忽略的設(shè)計(jì)狀態(tài)機(jī)的“事件源”從哪里來(lái)常見(jiàn)的有三個(gè)一是硬線信號(hào)比如鑰匙開(kāi)關(guān)、充電槍連接信號(hào)通過(guò) GPIO 中斷進(jìn)來(lái)二是 CAN 報(bào)文比如電池管理系統(tǒng)發(fā)送的故障等級(jí)、電機(jī)控制器發(fā)送的速度通過(guò) CAN 接收回調(diào)進(jìn)來(lái)三是內(nèi)部定時(shí)事件比如預(yù)充超時(shí)。事件源不同優(yōu)先級(jí)也要不同。我一般把 CAN 事件放在接收中斷里只置標(biāo)志位在狀態(tài)機(jī)任務(wù)里統(tǒng)一處理避免在中斷上下文里直接改狀態(tài)。這樣做的另外一個(gè)好處是狀態(tài)機(jī)的所有狀態(tài)轉(zhuǎn)移都發(fā)生在同一個(gè)任務(wù)上下文中競(jìng)爭(zhēng)風(fēng)險(xiǎn)小。2.3 我用哪種代碼組織方式分層目錄與內(nèi)部接口我習(xí)慣的目錄結(jié)構(gòu)是這樣vcufw/ ├── app/ # 應(yīng)用層與硬件解耦 │ ├── main.c # 主入口只做初始化和啟動(dòng)調(diào)度 │ ├── vcu_state.c # 上下電狀態(tài)機(jī) │ ├── torque_ctrl.c # 扭矩仲裁與扭矩管理 │ ├── fault_mgr.c # 故障狀態(tài)管理和存儲(chǔ) │ └── vcu_config.h # 整車參數(shù)配置 ├── bsp/ # 板級(jí)支持包硬件相關(guān) │ ├── mcu.c # 時(shí)鐘、啟動(dòng)、芯片初始化 │ ├── can.c # CAN 控制器驅(qū)動(dòng)與收發(fā)封裝 │ ├── dio.c # 數(shù)字輸入輸出驅(qū)動(dòng) │ ├── adc.c # 模擬量采集驅(qū)動(dòng) │ └── wdg.c # 看門(mén)狗驅(qū)動(dòng) ├── lib/ # 純軟件庫(kù)不依賴芯片 │ ├── ringbuffer.c # 收發(fā)環(huán)形緩沖區(qū) │ └── filter.c # 一階濾波/中值濾波 ├── config/ # 鏈接腳本、板級(jí)配置、編譯器選項(xiàng) │ ├── link.ld # 鏈接腳本 │ └── build_opts.cmake └── build/ # 編譯輸出目錄不入版本庫(kù)app 和 bsp 之間通過(guò)頭文件交互。比如 bsp/can.h 里聲明bsp_can_tx()app 層只調(diào)用這些接口不能出現(xiàn)任何寄存器地址。app 內(nèi)部模塊之間也盡量用接口頭文件比如 fault_mgr.h 只暴露fault_level_t get_fault_level(void)torque_ctrl.c 通過(guò)這個(gè)函數(shù)決定降扭比例而不是自己讀一堆故障標(biāo)志。接口定好之后模塊內(nèi)部怎么改都不影響外部這也是源碼能否持續(xù)迭代的關(guān)鍵。我還會(huì)在倉(cāng)庫(kù)根目錄放一個(gè) README.md把三件事寫(xiě)清楚編譯命令、硬件版本、配置文件版本。硬件版本尤其重要因?yàn)橥粋€(gè)控制器可能有 V1.1 和 V1.2 兩種硬件引腳定義可能改了。如果不寫(xiě)清楚半年后自己來(lái)看都不知道怎么編。源碼在持續(xù)迭代中最怕的不是代碼爛而是“不知道當(dāng)前這份代碼對(duì)應(yīng)哪塊板子”。我一般會(huì)在版本提交時(shí)把硬件版本寫(xiě)進(jìn)提交說(shuō)明并同步改 README。3. 在本地把整車控制器源碼跑起來(lái)環(huán)境搭建與最小編譯3.1 選型編譯器、MCU 工具鏈與源碼版本拿到整車控制器源碼第一件事不是讀代碼而是先把它跑起來(lái)。整車控制器用的 MCU 多是車規(guī)級(jí)以 ARM Cortex-M 或者 Tricore 內(nèi)核為主。我最近的項(xiàng)目用的是 Cortex-M 內(nèi)核的車規(guī)芯片源碼工程用的是 GNU ARM 工具鏈也就是arm-none-eabi-gcc。這套工具鏈?zhǔn)情_(kāi)源且跨平臺(tái)的配合 CMake 和 Makefile 就能完成編譯調(diào)試可以接 OpenOCD 和 GDB。如果你手頭是特定廠商的 IDE也可以維持原有工程但建議還是抽時(shí)間把構(gòu)建腳本遷移到命令行因?yàn)樽詣?dòng)化回歸測(cè)試、持續(xù)集成都會(huì)用到。工具鏈版本要和源碼匹配。源碼倉(cāng)庫(kù)里最好記錄“編譯工具鏈版本”和“CMake 版本”否則過(guò)了兩輪迭代后芯片廠商的庫(kù)更新了、編譯器也換了你可能會(huì)遇到莫名其妙的編譯錯(cuò)誤或者運(yùn)行異常。我一般會(huì)在 CMakeLists.txt 頂部寫(xiě)清楚最低工具鏈版本要求并讓 CI 在真實(shí)工具鏈上跑一次完整編譯。這里有個(gè)小經(jīng)驗(yàn)sudo apt 裝工具鏈時(shí)版本可能偏老最好直接從工具鏈官網(wǎng)下載固定版本避免倉(cāng)庫(kù)里的二進(jìn)制和本地環(huán)境不一致。3.2 最小編譯命令從克隆源碼到生成燒錄文件假設(shè)源碼已經(jīng)放在一個(gè) git 倉(cāng)庫(kù)里典型流程是這樣git clone 你的源碼倉(cāng)庫(kù)地址/vcu_fw.git cd vcu_fw mkdir -p build cd build cmake .. \ -DCMAKE_TOOLCHAIN_FILE../cmake/arm-gcc.cmake \ -DBOARDVCU_EVAL \ -DCONTROL_PERIOD_MS10 make -j4這段命令里cmake用于生成真正的構(gòu)建文件。-DCMAKE_TOOLCHAIN_FILE指定工具鏈文件里面寫(xiě)的是編譯器路徑和編譯參數(shù)比如arm-none-eabi-gcc -mcpucortex-m4 -mfloat-abisoftfp。-DBOARD選擇板級(jí)配置不同板卡對(duì)應(yīng)的引腳映射、時(shí)鐘頻率、外設(shè)初始化不同。-DCONTROL_PERIOD_MS是我做的一個(gè)編譯期參數(shù)用來(lái)告訴應(yīng)用層控制周期是多少毫秒調(diào)度器會(huì)按這個(gè)宏生成周期標(biāo)志。如果你用 Makefile則是make all make hexmake all會(huì)編譯并鏈接出 elf 文件make hex會(huì)生成燒錄用的 hex 或 bin 文件。出現(xiàn)編譯問(wèn)題時(shí)最常看到兩類報(bào)錯(cuò)找不到頭文件以及鏈接腳本不匹配。找不到頭文件說(shuō)明 include 路徑?jīng)]有包含 config 或者 bsp 目錄鏈接腳本不匹配則要去看 link.ld 里的 Flash 和 RAM 地址是不是當(dāng)前芯片。燒錄時(shí)用 OpenOCD 命令行操作openocd -f interface/your-debugger.cfg \ -f target/your-mcu.cfg \ -c program build/vcu_fw.elf verify reset exit如果燒錄后程序跑飛大概率是-f target/your-mcu.cfg選錯(cuò)了芯片型號(hào)或者鏈接腳本里的 Flash 起始地址和實(shí)際芯片不一致。這里特別提醒源碼里的鏈接腳本 link.ld 必須和芯片型號(hào)精確匹配尤其是內(nèi)部 Flash 的大小分布、RAM 地址、中斷向量偏移。我見(jiàn)過(guò)有人直接復(fù)用上一個(gè)項(xiàng)目的鏈接腳本編譯燒錄后新芯片完全不工作最后發(fā)現(xiàn)是 Flash 起始地址被寫(xiě)成了另一個(gè)系列的地址。這種問(wèn)題只靠看代碼很難發(fā)現(xiàn)必須對(duì)照芯片手冊(cè)。3.3 參數(shù)配置控制周期、時(shí)鐘和內(nèi)存映射怎么調(diào)功能上要調(diào)的參數(shù)大體分三類。第一類是控制周期整車控制器的扭矩處理和狀態(tài)機(jī)任務(wù)一般以 10ms 為基本周期上下電慢邏輯常常用 100ms。第二類是時(shí)鐘和外設(shè)地址這屬于基礎(chǔ)軟件配置通常由廠家提供的工程模板生成應(yīng)用層不需要改。第三類是內(nèi)存劃分主要調(diào)整??臻g和各個(gè)任務(wù)的數(shù)據(jù)區(qū)。參數(shù)示例值作用調(diào)整原則CONTROL_PERIOD_MS10ms任務(wù)調(diào)度基本周期減小時(shí)延但增加 CPU 負(fù)載WDG_TIMEOUT_MS100ms看門(mén)狗超時(shí)閾值必須大于所有任務(wù)最長(zhǎng)執(zhí)行時(shí)間WDG_REFRESH_MS20ms看門(mén)狗刷新間隔留出足夠余量STACK_SIZE4KB系統(tǒng)棧大小用棧水印檢測(cè)后確定源碼里會(huì)有類似這樣的定義#define WDG_TIMEOUT_MS 100 #define WDG_REFRESH_MS 20WDG_TIMEOUT_MS是硬件看門(mén)狗超時(shí)時(shí)間WDG_REFRESH_MS是任務(wù)周期里喂狗的時(shí)間間隔。看門(mén)狗喂得太早或太晚都可能出問(wèn)題太晚自然復(fù)位遇到帶窗口期的看門(mén)狗太早也會(huì)違規(guī)。我的經(jīng)驗(yàn)是喂狗放在主循環(huán)或高優(yōu)先級(jí)任務(wù)中喂狗值設(shè)為超時(shí)的一半左右。內(nèi)存映射的修改要?jiǎng)觕onfig/link.ld。下面是一段常見(jiàn)的鏈接腳本片段FLASH (rx) : ORIGIN 0x08000000, LENGTH 512K RAM (rwx) : ORIGIN 0x20000000, LENGTH 128K _estack ORIGIN(RAM) LENGTH(RAM);ORIGIN是起始地址LENGTH是容量。如果芯片型號(hào)變了這段必須跟著改。特別是_estack指向 RAM 最高地址它是上電后棧指針初始值寫(xiě)錯(cuò)就會(huì)導(dǎo)致第一條指令就異常。這些改動(dòng)要保留在源碼倉(cāng)庫(kù)的 config 目錄里千萬(wàn)不要只在自己本地編譯器頁(yè)面里改否則你留下的源碼和別人復(fù)現(xiàn)出來(lái)的源碼就不是同一份了。4. 整車控制器代碼的核心邏輯實(shí)現(xiàn)扭矩與上電落地的寫(xiě)法4.1 上下電管理狀態(tài)機(jī)的代碼實(shí)現(xiàn)現(xiàn)在看應(yīng)用層最核心的上下電狀態(tài)機(jī)。用表驅(qū)動(dòng)方式第一步定義枚舉typedef enum { VCU_ST_OFF 0, VCU_ST_WAKEUP, VCU_ST_PRECHARGE, VCU_ST_RUN, VCU_ST_CHARGING, VCU_ST_FAULT, VCU_ST_SHUTDOWN } vcu_state_t; typedef enum { EVT_NONE 0, EVT_WAKEUP, EVT_KEY_ON, EVT_PRECHARGE_DONE, EVT_RUN_REQUEST, EVT_FAULT, EVT_CHARGE_START, EVT_CHARGE_DONE, EVT_KEY_OFF } vcu_event_t;接著定義狀態(tài)節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)包含進(jìn)入函數(shù)、事件處理函數(shù)、退出函數(shù)typedef struct { vcu_state_t state; void (*on_enter)(void); void (*on_event)(vcu_event_t evt); void (*on_exit)(void); } vcu_state_node_t;狀態(tài)表就是初始化數(shù)據(jù)const vcu_state_node_t vcu_state_table[] { { VCU_ST_OFF, NULL, on_off_event, NULL }, { VCU_ST_WAKEUP, on_wakeup_enter, on_wakeup_event, on_wakeup_exit }, { VCU_ST_PRECHARGE, on_precharge_enter, on_precharge_event, on_precharge_exit }, { VCU_ST_RUN, on_run_enter, on_run_event, on_run_exit }, /* FAULT/SHUTDOWN 等狀態(tài)按同樣方式加入 */ };事件處理函數(shù)按“當(dāng)前狀態(tài)事件”去查轉(zhuǎn)移表static void state_machine_handle(vcu_event_t evt) { vcu_state_t cur vcu_state; vcu_state_node_t *node vcu_state_table[cur]; if (node-on_event) { node-on_event(evt); } }在on_off_event里收到EVT_WAKEUP后切換到VCU_ST_WAKEUP同時(shí)調(diào)用新?tīng)顟B(tài)的on_enterstatic void on_off_event(vcu_event_t evt) { if (evt EVT_WAKEUP) { vcu_set_state(VCU_ST_WAKEUP); } }vcu_set_state負(fù)責(zé)調(diào)用舊的退出函數(shù)和新的進(jìn)入函數(shù)保證“先退后進(jìn)”的順序。為什么強(qiáng)調(diào)順序因?yàn)楹芏喙收铣霈F(xiàn)在切換瞬間先關(guān)輸出還是先開(kāi)輸出決定了會(huì)不會(huì)出現(xiàn)瞬間短路或者反電動(dòng)勢(shì)沖擊。狀態(tài)機(jī)代碼看似簡(jiǎn)單但順序錯(cuò)了就是整車安全問(wèn)題。我建議在vcu_set_state里加斷言防止非法狀態(tài)跳變。參數(shù)上控制周期、狀態(tài)保持時(shí)間、預(yù)充超時(shí)閾值都做成配置宏。比如預(yù)充超時(shí)設(shè)為 2 秒超過(guò)就進(jìn)故障態(tài)。狀態(tài)保持時(shí)間可以用vcu_elapsed_ms()函數(shù)獲得注意它必須在同一個(gè)調(diào)度任務(wù)里計(jì)數(shù)不要在多個(gè)任務(wù)里同時(shí)累加否則會(huì)出現(xiàn)跳變。4.2 扭矩仲裁與故障降級(jí)的落地寫(xiě)法扭矩管制的代碼要體現(xiàn)“多個(gè)請(qǐng)求來(lái)源一個(gè)輸出”。驅(qū)動(dòng)請(qǐng)求來(lái)自加速踏板、巡航和整車控制器自身比如限功率保護(hù)。常見(jiàn)做法是先統(tǒng)一成扭矩請(qǐng)求值再做仲裁、限制和降級(jí)int16_t torque_req accelerator_to_torque(accr_pct); torque_req min(torque_req, speed_limit_torque(vehicle_speed)); torque_req min(torque_req, system_power_limit()); if (fault_level FAULT_DERATE_50) { torque_req torque_req * 50 / 100; } torque_req clamp(torque_req, -MAX_REGEN_TORQUE, MAX_DRIVE_TORQUE);這里accelerator_to_torque把加速踏板開(kāi)度轉(zhuǎn)換成基礎(chǔ)扭矩請(qǐng)求它本身是一張標(biāo)定表踏板在 0% 時(shí)可能有負(fù)扭矩用于減速在 20% 附近有一段平滑過(guò)渡。speed_limit_torque是限速保護(hù)的扭矩上限超過(guò) 120km/h 就逐步降扭。system_power_limit是電池、電機(jī)熱管理給的功率限制可能是峰值限制也可能是持續(xù)限制。故障等級(jí)高于一定閾值時(shí)直接打五折最高等級(jí)故障通常直接斷扭矩并下高壓。參數(shù)設(shè)計(jì)上要特別注意“變化速率”。整車控制器的扭矩輸出不能突變否則驅(qū)動(dòng)軸會(huì)被沖擊。仲裁輸出之后還要經(jīng)過(guò)一個(gè)斜率限制器static int16_t rate_limit(int16_t target, int16_t last, int16_t up, int16_t down) { int16_t delta target - last; if (delta up) { return last up; } else if (delta -down) { return last - down; } return target; } int16_t torque_limited rate_limit(torque_req, last_torque, TORQUE_RAMP_UP, TORQUE_RAMP_DOWN);TORQUE_RAMP_UP比如 2Nm/msTORQUE_RAMP_DOWN比如 -3Nm/ms。這組參數(shù)直接影響駕駛性需要實(shí)車標(biāo)定。源碼里要留出可標(biāo)定接口用標(biāo)定表而不是硬編碼。這一塊如果只關(guān)注功能很容易做出“功能正常但車沒(méi)法開(kāi)”的控制器。4.3 CAN 收發(fā)鏈路實(shí)現(xiàn)整車控制器的主要輸入輸出通過(guò) CAN 總線。源碼里的 CAN 驅(qū)動(dòng)通常分兩層底層是芯片 CAN 控制器驅(qū)動(dòng)負(fù)責(zé)收發(fā)郵箱上層是應(yīng)用層信號(hào)組包拆包。我這里給出一個(gè)收包回調(diào)的示意假設(shè)驅(qū)動(dòng)層收到一幀 CAN 數(shù)據(jù)后調(diào)用應(yīng)用層注冊(cè)的函數(shù)void vcu_can_rx_handler(uint32_t can_id, const uint8_t *data, uint8_t len) { if (can_id 0x100) { /* 電機(jī)控制器反饋報(bào)文 */ uint16_t spd_raw build_u16(data, 0, false); int16_t torque_cmd build_s16(data, 2, false); vehicle_speed spd_raw * 0.1f; /* 0.1 km/h each LSB */ motor_torque torque_cmd; } }這里的build_u16和build_s16是通用拆包函數(shù)需要處理字節(jié)序、大小端、有無(wú)符號(hào)和位寬。由于 CAN 存在短幀和無(wú)效幀必須判斷l(xiāng)en是否足夠否則溢出或越界。很多偶發(fā)故障就是這里來(lái)的比如發(fā)送方 DLC 不是 8 的報(bào)文你的代碼卻直接讀了data[2]讀到垃圾數(shù)據(jù)。發(fā)送組包也類似但要注意“校驗(yàn)位”和“滾動(dòng)計(jì)數(shù)”。發(fā)給電池管理系統(tǒng)的下電指令通常不僅發(fā)目標(biāo)值還要發(fā)校驗(yàn)碼和滾動(dòng)計(jì)數(shù)。滾動(dòng)計(jì)數(shù)每發(fā)一次加 1接收方靠它判斷報(bào)文是否新鮮。源碼里如果忘了滾動(dòng)計(jì)數(shù)接收方會(huì)認(rèn)為報(bào)文超時(shí)自動(dòng)進(jìn)入安全狀態(tài)這就是你明明發(fā)了扭矩指令但車沒(méi)反應(yīng)的原因之一。調(diào)試 CAN 問(wèn)題時(shí)我習(xí)慣先用總線分析工具抓報(bào)文對(duì)照 DBC 里的信號(hào)定義確認(rèn)字節(jié)序和縮放因子再回頭查代碼能少走很多彎路。5. 整車控制器源碼移植和集成的 5 個(gè)常見(jiàn)坑現(xiàn)象、原因與解決5.1 編譯通過(guò)但上電后不上高壓初始化順序的坑現(xiàn)象源碼編譯燒錄后狀態(tài)機(jī)一直停在 OFF 狀態(tài)外部喚醒信號(hào)正常觸發(fā)但整車就是不上高壓。原因初始化順序里先把狀態(tài)機(jī)注冊(cè)并啟動(dòng)了然后才初始化 CAN 控制器第一幀喚醒報(bào)文到達(dá)時(shí) CAN 還沒(méi)啟動(dòng)被丟掉了。狀態(tài)機(jī)的初始事件為空就一直等不到有效事件。解決把初始化順序固定為“時(shí)鐘→看門(mén)狗→GPIO→CAN/ADC→應(yīng)用狀態(tài)機(jī)”并在狀態(tài)機(jī)啟動(dòng)時(shí)主動(dòng)注入一個(gè)EVT_WAKEUP事件不依賴外部報(bào)文。建議將初始化函數(shù)指針組成一個(gè)初始化表在 main 里按順序遍歷便于 review 也便于復(fù)現(xiàn)。5.2 車速信號(hào)跳變導(dǎo)致誤判限速濾波和失效值配置現(xiàn)象車輛勻速行駛時(shí)車速偶爾從 30 跳到 120整車控制器立即降扭儀表也顯示錯(cuò)誤車速。原因車速來(lái)自電機(jī)控制器 CAN 報(bào)文發(fā)送方在某個(gè)工況下會(huì)輸出無(wú)效值或者總線上出現(xiàn)錯(cuò)誤幀源碼沒(méi)有做合理性校驗(yàn)和濾波把無(wú)效當(dāng)真實(shí)。解決對(duì)車速這類關(guān)鍵信號(hào)做一階濾波再加“相對(duì)上一周期最大變化量”限幅。同時(shí)在 CAN 拆包時(shí)判斷信號(hào)是否等于發(fā)送方定義的無(wú)效值比如 0xFFFF遇到無(wú)效值要丟棄并計(jì)數(shù)連續(xù)無(wú)效幀數(shù)超過(guò)閾值進(jìn)入信號(hào)故障狀態(tài)用備份值或合理默認(rèn)值繼續(xù)運(yùn)行。5.3 看門(mén)狗總在啟動(dòng)時(shí)復(fù)位任務(wù)超時(shí)和喂狗位置現(xiàn)象程序一上電就跑幾步然后復(fù)位反復(fù)循環(huán)。調(diào)試器暫停時(shí)代碼停在啟動(dòng)初始化里看起來(lái)是死循環(huán)。原因看門(mén)狗在時(shí)鐘初始化后開(kāi)啟但啟動(dòng)階段某個(gè)長(zhǎng)耗時(shí)操作比如 EEPROM 擦除等待占用了遠(yuǎn)超看門(mén)狗周期的時(shí)長(zhǎng)喂狗的代碼又在后面的任務(wù)里所以超時(shí)復(fù)位。解決看門(mén)狗開(kāi)啟之前先完成最耗時(shí)的安全初始化必須早早開(kāi)啟的話要分時(shí)喂狗。喂狗放在主循環(huán)或最高優(yōu)先級(jí)任務(wù)中不要在某個(gè)長(zhǎng)任務(wù)的中間去喂更不要在中斷里喂。中斷喂狗會(huì)掩蓋主任務(wù)的卡死調(diào)試時(shí)很難發(fā)現(xiàn)真正問(wèn)題。5.4 鏈接腳本亂改導(dǎo)致變量被清零內(nèi)存分段和啟動(dòng)代碼現(xiàn)象新版本代碼運(yùn)行一段時(shí)間后RAM 里的配置文件全部變成 0故障日志丟失但是程序沒(méi)有復(fù)位。原因鏈接腳本中 RAM 區(qū)被分成了多個(gè)段其中一個(gè)段的地址和啟動(dòng)代碼里的.bss段重疊。編譯鏈接都能過(guò)運(yùn)行啟動(dòng)時(shí).bss清零操作把另一段數(shù)據(jù)覆蓋了。解決回退鏈接腳本改動(dòng)用git diff對(duì)比同時(shí)檢查啟動(dòng)文件里.bss和.data的符號(hào)地址是否和 link.ld 匹配。改內(nèi)存布局后要跑內(nèi)存讀寫(xiě)測(cè)試分別檢查每個(gè)段的起始結(jié)束地址確保沒(méi)有重疊。這個(gè)坑非常隱蔽查了整整一個(gè)下午才發(fā)現(xiàn)是地址重疊。5.5 休眠喚醒后 CAN 發(fā)不出去收發(fā)器靜默控制和模式寄存器現(xiàn)象車輛下電休眠再次喚醒后整車控制器收不到電機(jī)報(bào)文自己發(fā)的 CAN 幀也沒(méi)有 ACK。原因喚醒后驅(qū)動(dòng)只重新初始化了 MCU 內(nèi)部 CAN 控制器沒(méi)有把外部 CAN 收發(fā)器的靜默/待機(jī)模式引腳拉回正常模式或者端口復(fù)用被復(fù)位成 GPIOCAN 的 TX/RX 引腳沒(méi)有恢復(fù)外設(shè)復(fù)用功能。解決喚醒服務(wù)里除了初始化 CAN 控制器還要顯式配置 CAN 收發(fā)器控制引腳和 GPIO 復(fù)用。另外檢查喚醒源是否真正的總線喚醒而不是電源毛刺導(dǎo)致的假喚醒。假喚醒后外設(shè)沒(méi)有完全上電很多寄存器寫(xiě)入無(wú)效這種玄學(xué)問(wèn)題一般是最后才查到的。6. 把源碼變成可交付的控制器驗(yàn)證方法與三個(gè)開(kāi)發(fā)習(xí)慣6.1 用 PC 仿真快速驗(yàn)證狀態(tài)機(jī)我習(xí)慣在拿到任何源碼后先單獨(dú)把應(yīng)用層編譯成 PC 可執(zhí)行文件用樁函數(shù)替換 bsp 接口然后寫(xiě)一組輸入序列驅(qū)動(dòng)狀態(tài)機(jī)注入喚醒、上電、故障、下電事件斷言最終狀態(tài)和輸出扭矩。這不需要硬件能在幾分鐘內(nèi)跑完幾十個(gè)場(chǎng)景。成本極低但能抓住大量低級(jí)邏輯錯(cuò)誤。下面是一個(gè)樁文件開(kāi)頭/* bsp_can_sim.c仿真樁實(shí)現(xiàn) */ int bsp_can_init(uint32_t baudrate) { return 0; } int bsp_can_tx(uint32_t can_id, const uint8_t *data, uint8_t len) { return 1; }應(yīng)用層被編譯時(shí)鏈接bsp_can_sim.c就可以在主機(jī)上運(yùn)行。跑一遍“事件序列驅(qū)動(dòng)狀態(tài)機(jī)、檢查輸出值范圍”的用例。每次改狀態(tài)機(jī)邏輯都先跑一遍這個(gè)仿真再考慮上車。6.2 硬件在環(huán)驗(yàn)證時(shí)的信號(hào)注入技巧真實(shí)控制器上給不了 320V 高壓做測(cè)試就用信號(hào)注入法用低電壓模擬高壓傳感器輸出通過(guò)電阻分壓或信號(hào)板卡給控制器輸入規(guī)定電壓值再測(cè)量繼電器動(dòng)作時(shí)序。重點(diǎn)測(cè)三件事預(yù)充時(shí)間是否在標(biāo)定范圍內(nèi)、故障時(shí)繼電器是否按順序斷開(kāi)、CAN 是否發(fā)故障幀。注入時(shí)把踏板從 0% 瞬間跳到 100%觀察扭矩斜率是否受限這也是對(duì)上一章速率限制代碼最直接的一關(guān)。6.3 我沿用至今的三個(gè)源碼開(kāi)發(fā)習(xí)慣第一每次提交前必須編譯通過(guò)并跑一遍仿真用例加了狀態(tài)卻忘記初始化是所有狀態(tài)機(jī) bug 的根源仿真用例能攔住大半。第二所有跨模塊接口都要加斷言指針、范圍、周期標(biāo)志都要校驗(yàn)寧可運(yùn)行時(shí)報(bào)錯(cuò)也不帶病運(yùn)行。第三碰過(guò)鏈接腳本、啟動(dòng)文件、配置文件這類“底噪”文件后要在提交說(shuō)明里寫(xiě)清楚改了哪個(gè)地址、為什么改方便后人排雷。有位同行為了趕節(jié)點(diǎn)跳過(guò)仿真直接上車結(jié)果一個(gè)狀態(tài)遷移順序錯(cuò)誤把預(yù)充電阻燒了他蹲在車間整整三天。從那以后再小的改動(dòng)我也堅(jiān)持先跑仿真再上車。希望這些方法和踩過(guò)的坑能幫你在整車控制器開(kāi)發(fā)這條路上少走彎路也希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
青青国产精品在线| 操逼视频免费日韩无码| 久久伊人网视频一区二区三区 | 亚洲精品xxx| 国产又粗又长视频| 校园春色中文字幕AV| 日韩免费性爱视频在线观看| 色综合av男人天堂| 天天操人人操狠狠插| 97国产|免费| 欧美A√综合网| 色色五月天婷婷| 国产综合网站在线播放 | 思思热在线视频在线| 欧美超碰人妻97| 人妻在线中出视频| 玖玖爱一区在线| 开心五月婷婷| 亚洲天堂区| 亚洲一区二区三区欧美日韩| 久久亚洲AV成人精品无码| 国产强奸乱伦欧美| 欧美人黑A片无码免视费| 91操熟女视频| 欧美日韩中文字幕不卡| 久久久性爱| 色综合1991| 国产日韩欧美| 日本 情色 1区2区3区| 午夜精品久久久久| 九九免费影片| 一本大道久| 欧美丝袜美女电影一二三四区| 青青草亚洲一区| 国产欧美伊人| 色九月综合| 欧美熟妇乱码在线一区| 久久av网| 欧美性视频二区三区| 免费久久9999| 91熟女视频网| 中文字幕欧美丝袜07资源| 欧美色综合网| 蜜臀一区二区三区在线 | 亚洲最新a在线观看| PMv在线观看| 日韩精品在线放| 2023天天操夜夜操| 一级@啪啪视频| 国产高清免费不卡av| 操逼1区| 久久性爱精品一区| 日韩免费看黄片| 欧亚成人| 91狠狠综合久久久久久| 中文一区在线日| 青青青草原| 亚洲图片小说欧洲| 黄色免费网| 免费看黄视频亚洲网站| 操逼操操操91| 欧美一区二区三区大综合| 欧州激情视频在线一区二区| 97超碰免费生活| 欧美精品欧美精品系列| 亚洲av噜噜噜噜噜噜| 国产a片操逼| 黄色视频特级毛片| 国产美女口爆吞精| 综合色好色| 精品蜜乳AV免费观看| 日韩A优精品在线观看| 激情四射五月天| 密臀视频三区免费网站| 74成人在线| 99国产精品视频尤物| 国产AV久久久蜜爱影集| 亭亭丁香激情| 97亚洲综合| 天天香香欲综合| 一本久久精品中文字| 黄色工厂这里只有精品| 先锋色眉乱伦资源| 岛国小电影| 操死我了啊啊啊| 啪啪自拍九九综合| 懂色AV蜜臀无码精品APP| 欧美色图片91| 日韩中文字幕精品一区在线| 大香蕉 222| 好湿好紧视频| 国产 三级自拍| 美女人妻色网站| 亚洲清纯唯美| 久草免费在线一区二区| 福利五区| 综合操逼| 亚州男人的天堂| 天天色,天天干,天天干| 殴美色网| 九色97| 久湿久久| 欧美aaaaaaa| 伊人大香蕉在线| 国产麻豆91欧美一区二区久久婷婷国产精品| 欧亚无码视频| 亚洲激情色片| 在线中文字幕| 青青草原综合久久大伊人精品| 综合天天。| 国产东北女人在线视频| 丝袜视频网国产90| 日韩 欧美 视频 在线 一区| 国产天天看| 亲子敌伦对白在线播放| 大稥蕉免费视频这里只有精品| 蜜桃狠狠色伊人亚洲综合 | 亚洲情色婷婷五月天| 夜夜性| 亚洲欧美日韩精品久| 超碰地址97| 熟女这里只有精品6| 色婷婷综合久久久久中文一区二区| 美女诱惑久久| 欧洲天天在线| 成人精品久久久午夜福利| 一二三啪啪专区| 久久久97| 操操操操网黑人| 亚洲无码电影久久久| 后X久久| 欧美性爱综合,免费| 亚洲日韩AV视色| 精品久久久久久久| 99久久综合| 麻豆视频国产一区二区| 是还免费视频1727我| 亚洲精品一二区| 蜜桃一区二区三区| 日韩精品 资源| 国产一级高清免费观看| 色九月综合| 91性高朝久久久久久久久| 日日干夜夜操视频h| 亚洲国产精品有声| 伊人嫩草| 99啪啪| 天天看天天在线精品| 北京美女一区二区| 午夜丁香| 少妇一区二区三区精选| 精品人妻15区| 欧美 亚洲 大香| 亚洲一级性爱视频免费看| 久久激情视频| 国产怡红院| 中文字幕一区二区日韩网| 91伊人久久在线| oumeisetu综合| 欧美综合娱乐久久| 九九热re99re6在线精品| 久久超碰久| 亚洲**2021在线观看| 精品无码人妻一区二区免费蜜桃| 五月丁香激情综合网| 亚洲婷婷丁香在线| 日本超碰色精品| 婷婷五月花| 综合五月婷婷亚洲一区| 亚洲精品无码成人久久久99| 亚洲无码超碰免费| 欧美在线天堂| 天天综合网亚洲综合网| 丁香婷婷激情五月天无毒不卡 | 日本高清加勒比| 天天综合~91入口| 黄片aaaaa一区| 中文视频在线观看| 一本色道久久综合精品婷婷| 精品国产国产AV| 91人人爽人人爽| 唐山老熟妇露脸啪啪叫| 丰满人妻一区二区三区性色| 九九九九九九九九九国产精品| 国产精品视频播放| 91久久国产综合久久| 亚洲欧洲日韩国产自在线| 国产h小视频在线观看免费| 久久久精品一区二区| 91在线综合网| 素人播放一区| 精品少妇后入一区二区三区四区人妻巨乳 | 国产91乱伦| 国产精品com| 国产精品久久久亚洲第一牛牛_在线观看 | 1024午夜激情男人的天堂| 久久色一区| 五月婷婷丁香六月| 思思热在线| www.超碰在线| 久久草在线综合视频| 色狠狠 - 百度| 强奸国产精品视频| 成人性爱视频在线看| 豆花视频操逼网址| 久9re热视频这里只有精品| 久9久9久9久9久9久9| 99只有精品| 国产乱弄免费在线视频。| 91丨国产丨白浆| 999狠狠综合| 少妇超碰在线| 九九九九九九九九九九九免费国产| 婷婷五月天伊人| 久久婷婷精品| 欧美日韩m| 嗯嗯嗯啊啊啊在线免费观看| 夜草欧美| 中文字幕日韩情色| JuliaAnnXXX888| 久久激情四射婷婷丁香五月天| 夜夜做夜夜爽精品视频| 国产精品午夜精品| 久久国产乱子伦精品免费女,网站| 啊啊啊男女| 97视频免费在线观看| 蜜臀久久99精品久久久| 大香蕉www.超碰| 精品中文字幕一区二区| 性爱乱伦网址| 9/A片| 岛国小电影| 青青操少妇| 日韩一级二级三级免费看完整版国语版| 和协影院中文字幕三区| 天天操天天日天天干| 久久久96精品| 张柏芝国产一区在线观看| 国产 日韩,欧美 自拍| 天天干人人干天天日97| 97九色人妻| 玖玖爱综合| 久草成人影片| 欧美激情综合| 欧美人人AAA| 粉嫩国产精品久久粉嫩| 欧美色日本| 天天天堂影视日韩亚洲91| 人人澡人人干| 精品亚洲国产成人av网站| 日韩不卡a级视频专区| 日本欧美成人片AAAA| 97一区二区蜜臀| 亚洲极品| 无码高清国产AV| 91丝袜美女国产| 东京热av男人的天堂| 青青操日韩| 精品欧美不卡在线播放| 99热精品在线| 久九9精品| 亚洲最新Av| 99久久99久久综合| 人人摸人人舔一区二区| 大香蕉免费3| 伊人五月天| 人人噜夜夜操| 操一操摸一摸| 日本一区二区电影网站| 男人的天堂99| 国产一区二区啪啪视频| ai欧美亚洲小说| 欧美少妇色图| 激情五月天色色网| 久久超碰av在线| 91亚洲色人| 男人天堂婷婷五月天校园春色| 男人的天堂久久狠| 久久这里是精品| 久久25| 女生91网站| 亚洲欧美日韩精品久| 午夜福利在线视频1000| 中文字幕丰满人妻日本| 中亚av| 精品国产乱子伦一区二区三区,精品一| 伊人久久在线视频观看| 久久婷婷欧美| 色在线亚洲视频www| 丰满翘臀美女影院视频| 久久久久久九九九九| 婷婷色影院| 久久九九97| 91精品国产高清久久久久久,亚洲成人 | 五十路二区在线| 亚洲人体视频在线观看| 99中文字幕| 开心五月激情网| 亚洲做性| 一区二区三区四区色图| 天天做天天爱| 国产成自自拍在线观看| 国产黄片精品在线| 中文字幕精品专区搜索结果91| 亚洲欧美日韩免费电影| 亚欧洲一区二区视频| 93人人操人人| 久久99干一本高清| 91国产精品在线看| 午夜男女爽爽爽影院视频| 日韩超碰精品综合| 国产综合网站在线播放| 欧美96交| 骚乳在线| 亚洲第一精品在线视频 | 黄色小视频日本txt| 精品少妇人妻| 激情五月综合网| 久热一区二区| 欧美日动态视频| 久久一区二区三区入口| 九九九九九精品视频| 毛片中心9视频99| 尤物av网站免费在线播放| 麻豆精品A片免费观看| 国产精品毛片?v一区二区三区| 在线观看视频91| 亚洲码专区| 天堂综合网| 加勒比日本在线| 午夜精品久久久久久久99蜜桃一| 碰碰97| 亚洲男人天堂2013| 婷婷成人五月天| 熟女丰满人妻一区| 日va操| 天天拍夜夜| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久精品视频28| 自拍偷拍2025在线观看| 日韩精品在线视频在线观看| 国产精品午夜福利| 色网综合网| 伊人成人中文字幕久久网| 中文字幕五月婷婷免费| 91欧美网| 欧美啪啪啪91| 91亚洲丝袜熟女| 69人妻人人揉人人躁人人精品| 白天啪啪晚上啪啪视频| 久久久久久久97| 中文字幕一区二区三四五区日日骚| 99色综合| 九九色综合| 久久社区一区二区三区| 激情小说图片亚洲首页| 亚州男人天堂| 日韩在线观看AV| 欧美色天堂网在线视频| 九九视品黄色| 丁香啪啪| 99在线免费视频| 日本在线视频导航| 男人高清无码一区二区| 天天日日本| 91N综合网| 无码天天操| 丝袜狠狠草尤物人妻av91| 91久热| 黑人白女精品一区| 大香蕉在线86| 思思久热在线精品66| 久久久久久AⅤ无码免费肉站| 青青草视频在线观看一区二区| 精品人妻一区二区三区不卡断| 久久久亚洲高清不打码| 男人的天堂在线| 先锋影音av先锋一区| 小少妇| 四虎av在线| 秋霞一级视频在线观看免费| 在线情色电影 91大| 国产欧美在线观看免费观看| 亚洲精品819| 日韩91网站| 99精品在线观看| 欧美综合天堂| 爽爽淫人网| 99re免费| 久久久噜噜噜久久久| 96精品久久| 日韩一级二级| 久久久精品网| 九九精品美女高溯喷水| 亚洲色欧美| 五月天黄色av| 91丨豆花丨熟女| 国产性爱欧美性爱在线| 日韩精品在线观看网站| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 影音先锋国产精品| 亚洲熟妇A V黑人| 亚洲天堂男人在线| 日本熟女不卡视频| 免费久久9999| 无码视频黄色网战| 超碰美国| 日日骚 av| 欧美性爱无码一区二区三区| 91超碰在线播放| 精品国产肉丝袜在线拍国语| 欧美 亚洲精品首页| 丁香五月色情| 日韩激情电影中文字幕| 亚洲男人综合网| 性爱乱伦一区| 亚洲图片激情小说| 久偷拍欧美日韩三区| 粉嫩av在线一区二区| 久久97视频| 九九热在线精品视频| 国产毛片片精品天天看视频| 96久久久精品| 日本人妻A片成人免费看片| 99re免费| 九九人妻| 男人的天堂.com| 国产偷拍自拍在线视频| 91 丝袜在线播放| 77国产精品| 凸凹视频在线观看| 亚洲av性爱电影| 极品久久久久久久久久久久久久| 99久久婷婷| 亚洲国产成人精品久久久国产成人一区二区 | 丁香六月婷| 情趣丝袜无码操逼视频| 中文字幕视频在线观看| 国产白丝在线| 青青草视频久久| 中文色综合| 欧美欧美少妇| 久神马| 激情综合97| AA特级绝黄| 欧美黄页| 欧美性夜| 一级免费精品| 九九九九九九九九九五码| 91久热| 色狠狠 - 百度| 亚洲动态色图| 欧美高清91| 在线观看视频91| www.97在线| 人妻少妇av在线观看| 亚洲天堂五月天国产| 伊人国产AV| 一区二区视频你懂的| 男女打扑克高清网站| 国产强奸超碰AV| 日韩操逼性鲍| 久久狠狠色噜噜狠狠狠狠97| 亚州色综合| 国产中午字一暮区| 蜜臀av中文字幕| 一级黄碟在线观看| 超碰97资源大奶| 成人情色一区二区| 99热久| 大香蕉免费乱伦视频| 亚洲成人在线高清| 沈阳熟女高潮对白视频| 超碰97人妻在线| 亚洲成人ab| 亚洲资源吧| 超碰视97中文| 亚洲日韩97| 久久 久久国内精品亚洲| 欧洲亚洲人妻无码中字久久三区四区 | 日韩高清黄片| 国产精品麻豆成人av| 久久永久无码人妻视频| 91亚洲色图| 亚洲av噜噜噜噜噜噜| 蜜臀久久99精品久久久久| 夜夜欢天天干| 久久超碰网| 色姑娘综合网| 国产AAAAAABBBBB| 在线播放成人高清免费视频| 国产黄色小视频网站| 中文字幕美女91| 天天谢天天干| 久久久国产亚洲精品系列| 免费在线黄片视频| 国产一级作爱毛片| 亚洲中文字幕网| 男人的天堂2019AV| 亚洲国产剧情少妇激情| 久久久久ab| 色女免费在线观看视频网址| 在线 欧美 亚洲| 亚洲丝袜二区在线| 一起草三级AV电影在线观看 | 久久久精品国产亚洲伊人| 久99久视频精选| 欧美中文字幕男人天堂久久精品 | 亚洲一区二区麻豆影院| 欧美一区二区在线资源| 91五月天| 蜜臀网址在线| 夫妻天天操岛国视频| 97色伦97色伦国产欧美| 岛国片国产成人亚洲播放| 免费综合亚洲中文| 久操99| 亚洲日产专区婷婷| 99rre在线精品99re8| 国产日本一区二区三区蜜臀在线观看| gogogo免费高清看中国国语| 日本精品不卡一二三区| 久久久精品日本一道| 欧美亚洲影视| 香蕉精品二区二区| 男人的天堂午夜av| 无套内射性感少妇视频| 91大神电影天堂| 天美传媒AV国产在线| 人妻少妇无码| 国产精品永久免费10000| 岛国黄色大片网站| 日本不卡码黄色| 99re在线视频国产| 夜草网站| www.激情| 97jingpin| 综合久久少妇中文字幕| 影音先锋中文字幕日本好一区二区| 少妇一线天久久久久久| AV天黑人| 脫衣舞一区二区三区| 亚洲麻豆精品二区三区| 大香蕉色欲AV| 亚洲春色一区二区三区| 涩五月婷婷| 精品美女久久一二三| 精品人妻一区二区三区在| 日本激情免费大片| 日本女厕偷拍| 九九九九精品九九九九| 日本国产成人亚洲精品无码| 日本大香蕉| 啪啪啪综合网| 一本道综合色图| 欧美性Fer办公室秘书| 亚洲日韩在线a不卡99精品| 91日韩在线| 久久久九精品| 无码av永久免费专区网站| 男人的天堂在线2| AV中亚| 另类天堂| 蜜汁欧美| www.色操逼| 加勒比综合a∨| 国产特级毛片AAAAAA高潮流水 | 啊啊啊好爽快点啊啊啊嗯嗯| 九七超碰人人乐| 国产浮力影院第1页| 男生女生啊啊啊啊| 黄色人人| 欧美熟妇亚洲版| 日韩极品无码B| 欧美亚洲第1页| 久久国产成人精品国产成人亚洲| 国产刺激视频| 美女诱惑久久| 亚洲18禁| 日韩成人性日韩成人性爱视频在线免费观看 | 人人操人人操人人人操| 欧美激情欧美精品| 一级AV性爱| 亚洲欧洲精品成人| 国产操伦| 97爱啪| 日本理论在线| 97碰碰色| 青青青国产| 日韩免费一级性爱视频| 另类亚洲图色| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 操久久久久| 99精品无码| 熟女人妻精品一区二区视频| 久久伊人在线五区| 97资源视频| 国桃视频产巨乳精品一区二区在线| 欧美操逼熟女| 九九热只有精品| 五月婷婷色| а√天堂资源官网在线资源| 婷婷精品国产一区二区三区日韩| 中国乱伦一区二区| 深夜激情| 亚洲综合网图| 最新的亚洲无吗| 久久久精精精| 欧美美女在线高潮999| 乱伦一区二区三区‘| 乱色老一区二区三区的观看方式 | 欧美性爱三区二区| 一二三区精品视频| 国产农村妇女精品一| 国产精品久久久久久久毛片1| 熟女一区二区三区四区| 日韩三级视频一区二区三区| 99re免费视频精品全部| 日韩成人人妻网站| 91N五十路| 3D污黄视频在线观看| 60秒不遮不挡| 亚洲中文电影| 日日夜夜干| 成人免费看吃奶视频网站| 密臀成人视频久久久| 伊人色综合超碰| 久久AV无码网址| 日韩欧无码一区二区三区免费不卡| 91 亚洲情侣偷拍 久久| 久久,精品一二三| 日本天天操| 久久人妻| 国产精品久久久午夜夜伦鲁鲁| 97视频在线观看播放与子乱对白在线……| 欧美日韩不卡a片| 激情小说亚洲| 91欧美情色| 97色涩| 青青草密桃在线播放| 国产成人精品日本视频| 青青青国产手线观看视频2| 精品少妇一区二区| 9久精品视频在线观看| 天天爱天天韩国日本牛牛牛牛 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 伊人97色天使| 亚洲综合五月天| 温婉少妇玩3p| 亚洲日本激情| 精品无码欧美三级| 日韩猛交| 欧日韩一二三f区| 少妇色综合| 熟女自慰久久久| 久7色| 激情综合五月| 天天干天天狼在线视频| 国产亚洲精品美女久久久久久2021| 亚洲国产精品成人久久蜜臀| 大香蕉99999| 极品出轨视频网站| 亚洲青青草| 亚洲一区二区 麻豆传媒| 嫩草 人人网精品| 青青草原狼av| 九九毛片这里只有精品| 无码又爽又硬又激情免费视频| 亚洲第一成人影院色播| 国产91精品福利在线| 在线观看无码三级少妇| 男人的天堂午夜av| 天天谢天天干| 日逼逼免费看| 18禁精品网站在线看| 天天视频网站黄| 性爱视频啪啪啪啪| 亚洲第一精品在线视频| 超碰国产精品久| 欧美精品日韩久久久九| 欧美天天干| 思思热国产在线视频| 日韩中文字幕人妻视频| 日韩欧美中文日韩欧美色| 国产91啪| 日本理论在线| 五月丁香婷婷色| 欧美操逼一二三区| 内射日韩大臀美女| 日韩少妇丰满亚洲| 好舒服视频| 97欧美久久久久久久| 九九九九一区| 久久久久久九九九| 亚洲无码偷拍| 国产美女裸体秘 永久无遮挡| 老司机深夜18禁污污网站| 国产精品福利视频播放| 国产精品女生av| 日韩不卡在线一区二区| 欧美国产日韩高清在线| 国产精品一二三免费网站| 成人影 天天操 亚洲| 久久偷拍人| 久久人妻无码毛片A片麻豆| 久久风骚城市| 国产9区| 色天使亚洲综合在线观看| 欧美亚洲| 男人的天堂啪啪啪啪啪蜜桃不卡| 中文字幕日产av人| 色综合久久夜色精品国产天堂| 玖玖超碰熟| 欧洲精品一级二级精品综合视频综合| 91福利网在线观看| 亚洲精品影视老司机| 91欧美| 国产九区| 久久系列| 亚洲毛片一级带毛片基地| 99视频内射三四| 欧美人妻色| 久久97视频| 午夜福利1区2区3区| 免费的黄片wwwwww| 91在线视频免费中出| 亚洲国产亚洲天堂| 夜夜骑夜夜操| 欧美日韩性爱操大逼| 久妇网| 夜夜爽夜夜摸夜夜操免费视频| 校园春色五月天| 强奸乱伦日韩AV| 蜜桃久久久久久久| 欧美色老汉| 欧美日韩插逼视频| 99久久9| 欧美91精彩| 三上悠亚在线毛片91| 久草免费在线一区二区| 超碰1024久久| 亚洲色宗合| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 日韩中字av一区| 国产精品一区二区麻豆| 国产精品一区二区久久精品| 99热官网| 91美女视频电影| 欧美一区二区三区四区综合| 日本特黄f c2| 大香蕉手机在线| 亚洲第一狼人丝袜美女另类| 九九热男人天堂| AV色女综合| 人人干人人搞人人摸| 91麻豆天美传媒HD| 99热在线播放| 九九九九97| 色天使亚洲综合在线观看| 韩国女主播青草福利视频| 国产蜜臀精品一区二区尤物| 亚洲精品人妻在线| 久草新免费| 日韩啊V| 国产人妻精品久久久一区二区三区| 亚洲在线A| 久久三| 国产精品久久久久久久久久久久久久久久 | 日本熟女中文字幕一区| 亚洲免费日韩在线一区二区| 91这里只有精品| 玖玖人人爱| 亚洲天堂男人网| 麻豆天美电影一区二区| 亚洲人妻久久| 亚洲另类久操网| 成年无码动漫av片无尽在线 | 欧美久热| 欧在线一二区| 久久极品一区二区| 蜜臀久久99精品久久久久| 国产精品一区人妻精品阁在线| 友优传媒精品在线一区二区| 99久久99九九99九九九| 免费视频观看60秒| 久久思思热| 我要色综合网| 国产夜夜艹| AV天堂国产| 欧美日韩免费专区在线| 91久久免费视频互動交流| 偷拍超碰| 日韩欧美国产一区二区三区四区| 啊啊啊啊啊好舒服视频| 在线性黄高清免费视频| 夜夜久久久| 久久久精品国产亚洲伊人| 97操| 亚洲男人的天堂在线看| 亚洲综合中文字幕有码| 91高清欧美| 国产精品久久9| 亚洲精品性爱片| 久久久免费视频18| 成人五月香网在线| 国产AAAAAABBBBB| 99热8| AV中文在线| 亚欧免费观看视频| 日日干夜夜骑| 日本超碰在线国产一区| 国产精品嫩草影院午夜两性| 99久在线精品99re8热视频在线| 久草视频分类在线| 曰韩人妻中文字幕在线| 天天看天天在线精品| 不卡六六在线91| 超碰久久性爱| 欧美日韩国产高清在线一二三区 | 日韩亚洲精品一区二区| 国产美女91| 日本裸体久久色噜噜| 天天视频综合在线观看视频| 狠狠超| 色九九综合AV| 成人AV素股で擦久久| 日本性爱网址| 国产精品点击进入在线影院高清 | 激情图片伦理国产一区二区日韩| 免费啪啪一级视频| 极品销魂美女一区二区| 国产后入清纯| 日韩久久超碰色| 国产高潮AA片免费看| 看免费一级在线播放毛片| 久久噜| 日韩一级二级| 久久鲁干| 精品成人无码| www欧美91| 97久久国产亚洲精品超碰热| 视频二区美腿丝袜制服人妻欧美| 人人插人人摸人人| 香蕉国产精品麻豆亚洲欧美日韩| 无卡一区=区| 99国产精品久久久久久久成人热| 色色色色网站| 青娱乐亚洲自拍| 97超碰久久| 超碰97久| 久久r精品| 激情亚洲天堂| 色婷婷aV一区二区三区麻豆综合| 加勒比在线视频一区二区三区| 91肉片| 91强在线播放| 射丝袜高跟鞋99| 婷婷中文字幕| 黄色视频特级毛片| 中文精品一区二去| 久热一区二区| 久久东京热久久| 97伊人超碰| 先锋音影AV| 狠狠干精品一二三四五六2022| 婷婷综合五月| 综合久久中文字幕综合日韩精品| 十八禁的黄污污免费网站| 九九九色| 亚洲天堂欧美| 丰满人妻-区二区三区免费看| 久久9999| 麻豆区久久久久亚| 国产精品久久久777| 日本免费不卡二区| 开心激情婷婷| 五月激情综合网| 97色色视频| av天堂5| 午夜高清成人在线视频| 国产探花精品在线| 国产精品亚洲一级av第二区| 91丨九色丨国产丨人妻在线| 黄色无码高清黄色无码网站| 国产亚洲国产超碰| 亚洲中文字幕三级在线| 亚洲精品三| 99视频只有精品| 中文字幕av乱伦| 热九九精品| 天天流夜夜操| 人妻啊啊人妻啊| 99热亚洲天堂| 午夜国产成人福利视频| 国模精品娜娜一二三区| 色丁香久久| 亚洲中文字幕网| 蜜臀少妇一区二区| 国产毛片精品一区二区色欲黄A片| 综合婷婷| 尻女朋友一夜| 精品一区96| 精品97精品97| 国产精品久久久久久久久久二区三区| 欧洲自拍色图gif在线| 亚洲九九视频在线观看| 亚洲AV不卡在线观看| 久久大香蕉97| 亚洲中文字幕在现观看| 曰韩人妻中文字幕在线 | 色女女女导航| 国产乱婷婷精品二区三区| 久久偷拍人| 亚洲综合色在线| 欧美色图另类图片| 最新日本中文字幕| 亚洲熟女性高潮久久久| 人人操,操人人| 亚洲精品丝袜-不卡成人免费……| 国产毛片精品一区二区色欲黄A片| 天天干2区3区| 夜夜 中文视频rt| 竹菊一区二区三区AV线| 久久人妻| 密乳无码| 性爱久久| 天天色怡春院| 国产91美女视频| 人人模人人看| 99久久精品国产高潮| 激情av| 国产精品网站www| 久久久久人| 日本影视久久免费| 亚洲超碰AV| 五月天激情网站| 97碰碰日本乱偷人妻中文的| 91色夜| .精品人妻一区二区三| 偷窥自拍亚洲天堂网爆| 精品人妻美妇91job| 日韩精品人妻中文字幕有码午| 人妻少妇久久中文| 999久久久九九九九| 国产黄片在线免费观看| 欧美亚涩| 亚洲 综合 第一页| 亚州熟女乱伦| 激情无码日韩| 91校园春色长篇| 蜜桃精品一区二区三区久在线| 久久久久久九九九九九| 亚洲暴力强奸AV| 91色综合激情| 91蜜桃传媒精品久久久一区二区| 日本高清视频xxxx| 九色 人妻 大香蕉| 黄色片G G G| 你懂的在线观看区国产| 日韩性爱免费视频在线网站| 日韩亚洲美女一区久久| 性感美女91影视| 国产精品亚洲色婷婷久久久| 99热精品在线| 欧美瑟综合| 国产美女自拍AV| 日本一区二区三区欧美日韩中文字幕| 91天天综合在线观看| 亚洲国产一级黄色视频| 97久久精品国产| 亚洲国产欧美一区二区潘金莲 | 蜜桃久久久久久久久久久久| 亚洲国产97在线精品一区| 国内毛片无遮挡国产| 91 手机在线播放 绯色| 国产精品乱人伊人网| 天天射天天色成人| 曰韩成人免费视频| 91激情综合| 精品国产一区二区三区在线播出| 伊人天堂在线| 天堂综合网| 五月色综合| 嗯嗯不要 视频| 新版天堂中文资源8在线| 狠狠图片青青草| 四虎国产精品永久入口| 九九玖玖精品| 麻豆91熟妇人妻中文字幕茄子| 国产福利第一视频| 色69大色97香蕉| 91c色| 欧美91精彩| 国产高清无码一区三区二区| 国产一区二区三区不卡手机在线| 极品另类| 九九久久一区二区三区| 97干在线视频| AV天天综合| 五月丁香黄色网| 亚洲熟妇丝袜在线观看| a片久久久久久久久久久久| 97综合在线观看| 放黄片放3级黄片没穿衣服| 亚洲熟女国产综合另类| 中文字幕人妻资源在线| 蜜臀在线免费观看在线免费观看| 伊人国产成人av网站| 嗯嗯啊啊操死我| 天天看天天日天天操| 国产专区路线| 国产乱色国产精品免费视| 青春草A| 天天视频综合在线观看视频| 亚洲熟女偷拍在线观看| 亚洲系列第一页| 丰满熟妇大乳做爰| 亚洲精品丝袜-不卡成人免费……| 十八禁黄色| 69AV女优男人的天堂| 久热在线精品免费观看| 欧美韩国你懂得在线| 亚洲操逼无码| 国产综合久久久麻桃个| 国产玖玖| 韩国手机不卡无码三级视频| 久久久精品久久| 99爱爱| 69国产对白刺激| 91 综合 色| 亚洲成人久久美女| 中文久久| 91九九九吃| 婷婷六月色开| 男插女青青影院| 蜜桃狠狠色伊人亚洲综合 | 国产JDAV无码视频在线观看| 色婷婷婷五月天激情四射| 日本操逼视频导航| 91爱网| 国产精品 午夜福利| 99久久精品国产高潮| 国产精品久久久 | 视频二区美腿丝袜制服人妻欧美| 男女猛烈无遮掩视频免费软件| 婷婷九月国产| 欧美在线视频99| 尤物网址| 久久这里只有精品9| 国模不卡一本二本三电影| 91日本在线观看| 国产综合在线视频网站| 熟女一区二区三区四区| 国产久久久9999| 8050午夜少妇无码| 日韩综合无码一区久久92| 在线一区| 欧美专区在线| 蜜乳AV色欲AVAV无码| 亚洲精品九九九| 97人妻人人躁人人玩人人| 熟女一区二区| 国产精品亚洲免费| 啪啪啪东京| 亚洲日韩国产精品| 无码九九| 久久久久9999妇女| 亚洲综合色男人网| 日本福利二区视频| 黄片qw| 亚洲欧美日韩中文播放| 亚洲图片视频小说| 亚洲免费97免费| 成人AV素股で擦久久| 99久久婷婷国产综合| 波多野结衣AV无码一区| 欧美96精品在线| 深夜激情| 天天操熟妇| 亚洲天堂自拍| 日本淫色网| 野狼激情网| 国产精品一区二区黄片| AA特级绝黄| 国产精品自拍xxxx| 操碰97| 日韩有码中文字幕女同性恋| 丝袜视频网国产90| 亚洲日本天堂| 国产又大又粗又长视频在线| 九九热男人天堂| 精品国产乱码久久久久久影片| 国产精品一区二区亚洲人成毛片| 日韩无码极品| 亚洲男人天堂av| 国产精品视屏| 国内外激情在线| 蜜区区视频79| 91中出在线| 九九综合网| 久湿久久| 色香综合天天影视综合 | 超碰在线人人射| 日本一二三免费久久| 99蜜月精品久久| 国产91丝袜在线播放蜜月| 亚洲色图第一页| 夜夜 中文视频rt| 亚洲污污网站| 伊人久久亚洲色欲综合网站 | 久久综合精品一区二区三区| 丰满少妇一区二区三区四区观看| 久草精品热视| 成人久久无码www| 美女露胸露屁股| 欧美日韩人人精品| 另类av天堂| 91电影色诱| 天操老女人| 人妻少妇久久中文| 日本久久久久久久久久| 无码精品啪啪啪一区二区三区三州 | 午夜男女爽爽爽在线视频| 在线人人人人人人精品超| 欧美日韩操逼嗦吊| 91蜜桃婷婷狠狠久久综合9色| 五月丁香激情综合| 日本免费中文一区二区三区四区| 亚洲欧美黄| 亚洲最新a在线观看| 爱av免费| 久热99| 日韩99999色| wwe 天天干.com| 日韩欧美偷拍美女视频| 操老熟女AV| 97在线视频免费看| 天天综合~91| 91精品亚洲内射孕妇| 可以在线观看AV的网站| 国产精品自在线发布| 日韩啪啪视频| 中文一区二区婷婷视频| 亚洲自拍一区夜夜操| 亚洲清纯唯美| 欧洲精品一级二级精品综合视频综合 | 欧美不卡在线一区二区| 国产特级毛片AAAAAA高潮流水| 亚洲九月丁香| 乱伦AVxx| 亚洲欧美激情另类色图| 欧美伦乱爱| 啊啊啊慢点| 日韩国产精品人妻无码久久久| 色在线亚洲视频www| 2018色综合天天操| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 久久久久久波多野吉衣高潮| 一二区在线观看视频| 最新亚洲黄色免费电影|