免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: shenlanyouyu

学习Linux内核和驱动开发有终南捷径吗?欢迎来辩! [复制链接]

论坛徽章:
13
巨蟹座
日期:2013-10-30 18:29:4115-16赛季CBA联赛之青岛
日期:2019-01-04 17:30:1015-16赛季CBA联赛之天津
日期:2016-03-08 10:30:1715-16赛季CBA联赛之天津
日期:2015-12-10 15:56:452015年亚洲杯之约旦
日期:2015-03-09 16:29:36双鱼座
日期:2014-11-27 17:17:20寅虎
日期:2014-11-18 13:55:12双子座
日期:2014-03-31 15:41:32狮子座
日期:2014-03-14 11:23:24狮子座
日期:2014-02-19 16:30:12午马
日期:2013-11-04 23:22:31卯兔
日期:2013-10-30 19:51:15
发表于 2015-08-27 14:31 |显示全部楼层
回复 7# kartorz


    谢谢您的分享

论坛徽章:
19
处女座
日期:2014-07-18 14:50:5415-16赛季CBA联赛之北京
日期:2019-09-16 15:39:1415-16赛季CBA联赛之上海
日期:2019-09-15 15:29:0415-16赛季CBA联赛之山西
日期:2017-03-09 10:58:232017金鸡报晓
日期:2017-02-08 10:33:212017金鸡报晓
日期:2017-01-10 15:13:2915-16赛季CBA联赛之深圳
日期:2016-12-15 17:55:53C
日期:2016-10-25 16:00:1515-16赛季CBA联赛之新疆
日期:2016-07-21 14:02:0415-16赛季CBA联赛之江苏
日期:2016-06-30 12:15:04shanzhi
日期:2016-06-17 17:59:31平安夜徽章
日期:2015-12-26 00:06:30
发表于 2015-08-28 09:03 来自手机 |显示全部楼层
本帖最后由 shenlanyouyu 于 2015-08-30 10:42 编辑

“以旧换新”这个服务还没有呢,家电行业倒有

论坛徽章:
0
发表于 2015-08-31 15:46 |显示全部楼层
本帖最后由 axlrose 于 2015-09-04 14:32 编辑

这本书终于出来了,太棒了,家里书架上还放着第一版,看到之前宋老师的BLOG上本书介绍,多了好多新内核内容,设备树等都是3.x后才加入的
现在正在用3.14内核,很多时间都花在修改dts设备树上面,这本书里面好多新内容都适用,准备搞本来学习

1. 分享Linux内核学习和驱动开发的经验。
首先是看<linux设备驱动开发> 这书对驱动有个了解,实际开发中需要看当前内核里的子系统的实现,比如i2c, spi的,参考内核现有的示例
可以了解子系统是怎么与实际硬件打交道的,目前都是有很多现成的框架,找一个相近的修改

2. 您觉得Linux驱动开发的难点是什么,有什么好的方法来克服?
主要还是对硬件芯片的熟悉,对具体芯片功能要掌握,比如跟一些纯软件开发人员聊i2c,spi, 他们根本不知道是啥玩意,所以需要先掌握硬件基本知识
然后就是研究具体芯片数据手册,比如RTC pcf8563,需要找datasheet看懂里面的寄存器,然后才有办法去写驱动调试代码,驱动开发需要很多硬件知识
很多时候遇到bug,除了google, 找找patchwork网站上的补丁,官方内核补丁,然后就是自己去读代码分析

3. Linux内核有上百个驱动子系统,你研究过内核各种驱动子系统的共性,层次结构设计吗?分享学习一个Linux内核子系统的经验,例如USB、I2C、HID等driver。
仔细看过i2c和spi的驱动,

4. 您深入研究过Linux设备驱动模型,关注过Linux内核驱动的设计思想吗?
学习过linux的设备驱动模型,里面的设计用到了类似面向对象的思想,引用计数器等,非常巧妙,实现自动内存回收的功能。
其实可以看一下 barebox一个uboot-V2的东东,里面的驱动架构就是一个微型没有OS版的linux设备驱动模型,从学习角度上是很值得看看的


把设备结点通过/sys的目录树来表示,每个节点都可以很方便的通过文件来访问,每次的新节点添加删除都发生uevent事件,给应用层的udev很多处理的机会

5. Android系统是基于Linux内核的,传统的Linux驱动开发和Android驱动开发有什么区别?
区别不大,Android驱动开发是在原有linux kernel中做加法,加入了一些Binder, ashmem,Low Memory Killer, wake lock等
内核驱动开发上大同小异,在JNI层需要给android提供一个 libhardware适配层,也就是跟内核通信的一个统一抽象层 HAL,通过jni给上层的java提供接口,可以让Android App可以操作底层驱动,比较典型的是一个led灯的示例,这个网上能随便搜得到的


