精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux實時化與硬實時RTOS綜述

系統(tǒng) Linux
利用多核HW-RTOS技術(shù),通過高速、高精度的同步,解決了傳統(tǒng)軟件RTOS中cpu間的同步和通信問題。由于使用多核HW-RTOS可以實現(xiàn)cpu間的同步速度小于1微秒,因此可以實現(xiàn)cpu間的精確定時控制。

一.背景介紹

在工業(yè)控制領(lǐng)域 實時(Real Time) 是一個核心要求。

  • 實時系統(tǒng)的定義:實時系統(tǒng)是指計算的正確性不僅依賴于邏輯的正確性而且依賴于產(chǎn)生結(jié)果的時間,如果系統(tǒng)的時間限制不能得到滿足,系統(tǒng)將會產(chǎn)生故障。在工業(yè)領(lǐng)域這種故障可能造成災(zāi)難性的結(jié)果。
  • 實時操作系統(tǒng):該操作系統(tǒng)有能力提供一個指定范圍內(nèi)的服務(wù)響應(yīng)時間。

一個 OS kernel 給程序員提供了一系列的服務(wù),例如: multitasking、 interrupt management、 inter-task communication and signaling、 resource management、 time management、 memory partition management 等等。OS 的主要工作就是資源封裝和調(diào)度,它提供對CPU、Memory、Storage、Network等資源的封裝和調(diào)度。

對于 實時(Real Time) 這個課題來說,我們重點關(guān)注其中的 CPU 資源調(diào)度。

1.1 OS 實時難題

  • CPU 調(diào)度模型

在CPU資源調(diào)度方面,OS 主要提供一個多任務(wù)(multitasking)的運行環(huán)境,以方便應(yīng)用的開發(fā)。在開發(fā)某個應(yīng)用時首先把工作拆解成多個任務(wù)(Task/Thread),每個任務(wù)都可以簡化成一個簡單的無限循環(huán):

void MyTask (void)  
{
while (1) {
Wait for an event to occur;
Perform task operation;
}
}

對一個任務(wù)來說它好像獨占CPU,但實際上是多個任務(wù)共享一個 CPU 的,由 OS Kernel 根據(jù)任務(wù)的狀態(tài)和優(yōu)先級來動態(tài)調(diào)度運行的:

可以看到OS對CPU調(diào)度提供了封裝,站在OS之上可以很方便的開發(fā)、移植應(yīng)用,應(yīng)用只需要關(guān)注自己的 Task 循環(huán),其他復(fù)雜操作對OS都是透明。但是另一方面,OS 的這些封裝不可避免帶來了開銷,通常來說一個 CPU 上了 OS 以后會比裸機(jī)系統(tǒng)更慢,在頻率較低的 MCU 系統(tǒng)上這些開銷的占比會更為明顯。

  • Event Driven

另一個重要的概念:任何一個系統(tǒng)都是事件驅(qū)動(Event Driven)的,準(zhǔn)確來說是中斷驅(qū)動的。

如上面代碼所示,任務(wù)(Task)都是等待event,然后處理事務(wù)。任何一個任務(wù)得以運行,都是因為它收到了一個 Event,這個 Event 可能是一個中斷、也可能是超時到期、還有可能是其他任務(wù)發(fā)出的IPC信號,繼續(xù)追查發(fā)出IPC信號的任務(wù)最后的源頭 Event 肯定是一個外部設(shè)備硬件中斷 或者 是內(nèi)部的 Timer中斷。中斷引起了 Event 傳遞,形成了逐個運行多個任務(wù)的鏈條(Chain)。一個系統(tǒng)內(nèi)部會存在很多條這種鏈條。

  • Real Time

對實時(Real Time)系統(tǒng)來說,不僅僅要求OS能提供多任務(wù)環(huán)境,更要求任務(wù)能在極短的時間之內(nèi)響應(yīng)外部的中斷事件。這個要求也充滿了挑戰(zhàn),即要享受 OS 帶來的好處,又要把 OS 帶來的開銷將到最小。

OS 實時模型的時序如上圖所示,實時優(yōu)化就是圍繞這張圖來展開的。其中的時間點和可能的優(yōu)化方式如下:

時間段

延時原因

可能的優(yōu)化方式

Interrupt Latency

由于系統(tǒng)中其他人關(guān)中斷造成的

減少 OS API 的執(zhí)行時間

減少 ISR 的處理時間

ISR

 

Handle+signal event+schedule

-

ISR(handle)

-


Handle Over Task 中斷

線程化

 

ISR(singal event)

signal api 動作可能隨負(fù)載等多而增加

-

ISR (schedule)

schedule api 動作可能隨負(fù)載增多而增加

 

增加搶占(preemption)

調(diào)度算法防止優(yōu)先級翻轉(zhuǎn)

 

ContextSwitch

-

目前沒有太好的優(yōu)化方法

1.2 Linux 實時補(bǔ)丁

大名鼎鼎的 Linux RT-Preempt Patch 試圖從以下方面改善 Linux 的實時性:

Index

Item

Note


1


中斷線程化


減少ISR處理時的關(guān)中斷時間

2

 

高精度時鐘

增加系統(tǒng)的定時精度,

并且在不需要的時候可以關(guān)閉tick進(jìn)入NoHZ狀態(tài)


3


實時調(diào)度算法


時間片調(diào)度,從O(1)換成CFS的O(log n)

實時調(diào)度,SCHED_FIFO算法

 


4


臨界區(qū)可搶占

減少自旋鎖、大內(nèi)核鎖、RCU鎖的保護(hù)區(qū)域

盡量替換成Mutex鎖


5

優(yōu)先級繼承

 

               -

實時補(bǔ)丁大大改善了 Linux 的實時性能,但還是軟實時的水平。

1.3 Xenomai + Linux 雙內(nèi)核

優(yōu)先處理實時任務(wù),linux也被視為其中一個線程,本身也有調(diào)度器,但須等到?jīng)]有實時任務(wù)時(空閑狀態(tài)),才會執(zhí)行l(wèi)inux thread。

Xenomai + Linux 雙內(nèi)核可以達(dá)到 RTOS 的實時水平,也有把這種稱為硬實時。

但是 RTOS 的實時還是存在不確定性,因為OS API等臨界區(qū)的關(guān)中斷時間還是存在不確定性,和系統(tǒng)的負(fù)載相關(guān)聯(lián)。這也是 HW-RTOS 的優(yōu)化點。

1.4 HW-RTOS

HW-RTOS (hardware real-time operating system,硬件實時操作系統(tǒng))是一種基于硬件實現(xiàn)的實時操作系統(tǒng),是瑞薩電子的專有技術(shù)。HW-RTOS支持大約30個api,都是通過硬件實現(xiàn)的。與傳統(tǒng)的軟件RTOS相比,硬件實現(xiàn)提供了極高水平的實時性能。

