Linux驅(qū)動-inode,file,file_operations關(guān)系

原創(chuàng) 一口Linux 2026-01-30 20:07

 

擊左上方藍色“一口Linux”,選擇“設為星標

第一時間看干貨文章

?【干貨】嵌入式驅(qū)動工程師學習路線
?【干貨】Linux嵌入式知識點-思維導圖-免費獲取
?【就業(yè)】一個可以寫到簡歷的基于Linux物聯(lián)網(wǎng)綜合項目
?【就業(yè)】簡歷模版


圖片



本文目標

 

  1. 文件描述符和設備節(jié)點之間關(guān)系;

  2. 三大結(jié)構(gòu)體inode,file,file_operations之間的關(guān)系;

  3. 驅(qū)動如何區(qū)分出次設備號。

  4. read/write接口函數(shù)要能夠獲得字符設備結(jié)構(gòu)體變量地址。



什么是文件描述符?


Linux 中一切都可以看作文件,包括普通文件、鏈接文件、Socket 以及設備驅(qū)動等,對其進行相關(guān)操作時,都可能會創(chuàng)建對應的文件描述符。文件描述符(file descriptor)是內(nèi)核為了高效管理已被打開的文件所創(chuàng)建的索引,用于指代被打開的文件,對文件所有 I/O 操作相關(guān)的系統(tǒng)調(diào)用都需要通過文件描述符。

 

Linux啟動后,會默認打開3個文件描述符,分別是:

0:標準輸入standard input

1:正確輸出standard output

2:錯誤輸出:error output

 

以后打開文件后。新增文件綁定描述符 可以依次增加(從3開始累加)。每一條shell命令執(zhí)行,都會繼承父進程的文件描述符。因此,所有運行的shell命令,都會有默認3個文件描述符。

 

 

l  進程級別的文件描述符表:內(nèi)核為每個進程維護一個文件描述符表,該表記錄了文件描述符的相關(guān)信息,包括文件描述符、指向打開文件表中記錄的指針。

l  系統(tǒng)級別的打開文件表:內(nèi)核對所有打開文件維護的一個進程共享的打開文件描述表,表中存儲了處于打開狀態(tài)文件的相關(guān)信息,包括文件類型、訪問權(quán)限、文件操作函數(shù)(file_operations)等。

l  系統(tǒng)級別的 i-node 表:i-node 結(jié)構(gòu)體記錄了文件相關(guān)的信息,包括文件長度,文件所在設備,文件物理位置,創(chuàng)建、修改和更新時間等,"ls -i" 命令可以查看文件 i-node 節(jié)點。

 

進程在Linux內(nèi)核中是由結(jié)構(gòu)體task_struct維護,進程打開的所有文件描述符都在進程維護的結(jié)構(gòu)體task_struct的files變量中維護:

include\linux\sched.h

該結(jié)構(gòu)體定義如下:

該進程所有打開的文件對應的file指針均由fd_array維護,文件描述符和數(shù)組下標一一對應。

 

文件描述符是一種系統(tǒng)資源,可以通過以下命令來查看文件描述符的上限。


 

打開文件相關(guān)操作


查看所有進程允許打開的最大 fd 數(shù)量


查看所有進程已經(jīng)打開的 fd 數(shù)量以及允許的最大數(shù)量

 

查看單個進程允許打開的最大 fd 數(shù)量.


查看某個文件被哪些進程打開?

可以借助lsof命令

編寫調(diào)試代碼如下:

該代碼只打開文件123.c。

&是程序放在后臺運行。

3042:程序進程。


查看某個進程打開了哪些文件?

接著上述的例子,ls -l /proc/{PID}/fd 可以查看某個進程打開了哪些文件。

  可以看到該進程打開了出了123.c之外,還打開了前面所述的3個默認文件。 




實際開發(fā)中,可能會遇到 fd 資源超過上限導致的 "Too many open files" 之類的問題,一般都是因為沒有及時釋放掉 fd,若循環(huán)執(zhí)行超過單個進程允許打開的最大 fd 數(shù)量,程序就會出現(xiàn)異常。



 

Linux設備文件三大結(jié)構(gòu):inode,file,file_operations



驅(qū)動程序就是向下控制硬件,向上提供接口,這里的向上提供的接口最終對應到應用層有三種方式:設備文件,/proc,/sys,其中最常用的就是使用設備文件,而Linux設備中用的最多的就是字符設備,本文就以字符設備為例來分析創(chuàng)建并打開一個字符設備的文件內(nèi)部機制。

 

struct inode


Linux中一切皆文件,當我們在Linux中創(chuàng)建一個文件時,就會在相應的文件系統(tǒng)創(chuàng)建一個inode與之對應.

對于不同的文件類型,inode被填充的成員內(nèi)容也會有所不同,以創(chuàng)建字符設備為例,我們知道,add_chrdev_region其實是把一個驅(qū)動對象和一個(一組)設備號聯(lián)系到一起。而創(chuàng)建設備文件,其實是把設備文件設備號聯(lián)系到一起。至此,這三者就被綁定在一起了。這樣,內(nèi)核就有能力創(chuàng)建一個struct inode實例了,下面是Linux 3.14內(nèi)核中的inode。這個inode是VFS的inode,是最具體文件系統(tǒng)的inode的進一步封裝,也是驅(qū)動開發(fā)中關(guān)心的inode,針對具體的文件系統(tǒng),還有struct ext2_inode_info 等結(jié)構(gòu)。


//include/linux/fs.h 596

 

/*

 * Keep mostly read-only and often accessed (especially for

 * the RCU path lookup and 'stat' data) fields at the beginning

 * of the 'struct inode'

 */

struct inode {

    umode_t            i_mode;

    unsigned short        i_opflags;

    kuid_t            i_uid;

    kgid_t            i_gid;

    unsigned int        i_flags;

    dev_t            i_rdev;

#ifdef CONFIG_FS_POSIX_ACL

    struct posix_acl    *i_acl;

    struct posix_acl    *i_default_acl;

#endif

 

    const struct inode_operations    *i_op;

    struct super_block    *i_sb;

    struct address_space    *i_mapping;

 

#ifdef CONFIG_SECURITY

    void            *i_security;

#endif

 

    /* Stat data, not accessed from path walking */

    unsigned long        i_ino;

    /*

     * Filesystems may only read i_nlink directly.  They shall use the

     * following functions for modification:

     *

     *    (set|clear|inc|drop)_nlink

     *    inode_(inc|dec)_link_count

     */

    union {

        const unsigned int i_nlink;

        unsigned int __i_nlink;

    };

    dev_t            i_rdev;

    loff_t            i_size;

    struct timespec        i_atime;

    struct timespec        i_mtime;

    struct timespec        i_ctime;

    spinlock_t        i_lock;    /* i_blocks, i_bytes, maybe i_size */

    unsigned short          i_bytes;

    unsigned int        i_blkbits;

    blkcnt_t        i_blocks;

 

#ifdef __NEED_I_SIZE_ORDERED

    seqcount_t        i_size_seqcount;

#endif

 

    /* Misc */

    unsigned long        i_state;

    struct mutex        i_mutex;

 

    unsigned long        dirtied_when;    /* jiffies of first dirtying */

 

    struct hlist_node    i_hash;

    struct list_head    i_wb_list;    /* backing dev IO list */

    struct list_head    i_lru;        /* inode LRU list */