PS:
除了构建内核系统外,我现在用buildroot多些,拿来构建rootfs非常方便,之前跟一些嵌入式朋友交流,有的人还不知道这个玩意,使用后发现很棒,全自动化构建,添加软件包自动编译,不需要自己手工./configure , make , install这些麻烦事,构建交叉工具链也非常的方便
另外就是yocto, 现在用freescale芯片的朋友做嵌入式linux应该知道这全自动构建系统,类似gentoo portage
openwrt也是个好东西,以前以为只适用于路由器,其实改造一下,对于不需要使用yocto这种构建GUI型的系统功能的小系统很适用,ubus, uci, netifd, procd, init-hooks等都是很棒的小巧组件



评分

参与人数 1信誉积分 +10 收起 理由
shenlanyouyu + 10 很给力!

查看全部评分

论坛徽章:
19
处女座
日期:2014-07-18 14:50:5415-16赛季CBA联赛之北京
日期:2019-09-16 15:39:1415-16赛季CBA联赛之上海
日期:2019-09-15 15:29:0415-16赛季CBA联赛之山西
日期:2017-03-09 10:58:232017金鸡报晓
日期:2017-02-08 10:33:212017金鸡报晓
日期:2017-01-10 15:13:2915-16赛季CBA联赛之深圳
日期:2016-12-15 17:55:53C
日期:2016-10-25 16:00:1515-16赛季CBA联赛之新疆
日期:2016-07-21 14:02:0415-16赛季CBA联赛之江苏
日期:2016-06-30 12:15:04shanzhi
日期:2016-06-17 17:59:31平安夜徽章
日期:2015-12-26 00:06:30
发表于 2015-09-01 22:36 |显示全部楼层
回复 23# axlrose

感谢分享!
   

论坛徽章:
2
2015年亚洲杯之阿曼
日期:2015-03-23 18:11:212015亚冠之大阪钢巴
日期:2015-09-07 13:54:16
发表于 2015-09-02 13:05 |显示全部楼层
总感觉这个分类有点奇怪。内核可以说是硬件无关的,除非非说是arm、ppc、mips、x86这样的。而驱动是硬件相关的。mtd、net子系统可以
归结到内核。

因为我本身就是做系统移植,所以总觉得驱动开发应该归结到嵌入式里面,因为当你完成用户的需求的话,就需要在SOC外围扩展各个芯片
那么这就需要对应的驱动;还有一种就不不是特定的通用芯片,比如数据采集类,大部分需要写FPGA、CPLD的逻辑,localbus或者pci(e)接口,
也需要驱动。

这2种情况是不一样的,第一种情况,目前的linux内核基本已经涵盖90%以上的设备驱动,无需自己开发,只是需要按照自己的设计修改地址、中断
参数;第二种情况就需要自己编写对应的设备驱动,很多情况做字符设备就可以解决。

内核我不太关心,驱动的话还是要多多看看芯片手册,诸如一些接口芯片的话只要能对接口协议比如uart、spi、usb的物理传输层协议很熟,基本上
在看内核实现问题也不大。

至于说和外围芯片打交道的驱动,如果带DMA的话,基本上就是准备请求->通过dma传输给外围芯片->外围芯片有数据通过dma传输回cpu->发起中断
->cpu响应中断处理返回数据
大部分是这个模式
其实linux编程相对简单,毕竟框架已经写好了,我们只需要封装底层的初始化、读写函数就可以了

论坛徽章:
1
2015小元宵徽章
日期:2015-03-06 15:57:20
发表于 2015-09-06 17:03 |显示全部楼层
有干货,马克一下表示支持。

论坛徽章:
9
IT运维版块每日发帖之星
日期:2015-08-27 06:20:00IT运维版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-23 06:20:00IT运维版块每日发帖之星
日期:2015-11-22 06:20:00操作系统版块每周发帖之星
日期:2015-12-02 15:01:04白银圣斗士
日期:2015-12-07 18:37:03数据库技术版块每日发帖之星
日期:2015-12-10 06:20:00数据库技术版块每周发帖之星
日期:2016-02-03 16:55:092017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2015-09-11 18:13 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
9
IT运维版块每日发帖之星
日期:2015-08-27 06:20:00IT运维版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-23 06:20:00IT运维版块每日发帖之星
日期:2015-11-22 06:20:00操作系统版块每周发帖之星
日期:2015-12-02 15:01:04白银圣斗士
日期:2015-12-07 18:37:03数据库技术版块每日发帖之星
日期:2015-12-10 06:20:00数据库技术版块每周发帖之星
日期:2016-02-03 16:55:092017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2015-09-11 18:20 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP