国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

電子工程網(wǎng)

標(biāo)題: 初學(xué)者必知- 嵌入式開發(fā) [打印本頁]

作者: huangedu    時(shí)間: 2016-4-16 12:03
標(biāo)題: 初學(xué)者必知- 嵌入式開發(fā)
Osboy觀點(diǎn)1:一種類型的驅(qū)動(dòng)程序都有一個(gè)固定的數(shù)據(jù)結(jié)構(gòu)來代表,然后我們要做的事情就初始化這個(gè)數(shù)據(jù)結(jié)構(gòu),然后通過一個(gè)API注冊(cè)給內(nèi)核,而對(duì)該設(shè)備進(jìn)行讀寫等操作的函數(shù)在初始化這個(gè)結(jié)構(gòu)體的過程中聲明過了,我們需要針對(duì)相應(yīng)設(shè)備的特性實(shí)現(xiàn)這些讀寫函數(shù),這就是編寫設(shè)備驅(qū)動(dòng)我們需要做的事情,很簡單吧?
下面我們根據(jù)上述osboy的觀點(diǎn)來分析下字符型設(shè)備驅(qū)動(dòng)如何編寫:
(1)代表字符型設(shè)備驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu):cdev
1. struct cdev {
2.         struct kobject kobj;
3.         struct module *owner;
4.         const struct file_operations *ops;
5.         struct list_head list;
6.         dev_t dev;
7.         unsigned int count;
8. };
(2)初始化這個(gè)數(shù)據(jù)結(jié)構(gòu)
(3)Linux提供了cdev_init函數(shù)對(duì)cdev數(shù)據(jù)結(jié)構(gòu)初始化。在初始化過程中,我們需要?jiǎng)?chuàng)建一個(gè)file_operations類型的結(jié)構(gòu)體ops,類似于:
1. static const struct file_operations raw_fops = {
2.         .read                = do_sync_read,
3.         .aio_read        = generic_file_aio_read,
4.         .write                = do_sync_write,
5.         .aio_write        = blkdev_aio_write,
6.         .fsync                = blkdev_fsync,
7.         .open                = raw_open,
8.         .release        = raw_release,
9.         .unlocked_ioctl = raw_ioctl,
10.         .llseek                = default_llseek,
11.         .owner                = THIS_MODULE,
12. };
這個(gè)
raw_fops 初始化cdev中的ops。
(3)把這個(gè)cdev注冊(cè)給內(nèi)核
(4)Linux提供了cdev_add函數(shù)對(duì)cdev數(shù)據(jù)結(jié)構(gòu)進(jìn)行內(nèi)核注冊(cè)。
(4)實(shí)現(xiàn)ops中的聲明函數(shù)
(5)我們需要根據(jù)您編寫設(shè)備的特性對(duì)raw_fops中的函數(shù)實(shí)現(xiàn)。
.aio_read        = generic_file_aio_read,
        .write                = do_sync_write,
        .aio_write        = blkdev_aio_write,
        .fsync                = blkdev_fsync,
        .open                = raw_open,
        .release        = raw_release,
        .unlocked_ioctl = raw_ioctl,
上面這些函數(shù)都需要我們來實(shí)現(xiàn),實(shí)現(xiàn)之后,驅(qū)動(dòng)就編寫完成。是不是很簡單?
Osboy觀點(diǎn)2:字符型設(shè)備驅(qū)動(dòng)是linux設(shè)備驅(qū)動(dòng)架構(gòu)中最基本的一種驅(qū)動(dòng)類型,很多大型的設(shè)備驅(qū)動(dòng),其實(shí)都根據(jù)字符型設(shè)備驅(qū)動(dòng)進(jìn)行的擴(kuò)展,比如您在linux v4l2驅(qū)動(dòng)中__video_register_device的函數(shù)中就能找到cdev字符型驅(qū)動(dòng)的影子哦。
字符型驅(qū)動(dòng)實(shí)例稍后給出,您也可以自己動(dòng)手實(shí)踐,向osboy提交您的編寫代碼,供大家研究哦!!!
更多資訊可加交流群QQ277686564     QQ2905283896






歡迎光臨 電子工程網(wǎng) (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: live 电视剧| 日韩黄色在线播放 | 日韩亚洲一区中文字幕 | 亚洲国产一区在线二区三区 | 麻豆视屏 | 国产精品1区2区3区在线播放 | 日日摸摸| 久久永久免费 | 免费在线观看欧美 | 久久精品一本到99热免费 | 思99热精品久久只有精品 | 国产手机视频在线观看 | 午夜欧美视频 | 日本a在线看 | 日本一区二区三区久久久 | 久久久久久尹人网香蕉 | 国产亚洲第一 | 亚洲一级理论片 | 四虎国产精品永久地址49 | 国产粉嫩| 亚洲最新永久在线观看 | 国产成人+综合亚洲+天堂 | 久草视频精品在线 | 午夜精品网站 | 欧美国产亚洲一区二区三区 | 92手机看片福利永久国产 | 三级毛片在线看 | 色综合视频在线 | 久久精品国产在热亚洲完整版 | 4388全国最大成网站在线 | 国产xxwwxxww视频 | 免费在线观看黄色的网站 | 成人久久精品 | 欧美黑寡妇高清一级在线观看 | 花季传媒可以看什么 | 欧美在线高清视频播放免费 | 久操视频网 | 麻豆天美果冻星空91制片厂 | 高清欧美不卡一区二区三区 | 花季传媒v3.086下载 | 日本剧免费网站 |