可以把HW-RTOS看作是CPU的硬件浮點單元(FPU),加速內(nèi)核常用操作的專用硬件。然而,HW-RTOS并不執(zhí)行基于軟件的內(nèi)核中通常可用的所有操作。這類似于浮點處理器,它只提供基本的浮點運算,如加、減、乘、除、從浮點數(shù)到整型和從整型到浮點數(shù)的運算,省略了更復(fù)雜的運算,如超越運算、對數(shù)運算和其他運算。在使用HW-RTOS作為骨干時,更復(fù)雜的內(nèi)核操作通常可以在軟件中實現(xiàn)。

HW-RTOS 主要利用了以下手段:

  • HW-RTOS 通過并行處理的方式,把 OS 調(diào)度類的負(fù)載從 CPU 上 Offload。
  • 當(dāng)上述的調(diào)度負(fù)載由軟件來完成時,受當(dāng)前資源多少的影響執(zhí)行時間會變得不確定(例如:往一個排序鏈表中插入一個成員,消耗時間是不確定的)。但是 HW-RTOS 內(nèi)部的硬件處理也是并行的,它不受當(dāng)前資源多少的影響,所以它處理負(fù)載的時間可以做到接近恒定。

HW-RTOS實現(xiàn)了以下目標(biāo):

Fast API execution with little fluctuation
Low interrupt latency with low jitter
Very short interrupt disable period

從支持的設(shè)備來說,瑞薩的 RZ 系列 和 R-IN32M3 系列支持了 HW-RTOS 功能:

Product

Description


RZ/N1D


Cortex?-A7(Dual) + Cortex?-M3 4p GbE Switch +1 MAC EtherCAT Slave Controller Sercos

RZ/N1S


Cortex?-A7 + Cortex?-M3 4p GbE Switch +1 MAC EtherCAT Slave Controller Sercos

RZ/N1L

Cortex?-M3 4p GbE Switch +1 MAC EtherCAT Slave Controller Sercos

RZ/T1

Cortex?-R4 Processor with FPU + Cortex?-M3 2p Ether Switch + 1 MAC EtherCAT Slave Controller* (*Option)

R-IN32M3-EC

Cortex?-M3 2p Ether Switch On chip PHY EtherCAT Slave Controller

R-IN32M3-CL

Cortex?-M3 2p GbE Switch CC-Link IE Field Controller

R-IN32M3-CL2

Cortex?-M4 Processor with FPU 2p GbE Switch On chip GbE PHY CC-Link IE Field Controller

從支持的 OS 來說,目前 uITRON 和 μC/OS?III 推出了支持 HW-RTOS 的版本,但是目前找不到具體的實例代碼。μC/OS?III HW-RTOS 號稱做到和原版 μC/OS?III 的接口和體驗一致:

接下來的章節(jié),我們來詳細(xì)的分析 HW-RTOS 實現(xiàn)的相關(guān)優(yōu)化點。

1.5 More

需要特別注意的是,就算實現(xiàn)了 HW-RTOS 但是還是有影響實時的硬件因素存在:Cache Miss、TLB Miss、分支預(yù)測失敗、長跳轉(zhuǎn)與短跳轉(zhuǎn)、DVFS 等等。

航空航天等行業(yè)會使用專業(yè)的WCET(Worst-caseExecutionTime最壞執(zhí)行時間)工具,對系統(tǒng)的實時性做一個全面分析。

二.優(yōu)化點1:API

2.1 原理介紹

傳統(tǒng)軟件 OS API 會給系統(tǒng)來帶開銷,影響系統(tǒng)的性能和實時性,主要體現(xiàn)在兩方面:

(1)、OS API 開銷對實時性能的影響比大多數(shù)軟件工程師認(rèn)為的要大得多,并且發(fā)現(xiàn)很難保證最壞情況下的值。核心點就是 API 的函數(shù)復(fù)雜度是 O(n) 而不是 O(1)。

(2)、OS API 在執(zhí)行期間為了保證一致性大部分情況下是關(guān)中斷的,如果最壞情況下它的執(zhí)行時間是難以預(yù)估的,那么它帶來的最壞關(guān)中斷時間也是不可預(yù)估的。

2.1.1 Software API Execution time

圖3-1顯示了日本最常用的RTOS——ITRON的API執(zhí)行時間。包含“/D”的API是通過分派執(zhí)行的API進(jìn)程。圖3-1的測量是在靜態(tài)條件下進(jìn)行的。

但是由于RTOS的執(zhí)行時間取決于當(dāng)前的內(nèi)部狀態(tài),因此它們是動態(tài)波動的:

(1)、以Set Flag API執(zhí)行時間為例。如圖3-2所示。圖中顯示了所有Set Flag API的執(zhí)行時間。但是,等待同一事件的任務(wù)越多,執(zhí)行時間就越長。換句話說,執(zhí)行時間會根據(jù)RTOS的內(nèi)部狀態(tài)而波動:

(2)、Wait隊列的基本原理。如圖3-3所示,RTOS的Wait隊列運行在基于優(yōu)先級的FCFS (First Come, First Served)算法上。具體來說,每個對象為每個任務(wù)優(yōu)先級級別都有一個隊列(在本例中,優(yōu)先級0被指定為最高優(yōu)先級,優(yōu)先級n被指定為最低優(yōu)先級)。例如,要實現(xiàn)信號量,每個信號量標(biāo)識符必須有n個隊列。每個希望獲取信號量的任務(wù)必須在隊列中等待。當(dāng)一個任務(wù)釋放它的信號量時,優(yōu)先級最高的隊列頭的任務(wù)被選中,該信號量被該任務(wù)獲取:

(3)、Set Flag API 的關(guān)鍵流程如下。對于標(biāo)志控制,系統(tǒng)必須在設(shè)置后比較等待標(biāo)志模式和事件表中的標(biāo)志模式,以確定釋放等待的條件是否滿足。換句話說,RTOS必須從圖3-3中隊列的頭部開始依次檢查每個任務(wù),并比較標(biāo)志模式。結(jié)果,Set Flag系統(tǒng)調(diào)用的處理時間與等待相同標(biāo)志的任務(wù)數(shù)量成比例顯著增加,如圖3-2所示。

因此,API執(zhí)行時發(fā)生的RTOS開銷會動態(tài)變化,以響應(yīng)RTOS執(zhí)行時的內(nèi)部狀態(tài)。通常,大多數(shù)設(shè)計人員希望系統(tǒng)調(diào)用執(zhí)行在幾百個時鐘周期內(nèi)得到結(jié)果。然而,現(xiàn)在很多人都沒有意識到,某些條件的重疊可能會花費更多的時間。因此,當(dāng)上面討論的這些條件堆積起來時,開銷會突然增加,這意味著某些過程不能在指定的時間限制內(nèi)完成,從而導(dǎo)致實時系統(tǒng)的整體故障。

