天嵌 ARM开发社区

 找回密码
 注册
查看: 3635|回复: 4

Linux设备驱动学习感想

[复制链接]
cestlavie007 发表于 2013-3-13 16:15:08 | 显示全部楼层 |阅读模式
学了这么久,看了很多资料。发现大部分资料都是告诉你是什么?为什么?和学什么。却没告诉你怎么学。所以我在门外徘徊了很久,至今,看了韦老师的视频,才有所领悟。虽然仍是菜鸟一枚,但是却想将这些感想和大家分享。求高人指正,也为同在郁闷迷茫期的通道门提供一些参考。
我以为,LDD这东西,能站的上边儿的知识有三块:
1、驱动架构
这是驱动学习最重要东西,即所谓最高纲领。对驱动架构有认识之后,就相当于在森林里有了地图。你就不会转晕,你就知道你每一步从宏观上看的最终目的。用宋宝华老师的《Linxu设备驱动开发详解》那本书里的话讲就是:不能一叶障目,不见森林。
在这一大块,主要学习的是架构,比如字符设备驱动架构、块设备架构、USB驱动架构、I2C驱动架构、“总线-设备-驱动”模型、平台总线架构、输入子系统架构等等。
切记别为驱动架构中的一些公用接口函数的实现耽误时间。有一个讲座里说的好,你想游览北京市,你最好先看地图,这样你就会对整体有把握,如果你一开始就钻进小胡同里,那你肯定会转晕的。
因为是讲架构,所以最好有现成的教程,而且最好是视频,上来就看书一般都会晕,要看好几遍。所以韦东山老师的视频就成了不二选择!他领你整体走一遍,在了解整体架构和简单用法之后,如果你有兴趣再去看看宋宝华老师的书,说真的,他的书对架构啃得还是很细的,在有了视频的基础上,你再看他的书,就会轻松不少。但是如果连韦东山老师的视频都没消化,就别急着看架构中函数的实现!你先把整个框架捋清楚再说!
2、内核编程
在看驱动源码的过程中,总会蛋疼的看到类似于中断注册啊、锁啊、工作队列啊、tasklet啊、timer啊什么乱七八糟的东西。这些东西本质是属于内核编程的常用内核API。它们可以让你更出色的完成驱动程序的任务,从这个角度看,没有他们,驱动甚至都没法写,因此,它们的用法你必须学会。
但是!你要搞清楚的是用法而不是实现方法!他们只是你编写驱动工具而已!你只需要知道他们怎么用,没必要追到代码里!用途搞不清楚,你可以看LDD、看宋宝华老师的书;用法不清楚,你直接搜内核源码,看别人怎么用。但是千万别为了用法和用途追到代码里!那是没有结果的!
经常有铺天盖地的言论说“看内核”、“内核是最好的老师”。我承认,这话没错,但是你要搞清楚的是:当你有了问题,你让这个老师教你什么?在某公司实习那段时间,我见到的最大的误导言论就是:“内核API不知道是干什么用的,那就追进去看看!”这言论蒙了我很久,知道看了韦东山老师的视频才顿悟。我追你大爷个X!如果我有追到内核API里就能看出是干嘛的那种功力,我就不可能不知道这个API是干嘛的了!仔细分析一下啊,一个内核API里面要调用多少小函数,追到下面是多少个宏,内核里同名的宏函数少则一两个,多则几十、几百个。没有教材领着,我怎么追?你自己没有参考追个USB驱动架构我看看!打印log追代码?追你大爷!你有病吧!这不是忽悠新人、把我往歪道上指吗?
所以,对待现代Linux内核这种庞然大物,你做每一件事都要谨慎,都要搞清楚你在干嘛!你想知道内核API怎么用,最快的方法才是看内核代码(当然那是要看别人是怎么用这个API的,而不是追进去看实现),这比你现去翻LDD快得多。
如果,你真到了天外飞仙的境界(不过人家都说这至少是5~8年的道行,少于这个年限的,要么是天才要么是装X)或者真的是闲的蛋疼非要看内核API实现,那你也最好是有《Linux内核源代码情景分析》这种旷世奇书做指引,让人家领着你看。别跟水蛭似的,逮着皮就往里钻,你做死呢你?

