国产成人永久免费视频_一区二区三区四区高清精品免费观看_成人午夜视频免费观看_在线电影一区二区三区_国产成人a人亚洲精品无码_欧美日韩在线观看一区_国产精品美女久久久久久_免费av手机在线观看_国产欧美日韩精品一区_国产精品日韩一区二区免费视频_亚洲一区精彩视频_youjizz在线视频

μC / OS-II multi-task information flow and the CAN bus driver

Abstract: This paper μC / OS-II multi-mission critical technology and interrupt the flow of information dealing with the general approach and the basic concepts of PC system interrupt; to CAN bus, detailed analysis in x86 real mode on μC / OS-II of the CAN The implementation of the bus driver.

μC / OS-II is an American Jean Labrosse prepared a free, open source embedded real-time kernel. Embedded computer applications for the development of the technical staff is a highly practical, real-time embedded operating system ERTOS (Embedded Real Time Operation System).

To develop a comprehensive ERTOS, we will have multi-task scheduling and I / O device operation stability, in terms of coordination to make a lot of work, this is my process in the development ERTOS deeply appreciate the focus. I hope this can develop ERTOS technical staff in the multi-task information flow and I / O-driven aspects of an inspiration.

More than one mission critical technical information flow

Multi-task information flow in the discussion before the discussion about multi-tasking working condition. In μC / OS, each task is an infinite loop, each task in the following five states: dormant, ready state, running state, suspend state and suspended state shown in Figure 1.

μC / OS-II multi-task information flow and the CAN bus driver

Multi-task scheduling and the driver of the preparation process will inevitably involve the public code and the shared storage area of the protection of Wen Ti. Even the original C function, in terms of reuse in the absence of verification of the theory and practice cases, need to be protected. This need to rationalize the algorithm to the common code segment, Gongxiangcunchu areas to protect, Bimian operating system running reuse problem arising in the process of Er Dao Zhi run results unpredictable.

System in the development process, we should consider to reduce the complexity of the system, but also take into account the stability and efficiency requirements. This requires us to various algorithms rational choice: the situation in stability can be guaranteed, the choice is relatively simple, CPU-less time of the algorithm; in Wending Xing can not be assured, consider comprehensive selection algorithm. The only way to make the operating system configuration in a certain environment to achieve maximum efficiency.

Then were used to void CanSendMessageProcess (void * data), void CanSendMessage (void * data), void CanReceiveMessageProcess (void * data), and void CanReceiveMessage (void * data) to describe the four tasks using message queues, mailboxes and semaphores communication mechanism for information flow in the transfer process.

(1) message queue communication mechanism

Message queue is initialized when a designated space array, the array is achieved when using the concept of circular buffers. The array will not be eliminated during operation, thus avoiding duplication of time to establish an array of memory leak problem. When a task sends a message to the message queue when the corresponding pointer plus 1 (OSQIn 1), the queue is full (OSQEntries = OSQSize), OSQIn then point to the same unit with OSQOut. If the point of the unit in OSQIn insert a new pointer pointing to a message, it constitutes a FIFO (First-In-First-Out) queue. Conversely, if the next unit in the OSQOut point to insert a new pointer to a cell, constitutes LIFO queue (Last-In-First-Out). In this instance, we define the FIFO queue. Message pointer always points to the unit from OSQOut out. OSQStart and OSQEnd define the message head and tail pointer array in order to OSQIn and OSQOut reach the edge of the queue, to the border inspection and pointer adjustment needed to achieve its circulation.

Message queue data structure is as follows:

typedef struct os_q (
struct os_q * OSQPtr; / * Queue control block in the free link to all of the queue control block * /
void * OSQStart; / * message queue pointer pointing to starting address of the array pointer * /
void * OSQEnd; / * point to the end of the message queue address of the next cell pointer * /
void * OSQIn; / * point to the message queue position to insert the next message pointer * /
void * OSQOut; / * point to the next message queue in the pointer position out message * /
INT16U OSQSize; / * message queue in the total number of elements * /
INT16U OSQEntries; / * message queue in the total number of messages * /
) OS_Q;