2.1.2 Software Influence of Queue Handling

如圖3-3中Wait隊列的邏輯結(jié)構(gòu)所示,RTOS的每個對象都需要優(yōu)先級隊列。通常,軟件中實現(xiàn)的隊列使用列表結(jié)構(gòu)。在RTOS中,TCB通過一個列表體系結(jié)構(gòu)相互連接,以實現(xiàn)一個等待隊列(TCB: Task Control Block),圖3-3中的隊列實現(xiàn)如圖3-4所示。當(dāng)一個任務(wù)從Wait隊列中取出時,優(yōu)先級最高的隊列頭的任務(wù)將首先取出。因此,軟件必須檢查任務(wù)是否被添加到從最高優(yōu)先級開始的隊列中,以找到任務(wù)正在等待的最高優(yōu)先級隊列。作為結(jié)果,所需的處理時間會因隊列條件的不同而有很大差異。

另一個問題出現(xiàn)了。在RTOS中存在大量的隊列。例如,如果有64個信號量標(biāo)識符、64個事件標(biāo)識符和16個優(yōu)先級級別,那么總數(shù)量將是64×2×16 = 2048個隊列。因此,即使對象的數(shù)量相對較低,也需要大量的資源。圖3-5顯示了一個可能的改進(jìn)。每個隊列的尾部連接到下一個優(yōu)先級下降的隊列(即下一個較低的隊列)頭部的TCB。這個結(jié)構(gòu)允許很容易地從Wait隊列中刪除任務(wù),只需選擇指針?biāo)甘镜娜蝿?wù)。它還大大減少了指針的數(shù)量。然而,如果仔細(xì)考慮,這種改進(jìn)思想會導(dǎo)致在將任務(wù)添加到隊列時進(jìn)行大量處理。例如,當(dāng)將優(yōu)先級為7的任務(wù)添加到隊列中時,搜索從隊列頭部開始,然后當(dāng)搜索到達(dá)優(yōu)先級為7的任務(wù)時,它將新任務(wù)添加到最后一個7級任務(wù)的末尾。

不管怎樣,很明顯,隊列處理需要大量的處理時間,而時間將根據(jù)隊列的條件而變化。此外,隊列處理是一個非常重要的過程,因此在每個過程期間都禁用中斷。

下面我們將探討隊列處理需要多少時間,并評估這對實時性能有多大影響。測試模型如圖3-6 所示:

測試結(jié)果如下圖所示:

伴隨隊列處理的API執(zhí)行時間會根據(jù)RTOS中隊列的狀態(tài)急劇波動。此外,由此導(dǎo)致的中斷禁用周期幾乎與api執(zhí)行時間一樣長,因此中斷禁用周期也可以根據(jù)RTOS隊列內(nèi)部狀態(tài)動態(tài)波動。

因此,當(dāng)大量任務(wù)被添加到隊列中時,隊列處理可能會產(chǎn)生意想不到的開銷和意想不到的長中斷禁用周期,從而可能導(dǎo)致實時系統(tǒng)中出現(xiàn)意想不到的錯誤。很有可能,應(yīng)用程序和軟件設(shè)計人員通常不會考慮RTOS中連接到隊列的任務(wù)數(shù)量,但提前了解這些任務(wù)可能導(dǎo)致的問題真的很重要。

2.1.3 HW-RTOS API Execution time

HW-RTOS中調(diào)用api的方法如圖4-1所示。如圖所示,應(yīng)用程序調(diào)用的API通過庫軟件作為硬件信號傳遞給HW-RTOS,返回值也通過庫軟件接收。庫軟件還根據(jù)HW-RTOS的指令執(zhí)行調(diào)度過程。在圖4-2中,我們可以看到HW-RTOS和傳統(tǒng)軟件RTOS(現(xiàn)在稱為SW RTOS)執(zhí)行時間測量的比較。

HW-RTOS中的API執(zhí)行時間非常快,大多數(shù)系統(tǒng)調(diào)用可以在10個周期內(nèi)執(zhí)行。然而,庫軟件的開銷確實會增加執(zhí)行時間,如圖4-2所示。在HW-RTOS中,相同的API的執(zhí)行時間不會因為內(nèi)部狀態(tài)而改變,就像在SW RTOS中顯示的設(shè)置標(biāo)志一樣。另一個巨大的優(yōu)點是系統(tǒng)調(diào)用的最壞情況值可以在數(shù)據(jù)表中指定。

2.1.4 HW-RTOS Influence of Queue Handling

HW-RTOS使用瑞薩特有的“虛擬隊列”技術(shù)實現(xiàn)硬件隊列。Virtual Queue可以將任務(wù)添加到隊列中,從隊列中刪除任務(wù),也可以從隊列中間刪除任務(wù),每個操作周期為2個周期。因此,無論隊列的狀態(tài)是什么,處理都可以在指定的時間內(nèi)完成。

和軟件方式在同樣測試模型下的對比:

2.2 具體實現(xiàn)

HW-RTOS 通過硬件大概實現(xiàn)了 30 個 API 函數(shù),具體包括以下幾個方面:

Semaphore
Event flag
Mail box
Lock CPU and disable dispatch
Sleep / wakeup
Release waiting
Rotate ready queue
Change priority

如下圖所示,HW-RTOS作為系統(tǒng)總線上的一個外圍模塊來實現(xiàn)。

HW-RTOS為API調(diào)用實現(xiàn)了3個專門的寄存器:

API register,  
Argument register,
Result register

瑞薩已經(jīng)為處理這些寄存器準(zhǔn)備了一個操作系統(tǒng)庫。用戶可以使用操作系統(tǒng)庫輕松調(diào)用API調(diào)用,就像傳統(tǒng)的軟件RTOS一樣。當(dāng)調(diào)用set_flg API調(diào)用時,OS庫將參數(shù)寫入?yún)?shù)寄存器,并將API的類型寫入API寄存器。當(dāng)HW-RTOS接收到這些信息時,它執(zhí)行API并將返回值寫入結(jié)果寄存器。OS庫將返回值報告給調(diào)用方應(yīng)用程序。執(zhí)行API時可能需要進(jìn)行任務(wù)切換。在這種情況下,HW-RTOS表示需要進(jìn)行任務(wù)切換,并將下一個應(yīng)該執(zhí)行的任務(wù)的ID寫入結(jié)果寄存器,以將該信息傳遞到OS庫。OS庫根據(jù)此信息執(zhí)行上下文切換。

2.3 性能測試

上圖顯示了API執(zhí)行時間。傳統(tǒng)軟件RTOS的執(zhí)行時間用深紫色表示,HW-RTOS用淺紫色表示。HW-RTOS不僅比軟件RTOS的執(zhí)行時間短,而且波動也不大。

三.優(yōu)化點2:Tick offloading

3.1 原理介紹

3.1.1 Software Tick