3、调试方法
今天我是看了,不会写脚本连调试都费劲。因为工作/实验环境通常是三个平台,Windows PC、Linux Server和开发板。这三个地方倒来倒去一会儿你就晕了,有时候把新文件拷贝错了地方,你都不知道,还在那里一个劲儿地瞎调试,浑然不知道自己在调试一个没有更新的就文件,N小时过去之后。。。最后知道真相的我眼泪掉下来。。。。
为什么会出错?因为这些简单的拷贝命令都是机械重复操作,命令带的路径参数可能还很长,写着写着就没耐性了。那你就不能写个shell脚本么?哎!您这是说到点儿上了,shell脚本我不会啊,什么参数传递啊、变量设置啊就是不会,连for循环都弄不利索。。。。:shutup:
闭嘴!:@还有脸说,赶紧学啊!

4、我的学习计划
现在呢,韦东山大神的视频看差不多了,各种架构都走马观花地了解了一遍。已经算是过了迷茫期了,觉得自己提升了不少,也有能力做下边的事情了。但是在这个过程里呢,发现各种蛋疼的小问题,比如内核API、比如shell脚本。所以,为了很好的进行框架学习并方便日后代码编写。
(1)我得先学学内核API,看看宋宝华的书,写写代码实验实验。这点儿破东西有个三四天肯定下来了,只图有个印象,以后回来现找也方便。坚决不看实现,书里讲不清楚的上网查,查不着拉到跳过。这些工具啊,用个差不多就行了。没必要扣得太深了。
(2)我得学shell脚本了,不是有本封面画着海归大王八的书么,不是有鸟哥私房菜么。都看看,看看文字处理工具awk啊什么的,调试时候用,真的很方便,也省得每次都机械地敲一大堆命令,不嫌烦还怕出错呢!
(3)打好底子就赶紧学架构!

好了,就这些,请大神们指点~

http://www.100ask.net/forum/showtopic-6027.aspx
ww110052181 发表于 2013-3-14 07:30:42 | 显示全部楼层
 楼主| cestlavie007 发表于 2013-3-14 10:44:35 | 显示全部楼层
ww110052181 发表于 2013-3-14 07:30

随风而行 发表于 2013-4-11 10:07:01 | 显示全部楼层
求韦东山老师的视频,能发给我吗?邮箱1242467957@qq.com
 楼主| cestlavie007 发表于 2013-4-11 14:28:03 | 显示全部楼层
随风而行 发表于 2013-4-11 10:07
求韦东山老师的视频,能发给我吗?邮箱

太大了,我这边网速承受不了。我只能给你发链接了
第1期2440免费,下载后可以直接观看,下载地址:
http://115.com/folder/fa55184z#
http://dl.dbank.com/c03o1ebwlo
http://kuai.xunlei.com/s/knC6Biry0u8XNkoeZmcLIg
这3个地址上的视频是一样的,请自己选择比较快的。

第1期s3c6410共23个视频,免费,下载地址:
http://115.com/folder/fdomujma
http://dl.dbank.com/c0n57qrgb3#
http://kuai.xunlei.com/d/OIKVDGJMJCQH
这几个链接里的内容是完全一样的,请自行选择较快的

第2期(以2440为基础,没有6410,但是原理是相通的)收费,下载后需要使用专用播放器并且输入用户名/密码才能观看,下载地址:
http://115.com/folder/fc007y81#
http://dl.dbank.com/c06bbt0sxp
http://kuai.xunlei.com/s/J67E.faJJhD86tFLxNYdaQ
这几个链接里的内容是完全一样的,请自行选择较快的

第3期项目视频
http://115.com/folder/fc3eelki#
http://dl.dbank.com/c0imu04stf
http://kuai.xunlei.com/s/MKDre95iy-aS2D6sXqLdyg


播放器:
http://cn.haihaisoft.com/huplayer.aspx
支持快速播放的huplayer
HUPlayerBetaRelease1.0.4.5-New-cn.rar
http://115.com/file/becz5kpz#
http://dl.dbank.com/c06bbt0sxp
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-29 12:31 , Processed in 1.062493 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表