Figure 2 shows the flow of information message queue description.

① CanSendMessageProcess task after the completion of the calculation of information will be sent the information to send a message queue.

② CanSendMessage message queue a mandate to obtain inside information.

③ through the CAN bus I / O port sends data to the bus up. No information if the message queue, then the task by the running into the waiting state until the message queue from the information received so far.


④ CanReceiveMessage task responsible for reading the bus above information.

⑤ CanReceiveMessage task will be to read the information into the message queue 2.

⑥ CanReceiveMessageProcess task is removed from the message queue information 2 start work, if the message queue is empty, then the task into the wait state.

Message Queue apply one to one, one to many, many to many and many to one relationship. In other words, the message queue can be used as a shared public areas, to Shi Shi mutually exclusive, need to synchronize between tasks; to cooperation, inter-process requires the exchange of information, this also implements synchronization and communication.

μC / OS-II multi-task information flow and the CAN bus driver

(2) E-mail communication mechanism

E-mail concepts and pipelines (pipelines) are similar to the definition of a task or interrupt service routine task of sending a pointer to another type of variable, which contains a pointer to a specific "message" of the data structure. The source side of the task can only be written to the mailbox in the destination task can only be read from the mailbox. E-mail transport stream data, that is a continuous string of bytes or a stream. Therefore, to access a mailbox like to access a sequential file. E-mail can be used to notify the occurrence of an event (sending a message), can also be used to share certain resources, such mail will be treated as a binary semaphore.

Figure 3 shows the flow of information for the email instructions.

① CanSendMessageProcess task will calculate the best data sent to CanSendMessage task, and then wait for the response signal into the ready state. CanSendMessage the same time send a response in the receiver handshake signals to CanSendMessageProcess, confirmation has been received.

② CanSendMessage task CanSend MessageProcess mission sent to the information sent to the CAN bus, to send into the ready state after waiting for the next transmission work.

③ CanReceiveMessage task to receive the flow of information from the bus, will receive the information sent to the Can ReceiveMessageProcess task, enter the ready state to wait for response signal.

 

④ CanReceiveMessageProcess task received send a response message handshake.

(3) semaphore communication mechanism

Semaphore (semaphore) is a contract mechanism: two or more tasks by a simple signal of cooperation, a task can be forced to stop at a location until it receives a specific signal. In general the multi-tasking kernel semaphore for:

◇ mark the occurrence of an event;

◇ control the right to use shared resources (to meet the mutually exclusive conditions);

◇ make the behavior of the two tasks simultaneously.

Semaphore implementation of three main steps:

◇ A semaphore can be initialized non-negative;

◇ wait (wait) operation of the signal amount minus 1. If the value becomes negative, then the implementation of the task is blocked waiting.

◇ have the right to use the task singal CPU operation to increase a semaphore. If the value is not positive, the task was blocked waiting for operations to be unblocked.

To meet the information transfer process of the principle of real-time high, in part, in the message queue to introduce the concept of semaphores. Is CanSendMessageProcess task, the number of bytes of information at once sent to the message queue, so that by the operation plus 1 semaphore wait state into the suspended state. In CanSendMessage task was to enter ready state after the semaphore, wait for the right to use the CPU into the running state. Into the running state after the task and the signal amount minus one removed from the message queue message via I / O port to send to the CAN bus. CanReceiveMessage tasks and CanReceive MessageProcess mandate and contrary to the above operation. This example illustrates the semaphore signs for the occurrence of an event. (See Figure 2.)

μC / OS-II multi-task information flow and the CAN bus driver

2 μC / OS-II interrupt handling

μC / OS-II, the interrupt service routine generally written in assembly language. The following is indicative interrupt service routine code.

User interrupt service routine:

Save all the CPU registers;

Call OSIntEnter or OSIntNesting direct plus 1;

Implementation of the user code to interrupt;

Call OSIntExit;

Restore all CPU registers;

Implementation of the interrupt return instruction;