傳統(tǒng)OS需要處理一些定時任務(wù)。包括定時器、sleep()、xxx_timeout()、時間片調(diào)度等。為了這個目的,測量時間的軟件處理被周期性地激活。這就是所謂的Tick進(jìn)程。如圖所示,為了激活tick進(jìn)程,需要周期性中斷。

如上圖圖所示,雖然tick是一個不可或缺的功能,但它有以下三個缺點:

(1)、應(yīng)用程序會周期性的停止,CPU的使用效率會降低。

(2)、由于節(jié)拍正在執(zhí)行一個非常關(guān)鍵的進(jìn)程,因此在進(jìn)程執(zhí)行期間禁用所有中斷。因此,這對中斷響應(yīng)時間有負(fù)面影響。

(3)、由于滴答過程需要通過軟件來實現(xiàn),所以滴答間隔不可能非常短。換句話說,高度精確的時間管理是不可能的。

并且 Tick 的處理時長不是固定的。Tick進(jìn)程檢查處于等待狀態(tài)的任務(wù)是否超時,因此當(dāng)大量任務(wù)同時超時時,處理需求會增加。

3.1.2 HW-RTOS Tick

HW-RTOS完全在硬件上實現(xiàn)tick過程。這個功能被稱為 tick offloading。tick過程在HW-RTOS內(nèi)部執(zhí)行。因此,不需要周期中斷滴答,也不需要CPU執(zhí)行滴答過程。如圖所示,CPU在任何時候都可以自由運行應(yīng)用軟件。只有在通過超時執(zhí)行上下文切換時才會停止。此外,由于滴答過程在非常高的速度執(zhí)行,滴答間隔可以縮短。基于上述原因,與傳統(tǒng)軟件相比,tick offloading可以提供以下優(yōu)點。

No drop in CPU efficiency caused by tick process
No interrupt disable period caused by tick process
Large improvement in tick precision

四.優(yōu)化點3:Hardware ISR(HW ISR)

4.1 原理介紹

4.1.1 Software ISR

傳統(tǒng)OS中當(dāng)一個中斷發(fā)生時,一個中斷服務(wù)程序(ISR)被激活。通常,在ISR執(zhí)行時,中斷是禁用的。在下圖的上半部分,ISR1和ISR2根據(jù)中斷類型交替激活。如果ISR1的處理時間延長,另一個中斷將被錯過或延遲,如圖下方所示。對于實時系統(tǒng)來說,錯過或延遲中斷是不受歡迎的。

4.1.2 Software ISR handed over to Task

一般采用以下方法來避免此類問題。如下圖所示,ISR1的處理移交給任務(wù)1,ISR2的處理移交給任務(wù)2。由于任務(wù)沒有禁用中斷,其他中斷不會受到影響。移交處理的方法如下。任務(wù)1等待一個標(biāo)志。當(dāng)?shù)谝粋€中斷(中斷1)發(fā)生時,ISR1執(zhí)行API來釋放任務(wù)1的等待狀態(tài)。這種方法最大限度地減少中斷處理對其他中斷的影響。例如,Linux 下的中斷線程化。

讓我們更詳細(xì)地看看這種方式下發(fā)生中斷時ISR是如何執(zhí)行API的。下圖顯示了這一點。讓我們假設(shè)在Task_A運行時發(fā)生了一個中斷:

1.The RTOS switches CPU registers and activates the ISR.
2.The ISR checks the interrupt source and invokes the API that corresponds to the interrupt.
3.The RTOS executes this API.
4.When the API finishes, the ISR also ends.
5.As a result, the ready queue is changed. If Task_B, to which ISR processing has been handed over, has a higher priority than Task_A, a dispatch is executed and Task_B will run.

上述過程相當(dāng)復(fù)雜,通常需要500 - 1500個循環(huán)。

4.1.3 HW-RTOS ISR handed over to Task

上述過程如果使用HW-RTOS,圖中顯示的所有RTOS處理(除了dispatch處理)都是在硬件上實現(xiàn)的,因此處理速度非常快。HW-RTOS進(jìn)一步加速了這一過程。也就是說,它加速了ISR進(jìn)程。ISR簡單地調(diào)用與中斷源對應(yīng)的API。通過將這部分實現(xiàn)到硬件中,可以加速它。這種實現(xiàn)稱為硬件ISR (HW ISR)。HW ISR的時序圖如下圖所示。

1.An interrupt occurs and HW-RTOS commences operation. HW-RTOS activates the HW ISR.
2.The HW ISR invokes the API that corresponds to the interrupt.
3.HW-RTOS executes the invoked API.
4.As a result, the ready queue is changed. If Task_B, to which ISR processing has been handed over, has a higher priority than Task_A, a dispatch is executed and Task_B will run.

注意,在HW- rtos和HW ISR正在處理時,CPU是空閑的,可以繼續(xù)處理Task_A。CPU只在任務(wù)切換期間停止。

下圖顯示了在API執(zhí)行結(jié)束時Task_B處于就緒狀態(tài)的一個例子,但是當(dāng)Task_B被交給ISR處理時,Task_B的優(yōu)先級比Task_A的優(yōu)先級低或相等。在本例中,由于Task_A具有更高的優(yōu)先級,因此不需要切換任務(wù),因此Task_A繼續(xù)處理。即使中斷發(fā)生,它也不會引起CPU開銷:

通過使用HW ISR,您可以獲得以下好處:

1.Greatly reduce CPU overhead during interrupts
2.Greatly shorten interrupt disable period
3.Greatly reduce the number of context switches

對于希望快速執(zhí)行的進(jìn)程,可以簡單地提高HW ISR激活的任務(wù)的優(yōu)先級。當(dāng)然,HW-RTOS也同時支持傳統(tǒng)的ISR。

4.1.4 Non-OS managed Interrupt & Direct Interrupt Service

有操作系統(tǒng)管理的中斷,也有操作系統(tǒng)外部管理的中斷。RTOS、ISR和任務(wù)之間的優(yōu)先級關(guān)系如圖3所示。從圖中可以看到,任務(wù)的優(yōu)先級最低,然后是ISR,然后是RTOS。

由非os管理中斷激活的處理程序稱為非os管理中斷處理程序。正如您在圖3中看到的,非os管理的中斷處理程序的優(yōu)先級甚至高于RTOS進(jìn)程。因此,即使RTOS處于進(jìn)程的中間,該進(jìn)程也可以被中斷并立即激活處理程序。由于軟件在此激活中絕對沒有角色,因此直到處理程序被激活之前的延遲是由CPU定義的中斷延遲。這種非os管理的中斷處理程序通常用于不能允許大量RTOS開銷的應(yīng)用程序,如高速伺服電機(jī)控制。

