色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

OpenBMC服務(wù)移植到AMI固件:跨生態(tài)BMC適配實戰(zhàn)指南

OpenBMC服務(wù)移植到AMI固件:跨生態(tài)BMC適配實戰(zhàn)指南 1. 項目概述這不是簡單的代碼遷移而是一次跨生態(tài)的“器官移植”O(jiān)penBMC 是當前服務(wù)器固件管理領(lǐng)域事實上的開源標準它用 Linux systemd D-Bus 構(gòu)建了一套可裁剪、可擴展、可測試的基板管理控制器BMC軟件棧。而 AMIAmerican Megatrends Inc.則是全球主流 BIOS/UEFI 固件供應(yīng)商之一其 Aptio V 和 Aptio VI 代碼庫廣泛用于 x86 服務(wù)器主板特點是高度模塊化、強硬件抽象、深度綁定 Intel PCH/SPD/PECI 等底層總線協(xié)議。ACDAdvanced Control Daemon是 AMI 自研的一套運行在 BMC 上的輕量級服務(wù)守護進程負責處理溫度策略、風扇調(diào)速、電源狀態(tài)同步、傳感器輪詢等實時性要求高的任務(wù)——它不依賴完整 Linux 用戶態(tài)環(huán)境常以靜態(tài)鏈接方式部署在 AMI 的 Mini-OS 或精簡 Linux 內(nèi)核上。把 ACD 從 OpenBMC 環(huán)境“porting”到 AMI codebase表面看是“把一個 daemon 搬過去”實則涉及三重解耦與重構(gòu)第一層是運行時環(huán)境解耦——OpenBMC 基于完整的 systemddbusglibc 用戶空間而 AMI codebase 中的 ACD 運行在無 systemd、無 dbus-daemon、甚至無完整 libc 的受限環(huán)境中第二層是通信機制解耦——OpenBMC 下 ACD 通過 D-Bus 接收 IPMI/Redfish 請求并廣播傳感器事件AMI 環(huán)境中它必須對接 AMI 自有的 IPC 機制如共享內(nèi)存 Ring Buffer 事件中斷通知第三層是硬件抽象解耦——OpenBMC 使用 sysfs udev hwmon 驅(qū)動模型讀取傳感器AMI 則通過 PECIPlatform Environment Control Interface直接與 CPU/SoC 通信或調(diào)用 AMI 提供的 SIOSuper I/O驅(qū)動 API 訪問 BMC 芯片寄存器。我做過三次類似移植一次是把 OpenBMC 的 fan-control service 移入 AMI Aptio V另兩次分別是將基于 libipmi 的 sensor daemon 和基于 libredfish 的 event forwarder 移入 AMI 的 BMC firmware layer。每一次都踩過坑——不是編譯不過而是“跑起來但不工作”。比如第一次移植后風扇全速狂轉(zhuǎn)查了三天才發(fā)現(xiàn) AMI 的 PWM 控制寄存器 bit 定義和 OpenBMC 默認的 hwmon pwmN_enable 不一致0x1 表示“關(guān)閉”而非“啟用”而 OpenBMC 的驅(qū)動默認寫 0x1 啟動第二次移植后 PECI 溫度讀數(shù)始終為 0最后發(fā)現(xiàn) AMI 的 PECI driver 在初始化時未使能 CPU Package Thermal Sensor 的 THERMTRIP# 中斷掩碼位導致 sensor 數(shù)據(jù)鎖存失敗。這些都不是文檔里寫的是燒板子、抓邏輯分析儀波形、反匯編 AMI driver bin 才定位出來的。所以這個項目標題里的“porting”絕不是 git clone make install 那么簡單。它本質(zhì)是一次對固件生態(tài)邊界的測繪你得先搞清 AMI codebase 的“呼吸節(jié)奏”——它的啟動時序、內(nèi)存布局、中斷分發(fā)路徑、驅(qū)動加載順序、IPC 通道注冊時機再把 ACD 的“心臟節(jié)律”狀態(tài)機、定時器精度、事件響應(yīng)延遲調(diào)諧到同一頻率上。適合兩類人參考一是正在做國產(chǎn) BMC 固件適配的工程師需要理解如何把開源生態(tài)能力注入閉源 BIOS 棧二是 AMI OEM 廠商的固件集成工程師正面臨客戶要求“在現(xiàn)有 BIOS 上快速支持 Redfish 風扇策略”的壓力需要一套可復用的移植方法論。2. 整體設(shè)計思路放棄“復制粘貼”堅持“接口重定義”很多人一上來就想把 OpenBMC 的 ACD 源碼整個拷進 AMI 工程目錄改個 Makefile 就編譯。結(jié)果十有八九卡在 linker 階段undefined reference todbus_connection_open、sd_event_loop、udev_device_get_syspath……這些符號在 AMI 環(huán)境里根本不存在。正確的思路不是“讓 AMI 支持 OpenBMC 的依賴”而是“讓 ACD 適應(yīng) AMI 的契約”。我最終采用的是“三層接口重定義法”最外層通信接口重定義OpenBMC 下 ACD 作為 D-Bus service提供org.openbmc.control.Fan接口方法包括setSpeed,getSpeed,getRPM。在 AMI codebase 中我們不引入 dbus-daemon而是定義一套輕量級 IPC 協(xié)議使用固定大小的共享內(nèi)存塊4KB前 16 字節(jié)為 header含 sequence number、timestamp、command type后續(xù)為 payload。AMIBIOS 啟動后由 BMC firmware 初始化該內(nèi)存區(qū)并注冊一個中斷 handler如 GPIO#5 上升沿觸發(fā)當 host OS 或 BMC 應(yīng)用寫入新 command 時觸發(fā)中斷通知 ACD。ACD 用 polling interrupt 混合模式監(jiān)聽——每 10ms 主動 check header 的 sequence number 變更同時等待中斷喚醒兼顧低延遲與低功耗。中間層硬件訪問接口重定義OpenBMC 使用libsensorhwmonsysfs 接口讀取溫度、電壓、風扇 RPM。AMI 環(huán)境中我們剝離所有 sysfs 依賴改為直接調(diào)用 AMI 提供的AMI_SensorLibAPIAMI_GetTempReading(TEMP_CPU_PKG, value)、AMI_GetFanRPM(FAN_1, rpm)。關(guān)鍵點在于AMI_SensorLib并非標準 POSIX 庫它內(nèi)部封裝了 PECI transaction如PECI_CMD_TEMP_READ、SMBus read如SMBUS_READ_BYTE_DATA、GPIO input sampling如GPIO_READ_PIN(GPIO_FAN_TACH)三種物理訪問路徑。ACD 必須根據(jù) sensor 類型自動選擇路徑——CPU 溫度走 PECIVRM 電壓走 SMBus風扇轉(zhuǎn)速走 GPIO這需要在 AMI codebase 的 sensor config table 中預置 mapping rule。最內(nèi)層調(diào)度與生命周期接口重定義OpenBMC 下 ACD 由 systemd 管理Typenotify通過sd_notify(READY1)告知啟動完成。AMI 環(huán)境中沒有 systemd我們實現(xiàn)一個 mini-schedulerACD 啟動時注冊一組 callback 函數(shù)到 AMI 的AMI_TimerRegister()例如AMI_TimerRegister(100, fan_control_task)表示每 100ms 調(diào)用一次風扇控制邏輯AMI_TimerRegister(5000, sensor_poll_task)表示每 5s 輪詢一次溫度。ACD 的 main loop 變成純事件驅(qū)動只響應(yīng) timer callback 和 IPC interrupt不再有 while(1) sleep() 循環(huán)避免阻塞 AMI firmware 的主調(diào)度器。這套設(shè)計的核心哲學是不挑戰(zhàn) AMI codebase 的權(quán)威只做最小侵入式適配。我們不修改 AMI 的 driver model不 patch kernel不引入新 daemon所有新增代碼都封裝在acd_ami_adapter.c和acd_hw_abstraction.c兩個文件里編譯成靜態(tài)庫libacd_ami.a鏈接進 AMI 的BMC_Appmodule。這樣既滿足 OEM 客戶“不能改 BIOS 主干代碼”的紅線又保證功能可驗證、可回滾、可灰度發(fā)布。提示AMI codebase 的 build system 是基于 Python 的build.py不是 GNU Make。它用config.json定義 module dependency graph。你在config.json里添加acd_ami_adapter: {deps: [AMI_SensorLib, AMI_Timer]}build.py 會自動解析依賴并加入 link order。別試圖寫 Makefile —— AMI 的 build infra 會忽略它。3. 核心細節(jié)解析PECI 協(xié)議握手、D-Bus 替代方案、內(nèi)存布局陷阱3.1 PECI 協(xié)議在 AMI 環(huán)境中的真實行為PECIPlatform Environment Control Interface是 Intel 定義的單總線串行協(xié)議用于 CPU 與 BMC 之間傳輸溫度、功耗、頻率等環(huán)境數(shù)據(jù)。OpenBMC 下通常用libpeci庫封裝調(diào)用peci_get_temp_read()即可獲取 CPU Package 溫度。但在 AMI codebase 中PECI driver 是閉源 binary blobpeci_drv.bin只暴露 C APIPECI_Read(0x30, 0x01, data, 2)。參數(shù)含義是target address 0x30CPU0command code 0x01GET_TEMP讀 2 字節(jié) response。問題來了PECI_Read返回的 raw data 怎么轉(zhuǎn)換成攝氏度OpenBMC 的libpeci里是temp (data[0] 8 | data[1]) * 0.0625但 AMI 的 datasheet 明確寫著“PECI GET_TEMP response is 16-bit signed integer, LSB 1°C, offset 0°C”。也就是說AMIBIOS 的 PECI driver 返回的是整數(shù)攝氏度無需乘 0.0625。我第一次移植時沒注意這個差異ACD 把 75°C 讀成 1200°C觸發(fā)了錯誤的高溫降頻策略。更隱蔽的坑是 PECI transaction timeout。OpenBMC 默認 timeout 是 100ms而 AMI 的PECI_Readtimeout 參數(shù)是PECI_TIMEOUT_MS定義在peci_config.h里出廠值是 50ms。但某些老舊服務(wù)器平臺如 C620 芯片組的 PECI bus 時序裕量小50ms 經(jīng)常 timeout。解決方案不是改全局 timeout會影響其他 PECI 功能而是在 ACD 的 sensor poll task 中做 adaptive retry首次調(diào)用PECI_Read失敗后sleep 10ms再調(diào)用一次最多 retry 3 次。實測下來99% 的 timeout 都發(fā)生在第一次retry 后成功。還有一個硬件級陷阱PECI bus 的 pull-up resistor。AMIBIOS 的 PECI driver 假設(shè) bus 上有 4.7kΩ 上拉電阻但某些 OEM 主板為了省料用了 10kΩ導致 signal rise time 超標?,F(xiàn)象是PECI_Read偶發(fā)返回 0xFF 0xFF。解決方法是在 ACD 初始化時加一個 bus health check連續(xù) 5 次PECI_Read(0x30, 0x00, data, 1)GET_CAPABILITY如果失敗率 60%則打印 warning log 并切換到 fallback sensor source如 SIO chip 的本地溫度傳感器。這個 check 必須在 ACD 啟動 early stage 完成不能等到 main loop。3.2 D-Bus 的替代方案共享內(nèi)存 中斷的實戰(zhàn)實現(xiàn)D-Bus 在 OpenBMC 中承擔兩大角色service discoveryorg.freedesktop.DBus.Introspectable和 method call dispatchsetSpeed。在 AMI codebase 中我們用共享內(nèi)存 中斷完全替代但必須解決三個關(guān)鍵問題原子性、序列號、超時處理。共享內(nèi)存 layout 如下定義在acd_ipc.htypedef struct { uint32_t seq_num; // monotonically increasing, wraps at 0xFFFFFFFF uint32_t timestamp; // ms since boot uint8_t cmd_type; // 0x01setSpeed, 0x02getRPM, 0x03getTemp uint8_t target_id; // FAN_1, FAN_2... uint16_t payload_len; // bytes of following data uint8_t payload[256]; // variable length, e.g. for setSpeed: [uint8_t speed_percent] } acd_ipc_header_t;原子性保障不能簡單用seq_num變更判斷新命令到來因為 write memory 和 writeseq_num不是原子操作。正確做法是雙 buffer toggle bit。我們分配兩塊 4KB 內(nèi)存ipc_buf_a和ipc_buf_bheader 第一個 byte 是toggle_bit0 or 1。writer 先寫 payload 到ipc_buf_a.payload再寫ipc_buf_a.toggle_bit 1reader 檢查ipc_buf_a.toggle_bit 1則讀取然后寫ipc_buf_a.toggle_bit 0。這樣避免 reader 讀到 half-written payload。序列號防重放seq_num不僅用于 detect new command還用于 client 端匹配 response。ACD 處理完setSpeed后會把 result 寫入另一塊 response bufferresp_bufresp_buf.seq_num必須等于 request 的seq_num。client 端輪詢resp_buf直到resp_buf.seq_num req_seq_num且resp_buf.status SUCCESS才認為調(diào)用完成。這模擬了 D-Bus 的 synchronous call 語義。超時處理client 端發(fā)起 call 后啟動 watchdog timer500ms。如果resp_buf在 timeout 內(nèi)未更新client 主動 cancel request寫req_buf.cmd_type CMD_CANCELACD 的 interrupt handler 檢測到 cancel 命令清理 pending state。這個機制比 D-Bus 的org.freedesktop.DBus.Error.Timeout更輕量且不依賴 dbus-daemon 的 timeout manager。注意AMI 的 shared memory region 必須在BMC_App的 memory map 中顯式聲明。我在bmc_app.ldlinker script 里添加_acd_ipc_start .; .acd_ipc (NOLOAD) : { *(.acd_ipc) } RAM_REGION _acd_ipc_end .;然后在acd_ipc_init()中用memset((void*)_acd_ipc_start, 0, _acd_ipc_end - _acd_ipc_start)清零。漏掉這步IPC buffer 會殘留 garbage data導致 ACD 解析出錯。3.3 AMI codebase 內(nèi)存布局與 ACD 鏈接陷阱AMI Aptio V 的 firmware memory layout 是嚴格分區(qū)的ROM_CODE只讀 flash、RAM_CODE可執(zhí)行 RAM、DATA_RAM全局變量、STACK_RAM每個 thread stack。ACD 作為BMC_App的一部分必須全部放入RAM_CODE區(qū)域因為 BMC 的 RAM 很小通常 ≤ 2MB且RAM_CODE是 cache-coherent 的適合跑實時 task。陷阱在于OpenBMC 的 ACD 大量使用malloc()動態(tài)分配內(nèi)存而 AMI 的BMC_App禁用 heap ——malloc是 stub function永遠返回 NULL。解決方案是pre-allocated object pool。我們在acd_init()里一次性 malloc 16KB足夠容納 128 個 sensor object 32 個 fan control context然后用 slab allocator 管理static uint8_t acd_pool[16384]; static acd_slab_t fan_ctx_slab; static acd_slab_t sensor_obj_slab; void acd_init() { acd_slab_init(fan_ctx_slab, sizeof(fan_context_t), 32, acd_pool); acd_slab_init(sensor_obj_slab, sizeof(sensor_object_t), 128, acd_pool 32*sizeof(fan_context_t)); }所有fan_context_t* ctx acd_slab_alloc(fan_ctx_slab)釋放用acd_slab_free(fan_ctx_slab, ctx)。這樣既避免 runtime malloc又比 static array 更靈活。另一個致命陷阱是stack overflow。OpenBMC 的 ACD 默認 stack size 是 8MBLinux process而 AMI 的BMC_Appthread stack 是 4KB。ACD 的fan_control_task()里有個 deep recursion 的 PID controller原版用double運算每次 call stack depth 達 12 層直接爆棧。解決方法是① 把 double 改為 fixed-point int32_tQ15 format② 把 recursion 改為 iterative loop③ 在acd_timer_register()時顯式指定 stack sizeAMI_TimerRegister(100, fan_control_task, 8192)—— 這個 8192 是 AMI 的 magic number表示給該 timer callback 分配 8KB stack。4. 實操過程從零開始構(gòu)建 AMI ACD 工程的七步法4.1 步驟一環(huán)境準備與 AMI SDK 獲取AMI 不公開 SDK download必須通過 OEM portal 申請。你需要提供公司營業(yè)執(zhí)照、產(chǎn)品型號、BIOS version、contact person email。審批通常 3-5 個工作日。拿到的是AMI_AptioV_SDK_XXXX.zip解壓后目錄結(jié)構(gòu)如下AMI_AptioV_SDK/ ├── BuildTools/ # Python build scripts, gcc cross-compiler (x86_64-amibios-linux-gcc) ├── Platform/ # Board-specific config, e.g., Platform/Whitley/Config/ ├── Source/ # Core firmware source: Core/ (UEFI), BMC/ (BMC App), Library/ │ ├── BMC/ │ │ ├── App/ # Your ACD will go here │ │ └── Driver/ # PECI, SMBus, GPIO drivers ├── Tools/ # Flash programming tools, debug probes └── Docs/ # AptioV Programmers Guide, BMC App Dev Manual關(guān)鍵工具鏈編譯器BuildTools/gcc/x86_64-amibios-linux-gcc基于 GCC 7.3不支持 C17stdc99。構(gòu)建腳本BuildTools/build.py核心命令python build.py --platform Whitley --module BMC_App --buildtype RELEASE。調(diào)試AMI 提供AMI_JTAG_Debugger支持 SWD/JTAG但只能 attach 到BMC_App不能 debug kernel。實操心得不要用 Windows Subsystem for Linux (WSL) 運行 build.py —— AMI 的 build infra 依賴 Windows-style path (C:\AMI\...) 和 registry key。必須在原生 Windows 10/11 上安裝 Python 3.7AMI 指定版本并用管理員權(quán)限運行 cmd。4.2 步驟二創(chuàng)建 ACD module skeleton在Source/BMC/App/下新建目錄ACD_AmiPort/結(jié)構(gòu)如下ACD_AmiPort/ ├── acd_main.c # ACD entry point, calls acd_init(), acd_start() ├── acd_ipc.c # Shared memory interrupt IPC implementation ├── acd_hw.c # Hardware abstraction: PECI/SMBus/GPIO wrapper ├── acd_control.c # Fan control logic, PID algorithm ├── acd_sensor.c # Sensor polling fusion ├── acd_log.c # Lightweight logging (write to UART or BMC flash log) ├── acd_config.h # Compile-time config: FAN_COUNT, SENSOR_MAP, TIMER_INTERVALS └── Makefile.amibios # AMI build system requires this, not MakefileMakefile.amibios內(nèi)容這是 AMI build system 識別 module 的唯一方式MODULE_NAME : ACD_AmiPort MODULE_TYPE : APP MODULE_DEPS : AMI_SensorLib AMI_Timer AMI_GPIO MODULE_SRCS : acd_main.c acd_ipc.c acd_hw.c acd_control.c acd_sensor.c acd_log.c MODULE_INCLUDES : -I$(AMI_ROOT)/Source/BMC/Include MODULE_CFLAGS : -stdc99 -O2 -Wall -Wno-unused-function然后在Source/BMC/App/的ModuleList.txt里添加一行ACD_AmiPort。build.py 會自動掃描并加入 build graph。4.3 步驟三實現(xiàn) PECI sensor abstraction layeracd_hw.c是移植成敗的關(guān)鍵。我們不直接調(diào)用PECI_Read而是封裝一層acd_peci_read_temp()// acd_hw.c #include peci_api.h // AMI provided header #include acd_config.h // PECI target mapping: CPU0 - 0x30, CPU1 - 0x31, etc. static const uint8_t peci_target_map[ACD_MAX_CPUS] {0x30, 0x31, 0x32, 0x33}; int acd_peci_read_temp(uint8_t cpu_id, int32_t *temp_c) { uint8_t data[2]; int ret; int retry 0; if (cpu_id ACD_MAX_CPUS) return -1; do { ret PECI_Read(peci_target_map[cpu_id], 0x01, data, 2); // GET_TEMP if (ret 0) break; // success if (retry 3) return -1; AMI_TimerDelay(10); // 10ms delay between retries } while(1); // AMI PECI returns integer °C, no scaling needed *temp_c (int16_t)((data[0] 8) | data[1]); return 0; }重點是AMI_TimerDelay(10)—— 這是 AMI 提供的 busy-wait delay精度 ±5%比usleep()更可靠因為 AMI 的usleep()依賴 system timer可能被其他 high-priority task preempt。acd_config.h里定義ACD_MAX_CPUS為 4覆蓋主流雙路服務(wù)器。4.4 步驟四構(gòu)建共享內(nèi)存 IPC coreacd_ipc.c實現(xiàn)雙 buffer IPC// acd_ipc.c #include acd_ipc.h #include acd_log.h static volatile acd_ipc_header_t *ipc_buf_a; static volatile acd_ipc_header_t *ipc_buf_b; static volatile uint8_t *toggle_a; static volatile uint8_t *toggle_b; void acd_ipc_init(void) { // Get physical address from AMI memory map ipc_buf_a (volatile acd_ipc_header_t*)AMI_GetMemoryAddress(IPC_BUF_A_BASE); ipc_buf_b (volatile acd_ipc_header_t*)AMI_GetMemoryAddress(IPC_BUF_B_BASE); toggle_a (volatile uint8_t*)ipc_buf_a-cmd_type; // reuse first byte as toggle toggle_b (volatile uint8_t*)ipc_buf_b-cmd_type; // Clear both buffers memset((void*)ipc_buf_a, 0, sizeof(acd_ipc_header_t)); memset((void*)ipc_buf_b, 0, sizeof(acd_ipc_header_t)); *toggle_a 0; *toggle_b 0; } // Called by interrupt handler when GPIO#5 triggers void acd_ipc_interrupt_handler(void) { if (*toggle_a 1) { acd_ipc_process_command(ipc_buf_a); *toggle_a 0; // clear toggle } else if (*toggle_b 1) { acd_ipc_process_command(ipc_buf_b); *toggle_b 0; } } static void acd_ipc_process_command(volatile acd_ipc_header_t *hdr) { switch(hdr-cmd_type) { case CMD_SET_SPEED: acd_control_set_fan_speed(hdr-target_id, hdr-payload[0]); break; case CMD_GET_RPM: acd_control_get_fan_rpm(hdr-target_id, hdr-payload[0]); break; default: acd_log_error(Unknown IPC cmd %d, hdr-cmd_type); } }AMI_GetMemoryAddress()是 AMI 提供的 API用于從 memory map table 查物理地址。IPC_BUF_A_BASE定義在acd_config.h值為0x80000000假設(shè) AMI 分配 128MB RAMIPC buf 在高端地址。4.5 步驟五移植風扇控制算法OpenBMC 的fan_control.py是基于 PID 的但 Python 在 AMI 環(huán)境不可用。我們用 C 重寫 fixed-point PID// acd_control.c #include acd_control.h #include acd_sensor.h // Q15 fixed-point: 1.0 0x8000, 0.5 0x4000 #define KP_Q15 0x2000 // 0.25 #define KI_Q15 0x0800 // 0.0625 #define KD_Q15 0x1000 // 0.125 typedef struct { int32_t integral; // Q15 accumulator int32_t last_error; // Q15 uint8_t pwm_out; // 0-100% } pid_state_t; static pid_state_t pid_state[ACD_MAX_FANS]; uint8_t acd_control_calculate_pwm(uint8_t fan_id, int32_t temp_c, int32_t target_temp_c) { int32_t error (target_temp_c - temp_c) 15; // convert to Q15 int32_t p_term (error * KP_Q15) 15; pid_state[fan_id].integral error; // anti-windup: clamp integral to ±1000°C*sec if (pid_state[fan_id].integral 0x3E80000) pid_state[fan_id].integral 0x3E80000; if (pid_state[fan_id].integral -0x3E80000) pid_state[fan_id].integral -0x3E80000; int32_t i_term (pid_state[fan_id].integral * KI_Q15) 15; int32_t d_term ((error - pid_state[fan_id].last_error) * KD_Q15) 15; pid_state[fan_id].last_error error; int32_t pwm p_term i_term d_term; // clamp to 0-100% if (pwm 0) pwm 0; if (pwm 100) pwm 100; return (uint8_t)pwm; }acd_control_set_fan_speed()調(diào)用此函數(shù)然后通過AMI_SetFanPWM(fan_id, pwm_value)設(shè)置硬件 PWM 寄存器。AMI_SetFanPWM是 AMI 提供的 API內(nèi)部處理 fan curve lookup 和寄存器 bit mapping。4.6 步驟六集成與編譯執(zhí)行構(gòu)建命令cd AMI_AptioV_SDK/ python BuildTools/build.py --platform Whitley --module BMC_App --buildtype RELEASE常見報錯及解決error f015: c1: fatal error c1083: cannot open source file dbus/dbus.h這是因為acd_main.c里還有殘留的#include dbus/dbus.h。全局搜索刪除所有 dbus 相關(guān) include 和 code用#ifdef OPENBMC_MODEguard 住。undefined reference to pthread_createAMI 不支持 pthread。把所有pthread_*調(diào)用替換為 AMI 的AMI_ThreadCreate()但 ACD 不需要多線程 —— 我們用 timer callback 模擬并發(fā)所以直接刪掉 pthread 代碼。section .acd_ipc will not fit in region RAM_REGIONlinker 報內(nèi)存不足。檢查bmc_app.ld增大RAM_REGIONsize或減小acd_ipc.h的payload[256]到payload[64]夠用。編譯成功后生成BMC_App.bin用 AMI 的FlashProgrammer.exe燒錄到 BMC SPI flash。4.7 步驟七調(diào)試與驗證燒錄后通過 UART console 觀察 log[ACD] Init start... [ACD] IPC init OK, buf_a0x80000000, buf_b0x80001000 [ACD] PECI health check OK, CPU0 temp65C [ACD] Fan control task registered, interval100ms [ACD] Ready.驗證方法功能驗證用 AMI 提供的BMC_CLI.exe發(fā)送 IPC commandBMC_CLI.exe --send-ipc --cmd setSpeed --fan 1 --speed 50觀察風扇是否按 50% PWM 運行用 tachometer 測 RPM。壓力驗證連續(xù)發(fā)送 1000 次getRPMcommand檢查 response latency 是否 50ms丟包率是否為 0。穩(wěn)定性驗證72 小時滿載運行監(jiān)控acd_log是否有PECI timeout或IPC toggle error。我遇到過一次詭異問題ACD 運行 24 小時后seq_num突然跳變從 0x1234 到 0xABCD導致 client 端所有 pending request 超時。最后發(fā)現(xiàn)是 AMI 的AMI_TimerDelay(10)在高負載下不準導致 IPC interrupt handler 被延遲執(zhí)行writer 誤判 buffer 空閑而覆蓋了未處理的 command。解決方案在acd_ipc_interrupt_handler()開頭加AMI_DisableInterrupts()結(jié)尾加AMI_EnableInterrupts()確保 IPC 處理原子性。5. 常見問題與排查技巧實錄5.1 PECI 讀數(shù)為 0 或恒定值的 5 種原因及定位法現(xiàn)象可能原因定位方法解決方案PECI_Read返回 0xFFFFPECI bus 信號完整性差上拉電阻過大/PCB trace 長度超標用示波器測 PECI CLK 和 DATA 波形rise time 1ns 則 fail更換 4.7kΩ 上拉電阻或縮短 PCB tracePECI_Read返回 0x0000PECI driver 未初始化或 target CPU 未 power on在acd_init()后加PECI_Read(0x30, 0x00, cap, 1)檢查 cap 是否為 valid value確保 AMI BIOS 的 PECI enable bit 在Setupmenu 中開啟或調(diào)用AMI_EnablePECI()PECI_Read返回固定值如 0x00C8200°CCPU Package Thermal Sensor 被 disable讀取 CPU MSRIA32_PACKAGE_THERM_STATUS(0x1B1)bit 0 是否為 1在acd_init()中寫MSR_IA32_PACKAGE_THERM_STATUSbit 0 1PECI_Read偶發(fā) timeoutPECI timeout 設(shè)置過短修改peci_config.h中PECI_TIMEOUT_MS為 100重編譯不推薦全局改應(yīng)在 ACD 中做 adaptive retryPECI_Read成功但溫度異常PECI response scaling 錯誤對比 AMI datasheet 和 OpenBMC libpeci 的 scaling factor嚴格按照 AMI spec不做任何 scaling實操心得PECI debug 的黃金組合是示波器 AMI JTAG Debugger CPU datasheet。我用 Saleae Logic 8 測 PECI bus發(fā)現(xiàn)某款主板的 PECI DATA line 有 200mV noise floor導致PECI_Read誤判 start bit。加一個 100nF decoupling capacitor 到 PECI connector pin 3GND和 pin 4DATA之間問題消失。5.2 IPC 不生效的 3 個隱藏雷區(qū)內(nèi)存 cache coherency 未 flushAMI 的BMC_App運行在 ARM Cortex-A53 上有 L1/L2 cache。writer 寫ipc_buf_a后reader 可能讀到 stale cache data。必須在 writer 寫完后調(diào)用AMI_CacheFlush(ipc_buf_a, sizeof(acd_ipc_header_t))reader 讀前調(diào)用AMI_CacheInvalidate(ipc_buf_a, sizeof(acd_ipc_header_t))。漏掉這步IPC 100% 失效。GPIO interrupt 配置錯誤AMI 的 GPIO interrupt 需要配置 trigger modelevel-high / edge-falling。IPC 使用 edge-fallingGPIO#5 從高變低表示 command ready。如果 BIOS setup 中配置為 level-high則 interrupt never fires。解決方案在acd_ipc_init()中調(diào)用AMI_GPIO_SetInterruptMode(GPIO_5, EDGE_FALLING)。shared memory region 未映射到 MMUAMI 的 MMU 默認只映射RAM_CODE和DATA_RAM。IPC buf 在0x80000000需在mmu_config.c中添加MMU_MapRegion(0x80000000, 0x80002000, MMU_ATTR_NORMAL_WB); // 8KB region否則訪問ipc_buf_a會觸發(fā) MMU faultACD crash。5.3 編譯報錯fatal error c1083的
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
东北女人av| 欧美综合骚| 中文字幕55555| 99re9| 最近的最新的中文字幕视频| 夜色97| 久久国产在线一区二区| 婷婷激情四射| 大逼色网站| 一级免费啪啪片| 久久精品中文字幕女同| 大奶啊啊好爽| 久久久久久九九九九九| 五月婷婷大香蕉| 亚州欧美在线| 99这里有精品视频| 久操免费观看| 东京热av男人的天堂| 热思思免费视频| 九九九久千久久激情蜜桃在线看 | 一本精品日本在线视频精品| 日本一区二区电影网站| 校园春色五月天| 狠狠狠狠狠干| 偷拍 亚洲 欧美| 红杏大香蕉| 人妻丝袜日本| 在线免费观看高清无码视频| 97九色人妻| 天久久久噜噜噜久久国产精品爽爽| www.91久久| 肥佬影院91| 视频二区美腿丝袜制服人妻欧美 | 伊人久久大香线蕉无码| 久久久噜噜噜久久人妻| 九九综合久久| 中文字幕,人妻,日韩| 欧美的性爱网站免费| 欧美日韩插逼视频| 伊人991| 欧美性爱无码一区二区三区| 九九九九九精品视频| 六九九九| 最新亚洲人成网站在线影院| 麻豆区久久久久亚| 综合网色| 91看黄片| 91青青在线| 日本五区不卡| 国产精品不卡av免费在线观看| 亚洲 欧美 色图| 天堂资源欧美| 啪一啪免费视频| 密臀在线视频| 69久久久久久久久久久久久| 日本久久99| 国产熟女精品一区二区| 欧美成va视频网站| 日韩一级二级三级免费看完整版 | 色五月婷婷中文字幕| 九九九九九精品| 精品无吗久久| ′ !γ}丶。。久久精品欧美一区二区三区| 国产91av在线播放| 国产欧美另类久久久精品课程| 亚洲综合在线高清| 国产情侣自拍在线播放| 国产一级内射无挡观看| 超碰九7| 伊人玖玖网| 99色婷婷| 欧美精品99久久久**| 大香蕉伊人75| 九九热精彩视频| 屌逼麻豆| 爱av免费| 插穴性爱视频在线观看| 中文字幕丰满子伦无码专区在线视频最新| h色99999| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | AV天堂国产| 欧美综合综合| 97国产综合欧美| 成人影 天天操 亚洲| av天堂5| 综合在线导航一区| 性色AV蜜色av色欲av| 欧美亚洲首页| 久久精品无码不卡| 婷婷去俺也去六月色| 日本人体九九九九九九| 99精品视频在线观看免费| 亚洲综合首页| AV天堂因数| 歐美性天天| 超碰亚洲欧美日韩无| 久久久久久精品免费看A级| 97在线免费观看| 夜夜夜夜久久久久| 蜜臀Av一区二区三区| 日韩精品99久久久久久中文字幕| 99热这里只有精品8| 国产精品毛片?v一区二区三区 | 97在线资源| 久无码| 91Chinese在线| 久操操AV电影| 性夜影院爽黄A爽免费动漫| AV色五月天| 亚洲色图 欧美热图 清纯唯美 另类自拍| 日本超碰97日韩精品人妻| www.夜夜| 免费一级欧美片片线观看| 色操逼网| 10000部十八禁看电影| 九九黄色视频在线观看| 国产激情在线观看| 亚洲天堂无码| 日韩在线观看字幕精品| 日韩啪啪视频| 亚洲无 码A片在线观看麻豆| 伊人91| 91劲爆| 亚洲欧美性生活| 六月激情网| 蜜桃无码AV一区二区| 亚洲AV无码黄色强奸| 精品人妻一区二区三区四区石在线| 91精品国产91熟女| 亚洲无 码A片在线观看麻豆| 97视频网站| 久久久96| 女性喷水高潮在线观看| 久热一区二区| 国产精品人妻无码久久久互動交流| 99re视频在线播放青草| 欧美色图片欧美色图| 天美av在线| 97综合久第一页| 亚洲欧洲无码一区夜| 9久精品视频在线观看| 九X超碰| 性老妇一区二区三区| 97日视频| 黑人干亚洲| 啊啊啊啊啊舒服| 熟妇一区,二区,三区。| 白丝在线一区| 日韩一卡二卡三卡| 亚洲激情片| 日本韩高清无砖码22o| 亚洲另类久操网| 久射吧| 综合免费无码中文| 久久综合久久综合人久久夜精品| 国产精品美女在线一区| 日本国产成人亚洲精品无码| 97色婷婷| 91欧美另类| 美国三级日本三级久久99| 99热日| 91痴汉| sewuyueav| 蜜臀99精品国产高清在线观看| 91处女在线观看| 国产一区二区成人av在线播放| 99久久久无码国产精品性啊聊| 思思热在线视频在线| 日韩精品人妻一| 777奇米影视777四色| 亚洲国产一区二区三区四区国产| 91老司机在线视频免费观看| 91国产伊人大香蕉| 黄页av| 中文乱码字字幕在线第5页| 亚洲欧洲日韩天堂av| 国产人伦a片信息免费片| 中国探花熟女| 青苹果影院男人的天堂| 后入式五六区| 日韩欧美麻豆 | 97超碰天天爱天天爱| 国产精品欧美激在线| 久久精品99久久久久久| 日韩在线观看三级电影| 久操网址| 亚洲欧洲激情卡通另类文学四射小说网站| 国产午夜精品理论片a大结局| 中文字幕三四区| 东京热熟女亚洲视频网站| 亚洲乱熟女一区二区三区大香蕉| 99热免费| 国产热av| 91午夜无码| av中文在线| 欧美97在线观看| 97视频播放| 日韩激情小说一区二区| 78综合网| 亚洲色天堂九9| 黄片免费视频2019| 少妇超碰在线| 久久久三区二区一区| 欧美乱伦专区| 精品国产乱码久久久久A| 久草精品一区 | 久久精品国产亚洲av水密被窝| 国产黄色视频久久| 天天摸,夜夜摸| 97国产色图| 国产精品懂色tv影视免费观看| 午夜福利1区2区3区| 极品尤物在线观看| 亚洲自拍青操视频| a一区二区三区乱码在线| 91久久久久免| 十八禁黄色| 亚洲国产成人精品无码专区| 97超碰中文| 国产日韩手机视频在线| 91骚妇| 国产精品不卡少妇白| 国产一区二区精品在线视频| 亚洲图片激情综合另类| 一个人在线看的黄色电影网站| 97久久久久| 丁香五月综合| 五月天婷婷色| 欧美亚洲玖玖玖| 桑老女人九区| 天天插天天操| 97久操| 色婷久久| 欧美性爱超碰97| 牛牛aV| 后入福利视频| 中文字幕av亚洲在线| 情色五月天网| 亚州综合AⅤ| 啊啊啊啊好疼| 5252色欧美在线| 女沟厕偷窥piss小便| 国产高潮AA片免费看| 啊啊啊久久久视频| 国产精品999zyz| 手机久操欧美综合色码| 天天谢天天干| 超碰碰激情97+久| 操逼视频色| 台湾肥佬网一区二区三区| 色情五月综合婷婷| 中文字幕熟女人妻丝袜丝| 九九无码| 超碰精品97| 亚洲中文字母在线播放| 青青伊人久久| 国产一进一出视频网站| 亚州色图欧美| 九九综合久久| 国产精品久久久久久亚洲色欲| 性色avv| 男人天堂网站| 久久五月天婷婷| 国产一级黄色片在线观看| 精品一区二区啪啪啪| 怡红院成人av| 亚洲精品黑丝| 亚洲中文字幕在现观看| 欧美熟女操屄| 精彩国产视频播放1区2区| 中文字幕视频免费| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 中文字幕日本久久| 精品无码一二三四区| 亚洲影视高清第一页| 中文一区二区三区影院| 5月婷婷6月六月丁香| 97中文字幕色| 91久久国外网| 色官网色综合| 91爱看| 国产又黄又粗又猛大片| 人妻激情偷乱视频一区二区三区 | 大香蕉狠狠爱| 国产精品亚洲一区二区三区四区| 久久大陆| 亚洲成人性爱网站在线播放| 天天操av懂色| 96国产精品| 加勒比在线视频一区二区三区| 淮穴色AV| 久久综合97| 日本午夜精品理论片A级APP发布| 超碰这里只有精品| 国产对白刺激视频| 久久超碰天天| 久久这里只精品99re66图| 久久超碰98| 日韩免费在线观看不卡| 欧美日韩高潮喷水91| 久伊人网78| 亚洲国产一区二区三区四区国产| 亚av顶级裸体一区二区三区四区五区| 伊人专区一区二区三区| 国内精品999| 欧美爱爱97| 中文字幕精品一区二区精品| 欧美天天综| 麻豆亚洲AV成人无码久久精品| 色吧 综合| 欧美精品第3页| 天天情欲宗合网| 人妻一区视频| 蜜乳av一区二区三区| 亚洲av影院在线观看| 久久久99999久网站| 精品人体无圣光凹凸| 神马久久久久久久久久| 岛国黄| 媚薬在线视频麻豆| 成人性爱高清视频免费看| 国产白领连续中出在线观看| 黄色片A级一区二区三区| 成人天天看站长推荐| 涩综合导航| 金典av| 久久久久久久久成人av解说| 色图四区| 九一综合精品视品av| 国产精品久久久久久亚洲色欲| 综合网欧| 亚洲最大的综合性av| 国产日韩美女小穴视频网站不卡| 天天射影院| 91东北熟女| 动漫片子网站3黄| 黄片国产精品一区二区| 国产精品大屁股999| 717影院理论午夜伦八戒| 久久丝袜| 欧亚日韩综合精品国产| 色色色综合| 青青操网| 97爱爱官网| 熟女天天干| 天天操天天射天天日| 国产中午字一暮区| 玖玖综合色| 欧美十八禁在线看| 免费看片黄| 最新9久久久9免费视频| 国产视频三区四区| 激情接吻视频久久久久久| 亚洲欧美碰碰| 久久久久久久久久久六六| 久久精品店| 综合网91| 亚洲干B| 97人人夜夜精品视频| 手机在线A片| 亚洲图片 欧美电影| 丁香六月激情综合| 国产高清在线观看欧美| 乱伦日本中文自拍| 久久久成人免费av电影| 天天色粽合合合合合合合| 亚洲情色91| 色九九久九九| 欧美中出1| 一级婬片120分钟试看| 4虎在线视频| 麻豆天美传媒在线视频天堂| 丁香五月电影| 成年女人黄网站| 亚洲成人精品在线一区| 好色综合| 综合久久9| 中文久久一区| 婷婷香蕉欧美在线一区二区三区| 亚洲精品第一| 欧美午夜一区二区三区| 极品销魂美女一区二区| 超碰免费人妻在线| 久草免费在线视频| 久久超碰天天| 日本加勒比无码专区一二三| 色官网在线| 九九九九久久久久| 亚洲色图欧美| AV色五月天| 久久久国产精品人妻丝袜| 歐美性天天| 熟女熟妇伦久久影院毛片一区二区| 成人一二三区| 久久久久成人网| 久久草草欧美精品| 麻豆AV96熟妇人妻| 免看60秒涩涩视频| 日韩无码极品| 大香蕉视频一二三区| 超碰在线成人| 天天综合有色网| 天欧美在线| 国产精品视频内谢女人| 亚洲av淫乱| 国产青一二三| 精品丰满熟妇人妻一区| 啪啪视频免费在线观看| 久久久免费的精品| 欧美色66| 欧美 亚洲精品首页| 人人操人人舒服| 婷婷久月| 亚洲美女 晚间男人天堂 | 欧美性xxxxx狂欢| 亚洲一区中文字幕| 精品视频免费在线一区| 最近2018中文字幕在线高清第一页| 中日韩久久久| 亚洲图片欧美色| 强奸乱伦大香蕉网| 嗯……啊…嗯嗯…啊…好舒服| 干美女人妻| 亚洲密乳AV| 91黑丝在线播放| 久久视频,这里只有精品 | 国模无码一区二区三区在线| 精品无码久久久| 91精品婷婷国产综合久久| 99在线精品观看视频中文| 超碰国产精品久| 国产精品一区人妻精品阁在线| 国产视频小说| 国产精品久久久久久久AV大片| 五月综合色| 蜜桃臀一区二区三区久久| 日韩av无码网站| 国产原创自拍| 97在线观看视频| 国产综合网站在线播放 | 明星性猛交ⅹxxx乱大交| 黄色片大香蕉| 本道在线| 久久精品高清AV| 亚洲欧美国产中文字幕| 人妻二区| 久久精品亚洲东京热色播| 午夜精品久久久久久久久久久久久| 久久久久亚洲?V片无码V| 99re这里只有精品3| 亚洲欧洲激情卡通另类文学四射小说网站| 精品久久人妻成人网| 青青青艹在线视频| 1人人看人人摸人人操| 永久电影三级在线观看| 亚洲高潮少妇| 欧成人精品一区二区三区| 爱做久久久久久| 夜色97| 很黄很色的视频在线观看| 91中文精品日韩欧美在线 | 蜜臀操逼黄色视频操的好爽| 亚州高清色综合| 一级久久久久久久久久久| 金莲网址| 大香蕉在线视频15| 久久激情五月| 91蜜臀熟女| 麻豆色约约| 综合久久久久久久综合网| 亚洲国产一区二区三区在线| 欧在线一二区| 丁香五月天堂网| 伊色久人大在线| 日韩不卡在线一区二区| 欧美色五月| 亚洲天堂中文字幕无码男同| 美女性91| 屌色在线97视频| 九九九一二三| 男人天堂久久精品| 97超碰色情| 屌逼麻豆| 日本成人在线不卡一区二区三区| 大香蕉婷婷| 91亚.色| 亚洲最新中文字幕免费| 天美传媒精品一区二区三区| 操碰91| 久操精品| 色www精品视频在线观看| 亚洲色 国产 欧美 日韩| 99精品在线| 日韩中文欧美| 欧美夜夜| 国产aⅴ无码片毛片一级网站| 夜夜爽33333| 国产在线综合网| 黑人精品久久97| 性爱1区| 欧美人体性爱互联网第一页婷婷日本| 欧美白嫩女HD| 3P乱轮视频| 天天拍夜夜| 麻豆精品A片免费观看| 家庭乱伦网站国产| 东京热毛片177b2viP| 亚洲码和欧洲精品激情系列| 26uuu国产成人综合| 天天拍夜夜| 久久鲁夜| 婷婷色一区| 双插性欧美一二三区| 易易A毛视频| 超碰99热中文字幕| 丁香六月天| 日韩国产欧美伦理在线| 久久精品无码专区| 久久久专区| 中文伊人大香蕉视频| 国产极品美女高潮无套在线观看| 96精品久久| 天天内射| 国产av青草| 国产懂色精品国产av| 久久一留热品黄| 久草视频在线视频在线视频在线观看| 97久久网| 欧美,日韩,中文,另类| 第45页一区二区| 色综合婷婷| 男女激烈网站最新| 精品人妻一二三| 亚洲不卡一| 厕所偷拍在线| 欧美精品四区| 亚洲乱码尤物193YW| 天天综合~91| 99色悠悠| 五月开心网| 欧美久久人人网| 在线午夜成人无码视频| 蜜臀AV午夜精品久| 91麻豆天美国产欧美高潮| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 啊啊啊啊啊在线视频| 亚洲成人久久美女| 欧美 日韩 亚洲 春色| 尤物AV免费网站| 东北操逼| 久久人妇| 人妻丝袜肏逼| 国产91精品久久久久久久网曝门| 成片免费观看视频大全| 久久久久久国产精品免费网站| 最新亚洲黄色免费电影 | 亚洲欧美国产日本一区二区三区| 国产精品亚洲一级av第二区| 成人免费性爱视视| 欧美亚洲激情| 天天澡天天爽日日AV| 91久热| 99精品无码| 蜜桃臀AV在线| 亚欧操逼片在线观看 | 无码久久亚洲高清,| 91视频综合网| 99无码狠狠久久| 亚洲精品97| 久久精品国产97欧美精品亚洲| 欧美偷偷网| 91老熟女91老女人| 视频在线观看青青99国产| 99爱爱| 97在线资源| 日韩高清一二三| 久久是精品| 97超碰精品成| 东京热伊久| 欧美色老汉| 91女色| 欧美亚洲综合高清在线| 一起草三级AV电影在线观看| 综合伊人网12色| 最近2018中文字幕在线高清第一页| 欧美日韩国产成人高清| 亚洲av综合伊人久久| 国产无码精品高清| 美女国产一区二区久久| 九月丁香婷婷| 欧美 亚洲 制服 精品| 色综合天天| 欧美72网页| 欧美大色交| 久热伊人| 91视频伊人| 成人5码视频| 日本精品成人无码| 久久大香蕉手机高清| 国产精品久久9| 骚女高跟AV在线| 91四海无码日韩欧美| 人人妻人人玩人人澡人人爽| 国产精品视频自拍在线| 中日高清无码操逼视频| 91久久久久久久| 亚洲自拍欧美国产首页网曝| 女上位精品在线| 91春色| av天堂天堂av日韩| 欧美成人精品A片免费一区99| 九九精品美女高溯喷水| 久9久9久9久9久9久9| 日本潮催一卡操| 黄aaaaaaaaaaaaaaaaaa色网站| 欧美精品第3页| 亚洲性少妇| 亚洲天堂2020| AV无码久久久精品| 国产伦精品一区二区三区在线观| 97在线青| 思思久热在线精品66| 久久婷婷综合国际产色怕| 99999精品视频| 日韩熟女视频二区| 俺去啦俺来也久久综合| 亚洲啪啪视频一区二区| 欧色综合| 青草精品视频-日本久久久久网站| 亚洲第一狼人丝袜美女另类| 国产怡红院| 欧美激情亚洲| 操逼视频免费日韩无码| 国产精品不卡一区二区三区| 屁股久久久久久| 操美女高潮抽搐白浆| 亚洲一本色码中文字幕| 国产精品美女视频诱惑| 精品少妇一区二区三区在线视频| 好屌色综合| 一区不卡在线观看av| 男人的天堂激情| 亚洲男人的天堂va亚洲男人社| 日本操嫩b网| 怡红院成人av| 国产一区二区三区白丝| 99操| 九九亚洲| 国产丝袜视频| 嗯嗯啊好爽| 99在线免费视频| 日本www操操操| 国产一级137片内射麻豆| 九九色色| 久久69| 亚洲欧洲自拍图片专区满春格| 亚洲九区| 十八禁一区二区无码观看| 欧美欧美啪啪视频| 国产精品情侣啪啪| 国产熟女一区二区| 国产精品香蕉热久久新品| 91在线丝袜视频| 色综合av综合久久| 混色激情av| 亚洲性猛交| 亚洲春色欧美激情自拍| 亚洲熟女国产综合另类| 亚洲有码视频二区| 六月激情网| 欧美色91| 欧美色色色| 青青青在线高清视频在线一二三四区 | 日本性爱少妇| 亚欧美综合网。| 久久受www免费人成| 玖玖爱综合| 91春色| 欧美精品人妻视频| 国产高清午夜成人在线观看| 久热伊人99re| 欧美精品三级黄片| 岛国小电影| 尤物视频视频官网| 蜜臀亚洲中文| 成人av性爱电影在线观看| 久久9精品视频| 亚洲欧洲自拍图片专区满春格 | 快点操死我| 国产午夜精品理论片a大结局| 日韩精品.久久精品.AV女优.天美传媒| 欧美视频一区二区三区| 色婷网| 亚洲精品欧洲色| 午夜传煤十二区精品| 日韩一级欧美一级在线观看| 97少妇人妻中文字幕久久 | 麻豆精品久久久久久久| 欧美高清无码免费视频高清版| 中文字幕日产av人| 日韩成人精品| 国产亚洲日本| 国产精品熟女丝袜一区二区| 久久久噜噜噜久久人妻| 亚洲操人| 中文字幕在线观| 亚熟在线| 激情网色| 96久久科窝| 国产小u女在线观看| 女性91网站| 18+91网站| laoshunv91| 色五月婷婷久久| 色天使亚洲综合在线观看| 热热色91| 亚洲自拍青操视频| 国产十八禁视频| 日本高清视频xxxx| 色婷婷香蕉| 国产精品大屁股999| 久久久久一本一区二区青青蜜月| 国产一区二区视频在线播放| 51国产午夜精品视频| 日韩天天综合| 在线亚洲丝袜视频网站| 中文字幕91综合| 尤物视频一区| 久久夜夜| 久九九九| 精品人妻一区二区三区四区| 青青三级视频| 又摸又舔在线观看网站| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 中文字幕精品一区二区精品| 欧美十八禁导航成人| av网站在线看| 欧美色图91| 超碰97在线中文| 天天综合网~91入口| 好看的91视频| 亚洲乱色视频一区、二区在线| 狠狠操天天干| 欧美成va视频网站| 久久五月天婷婷丁香中文字幕| 老熟妇乱轮| 不卡在线观看视频| 男人精品区| 97这里有精品| 日本黄页视频在线观看| 久久久精品一区二区| 97碰碰日本乱偷人妻中文的| 人妻无码久久一区二区三区免费| 高清不卡国产| 天天弄欧美| 黄色不卡视频| 国产精品久久久久久久免牛肉蒲团 | 青青操少妇| 色哟哟-国产专区| 亚洲AV资源| 国产婷婷一区| 色天堂综合| 加勒比综合a∨| 久久久免费视频18| 亚洲图片小说欧洲| 91男人综合| 激情婷婷黑人91| 亚州,欧美在线| 99热婷婷一区二区三| 淫荡网址| 天天爽夜夜爽夜夜爽精| 成人麻豆av电影网站| 久久久久久国产精品免费网站| 亚洲国产一级精品毛一级精品看免费视频| 麻豆视频国产一区二区| 日韩国产在线观看av| 777奇米影视777四色| 亚洲五月天激情| 狠狠干狠狠色| 好湿好紧好爽 视频| AV天天在线观看| 久插不卡| 欧美亚洲综合999| 欧美体内射精| 亚欧色图在线激情| 岛国激情视频软件| 亚洲精品久久久久久久蜜桃臀| 超碰人人乐97| 天天综合91在线| 97在线资源| 超碰色97| 日韩图区 偷拍| 天天爽天天| 欧美成不卡网| 九九九九九九免费视频| 国产精品日日摸夜夜添骚逼| 麻豆国产视频精品观看| 午夜男女爽爽爽在线视频| 特级大荫道BBwBBwBBW| 熟女露脸激情自拍视频| 久久东京热久久| 最新三级网址| 久久久999日本大片| 东京热不卡视频| 97超碰护士| 亚洲AV无码黄色强奸| 国产刺激视频| 国产AV人人夜夜澡人人爽麻豆| 91香蕉国产尤物视频| 久久人人舔人人爽舔人人av片| 欧美日不卡| 精品中文一区二区| 国产精品点击进入在线影院高清| 91精品国产麻豆国产自产在| 亚洲大色堂| 少妇的嫩逼图片| 91社区拍啪人妻| 日本九九久久99播| 精品午夜福利| 这里都是精品在线观看| 你草精品在线视频| 2019天天干| 日本一级性爱| 国产天天噜一噜久久久| 亚洲熟女综合网| 综合色99| 欧美在线|亚洲| 高潮的A片激情扒开一区| 蜜桃传媒一区二区亚洲| 久久精品女同亚洲女同13| 久久性爱精品一区| 一区二区首页| 一区e区三| 国产综合网站在线播放| 亚洲AV无码久久精品蜜桃小说| 天天天操天天天爱| 国产一区二区三区久久久精品| 91九九| 久9爱精品| 亚洲AV永久无码一区仙野| 密臀在线免费观看| 亚洲欧美日韩偷拍色图| 一区二区偷拍拍视频| 国内外毛片在线观看| 亚洲欧美国产成人综合不卡| 后入式999| 天天干夜夜一操| 亚洲精品一区二区免费在线观看| 亚洲高清无毛一区二区| 国厂麻豆77q4| 大香蕉一区二区在线观看.| 欧洲乱码视频| 国内毛片无遮挡国产| 91GD.COM| 91亚洲欧洲| 国产少妇与亚洲av| 91成人18| 超碰 av 女人天堂| 亚洲啪啪视频一区二区| 国产精品在线一区二区| 8050无码八戒| 人妻熟妇一区二区三区| 青青操青娱乐| 3PAV乱伦视频| 久久 亚洲 日韩 人妻| 国产精品 久久久精品一牛| 久草线上视频免费看| 手机看片1024你懂的国产| 青青草AV色| 天天拍天天操| 久久99干一本高清| 伊人综合色网| AV一起草在线| 亚洲男人的天堂网| 韩日性爱av| 色色97爱| 国产青一二三| 日韩无码操逼片| 久久久九九| 色嘟嘟人妻天堂网| 国产多人在线观看视频| 亚州熟妇精品| 五月天激情网图片| 日韩中文字幕国产| 91在线国产后入风骚翘臀美女素人| 免费A V在线| 2017大香蕉| 99最新日韩偷拍视频| 人妻丝袜无 码视频专区| 尤物网站91| 大香蕉琪琪日本女优不卡| 五月婷婷激情网| 人人看人人插| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | xxx亚洲午夜天堂| 日韩乱中文 | 91强热人妻| 天天日天天干少妇日| 女人高潮大叫一级毛片| 91丨九色丨43老版熟女| 亚洲天堂少妇| 日本黄色裸日本黄色裸体 | 精品然女一区二区| 美中日韩无码| 久久只有精品| 中文字幕二区| 国产夫妻一区二区| 五月丁香综合| 国产一区二区精品久久99| 色五月AV| 天操天操夜操夜月操月年年操操| 爽爽爽免费视频| www.五月天| 一级久久久久久久久久久| 国产成人在线观看网址| 亚欧美综合网| 超碰在线1234区| 青青草在线视频欧美| www.91久久| 黄片www.| 精品久久久久av影院| 久久久96| 97精品全部| 亚洲另类色综合网站| 夜夜国产一区| 亚洲不卡av在线| 少妇干B| 久久av一级av少妇av高潮| 欧美色人| 91天天综合在线| 九九久精品| 99国内熟女露脸视频| 1区2区3区中文字幕日韩| 色九九九九久| 五月婷婷六月丁香| 日韩免费性爱视频在线观看| 91三级理论片播放器| 国产在线强奸视频| 亚洲av无码成电影在线播放| 欧洲久久一二线| 97chaopengongkai| 日韩97超碰| 亚洲欧美97√| 大香蕉人妻久久| 91欧美www| 亚洲欧美另类图片| www国产精品| 欧美精品激情| 加勒比综合88| 日韩少妇无码| 久96热在线观看视频| 中文字幕丰满子伦无码专区在线视频最新| 久久视频,这里只有精品| 99热18这里只有精品| 熟妇激情| 九九九九九九免费视频| 亚春色色| 九九九九九精品| 蜜臀99久久精品久久久懂爱| 天天综合中文字幕 91| 三上悠亚在线毛片91| 国产精品久久久啊| 亚洲无码精品AV久久久| 日韩9区| 岛国黄片网站| 亚洲国产一区二区入口| 日本东京热加勒比久久| 桃花色涩综合影院| 天天爽天天| 1区2区3区在线视频| 久久草草欧美精品| 欧美色997| 国产情色第一第二页在线观看| 中文字幕二区| 91狠狠综| 国产高清精品一区二区三区毛片| 日日操丁香五月天| 黄色一区二区秘书性感| 免费视频无码| 后入人妻一区| 国产亚热在线久久| 97爱综合| 精品欧美А∨无码黑人大荫蒂| 精品一区二区人妖| 天天干,夜夜爽| 久久亚洲人妻| 免看60秒涩涩视频| 亚洲欧美人妻| 国产粉嫩蜜臀av一区二区三区 | 在线岛| 国产精品大香蕉| 无码一区二区三区四区五区六区七区八区九区十区视频 | 人妻少妇视频在线播放| 亚洲少妇诱惑| 亚洲综合图片在线| 久久久久久久| 久久欲| 福利视频一区二区微拍| av优播| 久久原创中文| 久久久久国产精品久久久| 免费看国产曰批40分钟怎么下载| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 蜜臀久久久99久久久久 | 精品久久久久综合无码| 情趣丝袜无码操逼视频| 操婷婷逼| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 国产主播福利| 六月激情婷婷| 国产十八禁视频| 福利视频网站| 丁香婷婷久久 | 久久久男人的天堂| 色噜噜狠狠色综无码久久合欧美| 日韩av在线免费网站| 成人AV素股で擦久久| 日本一二三免费久久| 操B在线观看| 97视频在| 久久久人妻| www.91理论| 嗯嗯啊啊视频一区二区三区| 久久内射| 九九黄色视频在线观看| 亚洲国产中文字幕| 免费家庭乱伦视频| 精品国产乱码久久久久A| 上床啊啊啊| 美女一区二区国产精品| 国产丰满少妇久久久精品影院| 超碰偷拍| 91在线无码精品秘 软件| 美女毛片999| 国产精品无码成人精品| 毛片视频白嫩| 9久精品| 大香蕉啪啪啪| 青青久久艹| 五月婷视频| 综合五月天| 伊人五月天| 欧美激情 亚洲色图| 91精品伊人久久久大香线蕉91| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 国内三级自拍小视频在线观看| 91精品国久久久久久无码| 一级性爱视频免费在线| 97网址www| 日韩熟女操逼| 97久久精品国产| 人人看人人插| 无码男人天堂| 岛国视频一二三区| 欧美 亚洲 另类 综合| 亚洲αv一区二区三区| 色综合99999| 黄页网站免费高清在线观看| 久草热制服丝袜在线观看 | 五月婷婷基地| 91丨人妻丨国产丨丝袜| 久久久久13| 日本韩高清无砖码22o| 亚洲、日韩、综合、另类| 狠狠久久手机视频精品| 久热精品色情| 香蕉人人操tv| 精品国产乱码久久久久久久| www.99色| 午夜国产综合视频在线观看| 9 7超碰在线免费观看| 国产精品ⅴ无码大片在线看.| 91精品又粗又猛又爽| 午夜男人一级A片7777| 另类小说欧美激情校园春色| 天天日天天色| 手机在线免费看的av| 综合97亚洲| 婷婷丁香五月激情啪啪| 国产色图乱伦| 女生自91网站| 91小视频| 操逼操逼操| 日韩精品怡红院| 日本福利二区视频| 人人搞人人插人人操| 天堂涩涩| 色五月综合| 欧美日韩日产免费网站看| 久久成人东京热人妻| 欧美色偷拍 | 色踪合AV| 五月天激情国产综合婷婷婷| 日本二三四区| 干B| 丁香激情网| 久久久久九九九| 欲色啪| 天天操天天射青青草| 国产97在线视频| 91九色丰满高潮| 亚洲欧洲视频小说在线观看| 国产区性爱在线视频秋霞豆| sewuyueav| 欧美久久久| 色噜噜狠狠色综无码久久合欧美| 国产对白刺激视频| 九九热av| 天天操福利视频综合网站| AV天堂电影网| 91黑人无码激情在线| 人人贴人人摸| 91熟女在线| 亚洲av热热色| Av色五月| 国产无马av| 美国日韩黄色片| 91福利网在线观看| 亚洲猛交| 国产吹潮女在线观看| 亚洲熟妇无码一区二区三区| 久久艹逼视频| 一区二区三区激情在线观看| 中字幕人妻一区二区三区| 日本亚洲嫩草影院啪啪| 97超碰资源网| 美女高潮视频91| 久久久精品日本一道| 久久久久久AⅤ无码免费肉站| 久久 精品| 夜夜性| 欧洲自拍第一页| 狠狠操狠狠插| 欧美极度丰满熟妇hd| 自怕偷自怕亚洲精品| 翔田千里Av在线| 精品九九| 99re视频在线播放青草| 四虎免费在线播放| 岛国999| 亚洲精品久久久久久久久豆丁网| 色呦呦国产精品免费看| 久久亚州精品成人Av无| 五十路熟女人妻一区二区在线观看 | 99无码视频| 五月丁香啪啪啪| 性色av网站| 激情无码日韩| 中文字幕精品日韩中文字幕| 久久日韩精品一区二区| 精品少妇高潮久久| 精品久久9| 激情小说亚洲图片| 蜜桃AV天堂| 麻豆天美AV传媒第一页| 校园春色亚洲无码| 九久久精品| 小电影欧美91| 天天综合网在线| 亚洲综合图文|