Here μC / OS-II provides two ISR and the kernel interface function: OSIntEnter and OSIntExit. OSIntEnter notify μC / OS-II kernel, interrupt service routine is running. In fact, this function do is to add a global variable OSIntNesting 1. And so have accumulated in the x86 CPU instructions, you can use the command instead of OSIntEnter:

INC BYTE PTR OSIntNesting

The interrupt nesting counter to ensure that all interrupt processing is complete and then for task scheduling. Another interface function is to inform the kernel OSIntExit, interrupt service has ended. According to the situation accordingly, returning to the breakpoint (which may be a task or interrupt service routine is nested), or by the kernel for task scheduling.

The user's ISR must be prepared to install a position to interrupt occurs, CPU number according to the corresponding interrupt service program is running and accurate. Many real-time operating systems are available to install, uninstall interrupt service routine of the API interface function, and even some mature RTOS interrupt controller's management has a corresponding API function. But the μC / OS-II kernel does not provide a similar interface function, the corresponding CPU requires the user to realize his transplantation. The interface function with the specific hardware environment, the next PC system interrupt handling this under the detailed description.

3 PC system interrupt under

X86 family of processors can support up to 256 interrupt, and methods used to scale associated with each interrupt and the corresponding position of ISR. In real mode, the interrupt vector table (IVT) stored in memory, the low end of 1K. Each entry to the scale, 4 bytes, save one ISR segment address and offset information. PC systems use two cascaded programmable interrupt controller 82C59A. A 82C59A can connect eight hardware interrupts, numbered IRQ0 ~ IRQ7. PC can manage a total of 15 external interrupt sources, PC's interrupt controller shown in Figure 4. (For more on the 82C59A uses can be found in the information.)

In μC / OS under, CAN bus I / O port interrupt vector to set pseudo-code:


void CanInitHW (UI segment, BYTE Irq0, BYTE Irq1) (
Save the old interrupt vector
Save the mask register value
So 82C59A mask register (0x21) the position 1, close the interrupt input
Close CPU interrupt
Set new interrupt vector
Interruption in service to respond to service against another (assuming the current service interruption is IRQ5)
Open CPU interrupt
Clear 82C59A mask register (0X21, 0XA1) you open the interrupt input
)

Buffer 4 semaphore queue with the support of the CAN bus driver

Introduced in front of μC / OS-II kernel key technology multi-task scheduling, interrupt and interrupt the normal PC system under way. You Yi 82C59A interrupt 5 (IRQ5), 0x0D interrupt vector, for example, introduced the interrupt service routine of re-distribution and response SJA1000 controller to send and receive interrupt service routine.

Here, under the ring signal volume with the buffer queue and the relationship between the interrupt handler, and this is part of the core device driver.

ERTOS drivers and other operating systems are different. Such as Windows, Unix, Solaris, Linux and other operating system, weakening the concept of the device, the user process can use the device file system to complete. However, in μC / OS-II to develop CAN bus driver is not so strict, as long as the equipment to meet the CPU time in a row do not occur when using the time overlap on it.

Character serial devices or other peripheral devices are there speed and CPU speed does not match the problem, so it is necessary to establish the appropriate buffer. CAN port to send data, as long as the data is written to the buffer, and then removed one by one by the SJA1000 controller made out of. CAN receive data from the mouth, they often receive such number of bytes after the CPU needs to process, so these data can be received in advance stored in the buffer before. Buffer can be set to receive the number of bytes after the interruption of CPU, so as to avoid frequent interruptions and reduce the CPU system in real time.

μC / OS-II multi-task information flow and the CAN bus driver

In the process of reading and writing the buffer zone, often encounter want to send data, send the buffer is full; want to read, the receiver buffer is empty. For the end user program can work with queries that can not read and write operation to give up, and then frequently to try this operation until the success of the efficiency of this process is clearly lower. If the introduction of reading and writing, respectively, two signals at both ends of the buffer to synchronize the operation, the problem will be solved. However, the user task write buffer is full, the signal quantity of sleep, so that CPU to run other tasks until the ISR data from the buffer time to go sleep and wake up to this task; Similarly, the user tasks like reading, but when the buffer is empty can also be the signal quantity of sleep, when the external device has data to the re-awakening. Because μC / OS-II provides a semaphore wait timeout mechanism, CAN I of course have the ability to read and write timeouts.