ISR和非os管理的中斷處理程序之間的另一個區(qū)別是,在處理程序過程中是否可以調(diào)用API。由于ISR是在RTOS管理下運行的,因此可以調(diào)用API。然而,由于非OS管理的中斷處理程序可以在OS執(zhí)行關(guān)鍵進(jìn)程時被激活,自然不可能使用任何其他RTOS函數(shù)。因此,如圖2所示,不可能使用API將處理程序流程的一部分移交給任務(wù)。不能在中斷處理程序期間調(diào)用API是一個巨大的缺點。通常,如果您追蹤任何軟件進(jìn)程的源頭,就會發(fā)現(xiàn)一個中斷。換句話說,當(dāng)一個中斷發(fā)生時,一個特定的進(jìn)程被激活,然后這個進(jìn)程再激活另一個進(jìn)程,所以系統(tǒng)就像一條鏈。因此,當(dāng)您不能從處理程序調(diào)用API時,特別是同步或通信API,這是一個致命的問題。

怎么樣能讓非os管理中斷能喚醒對應(yīng) Task ?這樣既能快速響應(yīng),又能擁有在 Task 中調(diào)用系統(tǒng) API 的能力。這就是 Direct Interrupt Service 機(jī)制的目的。

可以同時把發(fā)送給中斷 CPU 中斷控制器 和 HW-RTOS:

當(dāng)一個中斷信號產(chǎn)生時,非os管理的中斷處理程序激活,同時HW-RTOS內(nèi)部調(diào)用相應(yīng)的API。該API與非os管理的中斷處理程序并行執(zhí)行,在本例中,Task B從等待狀態(tài)被釋放。任務(wù)B在非os管理的中斷處理程序結(jié)束的同時被激活:

4.2 具體實現(xiàn)

HW-RTOS最多支持32個hw-isr的架構(gòu),如圖7所示:

HW-ISR都需要在HW-RTOS中設(shè)置三個寄存器:

4.3 性能測試

上圖顯示了中斷延遲。從中斷的發(fā)生到ISR的激活,再到下一個任務(wù)的激活,時間是測量的。在軟件RTOS中,中斷延遲高,抖動大;而在HW-RTOS中,中斷延遲低,抖動小。當(dāng)使用HW ISR時,您可以看到性能上的巨大改進(jìn)。

4.4 相關(guān)應(yīng)用

4.4.1 Multiple interrupts using HW ISR

使用HW ISR,很容易實現(xiàn)多個中斷。通常,多個中斷是通過給每個中斷信號分配一個優(yōu)先級來實現(xiàn)的。在HW ISR中,根據(jù)激活的任務(wù)的優(yōu)先級實現(xiàn)多個中斷。下圖中,值越低優(yōu)先級越高。在下面的例子中,任務(wù)A具有最高的優(yōu)先級。三個中斷線被設(shè)置為使用HW ISR來執(zhí)行API,分別釋放信號量6、信號量3和信號量4。當(dāng)多個中斷發(fā)生時,根據(jù)等待的任務(wù)的優(yōu)先級進(jìn)行處理。

4.4.2 Cyclic activation task

HW-RTOS沒有循環(huán)處理函數(shù)。然而,使用硬件ISR可以實現(xiàn)等效功能。此外,使用HW ISR的循環(huán)激活任務(wù)的啟動時間比在傳統(tǒng)軟件RTOS上運行的循環(huán)處理程序短。這個過程很簡單:定義HW ISR的輸入為帶有嵌入式R-IN引擎的設(shè)備的內(nèi)置定時器的輸出。在下面的例子中,任務(wù)A是一個循環(huán)激活任務(wù)。由于在100 MHz的操作下,最壞情況下的啟動時間為3.5微秒,因此可以實現(xiàn)具有極高實時性能的循環(huán)處理。

通過構(gòu)建一個包含應(yīng)用程序示例1中所示的多個中斷處理的系統(tǒng),您可以運行多個循環(huán)激活任務(wù)。下圖顯示了兩個循環(huán)激活任務(wù)。任務(wù)B是一個周期激活任務(wù),周期是任務(wù)a的5倍。實際上,可以定義三個或更多個循環(huán)激活任務(wù)。每個任務(wù)的周期不必互相同步。也可以從外部引腳觸發(fā)循環(huán)激活。

4.4.3 Using cyclic activation task for network synchronization

配備R-IN引擎的瑞薩設(shè)備在硬件上具有IEEE1588支持功能。通過安裝IEEE1588協(xié)議軟件,可以在通過網(wǎng)絡(luò)連接的站點之間進(jìn)行時間同步。通過向計時器輸入同步信號并使用應(yīng)用程序示例2中所示的方法,您可以在通過網(wǎng)絡(luò)連接的HW-RTOSs上同步激活循環(huán)任務(wù)。循環(huán)任務(wù)的啟動波動非常小,在最壞的情況下,在IEEE 1588的波動上增加了3.5微秒的延遲。時間同步也可以使用EtherCAT來實現(xiàn)。

五.優(yōu)化點4:Task Management

5.1 原理介紹

HW-RTOS 的任務(wù)管理分為兩部分:

  • 一部分是任務(wù)的調(diào)度器用來選取哪個任務(wù)進(jìn)行調(diào)度。
  • 另一部分是任務(wù)的上下文切換。

5.1.1 HW-RTOS Scheduler

HW-RTOS支持多達(dá)64個任務(wù)分配給16個不同的優(yōu)先級級別。優(yōu)先級#0是最高優(yōu)先級,而#15是最低優(yōu)先級。但是,優(yōu)先級#15是為空閑任務(wù)保留的,在這個優(yōu)先級級別上,它必須是唯一的。HW-RTOS文檔還建議保留優(yōu)先級#0以備將來使用。雖然64個任務(wù)聽起來像是一種限制,但是具有這么多任務(wù)的應(yīng)用程序?qū)嶋H上可能相當(dāng)復(fù)雜。

如圖4所示,HW-RTOS執(zhí)行與其對應(yīng)的軟件(選擇要運行的下一個任務(wù))完全相同的功能,只是它使用硬連線邏輯的速度更快。

任務(wù)必須先被創(chuàng)建,然后才能被HW-RTOS管理,任務(wù)是通過在HW-RTOS的TCBs或任務(wù)控制塊中寫入特殊值來創(chuàng)建的(參見圖2)。必須為每個任務(wù)分配一個優(yōu)先級,以及任務(wù)堆棧的存儲區(qū)域(RAM)。

HW-RTOS,像大多數(shù)實時內(nèi)核一樣,包含一個搶占式調(diào)度器。事件導(dǎo)致調(diào)度程序暫停任務(wù)的執(zhí)行,以支持由這些事件準(zhǔn)備運行的更高優(yōu)先級的任務(wù)。事件可以通過其他任務(wù)產(chǎn)生,也可以通過中斷設(shè)備產(chǎn)生。如果一個任務(wù)向高優(yōu)先級的任務(wù)發(fā)送信號或消息,HW-RTOS調(diào)度器會自動向高優(yōu)先級的任務(wù)發(fā)起上下文切換,然后高優(yōu)先級的任務(wù)將處理該事件。類似地,如果一個中斷設(shè)備向一個任務(wù)發(fā)送信號或消息,如果該信號或消息指向更高優(yōu)先級的任務(wù),則當(dāng)前正在運行的任務(wù)將被掛起。在這種情況下,HW-RTOS向這個優(yōu)先級更高的任務(wù)發(fā)起上下文切換。