    struct list_head    i_sb_list;

    union {

        struct hlist_head    i_dentry;

        struct rcu_head        i_rcu;

    };

    u64            i_version;

    atomic_t        i_count;

    atomic_t        i_dio_count;

    atomic_t        i_writecount;

    const struct file_operations    *i_fop;    /* former ->i_op->default_file_ops */

    struct file_lock    *i_flock;

    struct address_space    i_data;

#ifdef CONFIG_QUOTA

    struct dquot        *i_dquot[MAXQUOTAS];

#endif

    struct list_head    i_devices;

    union {

        struct pipe_inode_info    *i_pipe;

        struct block_device    *i_bdev;

        struct cdev        *i_cdev;

    };

 

    __u32            i_generation;

 

#ifdef CONFIG_FSNOTIFY

    __u32            i_fsnotify_mask; /* all events this inode cares about */

    struct hlist_head    i_fsnotify_marks;

#endif

 

#ifdef CONFIG_IMA

    atomic_t        i_readcount; /* struct files open RO */

#endif

    void            *i_private; /* fs or device private pointer */

};

 

這里面與本文相關(guān)的成員主要有:

struct inode

--602-->i_mode表示訪問權(quán)限控制

--604-->UID

--605-->GID

--606-->i_flags文件系統(tǒng)標志

--630-->硬鏈接數(shù)計數(shù)

--635-->i_size以字節(jié)為單位的文件大小

--636-->最后access時間

--637-->最后modify時間

--638-->最后change時間

--669-->i_dentry; //目錄項鏈表

--673-->i_count引用計數(shù),當引用計數(shù)變?yōu)?時,會釋放inode實例

--675-->i_writecount寫者計數(shù)

--679-->創(chuàng)建設備文件的時候i_fops填充的是def_chr_fops,blk_blk_fops,def_fifo_fops,bad_sock_fops之一,參見創(chuàng)建過程中調(diào)用的init_special_inode()

--683-->特殊文件類型的union,pipe,cdev,blk.link etc,i_cdev表示這個inode屬于一個字符設備文件,本文中創(chuàng)建設備文件的時候會把與之相關(guān)的設備號的驅(qū)動對象cdev拿來填充

--702-->inode的私有數(shù)據(jù)


struct file

Linux內(nèi)核會為每一個進程維護一個文件描述符表,這個表其實就是struct file[]的索引。open()的過程其實就是根據(jù)傳入的路徑填充好一個file結(jié)構(gòu)并將其賦值到數(shù)組中并返回其索引。下面是file的主要內(nèi)容

struct file {

    union {

        struct llist_node    fu_llist;

        struct rcu_head     fu_rcuhead;

    } f_u;

    struct path        f_path;

#define f_dentry    f_path.dentry

    struct inode        *f_inode;    /* cached value */

    const struct file_operations    *f_op;

 

    /*

     * Protects f_ep_links, f_flags.

     * Must not be taken from IRQ context.

     */

    spinlock_t        f_lock;

    atomic_long_t        f_count;

    unsigned int         f_flags;

    fmode_t            f_mode;

    struct mutex        f_pos_lock;

    loff_t            f_pos;

    struct fown_struct    f_owner;

    const struct cred    *f_cred;

    struct file_ra_state    f_ra;

 

    u64            f_version;

#ifdef CONFIG_SECURITY

    void            *f_security;

#endif

    /* needed for tty driver, and maybe others */

    void            *private_data;

 

#ifdef CONFIG_EPOLL

    /* Used by fs/eventpoll.c to link all the hooks to this file */

    struct list_head    f_ep_links;

    struct list_head    f_tfile_llink;

#endif /* #ifdef CONFIG_EPOLL */

    struct address_space    *f_mapping;

#ifdef CONFIG_DEBUG_WRITECOUNT

    unsigned long f_mnt_write_state;

#endif

} __attribute__((aligned(4)));    /* lest something weird decides that 2 is OK */



struct file

--882-->f_path里存儲的是open傳入的路徑,VFS就是根據(jù)這個路徑逐層找到相應的inode

--883-->f_inode里存儲的是找到的inode

--884-->f_op里存儲的就是驅(qū)動提供的file_operations對象,這個對象應該在第一次open()的時候被填充,具體地,應用層的open通過層層搜索會調(diào)用inode.i_fops->open(),即我們注冊的open接口函數(shù)chrdev_open()

--891-->f_count的作用是記錄對文件對象的引用計數(shù),也即當前有多少個使用CLONE_FILES標志克隆的進程在使用該文件。典型的應用是在POSIX線程中。就像在內(nèi)核中普通的引用計數(shù)模塊一樣,最后一個進程調(diào)用put_files_struct()來釋放文件描述符。

--892-->f_flags當打開文件時指定的標志,對應系統(tǒng)調(diào)用open的int flags,比如驅(qū)動程序為了支持非阻塞型操作需要檢查這個標志是否有O_NONBLOCK。

--893-->f_mode;對文件的讀寫模式,對應系統(tǒng)調(diào)用open的mod_t mode參數(shù),比如O_RDWR。如果驅(qū)動程序需要這個值,可以直接讀取這個字段。

--905-->private_data表示file結(jié)構(gòu)的私有數(shù)據(jù)

 

mknod 做了什么事?



本例假定我們創(chuàng)建兩個串口com0、com1,他們公用同一個主設備號250,次設備號分別為0、1,他們公用同一個字符設備驅(qū)動,那么我們的驅(qū)動要能夠根據(jù)應用進程打開的是設備com0還是com1來操作不同的串口。

首先創(chuàng)建兩個設備節(jié)點:

mknod /dev/com0 250 0

mknod /dev/com1 250 1

執(zhí)行結(jié)果如下:

內(nèi)核為了維護這兩個文件節(jié)點,內(nèi)核需要創(chuàng)建結(jié)構(gòu)體維護這兩個文件,具體如下:


從以上結(jié)構(gòu)圖可以得知,當我們通過命令mknod 創(chuàng)建一個字符設備文件,那么內(nèi)核就會創(chuàng)建好一個inode會存在存儲器中,創(chuàng)建和該文件實體一一對應的inode。這個inode和其他的inode一樣,用來存儲關(guān)于這個文件的靜態(tài)信息(不變的信息),包括這個設備文件對應的設備號,文件的路徑以及對應的驅(qū)動對象等。

inode作為VFS四大對象之一,在驅(qū)動開發(fā)中很少需要自己進行填充,更多的是在open()方法中進行查看并根據(jù)需要填充我們的file結(jié)構(gòu)。

由上圖所示,創(chuàng)建字符設備 /dev/com0、 /dev/com1,只是增加了對應的inode節(jié)點,此時VFS層并沒有并沒有創(chuàng)建file結(jié)構(gòu)體,而且inode和驅(qū)動也并沒有產(chǎn)生聯(lián)系。

 

如果獲得次設備號


   

    對于同種類型設備,比如多個串口、網(wǎng)口等,這些驅(qū)動比較類似,僅僅是一些寄存器基地址不一樣,所以我們沒有必須要為每一個設備單獨寫一個驅(qū)動,這些設備的驅(qū)動完全可以共用同一個驅(qū)動,我們只需要在驅(qū)動中區(qū)分出設備的次設備號,然后根據(jù)次設備號的訪問不同的內(nèi)存地址空間即可。