With the amount of buffer and signals to send and receive part of the CAN port network, see Articles Supplementary Edition (http://www.dpj.com.cn).

Interface functions are summarized below.

void CanInitHW (UI segment, BYTE irq0, BYTE IRQ1)
/ * Set the SJA1000 controller port interrupt vector * /
int canReleaseHW () / * clear the SJA1000 controller port interrupt vector * /
int canSendMsg (CANBYTE port, MSG_STRUCT msg)
/ * SJA1000 controller to the custom port to send data * /
int canReceiveMsg (CANBYTE port, MSG_STRUCT msg_ptr)
/ * SJA1000 controller port to receive from the custom data
int canConfig (CANBYTE port, CAN_STRUCT can)
/ * Initialize and configure the SJA1000 controller * /
int canNormalRun (CANBYTE port)
/ * Set SJA1000 normal (Normal) operation mode * /
int canReset (CANBYTE port)
/ * SJA1000 controller port reset, the buffer Set 0xff * /
CANBYTE can0r (CANBYTE addr)
/ * Read custom SJA1000 controller port 0 register values * /
CANBYTE can1r (CANBYTE addr)
/ * Read the SJA1000 controller port 1 of the custom register value * /

Receive and transmit data buffer data structure definition:

typedef struct (
INT16U RingBufRxCtr; / * number of characters to receive buffer * /
OS_EVENT RingBufRxSem; / * Receive semaphore * /
INT8U RingBufRxInPtr; / * Receive buffer to write the next character position * /
INT8U RingBufRxOutPtr; / * Receive buffer to be read the next character position * /
INT8U RingBufRx [CAN_RX_BUF_SIZE]; / * receiver ring buffer * /
INT16U RingBufTxCtr;
/ * Send the number of characters in buffer * /
OS_EVENT * RingBufTxSem; / * send a semaphore * /
INT8U * RingBufTxInPtr;
/ * Send the buffer to write the next character position * /
INT8U * RingBufTxOutPtr;
/ * Send the buffer to be read the next character position * /
INT8U RingBufTx [CAN_TX_BUF_SIZE]; / * send the ring buffer * /
) CAN_RING_BUF;

Concluding Remarks

This article is in the field of application of embedded computer technology background made, after the end of the project development, system uptime more than 27 days. Hoped that this paper put forward on the development of embedded operating systems and technical personnel can help, but also hope that the same developers to explore areas of common development.

Declined comment

精品一区在线播放| 国产精品久久久久久超碰| 中文无码av一区二区三区| 欧美激情精品久久久久| 亚洲精品第五页| 久久人人九九| 国产精品国产自产拍高清av| 美女喷白浆视频| 538在线一区二区精品国产| 国产精品精品软件男同| 欧美激情视频网址| 日韩精品电影在线观看| 综合网五月天| 亚洲国产人成综合网站| 亚洲人成人无码网www国产| 中文字幕九色91在线| 国产免费黄色录像| 国产精品一区二区a| 久久天天做天天爱综合色| 黄色免费网址大全| 精品成人一区二区三区四区| 久久久久在线视频| 91在线短视频| 国产精品不卡在线| 色天使在线视频| 久久综合电影一区| 日韩电影一二三区| 久久久国内精品| 欧美视频一区二区三区在线观看| 91麻豆精品成人一区二区| 国产91在线播放精品91| 成人免费的视频| www.超碰97.com| 亚洲性夜色噜噜噜7777| 人妻丰满熟妇av无码区hd| 天天爱天天做天天操| 欧美熟乱第一页| 亚洲欧美偷拍视频| 欧美久久久久久久| 欧美日韩在线看| 国产午夜福利片| 91丝袜脚交足在线播放| 自拍偷拍亚洲综合| 999精品久久久| 国产精品视频在线观看| 久久久www成人免费毛片麻豆| 2025中文字幕| 欧美激情亚洲精品| a在线欧美一区| 香港三日本8a三级少妇三级99| 欧美国产精品va在线观看| 国产精品一二三四区| 欧美成人乱码一二三四区免费| 在线视频免费一区二区| 麻豆成人久久精品二区三区红 | 国产精品爽爽久久| 中文字幕一区二区三区四区五区人| 欧美麻豆精品久久久久久| 在线免费看av片| 色爽爽爽爽爽爽爽爽| 日韩欧美国产麻豆| 成人午夜精品福利免费| 精品无码一区二区三区在线| 亚洲开心激情网| 蜜桃av噜噜一区二区三区小说| 天堂社区在线视频| 欧美日本高清一区| www久久精品| 久久午夜精品视频| 91亚色免费| 色菇凉天天综合网| 一区二区视频免费| 女人被男人躁得好爽免费视频| 精品国产乱码久久久久久浪潮| 视频污在线观看| 日韩精品一区二区三区不卡 | 一区二区国产视频| 男人搞女人网站| 欧美日韩国产综合视频在线观看中文| 五月婷婷亚洲综合| 欧美日韩国产综合在线| 色综合久久久网| av网站在线免费看| 久久久久久久香蕉| 久久精品综合一区| 男生和女生一起差差差视频| 日本一级片免费看| 青青草原综合久久大伊人精品优势| 国产乱一区二区| 久久伊人中文字幕| 久久久精品国产免大香伊| 欧美特黄一级视频| 亚洲一区在线观| 成 人 免费 黄 色| 成人毛片100部免费看| 五月婷婷狠狠操| www.久久爱.cn| 国产精品乱码久久久| 精品在线视频免费| 自拍偷拍福利视频| 99精品国产99久久久久久97| 免费人成在线观看| 涩视频在线观看| 国产中文字幕在线免费观看| 欧美日韩性生活片| 久久精品午夜福利| 久久久99国产精品免费| 欧美熟妇一区二区| 国产91av视频在线观看| 992tv成人免费视频| 97久久精品在线| 成人福利网站在线观看| 欧美成在线视频| 欧美与黑人午夜性猛交久久久| 久久精品国亚洲| 精品在线欧美视频| 国产精品丝袜白浆摸在线 | 正义之心1992免费观看全集完整版| www亚洲色图| 国产一区二区视频在线| 一区二区三区中文字幕电影| 2019中文字幕在线| 国产一区二区中文字幕免费看| 亚洲精品小视频| 久久亚洲国产精品| 91香蕉嫩草影院入口| 日韩免费一区二区三区| 亚洲欧洲久久| 亚洲永久激情精品| 今天免费高清在线观看国语| 精品国产xxx| 日本一区二区三级电影在线观看| 一本一道久久a久久精品 | 丁香亚洲综合激情啪啪综合| 亚洲一区二区三区四区在线观看| 中文字幕精品在线| 久久久久久久久久网| 国产成人精品一区二区无码呦| 欧美美女一区二区三区| 999日本视频| 午夜av免费看| 国产免费无遮挡| 久久久久欧美精品| 国产拍揄自揄精品视频麻豆| 色呦呦日韩精品| 日韩免费视频一区| 欧美人伦禁忌dvd放荡欲情| 亚洲精品一区二区久| 亚洲 日韩 国产第一区| www..com.cn蕾丝视频在线观看免费版| 久久免费精彩视频| 精品在线播放午夜| 岛国一区二区在线观看| 中文字幕在线免费不卡| 亚洲成人av片在线观看| 亚洲精品在线免费| 精品人妻一区二区三区蜜桃| 亚洲欧美一区二区三区久久| 日韩欧美国产免费| 精品无码三级在线观看视频 | 精品国产综合久久| 成人黄色一区二区| 日韩av在线播| 中文字幕在线一区| 久久精品国产免费观看| 欧美高清在线视频观看不卡| 久久精品人成| 人人人妻人人澡人人爽欧美一区| 91色porny在线视频| 亚洲女成人图区| 精品久久久久久中文字幕动漫 | 久久久三级国产网站| 国产精品久久久久7777婷婷| 欧美成人免费观看视频| 超碰中文字幕在线| 国产精品无遮挡| 精品处破学生在线二十三| 久久er99热精品一区二区三区| 日日摸天天爽天天爽视频| 性生交生活影碟片| 国产综合成人久久大片91| 一区二区三区四区中文字幕| 欧美专区在线播放| 欧美a级片免费看| 粉嫩av亚洲一区二区图片| 亚洲精品国产综合久久| 亚洲午夜在线观看| 亚洲欧洲免费无码| 在线观看日韩中文字幕| 亚洲视频免费在线观看| 手机成人在线| 97aⅴ精品视频一二三区| 亚洲欧洲日韩综合二区| 国产成人在线视频网站| 91精品国自产在线观看 | 久久中文字幕人妻| 91美女片黄在线观看| 欧美成va人片在线观看| 一区二区精品在线| 欧美日韩午夜视频| 亚洲视频在线观看一区| 激情懂色av一区av二区av| zzjj国产精品一区二区| 欧美三级理论片| 亚洲视频在线一区观看| 91免费看片网站| 女人十八毛片嫩草av| 国产亚洲一区二区在线观看| 国产欧美日韩中文字幕在线| 国产区一区二区| 无码少妇一区二区| 国产精品视频第一区| 国产精品久久久久久久9999| 亚洲 欧美 变态 另类 综合| 亚洲一区二区中文在线| 成人日韩在线电影| 熟妇高潮精品一区二区三区| 蜜桃av噜噜一区| 中文字幕日韩综合av| 福利在线一区二区三区| 国产精品suv一区| 综合自拍亚洲综合图不卡区| 老牛影视免费一区二区| 青青青爽久久午夜综合久久午夜| 久久精品亚洲94久久精品| 五月天亚洲视频| 26uuu国产在线精品一区二区| 亚洲一区国产精品| 欧美一区二区中文字幕| 久草中文综合在线| 青青a在线精品免费观看| 无码视频在线观看| 999在线免费观看视频| 国内成人免费视频| 91传媒免费视频| 亚洲图片欧美在线| 福利视频久久| 久久精品99国产精品日本| 欧美亚洲免费电影| 人妻精品久久久久中文字幕69| 91网站在线播放| 成人91免费视频| 国产三级自拍视频| 午夜日韩在线观看| 99在线视频播放| 这里只有久久精品视频| 欧美最猛性xxxxx亚洲精品| 好吊视频一二三区| 久久午夜无码鲁丝片| av中文字幕免费| 欧美国产欧美亚洲国产日韩mv天天看完整| 青青操国产视频| 91精品国产乱码久久久久久久久| 黄页网站大全一区二区| 国产极品在线视频| 精品欧美aⅴ在线网站| 日韩一级视频在线观看| 91麻豆精品国产自产在线观看一区| 免费在线观看日韩av| 欧美日韩免费一区二区三区| 国产激情在线看| 成人的网站免费观看| 国产精品久久久久久久久粉嫩av| 国产99久久久| 91激情在线视频| 热久久精品国产| 成人免费看的视频| 97在线免费公开视频| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲免费视频二区| 自拍视频在线观看一区二区| 国产 国语对白 露脸| 中文字幕色av一区二区三区| 欧美日韩dvd| 亚洲色图15p| 日韩av电影一区| 亚洲一级免费在线观看| 国产成人精品一区二| 岛国大片在线播放| 亚洲精品美国一| 中文字幕免费高清在线| 欧美视频专区一二在线观看| 欧美激情视频免费看| 亚洲成人精品影院| 国产精品久久久久久亚洲av| 5566中文字幕一区二区电影| 我看黄色一级片| 欧美国产精品一区二区| 美女一区视频| 狠狠色丁香婷婷综合久久片| 亚洲精品欧美日韩| 亚洲av成人精品毛片| 国产91视觉| 91丨porny丨中文| 国产女女做受ⅹxx高潮| 亚洲一区视频在线观看视频| 第四色在线视频| 久久久黄色av| 综合久久国产九一剧情麻豆| 高清国产在线观看| 欧洲亚洲一区二区| 欧美一区二区啪啪| 人妻中文字幕一区| 欧美伦理视频在线观看| 亚洲白拍色综合图区| 中文字幕一区二区三区波野结| 国产精品久久久久久久久免费| 日韩不卡一区二区三区| 中文字幕日韩精品一区二区| 国产精品国产精品国产专区不片| 日本中文字幕在线不卡| 伊人久久久久久久久久久| 蜜桃av免费在线观看| 亚洲欧美中文日韩在线| 久久黄色小视频| 97高清免费视频| 亚洲精品911| 国产精品久久久久久久天堂第1集| 亚洲午夜电影在线| 国产网址在线观看| 99在线首页视频| 中文字幕在线观看一区二区| 成人免费网站黄| 岛国视频一区免费观看| 国产精品久久久久久亚洲伦| 国产又大又黄的视频| 色哟哟免费视频| 日本不卡一区| 久久手机精品视频| 一本色道亚洲精品aⅴ| 麻豆精品蜜桃视频网站| 一区二区三区免费在线观看视频 | 国产精品成人品| 亚洲色欲色欲www在线观看| 精品视频—区二区三区免费| 91精品啪aⅴ在线观看国产| 亚洲少妇最新在线视频| 国产又黄又粗又猛又爽的| 国产一级二级三级精品| 欧美性大战久久久久久久蜜臀| 国产一级视频在线观看| 久久91亚洲精品中文字幕| 中文字幕在线不卡一区二区三区| 久久久久亚洲av片无码下载蜜桃| 国产精品av一区| 午夜精品久久久久久久99樱桃| 精品人妻一区二区三区蜜桃| 国产草草浮力影院| 亚洲精品自在在线观看| 最新日韩中文字幕| 欧美视频国产精品| 午夜激情在线视频| 黄色小视频免费网站| 国产在线观看精品一区二区三区| 国产福利一区二区三区视频在线 | 99re在线精品| 手机看片国产精品| 国产日韩欧美中文| 欧美嫩在线观看| 国产亚洲精品福利| 中文字幕在线观看国产| 久久久久久久久一区| 精品久久国产老人久久综合| 99精品欧美一区二区三区小说| 国产性生活网站| 91精品久久久久久久久久久久久久| 久久精品人人做人人综合| 成年人午夜剧场| 日韩伦理在线免费观看| 中文字幕日韩专区| 欧美精品色综合| 亚洲午夜私人影院| 99精品热视频| 国产精品一区二区无线| 精品人妻一区二区三区麻豆91| 无码黑人精品一区二区| 十八禁视频网站在线观看| 日韩av电影在线观看| 久久综合九色九九| 亚洲一区二区欧美激情| 免费av网站在线| 午夜诱惑痒痒网| 欧美精品一区二区三区在线看午夜| 日韩精品久久久久| 中文字幕第一区二区| 久久国产麻豆精品| 日韩熟女精品一区二区三区| 国产成人精品无码播放| 国产精品高清在线| 欧美日韩在线播放三区四区| 国产精品久久夜| 国产成人欧美日韩在线电影| 精品视频在线观看免费| 亚洲最新免费视频| 成人性生交大片免费看视频直播 | 亚洲香蕉在线观看| 一区二区三区精品在线观看| 韩国av一区二区三区| 免费毛片一区二区三区| 污视频在线观看免费网站| 欧美一级特黄aaaaaa在线看片| 97免费资源站| 国产精品扒开腿做爽爽爽男男| 伊人男人综合视频网| 婷婷国产在线综合| 老司机免费视频一区二区三区| 天堂网avav| 欧美性生交xxxxx| 嫩草影院中文字幕| av免费观看久久|