5.1.1 HW-RTOS Context Switch

上下文切換分為兩個部分:

  • 第一個是為HW-RTOS保留的特殊中斷處理程序,并被分配到vector #76。
  • 第二部分是實際的上下文切換(保存和恢復(fù)CPU寄存器),由Cortex-M3的PendSV處理程序執(zhí)行。

5.2 具體實現(xiàn)

六.典型案例

6.1 Network and RTOS

當(dāng)TCP/IP協(xié)議在嵌入式系統(tǒng)的CPU中實現(xiàn)時,與個人計算機(jī)的CPU不同,實現(xiàn)高吞吐量是非常困難的。下圖的上半部分顯示了使用商用TCP/IP協(xié)議棧的傳輸和接收的概要。只有11%的CPU處理時間花在復(fù)雜的協(xié)議處理上。其余的時間用于內(nèi)存復(fù)制、重新排列報頭、執(zhí)行TCP校驗和和RTOS處理。在這些進(jìn)程中,內(nèi)存復(fù)制、報頭重排和TCP校驗和很容易在硬件中實現(xiàn)。下圖的中間部分顯示了此實現(xiàn)的概要文件。然而,RTOS處理仍然有很高的開銷。由于TCP/IP等協(xié)議處理具有多個任務(wù),因此每次發(fā)送或接收數(shù)據(jù)包時都需要進(jìn)行任務(wù)切換。還需要多個API調(diào)用。這就是為什么RTOS的配置文件有很高的開銷。HW-RTOS解決了這個問題。使用HW-RTOS可以大大降低CPU的負(fù)載,如圖下方所示。也就是說,您可以使用嵌入式系統(tǒng)中使用的低端cpu來實現(xiàn)高網(wǎng)絡(luò)性能。此外,如果不需要那么高的網(wǎng)絡(luò)吞吐量,可以使用較低的系統(tǒng)時鐘率來大大降低功耗。

下圖為R-IN32M3的框圖。R-IN引擎由HW-RTOS、Cortex?-M3核心和以太網(wǎng)加速器組成。以太網(wǎng)加速器是加速上述內(nèi)存復(fù)制、報頭重排、TCP校驗和進(jìn)程的硬件。通過使用R-IN引擎,可以加速TCP/IP和其他網(wǎng)絡(luò)協(xié)議的處理。R-IN發(fā)動機(jī)包含在R-IN32系列和RZ/N1系列的所有設(shè)備中,以及一些RZ/T1設(shè)備中。

下圖顯示了在R-IN32M3中實現(xiàn)的UDP/IP的吞吐量。工作時鐘為100 MHz,以太網(wǎng)幀長度為1500字節(jié):

  • 頂部的欄顯示了UDP校驗和的吞吐量,在軟件RTOS實現(xiàn)與HW-RTOS關(guān)閉軟件執(zhí)行。
  • 中間的欄顯示了硬件實現(xiàn)的校驗和的吞吐量,
  • 底部的欄顯示了HW-RTOS打開時的吞吐量。

如你所見,帶有HW-RTOS的R-IN引擎對于加速網(wǎng)絡(luò)協(xié)議處理非常有效。

七.下一代HW-RTOS

下一代HW-RTOS技術(shù)仍在計劃中。下一代將繼承這一代的所有優(yōu)勢。我們還增加了對緊密耦合、循環(huán)處理程序和多核RTOS特性的支持。有了這些,我們計劃為RTOS提供更高的功能和性能。

  • Tightly coupled HW-RTOS

我們將從緊密耦合(tightly coupled)的HW-RTOS開始。當(dāng)前一代的HW-RTOS就是我們所說的“松散耦合”(loosely coupled)。在硬件方面,松耦合版本和緊耦合版本的最大區(qū)別是在松耦合版本中,CPU、HW-RTOS和CPU寄存器的保存內(nèi)存都通過系統(tǒng)總線連接。但是,緊耦合版本使用專用接口將這三個模塊連接起來。這種體系結(jié)構(gòu)允許改進(jìn)系統(tǒng)調(diào)用性能,包括調(diào)度,以及使中斷響應(yīng)性能,我們可以達(dá)到傳統(tǒng)軟件RTOS的十倍以上的性能。當(dāng)然,幾乎沒有波動。這允許構(gòu)建具有更高實時性能水平的系統(tǒng)。

  • Cyclic handler

下一代HW-RTOS中的第二個新功能是循環(huán)處理器。HW-RTOS中循環(huán)處理程序的第一個獨特特性是通過在硬件中實現(xiàn)循環(huán)處理程序來實現(xiàn)極快的啟動。因此,我們將能夠縮短處理程序的間隔。循環(huán)處理程序間隔將取決于處理程序進(jìn)程,但應(yīng)該可以使用微秒級的間隔。這將允許其用于循環(huán)控制,甚至高精度的電機(jī)控制。我們下一代HW-RTOS循環(huán)處理器的第二個獨特特性是,可以將啟動時間設(shè)置為絕對時間。這將允許通過網(wǎng)絡(luò)連接的站點之間精確同步。

  • Multi-core support

下一代HW-RTOS的第三個新功能是多核支持。單核HW-RTOS的所有功能和優(yōu)點延續(xù)到多核HW-RTOS。因此,作為一個實時操作系統(tǒng),它提供了高水平的實時性能。此外,cpu間的處理,即cpu間的同步和cpu間的通信非常快,執(zhí)行時間的波動大大減少。這些特性的好處是很容易在多核系統(tǒng)上實現(xiàn)實時應(yīng)用程序系統(tǒng)。更具體地說,它提供:

Improved system processing performance
A high level of real-time performance
Definable worst case execution time
Low power consumption through a low operational clock

利用多核HW-RTOS技術(shù),通過高速、高精度的同步,解決了傳統(tǒng)軟件RTOS中cpu間的同步和通信問題。由于使用多核HW-RTOS可以實現(xiàn)cpu間的同步速度小于1微秒,因此可以實現(xiàn)cpu間的精確定時控制。即使任務(wù)是由不同的cpu執(zhí)行的,它們也是在一個公共的RTOS上定義的。因此,軟件開發(fā)人員不必?fù)?dān)心任務(wù)在哪個CPU上運行——軟件可以像任務(wù)在同一個CPU上運行一樣編寫。因此,使用多核HW-RTOS不僅可以提供高精度的控制,而且由于系統(tǒng)時鐘率低,還可以保持低功耗。