如果應用程序執(zhí)行以下代碼

fd0 = open("/dev/com0",O_RDWR);

fd1 = open("/dev/com1",O_RDWR);

當應用程序執(zhí)行open函數(shù),該函數(shù)會調(diào)用到內(nèi)核的sys_open(),該函數(shù)會根據(jù)該設備節(jié)點inode保存的信息,i_flags:文件類型, i_rdev:設備號,初始化結(jié)構(gòu)體inode其他信息,比如inode->i_cdev,此時已經(jīng)指向我們注冊的cdev結(jié)構(gòu)體,。通過設備號,可以很容易找到該設備在設備號全局管理數(shù)組chedevs[]的下標,進而找到我們注冊的驅(qū)動cdev以及file_operations。

同時內(nèi)核會在VFS層為創(chuàng)建結(jié)構(gòu)體file,該函數(shù)調(diào)用成功之后,應用層會返回整型值用來和該file對應,就是上圖的文件描述符fd0、fd1。

其中:

file->f_dentry->d_inode->i_rdev  保存對應的設備節(jié)點的設備號,

file-> f_op保存我們注冊的file_operations 字符設備接口函數(shù)集合。

由此可得在read和write等其他接口函數(shù)中,我們可以通過file來得到次設備號。

【注意】同一個文件如果打開了兩次,那么第二次linux內(nèi)核仍然會重新分配1個新的file結(jié)構(gòu)體。

實現(xiàn)代碼如下:

這樣我們就可以根據(jù)次設備號來操作不同的硬件。

 


如何獲得注冊的設備結(jié)構(gòu)體私有地址?

 

在大多情況下,我們會創(chuàng)建一個自定義的設備信息維護結(jié)構(gòu)體,同時創(chuàng)建一個指針數(shù)組用來管理不同的設備。

然后通過成員cdev注冊字符設備,

想一個問題:如果我們?yōu)槊恳粋€同類型設備分配獨立的設備結(jié)構(gòu)體,分別注冊對應的cdev,假如我打開/dev/com0 進行操作的時候,我怎么知道com0對應我們自己定義的設備管理結(jié)構(gòu)體變量的地址呢?

有問題是好的,我們帶著問題出發(fā),看看大牛們是怎么做的。

該函數(shù)功能:

字符設備架構(gòu)調(diào)用我們注冊的接口函數(shù)open會傳遞參數(shù)inode和file,inode->i_cdev指向了我們注冊的pmydev[i]->cdev,在open中通過inode->cdev來識別具體的設備,通過container_of來找到對應的pmycdev結(jié)構(gòu)體變量,并將其私有數(shù)據(jù)隱藏到file結(jié)構(gòu)的private_data中,進而識別同一個驅(qū)動操作一類設備。

 

而read,write接口函數(shù)可以直接通過file的 private_data獲取對應的pmycdev結(jié)構(gòu)體變量。


【補充1】

再來看下contianer_of 接口功能參數(shù)如下:

該宏是如何實現(xiàn)的,留給讀者自己思考。

 

【補充2】

我們也可以在回調(diào)cdev.fops->open()階段重新填充file結(jié)構(gòu)的fop,進而實現(xiàn)同一個驅(qū)動操作不同的設備,這種思想就是內(nèi)核驅(qū)動中常用的分層!

 


執(zhí)行結(jié)果如下:

由結(jié)果可知,應用程序正確讀取了minor的值。

從內(nèi)核log來看,MINOR(file->f_dentry->d_inode->i_rdev)可以成功讀取此設備號。而read接口函數(shù)也成功通過file->private_data得到了設備結(jié)構(gòu)體變量(初始化的時候為不同設備的test成員附了不同的值)。

 

 驅(qū)動程序:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kdev_t.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
static int major = 250;
static int minor = 0;
static dev_t devno;

#define MAX_COM_NUM 2

struct mydev{
    struct cdev cdev;
    char *reg;
    int test;
};
struct mydev *pmydev[MAX_COM_NUM];

ssize_t dev_fifo_read (struct file *file, char __user *buf, size_t size, loff_t *pos)
{
    int minor = MINOR(file->f_dentry->d_inode->i_rdev);
    struct mydev *cd;
    
    printk("read() MINOR(file->f_dentry->d_inode->i_rdev)=%d\n",minor);

    cd = (struct mydev *)file->private_data;
    printk("read()       file->private_data         cd->test=%d\n",cd->test);

    if(copy_to_user(buf, &minor, size)){
        return -EFAULT;
    }

    return size;
}
int dev_fifo_close (struct inode *inode, struct file *file)
{
    printk("dev_fifo_close()\n");
    return 0;
}
//打開設備
static int dev_fifo_open (struct inode *inode, struct file *file)
{
    struct mydev *cd;
    
    cd = container_of(inode->i_cdev, struct mydev, cdev);
    file->private_data = cd;
    return 0;
}
static struct file_operations dev_fifo_ops =
{
    .open = dev_fifo_open,
    .read = dev_fifo_read,
    .release = dev_fifo_close,
};
static int dev_fifo_init(void)
{
    int result;
    int error;
    int i = 0;
    
    printk("dev_fifo_init \n");
    devno = MKDEV(major,minor);    
    result = register_chrdev_region(devno, MAX_COM_NUM, "test");
    if(result<0)
    {
        printk("register_chrdev_region fail \n");
        goto ERR1;
    }
    
    
    for(i=0;i<MAX_COM_NUM;i++)
    {
        pmydev[i] =kmalloc(sizeof(struct mydev), GFP_KERNEL);
    }
    
    for(i=0;i<MAX_COM_NUM;i++)
    {
        pmydev[i]->test = i;
        
        cdev_init(&pmydev[i]->cdev,&dev_fifo_ops);

        devno = MKDEV(major,i);    
        
        error = cdev_add(&pmydev[i]->cdev,devno,1);
        if(error < 0)
        {
            printk("cdev_add fail \n");
            goto ERR2;
        }
    }
    return 0;
ERR2:
    devno = MKDEV(major,0);    
    unregister_chrdev_region(devno,MAX_COM_NUM);
    for(i=0;i<MAX_COM_NUM;i++)
    {
        kfree(pmydev[i]);
    }
    return error;
ERR1:
    return result;
}
static void dev_fifo_exit(void)
{
    int i;
    
    printk("dev_fifo_exit \n");
    
    for(i=0;i<MAX_COM_NUM;i++)
    {
        cdev_del(&pmydev[i]->cdev);
    }
    for(i=0;i<MAX_COM_NUM;i++)
    {
        kfree(pmydev[i]);
    }

    devno = MKDEV(major,0);    
    unregister_chrdev_region(devno,MAX_COM_NUM);
    return;
}
MODULE_LICENSE("GPL");
MODULE_AUTHOR("daniel.peng");
module_init(dev_fifo_init);
module_exit(dev_fifo_exit);

