電子工程網(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下载
|
日本剧免费网站
|