責(zé)任編輯:龐桂玉 來源: 良許Linux
相關(guān)推薦

2023-03-28 10:39:28

2024-12-10 13:17:41

2021-05-06 21:06:37

Linux合并補(bǔ)丁

2022-01-24 16:06:58

Linux 5.17RTLA工具

2013-09-17 18:21:59

SAP

2021-04-02 09:43:10

Linux監(jiān)控技術(shù)Linux系統(tǒng)

2022-04-12 08:22:54

Linux內(nèi)核操作系統(tǒng)

2013-06-27 09:59:26

網(wǎng)絡(luò)通信HTML5Web

2015-10-13 08:59:59

合作組織實時Linux

2024-10-23 16:22:13

PythonLinux測試

2021-08-30 13:08:54

Linux實時監(jiān)控日志文件

2013-05-22 14:59:26

Linux操作系統(tǒng)實時性

2019-08-15 15:00:29

監(jiān)測Linux性能NetData

2023-10-13 07:25:50

2022-03-10 10:24:45

Vim代碼Linux

2024-04-19 11:23:40

物聯(lián)網(wǎng)

2022-07-07 17:49:32

阿里數(shù)倉Hologres

2023-10-12 19:37:50

通信協(xié)議HTTP

2023-08-07 14:28:42

技術(shù)遷移

2010-06-17 14:22:00

點贊
收藏

51CTO技術(shù)棧公眾號