測試程序

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
main()
{
    int fd0,fd1;
    int minor;
    
    fd0 = open("/dev/com0",O_RDWR);
    if(fd0<0)
    {
        perror("open fail \n");
        return;
    }
    printf("open /dev/com0 OK\n");

    read(fd0,&minor,sizeof(minor));
    printf("minor of /dev/com0 =%d\n",minor);
    close(fd0);
    
    fd1 = open("/dev/com1",O_RDWR);
    if(fd1<0)
    {
        perror("open fail \n");
        return;
    }
    printf("open /dev/com1 OK\n");

    read(fd1,&minor,sizeof(minor));
    printf("minor of /dev/com1 =%d\n",minor);


    close(fd1);


end



一口Linux 


關(guān)注,回復【1024】海量Linux資料贈送


精彩文章合集

文章推薦

?【專輯】ARM
?【專輯】粉絲問答
?【專輯】所有原創(chuàng)
?專輯linux入門
?專輯計算機網(wǎng)絡
?專輯Linux驅(qū)動
?【干貨】嵌入式驅(qū)動工程師學習路線
?【干貨】Linux嵌入式所有知識點-思維導圖


一口Linux 寫點代碼,寫點人生!
評論
  • 讓微弱脈沖信號更清晰——鎖相放大器集成Boxcar平均器在脈沖激光、泵浦-探測、時間分辨光譜、飛行時間質(zhì)譜等實驗中,真正需要測量的信號往往只出現(xiàn)在一個很短的時間窗口內(nèi),卻被淹沒在遠大于它的噪聲和背景之中。 針對這類穩(wěn)定重復的微弱脈沖與瞬態(tài)信號,賽恩科儀為OE2052雙通道數(shù)字鎖相放大器帶來全新的Boxcar Averager功能升級:在鎖相檢測之外,進一步提供從周期波形觀察、門控測量到多周期平均的完整數(shù)字Boxcar測量鏈路。 Boxcar平均器,如何從噪聲中“截取”目標信號?Boxcar平均器
    SSI_賽恩科儀 2026-08-07 15:49 35956瀏覽
  • 做儲能項目,你是怎么選控制器的?隨著工商業(yè)儲能、電網(wǎng)側(cè)儲能的規(guī)模化落地,作為儲能EMS“大腦”的嵌入式控制器,直接決定了整套系統(tǒng)的運行穩(wěn)定性、數(shù)據(jù)可靠性與項目落地效率。不少從業(yè)者都踩過類似的坑:接口數(shù)量不足要額外加裝擴展模塊、戶外高溫導致設備宕機、電磁干擾引發(fā)數(shù)據(jù)丟包、軟件生態(tài)薄弱拖慢開發(fā)周期……選對儲能控制器,核心要盯準四個關(guān)鍵維度。首先看接口能力:全鏈路覆蓋,才是降本的核心。一套完整的儲能系統(tǒng),需要同時對接PCS、BMS、智能電表、溫濕度傳感器、除濕機、煙感消防主機,還要連接急停開關(guān)、斷路器
    飛凌嵌入式 2026-08-11 08:46 198瀏覽
  • 樓宇自控里的“巴別塔”一棟智慧樓宇、一個產(chǎn)業(yè)園區(qū)里,暖通空調(diào)運行著廠商私有協(xié)議,照明系統(tǒng)遵循專屬通信標準,變配電、門禁安防各成體系——設備間數(shù)據(jù)壁壘森嚴,上位平臺對接全靠定制化 “翻譯” 開發(fā),不僅成本高企,交付周期也難以管控。這就是樓宇自控行業(yè)多年的痛點:協(xié)議林立、封閉林立。而破局的鑰匙,早在30多年前就已經(jīng)寫好了——BACnet。作為ASHRAE制定的樓宇自控國際標準協(xié)議,BACnet是如今全球樓宇自控系統(tǒng)(BAS)互聯(lián)互通的“通用語言”。新風機、冷源群控、變配電、照明、門禁,凡是需要被樓宇
    飛凌嵌入式 2026-08-10 09:26 279瀏覽
  • 產(chǎn)品使用18V供電,配套4串鋰離子電池,需要設計一個充電器。因為輸入18V,電池最高 16.8V,壓差僅 1.2V。因為壓差太小。使用開關(guān)型的充電控制芯片不穩(wěn)定。嘗試自行設計一個。整體采用分立三極管 + TL431架構(gòu),分4個功能單元:使能控制回路、限流環(huán)路、TL431 精密恒壓反饋環(huán)路、PNP 功率管主功率輸出回路;實現(xiàn)完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經(jīng) R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導通,對地拉低 R1、R2 組成的分壓控制節(jié)點電位;該節(jié)點直
    southcreek 2026-08-07 13:45 519瀏覽
  • 摘要東莞市恒創(chuàng)連接器有限公司(HCHGCONN)是位于廣東東莞的連接器源頭制造工廠,專注于連接器國產(chǎn)替代、小間距大電流連接器、線對板連接器、線對線連接器、板對板連接器、電源連接器及定制連接器開發(fā)。公司面向工業(yè)自動化、新能源儲能、BMS、汽車電子、AI服務器、GPU供電、通信設備、醫(yī)療設備和智能家居等場景,提供從產(chǎn)品選型、替代評估、樣品驗證到批量交付的一站式連接方案。恒創(chuàng)可支持 Molex、TE Connectivity、JST、Hirose、Samtec 等國際品牌部分系列的國產(chǎn)替代評估。常見替
    HC003 2026-08-07 10:14 250瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 224942瀏覽
  • 做藍牙音箱的工程師大概都碰過這個局面。產(chǎn)品要連手機放歌,要本地播開機提示音和按鍵音,還要接 App 做配網(wǎng)和狀態(tài)上報。三件事拆開,早先的常規(guī)做法是音頻藍牙一顆料、數(shù)傳藍牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍牙、BLE 數(shù)傳和 MP3 本地播放三樣全包了。對藍牙音箱來說,最實在的好處就
    唯創(chuàng)知音語音芯片 2026-08-06 15:14 418瀏覽
  • 在物聯(lián)網(wǎng)從“萬物互聯(lián)”邁向“萬物智聯(lián)”的進程中,LTE Cat.1憑借其在速率、成本與網(wǎng)絡覆蓋之間的完美平衡,正成為中低速物聯(lián)網(wǎng)市場的絕對主力。隨著2G/3G網(wǎng)絡的逐步退網(wǎng)以及新國標對終端設備智能化、定位功能的強制要求,Cat.1模組迎來了爆發(fā)式的增長窗口。在這一關(guān)鍵節(jié)點,基于華為海思Hi2131芯片設計的LTE Cat.1模組,憑借其在能效、射頻、架構(gòu)及物理規(guī)格上的底層創(chuàng)新,成功打破了“高性能必高功耗”的傳統(tǒng)魔咒,為行業(yè)提供了極具競爭力的連接最優(yōu)解。核心技術(shù)優(yōu)勢:重塑Cat.1能效與連接標桿海
    用戶1778981989717 2026-08-05 21:04 211瀏覽
  • 一、方案簡介在Buildroot構(gòu)建的嵌入式Linux系統(tǒng)中部署Flutter應用,主流有兩套成熟的開源方案,分別適配不同的顯示場景與開發(fā)需求:方案一:flutter-elinux(Sony開源方案)由索尼官方維護的嵌入式Linux Flutter工具鏈,既支持DRM/GBM直接渲染,也兼容Wayland、X11等多種顯示后端,場景適配性更廣。方案二:flutter-pi(輕量級嵌入器)一款輕量級Flutter引擎宿主程序,僅基于底層DRM/GBM接口實現(xiàn)渲染,無需依賴桌面環(huán)境,資源占用更低,更
    飛凌嵌入式 2026-08-07 09:34 234瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩(wěn)定起振的成品,要經(jīng)過十幾道精密工序。它內(nèi)部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個生產(chǎn)過程里哪怕0.1微米的誤差,都會直接廢掉整批產(chǎn)品,這也是小尺寸晶振過去長期依賴進口,國內(nèi)廠商花了十幾年才啃下量產(chǎn)硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 568瀏覽
  • 做電池供電攝像頭、可視門鈴、戶外安防的同學應該都踩過這個坑:攝像頭要拍,ISP、sensor、無線模塊全得開著,整機電流動輒幾百 mA。一節(jié) 18650 撐不了幾天,用戶投訴“怎么又沒電了”。有人會說:加個 PIR 人體紅外不就行了?問題是 PIR 怕熱、怕寵物、怕隔著亞克力/玻璃殼,而且只能感知“有溫差的人體移動”,靈敏度飄忽。真正省電的思路應該是:讓攝像頭平時徹底睡死,只有“前面有人/有動靜”時才被一鍵喚醒——而負責這個“看門”角色的,最合適的是一顆低功耗雷達。一、為什么是雷達,而不是 PI
    唯創(chuàng)知音語音芯片 2026-08-07 14:44 248瀏覽
我要評論
0
點擊右上角,分享到朋友圈 我知道啦
請使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 百度蹊径| 摩登家庭6 电视剧| 载得有情人| 莉莉库拉格《女版满天星》| 动动广场舞奢香夫人| 电影刘三姐| HD版《人猿泰山H版》完整版意大利| 乡村小老板:致富带全村全集免费| 唐朝好男人下载| 我的漂亮的妈妈8中字开头7个字| 日本电影特殊治疗的医护| 侏罗纪世界在线观看| 弱杀电影完整版免费观看| 璀璨人生78| 《特别的酒店》免费观看中文版全集 | working girl| 喜羊羊全集免费| 视频列表--蜜桃 - 17| 鬼吹灯之黄皮子坟电影在线观看 | 大珍珠电视剧免费观看完整版高清 | 《初恋时间》1-6免费观看全集| 雾散之时短剧免费观看| 双女任务在线免费观看| 韩剧《白夜行》| 亲爱的这并不是爱情| 插曲的痛30分| 眷思量免费观看全集| 乡村爱情5免费版全集在线观看| 高清《朋友的妻子》在线观看| 行尸走肉 美剧| 需要哥哥的种子| 洗冤录第一部国语全集| 一路向西完整版在线播放| 指甲刀人魔| 高清《黎明之前》| 荷尔蒙6免费中文版| 我为歌狂第二季| 电影《在丈夫面前被劫匪欺负》电影| 霍比特人1:意外之旅| 佳偶天成电视剧免费观看| 美容院的待遇服务6| 波奇亚电影在线观看| 当着丈夫的面被耍在线播放| 凌总追妻| 不可抗力爱上你| 《驯服小峓子》2| 单身即地狱综艺在线观看 | 食来孕转电视剧| 犯罪现场调查迈阿密| 电影二对一的商务模式2| 慈禧秘密生活高清完整电影星辰| 美人心计百度影音| 一路向西完整版观看| 决战风铃渡全集| 诱人的岳HD中文字幕| 寡妇女人免费观看全集高清电视剧| 寿星新人类,肥尸哥主演| 斗牛犬电影| 火辣儿媳| 宁明县| 黑白诀电视剧免费观看完整版高清| 法国空姐4(多塞尔航空)完整版免费中文 | 乡村爱情小夜曲在线观看| 阿拉善英雄会7分钟| 寻梦环游记免费观看在线完整版| 凯登克劳斯电影在线观看完整版| 法证先锋5电视剧全集在线观看| 不正当军事行为2017| 致命哥罗芳| 天使降临| 爱了散了电视剧剧情介绍| 康定情歌dj| 白衣绳索牙医生| 曾志伟最新电影| 捆绑强奸小电影| 唐朝禁宫秘史在线观看| 后厨完整版在线观看免费| 九歌电影高清版免费观看在线| 世上最不得安人纪录片在线播放 | 今生有你电视剧| 来自喵喵星的你| 明日方舟动漫| 足球小子小学国语版全集| 小凤新婚下| 少年包青天2部| 电影我要爸爸种种子| 失笑电视剧| 新动漫中华| 高清暗夜情报员 第三季| 坚如磐石在线观看免费高清国语电影| 战狼6在线观看免费版下载| 美国街头篮球| 复仇者联盟4在线| 广昌县| 海霞免费| v酒店第一季第1-11集| 逆袭之爱情敌电视剧| 万千星辉贺台庆46周年| 人肉豆腐汤| 春潮烂漫海棠红下载| 壮志凌云满天星在线| 西虹市首富第二季正片| 五感图 下载| 暖暖国语高清免费观看完整| 百家讲坛刘心武揭秘红楼梦| 爱唯侦察/1024| 花宵道中在线免费观看| 动感之星之妖精168集在线观看| 棋魂特别篇| 怎么说我不爱你伴奏| 布雷斯塔警长国语版| 贝兹旅馆| 法版《执行秘书》2017| 《绚烂一刻》| 《总统夫人》星克莱尔演员表| 庄子哪个学派| 银魂261| 恶役千金| 点金胜手西瓜| 《游泳教练》免费观看| 只属于我的女神| 圣特罗佩姑娘们1982电影在线观看| 贞观之治演员表全部| 鞋样设计| 《心不由己》| 残梦电影完整版| 巍山| 少林搭棚大师| 我的暴躁老妈全集| 闯天下 电视剧| 诱人的飞行 迅雷下载| 稷山县| 电影偶遇| 莉娜安德森的满天星代表《小姐》 | 《牙医姐妹》完整版高清在线观看| 众神之神| 学战都市asterisk第二季| 电视剧心跳全集完整版免费观看 | 维多利亚一号电影| 暴走三金| 有秘密的我们| 杰西简的电影在线播放| 一个女被3个男人轮流打耳光| 女超人麦乐迪免费观看完整电影| 爱情公寓3新闻发布会| 白峰美羽在线看| 雪中悍刀行电视剧免费观看36集| 漂亮的保姆完整视频在线观看| 新员工韩国| 聚会的目的完整| 《女律师替夫还债》剧情介绍韩国电| 电视剧妈妈无罪| 小辣椒3电影免费播放| 弦子 沿海地带| 蛇姬恋没删减| 边做边爱在线观看免费| 种鬼电影| 阿旺加油vlog今天| 苍老师10部必看经典电影| 全世界最好的你在线观看| 郑州娃娃奶奶| 《妇科诊所特殊治疗》电影除衫女郎 | 狂飙40集在线观看免费| 沙洋县| 苹果电影免费看| 美国伦理蜜桃4| 电视剧贤妻| 紫彩乃在线播放| 猎金游戏电影免费观看| 《房屋销售的秘密| 轻轻松松喜剧节| 不安于室by卡比丘| 加油晓惠| 星光大道朱之文全集| 你比星光美丽1-40集免费观看| 坏蛋联盟1| 女人自己扒开荫道口| 辉夜大小姐想让我告白剧场版| 吴邪的私家笔记免费观看| 公之浮手中30| 瞄准全集免费观看| 金牌销售秘密| 电视剧驻站免费观看| 二十一世纪爱情指南免费观看全| 刺客聂隐娘| HD版《激战丛林》完整版在线观看免费 | 蛇姬 极乐诱惑| 新网球王子| 乱世三义全集| 高中少女电影免费观看| 疯狂的麦克斯| 悔不当初我不追了短剧免费观看| 中国新说唱第一集| 日本jiZz| 猛鬼狐狸精字幕| 《义姐是不良姐第一季全集免费》 | 特殊保险推销员中字资源下载 | 高清战旗如画未删减| BBBwww| 张国荣天使之爱| 木下檀檩子视频博放| 坠落电影完整版免费观看| 免费观看高清在线播放| 反抗之真心英雄剧情| 独闯龙潭百度影音| 娜露温泉无删减视频在线看| 鬼夫 电影| 夏家三千金土豆网| 天之痕电视剧| 道真| 种花家的兔子[星际]| 酒店1-5集全集| 密桃成熟时下载| 妈妈的职业2完整版结局在线看中字 | 狼行天下之钦差| 纪光莉替夫还债的电影免费观看| 变形金刚4| 泰国小姑娘中文版| 养个孩子不容易电视剧| 需要爸爸播种美国第二季| 电视剧长相思第一季免费观看| 潘金梅三级做爰| 姐姐真漂亮免费观看| 私人女性监狱免费观看地址| 老丁是个生意人| 跟部长出差电影| 藏海花在线| 动感之星妖精168集免费播放在线观看 | 哈里波特7| 木子凛子电影免费观看| 痞子殿下| 韩剧iris| 徐悲鸿电视剧全集免费| 亡灵故事| 禁忌4年转一代最忌三种东西| 蓝色档案| 17se| 嫁给西北糙汉子的小说爱情| 白峰美羽 在线| 河东狮吼插曲| 法国空姐第五季国语版免费观看| 读你原唱| 密挑在线观看| 2008金银梅1-5普通话| 给岳肚子播种怀孕| 年轻的母亲韩剧电视剧全集| 俘虏之锁全集下载| 轧戏在线观看| 别墅轮换3攻略完整版观看| 《特殊的精油按摩》6| 和部长出差旅电视剧免费观看| 八妻子影秋在线| 《鸿门宴》电影免费播放| 喜爱夜蒲2所有歌曲| 玉茗茶骨全集完整版| 电视剧流金岁月| 卑劣的街头2| 42号传奇| 电影《武状元苏乞儿》| 女拳国语| 为美好的世界献上祝福| 特利迦奥特曼剧场版免费观看| 英雄虎胆电影| 鸡皮疙瘩| 《帝国的毁灭》免费观看完整版 | 19岁电影免费完整观看| 与恶魔有约免费观看| 八妻子影院免费观看电视剧高清 | 爹地追来了第二季免费看 | 大伯拔前女友的菜 | 捉妖少女:妖怪都怕我全集免费| 入殓师电影完整版在线播放| 鬼灭之刃九柱训练篇免费观看| 新闺蜜时代剧情介绍| 电影姜汉娜《一对一》| 《深情眼》电视剧免费观看| 50岁大胸继拇5| 通天书院| 法国版《女超人:麦乐迪》在线播放| 机械公敌高清在线| 岳阳市| 老北京大杂院的电视剧| 南洋十大邪术 电影| 末日病毒剧情| 色即是空2视频| 韩剧回家的路| 风月宝鉴之云雨之欢在线观看| 赌博启示录 电影| 潘金莲野史1993| 宁波r8事件| 六鬼团电影全集| 饮食男女| 孤独一掷免费完整观看高清2023| 水晶兰为什么叫死亡之花| 《我的孩子我的家》电视剧| 醒目仔蛊惑招| 我的女孩主演| 雏燕知恩报春来短剧免费观看| 这就是我的主人| 命悬一枪全集观看| 生死决电影| 大生意人40集全免费观看| 蜡笔小新第6季动漫| 爱情公寓3 19集| 明星大侦探第八季在线观看| 爱我何几| 专治各种不服| 满天星《法国女仆》在线| 阿婴王祖贤电影完整版| TOTAKKAHAYAKIRGUZUX| 故乡别来无恙电视剧免费观看| wwwbbb565com| 大蛇5国语版完整版| 新员工2在线观看完整版电影| 步步惊心电视剧| 罗丽星克莱尔在线观看| 黑暗天使电影| 《大度》韩世雅和谁在一起了| 还珠格格之风儿阵阵吹全集| 安吉拉怀特在线观看免费版英语单词 | 北京遇上西雅图 影音| 21世纪指南| 《淘气的女孩也需要爱》| 《私人航空》法国电影免费观看完整版 | 漂亮的女学生bd高清2| 你的名字在线观看完整版免费观看| 号手就位免费观看手机看| 爱的理想生活| 两女共侍一夫| 史前超人| 电视剧山里红| 糖心在线免费观看| 烟雨蒙蒙电影| 矿山人家| 《热血》免费观看| 麻花传郭芸熙电影免费观看| 天龙八部13| 交换3国语版普通话| 大神同学想被吃掉未增删有翻译| 中字儿媳妇在线观看 | 王楚钦退出WTT仁川冠军赛| 秘密女搜查官在线观看免费全集高清| 叛逆者在线观看完整版电影| 大学生第四季| 《隐身的名字》| 坎贝奇的《无憾》电影| 我为卿狂百度影音| 天台县| 我就是这般女子| 蒙古草原天气晴在线观看| 恋恋不忘大结局| 丫鬟主母:侯府逆袭短剧全集 | 索多玛的120天下载| 做晕了继续做H| 翻唱日本歌曲| 电视剧青河绝恋| 快乐到死 高清| 舞男情未了 任达华| 女人的战争电视剧韩剧免费观看| 俄空姐3| 平凡之路电视剧免费| 插式治疗专业医院1-5集| 高清《钢铁森林》电视剧| 姐妹牙医电影观看免费高清| 金瓶梅 高清完整版 bt| jizz日本免费| 无性别男孩热恋中| 女朋友妈妈双字id免费| 文豪野犬第四季| 新奥特曼列传| 鬼泣动漫| 星辰影院免费观看爱情而已| 天下第一剑完整版免费观看 | 新金瓶梅第2集| 恨君不似江楼月免费观看全集| 棍勇的回复术士| 潘迎紫版神雕侠侣| 女士邀请函2| 娱乐圈顶流全集免费| 性 谎言和录像带| 月光洒向离人巷| 酒店1-80集| 镜双城电视剧在线观看| 初体验5在线观看| 李嘉诚96岁生日低调庆祝| 金银梅5普通话在线观看国语版免费 | 麦乐迪与父亲| 女儿为妈妈还债的电影| 松阳县| 亲兄热弟剧情| 广西阿金哥今天| 聊斋狐仙电影在线观看| 向往的生活第五季在线播放| 男生女生一起努力愁愁电视剧免费 | 黎明的强奸在线观看| 千树万树梨花开描写的是什么| 火影忍者剧场版 忍者之路| 超变身祈斗士| 爱情有点蓝歌曲| 暮光之城女主克里斯汀| 光环夜幕| 电视剧大全| 尸骨无存2免费观看完整版| 花与蛇1| 金钱之味剧情| 别墅换妻视频| 空中浩劫纪录片| 电影《V酒店》第一季在线观看| 疾速追杀| 妻子3免费完整版HD中字| 钢铁之泪| 妻子的味道| 塔日酒店完整版免费| 像傻瓜一样去爱全集| 入室暴行3在线观看| 《汤摇庄的幽奈同学》 | 狼人传说| 奔驰女车主违约| 《余罪2》全集在线观看| 毒舌家庭电视剧| 从红月开始动漫免费| 19岁大学生免费观看电视剧中文版| 姐姐的朋友在完整5视频带翻译| 诱感| 失恋33天mp4高清下载| 私人航空电影| 赘婿当道全集免费| 亲嘴视频大床视频全部| 南部档案电视剧| 东陵大盗电影全集| 酒店视频1-3集免费播放| 法政先锋第三部粤语| 女子护卫队1973在线观看| 加勒比女海盗9美版免费| 让她降落下载| 超级肥妻| 郭峰歌曲| 《妻子做社长签署偿还债务| 台剧《过界爱》在线观看全集| 美国版荷尔蒙6日本版| 大宋少年志1免费观看| 女律师的坠落| 史上最强太子爷短剧全集| 金瓶风月百度影音| 猩疯血雨未删减| 僵尸新娘| 182822282午夜寂寞影院| 大江大河第二部全集免费观看西瓜| 做aj的电视剧大全免费观看中| 电影《最亲密的兄妹》在线看| 潍坊科技学院吊带| 悬崖 全集| 杀出狂人镇| 贝坎奇品味人生| 向往的生活第7季| 美国队长4免费观看完整版| 按摩店的待遇1电影| 女销售的秘密韩国电影| 满天星急救护士法版2| 奇妙萌可第一季免费观看| 王牌大贱谍2008| 少年歌行电视剧在线观看免费全集| 怪医杜立德3| 陪讨厌部长去出差旅日本| 长安三万里提前抢先看完整版| 《卖房子的女销售》台湾| 龙少爷粤语| 千山暮雪28集| 小苏文案馆| 爱情有点蓝全集下载| 维修员的艳遇伦理片| 只因我们天生一对泰剧| 方托马斯| 天赐良缘印度| 弱小的英雄第二季| 大学生漂亮小瘦子4| 在韩国成为房主的方法全集观看 | 欧美5| 《公的浮之手中字》免费| 双女任务电影免费观看| 重生之锦绣嫡女短剧全集| 狂躁荷尔蒙6电影免费观看| 海员记录在杜苏芮影响下航行遭遇 | 电视连续剧错爱| 丈夫升职妻子被社长欺负剧情 | 公主日记电影| 毒舌律师豆瓣| 侵犯高傲女教师在线观看| 飞哥大英雄23集| 家庭分歧麦乐迪| 老鼠钻心| 香水佳人| 酒店1-90集免费观看高凊| 勇往直前20100516| 需要爸爸的种子美国| 京城大状师| 铁梨花全集下载| 雪豹36| 相泽南在线播放| 星落凝成糖电视剧免费观看西瓜 | 大宅门第二部全集| 怒火战猴电影高清免费观看 | 默杀电影免费播放在线观看| 白嫖者联盟电影高清在| 奔跑吧兄弟| 巡回检察组电视剧全集| 千金赤子板栗1985日本| 劳斯莱斯娇娃| 终极台风电影在线观看| 川村千里| 爱我几何| 都市外乡人电视剧 | 伊波拉病毒2普通话| 陆贞传奇电视剧59| 夫妇联欢会回不去的夜晚9集| 漂亮瑜伽4在线观看| 我和大佬第二季免费看完整版| 孽恋狂情| 《神墓》全集免费动漫| 魔兵传奇国语版全集高清| 女子练瑜伽式骑车惊呆路人| 24世纪性格爱情指南欧美| 牧神记全集免费观看| 玩命追踪国语| 罗丽星克莱尔电影观看| 电视剧用心过日子| 罪域15| 落魄贵族琉璃动漫免费观看全集 | 短柄斧3| 蛇之战电影| 仙桃市| 欢乐喜剧人第一季完整版免费观看| 游戏王gorush| 爱我几何高清无删除版在线观看| 富贵男与贫穷女电视剧全集免费观看 | 惊变快播| 唇齿之间| 极速恋人第二季未删减版第15集| 绝世唐门第60集免费观看| 水润女人申胜业刘志贤主演角色介绍 | 《和讨厌的部长出差旅》 | 丈夫的下属是初恋| 昆池岩电影| 印度老电影60部| 朴亚珍短剧《隐形帽》免费观看 | 沈腾机器人电影叫什么| 哇嘎在线免费观看| 青春在线观看| 鹊刀门传奇2免费观看| 桃色凶气| 《束缚游戏》第一季1-12集免费观看| 冷宫升职记全集免费| 陕西广播| 带领村民奔小康:返乡创业全集免费 | 离婚惊艳:全城羡慕短剧全集| 牙医姐妹1986| 叶罗丽动画片| 你给老子不上班| 《乡情》罗丽·星克莱尔主演的 | 爸爸回来| 理妻子征服理发店| 死亡包裹| 激战酒店1-9| 我的山与海| 甘十九妹| 特级外卖员| 煎饼侠百度影音| 电影哪吒1完整版| 法国《啄木鸟:灭火行动》免费观看| 女大学生4第一季| 捆绑影视| 《女的心愿》台湾原版| 在远方 电视剧| 唐朝秘史| 超级基因| 满江红电影张艺谋免费观看?| 双女任务电影完整版| 无人高清电影电视剧在线| 人妻在卧室被老板疯狂进入国产| 美国女儿国满天星在哪能看| 王楚钦回应怒怼粉丝事件| 年轻的儿媳妇字头范文| 和部长出差的日子免费观看| 马向阳下乡记电视剧免费观看| 美食的俘虏125| 色即是空3| 泰剧为你着迷| 《啄木鸟:军事不当行为》| 肉蒲团电影| 好男人手机在线视频播放1| 做aj的电视剧免费观看英国| 电影血恋在线完整版播放| 奔跑吧茶马古道免费观看完整版| 吴健版《农民伯伯2》电影免费观看http | 富贵门国语全集| 嫡女宅斗:全精通全集免费| 木下檀檩子电影免费观看国语版大哥| 爱回家粤语363| 超强台风电影免费观看完整版| 《军事不当行为》布兰迪在线观看 | 舒淇的全部三电影| 无敌风火轮免费观看国语版| 食人鱼事件剧情介绍| 长津湖2021在线观看| 不良义姐| 死神来了5| 秦王李世民电视剧| 女超人法国版在线观看| 死亡笔记动漫免费高清在线观看| 《好好的时代》免费观看高清| 美国禁忌5睫毛膏高清版| 阴阳路之红当当| 猪猪侠之竞速小英雄8免费观看| 妻子被黑人在丈夫面前被欺负电影| 楚才晋用是什么意思| 《你比星光美丽》谭松韵| 黄色仓库网址| 丽江小倩歌曲| 恶灵骑士2在线看| 《over flow》真人版| 死亡笔记电影| 血溅十三号警署| 三级片替夫还债的家庖妇女 | 如懿传在哪里看| 回复术士的人生重启免费观看| 《激战丛林2》满天星在线观看| 虐童女幼师| 重影电视剧免费观看全集完整版 | 公浮手中字22| 可惜明年花全集免费播放| 养父的花样年华电视剧全集40集| 歼灭天际线1-66全集酒店的女人| 新金瓶梅电影全集| 密室大逃脱第二季| 销售的销售秘密免费观看高清版 | 无法抗拒的他10集全集| 恶童日记| 看电影免费观看完整版| 楼外楼电视剧| 与恶魔共舞| 情牵百子柜| 我们都要好好的全集免费完整版| 牙医赤子板栗完整版在线观看| 《莲花楼》电视剧| 费雪小姐探案集| 凯登克罗斯电影在线| 安塔芮丝迅雷下载| 天地无伦完整版| 遭遇义子的侵犯日剧中文| 恋爱暴君1| 苦尽甘来遇见你免费播放| 黑白配中文在线观看免费高清电影 | 忍者龟第四季| 苍天在上| 漂亮的妈妈7中字开头7个字!| 黄色伦理片善良的同学欧美片 - 百度 | 男神爱上:暗恋成真全集免费| 特殊房产销售2| 侏罗纪公园3电影免费完整版观看| 撒旦的奴隶2| 需要爸爸种子在线观看电视剧意大利| 小贝有几个孩子| 门事件电影直播| 特殊理发店待遇8的最新章节和内容 | 丈夫上司部长与妻子相处秘诀 | JEALOUSVUE第一次| 《爱在空气中特别篇》| 女超人麦迪娜电影在线| 请叫我中路杀神| 战至巅峰第三季2024免费观看 | 《水润人生》刘智贤| 至高指令无修| 禁止的爱:善良的小峓子在钱止| 死神来了8在线观看| 1—5集电视剧杨敏思免费看| 心跳电视剧在哪看| 维修师傅的艳遇韩国理论片在线观看| 性西欧俄罗斯极品| 新少林寺电视剧| 屠场呕吐娃娃手机免费看| 帮帮我爱神 下载| 山西被害男孩在生父村庄下葬| 电影《第八日》凯登克罗斯| 看456| 嫡女毒妃:重生飒爽短剧全集| 按摩女技师| 南部档案电视剧| 马某某事件是谁| 长江七号免费| 《和讨厌的部长出差》日本电影| 黑衣人3国语高清| 《我的舞蹈女教练》| 尸兄19| 胭脂霸王电视剧| 学生的妈妈5| 海狼行动电视剧全集| 韩国美女vip内部1101| 女子飞机上光脚踩踏座椅扶手| xL司令第二季真人| 唐太宗李世民电视剧| 鹊刀门传奇2免费观看| 初体验| 良辰好景知几何电视剧免费观看| 女子跳水10米台决赛| 日本的两个妈妈ID| 南海归墟16集电视连续剧| 好运来电影在线观看| 公公的浮之手电影| 智能缉凶| 搜神记电视剧下载| 九江十二坊| 巜人妻初次按摩2韩国| 雾岛奈津美全集种子| 沸腾人生电视剧| 我美丽的瘦子8| 佳澄果穗| 萧婷赵雷小说| 妽子丰满妽子HD| 黑夜传说4电影| 蜜桃成熟时33d在线线免费观看| 怎么办家康在线观看| 千金与仆人电影完整免费观看 | 天真有牙| 交通事故现场| 许我耀眼32集免费观看| 黑衣人3电影| 瓜达卢佩的玫瑰无删减| 了不起的甄高贵电视剧 | 破晓之爱| 传奇故事全集| 17·3电影免费观看高清| 看见爱台剧有无删减版本| 三大队电影免费| 真破血普通话免费看| 斗罗大陆116集| 王牌保镖1在线观看原声| 前世情缘| 牙医姊妹在线观看免费高清 | 神舟七号电影| 俘虏之锁在线观看完整版免费| 非诚勿扰20110220| 我的人间烟火电视剧免费下载| 无人区在线高清完整免费| 高清《老医馆》全集免费| 火烧云全集| 一人之下5| 电影《金悔瓶》免费观看徐少强国语| 金瓶梅bmp3视频| 被学生下药的女教师在线观看| 部长出差的日子电影| 鬼同你ot 电视剧| 《理想之城2》全集观看| 黄大妮电视剧免费观看完整版| 唤醒电影凯登克罗斯在线观看| 迪迦奥特曼大全集| 全红婵今日10米决赛直播| 《卖房子的销售2》免费| 高清《秘密森林》电视剧| 我的女婿太逆天电视剧| 毒战首映礼| 水电工的艳欲| 大头儿子小头爸爸第一部| 蜘蛛侠之英雄无归| 性解密断| 一路向西高清ed2k| 不能说的秘密mv| 向日葵app官方网站地址进入| 动漫《侄女开发日记》免费观看完整 | 法国电影《Cleves》| 帝王计划:怪兽遗产 第二季未删减| 毒医肥尸国语版免费观看| 我的瑜伽老师在线观看完整版| 一生何求完整版| 17·3电影免费播放高清| 亲爱的客栈2| 唐璜的回忆| 非洲人与性动交CCOO| 湿润的继拇HD中文泡泡| 电影指环王1| 美容室.特除服务2| 男人女人一起愁愁愁电视剧免费| 法版女海盗3海魔之岛| 斩服少女完整版在线观看| 以爱为营1-30集免费观看| 初体验5在线观看| 金太狼的幸福生活2 | 康体水疗完整版在线观看免费播放 | 做aj的电视剧免费播放| 大锅饭养懒汉| 黄飞鸿之壮志凌云| 回复术士的重来人生漫画无删减| 凌云壮志(欧美)满天星法国版云盘| 平凡歌电视剧免费观看全集高清 | 陵水| 韩国电影部长和老公来家| 雪烟追逐电视剧| 王杰2001香港演唱会| 白峰在线免费观看| 电视剧北平往事| 饥饿游戏2:星火燎原 | 警察故事续集电影| 黑暗之魂好玩吗| 高清《默杀3》电影完整版| 男女一起愁愁愁免费观看电视剧| 斗破苍穹年番第四集在线观看| 有求必应在线观看| 妻子的姐姐2免费观看电视剧| 乱理片性暴北越女兵在线播放| 武大黄灿灿| 慈禧秘密生活高清完整K8| 人心俱乐部电视剧在线观看| 小蜜桃3美丽人生完整版| 姐脱你看| 剑啸江湖粤语| 蒲江县| 意大利电影《渔夫和妻子》主演 | 樱兰男公关部| 第一次亲密接触演员表| 西部狂野满天星| 电影 私人航空在线看| 《毒战2》电影| 危险关系张柏芝| 美容院的特殊待遇| 人潮汹涌免费高清在线观看| 樱花动漫免费观看完美世界| 乔可安华的噩梦与白日梦| 周弘的《村枝》在线观| 吴奇隆前妻| 我的父亲母亲高清| 埃及艳后h| 电视剧长相思在线观看免费| 小马国女孩儿1夺回王冠| 美国1-5普通话免费观看完整版| 不扣钮的女孩子国语歌完整版| 海扁王2百度影音| 妖女迷行第一季| 黑鹰坠落2满天星| 飞翔女孩满天星免费播放| 高清探子阿坚:无头奇案| 绝命交错| 独孤天下电视剧免费观看完整版 | 红毯先生免费版完整在线观看| 风骚的邻居电影| 枭起青壤 电视剧| 电视剧免费观看高清全集| 海林市| 3d柔铺团之极宝乐鉴宝电影在线观看| 斗罗大陆第144集| 金瓶梅在线观看免费完整视频电影| 办公室风云在线观看完整版| 美容店的待遇免费观看|