linux 驱动 怎么改i2c速率

linux 驱动 怎么改i2c速率,第1张

to_i2c_client(dev) 这个函数返回值是一个指针,这个指针是个struct i2c_client 类型的指针,这个指针指向块内存,内存中存放着 to_i2c_client(dev)这个函数产生的数据。。

我做过驱动开发,说说我的看法。本质上说Linux内核开发和Linux驱动开发是不一样的,或者说驱动开发是内核开发的一部分,因为驱动属于内核。目前国内驱动开发和内核开发一般是一样的。有对应linux内核开发工程师和linux驱动开发工程师职位。

内核开发指的是形成linux *** 作系统的过程,也就是内核开发者向内核中添加信息使得linux从无到有的过程或者添加新的功能,比如Linux内核在2.6版本内核之前是没有设备驱动模型,内核开发者在2.6版本中增加了设备驱动模型,这属于linux内核开发。而linux驱动开发指的是使用Linux内核提供的接口,驱动开发者根据实际情况按照内核提供驱动的框架写相应的驱动并注册到相应的总线上,进而驱使硬件设备工作,比如I2C设备就注册到i2c总线上,这个i2c总线是内核开发者为我们提供的接口,我们只需要调用相应接口即可。整个工作流程是:linux应用程序-内核-驱动-硬件。如下图所示:

多说一点,要进行linux驱动开发,必须学好C语言、能够看懂电路图(因为驱动开发需要根据相应的引脚来编写驱动)需要模电和数电知识,linux *** 作系统知识,linux应用编程知识(多进程、多线程、文件io *** 作)因为我们要测试写的驱动能否正常工作需要linux应用编程知识。最好对数据结构中的链表有所了解,内核中有大量的内核链表。

感谢评论,交流,转发。更多精彩内容可关注本头条号:嵌入式软硬件开发。感谢大家。相互交流,共同进步。

Linux驱动和裸机驱动(例如安卓系统)没什么区别,因为都是用的Linux的内核;硬要说区别,那应该是不同芯片之间的个性化的差异,但都是在同一个框架下修修补补,基本上弄懂一个,其他的也就能了解个十之八九了。要说Linux驱动难不难,这要看你是否下定决心想学,了解汇编(基本上不会用,但有的项目非它不可)、精通C语言(达不到要求就努力达到要求,求!!!),掌握C++(做驱动的有时候需要弄中间层,这部分全是C++)、学好数据结构、英语能有多好有多好,实在太low过火那就自求多福吧!!!有以上基础后还需要会看电路图,会用万用表和示波器,这些是你调试过程中的好伙伴。目前学习驱动的书太多了,但是国内的话韦东山老师的《嵌入式linux应用开发完全手册》比较不错,最主要的是他的视频讲得很nice。有前辈带着做项目的话进步会很快,要是既没项目又没人带那就静下心来慢慢学,坚持就是胜利。如果还在学校得话那就多花点时间学一下,多问问老师,恋爱必须要谈,至于游戏什么的消遣一下就OK了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8935353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存