欧美另类视频在线观看| 久久久天堂国产精品| 国产精品第5页| 黄色不卡一区| 欧美日本一区二区三区四区| ijzzijzzij亚洲大全| 老牛影视av牛牛影视av| 久久免费高清| 日韩一区二区av| 超碰在线免费av| 国产高潮在线| 国产清纯白嫩初高生在线观看91 | 日本xxx在线播放| 成人日韩精品| 亚洲视频免费看| 国产精品一区二区欧美| 国产精品suv一区二区三区| 青青草成人影院| 亚洲成人中文字幕| 在线观看亚洲色图| 成入视频在线观看| 1024成人网色www| 国产日韩一区欧美| 国产精品高潮呻吟AV无码| 午夜日韩在线| 国产一区二区三区视频免费| jjzz黄色片| 日韩在线激情| 色屁屁一区二区| 成人午夜视频免费观看| 成年人视频在线免费观看| 成人av在线播放网址| 成人在线中文字幕| 久久久久久久久久一级| 亚洲黄页一区| 色综合男人天堂| 欧美黑人欧美精品刺激| 天堂av一区| 欧美日韩一区精品| 无码人妻丰满熟妇区毛片18| 丰满诱人av在线播放| **欧美大码日韩| 色一情一乱一伦一区二区三欧美 | 成人在线爆射| 欧美午夜宅男影院在线观看| 91黄色在线看| 五月花成人网| 亚洲欧美日韩精品久久久久| 亚洲国产一区在线| 丁香婷婷在线观看| 久久亚洲精品国产精品紫薇| 久久riav二区三区| 天天色综合久久| 国产成人精品综合在线观看| 成人午夜在线观看| 亚洲系列第一页| 毛片一区二区三区| 国产精选久久久久久| 中文字幕手机在线视频| 午夜在线精品| 热久久免费国产视频| 国产免费观看av| 亚洲精品少妇| 欧美伊久线香蕉线新在线| www日韩精品| 亚洲一区欧美激情| 国产mv久久久| 中文在线a天堂| 日韩va亚洲va欧美va久久| 国产精品久久av| 中文字幕黄色av| 另类调教123区| 91亚洲永久免费精品| 国产日韩免费视频| 国产高清成人在线| 国产一区二区三区免费不卡| 欧美在线 | 亚洲| 97se亚洲国产综合自在线| 免费中文日韩| 香蕉视频在线看| 亚洲欧洲成人自拍| 精品人妻人人做人人爽| 爱搞国产精品| 色婷婷久久久亚洲一区二区三区| 国产又黄又猛又粗| 国产一区二区三区亚洲综合| 欧美videos中文字幕| 西西大胆午夜视频| 精品国产乱码久久久久久蜜坠欲下 | 蜜臀久久99精品久久久无需会员 | 欧美亚洲另类在线| 中文字幕免费高清网站| 久久99久久精品| av激情久久| 欧美91精品久久久久国产性生爱| 国产欧美日产一区| 91成人在线视频观看| 第一福利在线视频| 欧美性生交片4| 可以看的av网址| 久久99视频| 九九热99久久久国产盗摄| 91香蕉在线视频| 捆绑紧缚一区二区三区视频| 懂色中文一区二区三区在线视频| 国外av在线| 亚洲愉拍自拍另类高清精品| 欧美一级黄色影院| 91午夜精品| 中文字幕亚洲精品| 韩国av免费观看| 国内一区二区在线| 欧美精品国产精品久久久| 18+激情视频在线| 一本到不卡免费一区二区| 一级网站在线观看| 在线亚洲a色| 久久99精品久久久久久琪琪| 中文亚洲av片在线观看| av不卡一区二区三区| 超碰97免费观看| 久久99久久99精品免观看软件| 日韩欧美亚洲一区二区| 美国一级黄色录像| 亚洲综合精品| 国产成人精品一区二区三区福利| √天堂资源地址在线官网| 亚洲成a人v欧美综合天堂| 日韩在线一区视频| 国产一区二区三区四区五区| 97色在线观看| www香蕉视频| 国产精品对白交换视频 | 成人信息集中地| 久久久久久久高潮| 国产亚洲情侣一区二区无| 操你啦在线视频| 欧美日韩国产影片| 欧美黄色一级生活片| 国产亚洲欧洲| 精品不卡在线| 国内小视频在线看| 日韩欧美在线1卡| 伊人在线视频观看| 精品一区二区在线视频| 日韩欧美亚洲v片| 欧美xo影院| 日韩精品在线观看一区| 中文字幕一区二区三区精品 | 成人精品视频在线| 69xxxx欧美| 欧美三级资源在线| 调教驯服丰满美艳麻麻在线视频 | 2020国产精品视频| 成人免费视频国产免费麻豆| 亚洲影院免费观看| 欧美xxxx日本和非洲| 欧美久久视频| 成人性色av| 超碰中文在线| 亚洲精品成人免费| 综合网在线观看| 久久精品一区二区三区不卡| 青青草原av在线播放| 最新国产精品视频| 国产精品久久久久久久9999| av小片在线| 91精品国产综合久久久久久 | 91精品成人| 91网免费观看| 丰满大乳少妇在线观看网站| 日韩成人激情视频| 一二三区免费视频| 国产精品黄色在线观看| 91在线第一页| 亚洲国产日本| 欧美亚洲免费在线| 久久久久毛片| 精品中文字幕视频| 水中色av综合| 久久99精品久久久野外观看| 欧美成人性战久久| 国产亚洲小视频| 97超碰欧美中文字幕| 国产一级做a爰片久久| 91国语精品自产拍| 国产欧美日韩视频一区二区三区| 韩国美女久久| xxx成人少妇69| 日本成人动漫在线观看| 在线观看欧美日本| 青青操国产视频| 久久综合九色综合欧美98| 色www免费视频| 在线日韩av| 一区二区国产日产| 国产欧美啪啪| 国产精品视频99| 久久免费电影| 伊人伊人伊人久久| 亚洲国产精品二区| 欧美最猛黑人xxxxx猛交| 日本黄色小说视频| 国产午夜一区二区三区| 一级片黄色免费| 视频一区二区欧美| 日本男女交配视频| 日本一二区不卡| 国产伦精品一区二区三区照片91| 2019年精品视频自拍| 欧美福利视频网站| 成年人免费在线视频| 亚洲成人黄色在线| 亚洲天堂狠狠干| 欧美日韩精品在线视频| 久久久精品少妇| 久久久久久黄色| 亚洲少妇一区二区三区| 久久福利资源站| aa免费在线观看| 激情自拍一区| 一道本在线观看视频| 欧美一级精品| 欧美精品在线一区| 超碰在线成人| 91久久久久久久一区二区| 最新中文字幕在线播放| 欧美性猛交丰臀xxxxx网站| av在线播放亚洲| 99视频精品视频高清免费| 蜜桃久久影院| 久9re热视频这里只有精品| 91免费视频网站| 国产精品美女午夜爽爽 | 韩国主播福利视频一区二区三区| 欧美富婆性猛交| 动漫一区在线| xvideos成人免费中文版| 国产裸舞福利在线视频合集| 日韩高清有码在线| 日本久久一级片| 精品黑人一区二区三区久久| av中文在线观看| 正在播放亚洲一区| 91麻豆国产视频| 欧美日韩在线三级| 中文字幕久久熟女蜜桃| 在线中文字幕不卡| aaa在线视频| 一本高清dvd不卡在线观看| 亚洲婷婷综合网| 色播五月激情综合网| 欧美a视频在线观看| 色综合天天综合色综合av| 黑人精品无码一区二区三区AV| 欧美日韩另类视频| 69国产精品视频免费观看| 色综合亚洲欧洲| 五月婷婷激情五月| 欧美无乱码久久久免费午夜一区| 天天干天天插天天射| 在线一区二区三区四区五区| 波多野结衣黄色| 欧美日韩中文精品| 亚洲一区中文字幕永久在线| 欧美精品tushy高清| a级片在线播放| 精品日产卡一卡二卡麻豆| 亚洲精品久久久久久久久久久久久久| 日韩精品在线网站| 神马午夜电影一区二区三区在线观看 | 人妻无码久久一区二区三区免费| 在线免费观看欧美| av免费播放网址| 免费人成黄页网站在线一区二区| 亚欧美在线观看| 国产精品99久久不卡二区| 俄罗斯黄色录像| 久久免费偷拍视频| 午夜黄色福利视频| 一区二区欧美精品| 天天操天天干视频| 欧美日韩一级二级三级| 国产黄色小视频在线观看| 亚洲第一区在线观看| 欧洲免费在线视频| 日韩视频第一页| www555久久| 国产精品久久久久99| 国产视频一区二区在线播放| 精品国产综合| 四季av一区二区凹凸精品| 妞干网视频在线观看| 久久久久久婷| 少妇高潮一69aⅹ| 国产偷国产偷精品高清尤物| 国产一区二区播放| 日韩欧美国产骚| a天堂视频在线| 国产午夜精品免费一区二区三区 | 中文字幕精品三区| 激情综合网五月天| 日本丶国产丶欧美色综合| 国产99视频在线| 亚洲人成自拍网站| 丝袜在线视频| 国产精品一区av| 欧美大奶一区二区| www.黄色网址.com| 久久精品人人| 麻豆网站免费观看| 国产亚洲人成网站| 精品午夜福利视频| 欧美人牲a欧美精品| 色综合久久网女同蕾丝边| 久久天天躁狠狠躁老女人| sis001欧美| 国产精品一区二| 欧美激情理论| 亚洲精品无码久久久久久| 国产成人综合亚洲网站| 九一在线免费观看| 色先锋资源久久综合| 丰满岳乱妇国产精品一区| 搡老女人一区二区三区视频tv| 暖暖在线中文免费日本| 成人久久18免费网站图片| 国产亚洲一卡2卡3卡4卡新区 | 精精国产xxxx视频在线| 日本精品视频在线播放| 国产精品xxx在线观看| 天天成人综合网| 全部av―极品视觉盛宴亚洲| 白丝女仆被免费网站| 亚洲丰满少妇videoshd| 国产精品一区二区黑人巨大| 尤物yw午夜国产精品视频| 中文在线免费视频| 精品无人区一区二区三区竹菊| 国产精品s色| 伊人成人免费视频| 亚洲欧洲精品天堂一级| 在线观看国产一区二区三区| 亚洲性猛交xxxxwww| 性xxxxfreexxxxx欧美丶| 国产一区二区自拍| 激情欧美一区二区三区| 韩国三级在线播放| 一区二区三区在线观看国产| ass极品国模人体欣赏| 久久久久久久久丰满| a级免费在线观看| 国产精品中文字幕欧美| 天堂网avav| 91精品欧美久久久久久动漫| 成人无遮挡免费网站视频在线观看| 国产日韩欧美黄色| 97视频热人人精品免费| 中文字幕视频三区| 亚洲天堂网中文字| 国产精品国产一区二区三区四区 | 18网站在线观看| 97人人模人人爽人人少妇| 欧美久久一级| 中国黄色片视频| 精品毛片三在线观看| 蜜桃视频在线免费| 国产精品久久久久久久久久东京| 国产一卡不卡| 潘金莲激情呻吟欲求不满视频| 亚洲视频中文字幕| 亚洲精品久久久久久久久久久久久久| 国语自产精品视频在线看| 神马久久影院| 亚洲激情在线观看视频| 国产精品成人一区二区艾草| 国产片在线播放| 久久久久久中文字幕| 一呦二呦三呦国产精品| 日韩肉感妇bbwbbwbbw| 亚洲欧洲综合另类| 人妻少妇一区二区三区| 97视频在线观看播放| 国内精品久久久久久99蜜桃| 日本中文字幕观看| 亚洲超碰精品一区二区| 精品影院一区| 亚洲一区二区三区乱码aⅴ| 99热这里只有成人精品国产| 亚洲精品成人无码| 欧美日韩高清一区| 成人免费一区二区三区牛牛| 日韩一区国产在线观看| 国产精品88av| 亚洲中文一区二区| 欧美另类老女人| 亚洲区小说区图片区qvod| 中文字幕精品一区二区三区在线| 亚洲国产视频一区二区| 福利小视频在线观看|