Linux驱动入门之模拟I2C&e2prom

本文介绍了如何在Linux环境下模拟I2C控制器和e2prom设备,通过编写驱动程序实现设备抽象。讲解了Linux驱动开发的基本概念,如“一切皆文件”和Device & Driver模型,并提供了代码仓库链接。在模拟环境中,无需真实硬件即可进行实验,适合初学者学习。
摘要由CSDN通过智能技术生成

本文完整代码下载路径 github:simulate_i2c_e2

前言

教导不是灌注贯注,而是点燃火焰

  入门学习咱就别瞎掰要多努力多刻苦,来点心动的不好吗👇👇👇👇

  百万年薪还是梦吗? 国芯正处风口浪尖,驱动开发的春年难道要来了?

  赶紧来篇鼓(you)励(pian)广大懵青大众多多青睐驱动开发,最近公司老大可是求贤若渴,无奈某聘一览心酸。

  嵌入式驱动开发,通常在不同开发平台有不同的方向含义,现在主流为Linux驱动开发,为什么主流是Linux驱动开发就不多介绍了,还有的是RTOS(适时操作系统)、MCU单片机开发等等,BootLoader开发相对门槛高一些有机会再介绍。

驱动开发主要编程语言为C语言,没错,C语言。

  运行在硬件上的操作系统,通过驱动程序管理硬件资源,驱动程序在不同的软件平台通常会不一样,比如Liunx上的驱动不能直接用在Windows或者IOS上,但是同样的硬件就算操作系统换了,但是对硬件的控制逻辑基本不会变。

  

 

正题

  祖师爷(Linus Torvalds:Linux之父)说过“Talk is cheap. Show me the code”。

  说太多没用,直接教大家怎么写一个Linux驱动,驱动的内容是:

  Linux下实现模拟的I2C控制器和e2prom的访问:

  a.不模拟总线协议

  b.完整模拟I2C总线协议和器件

  本文代码跟踪仓库:github:simulate_i2c_e2

  之所以用模拟的呢,是为了免去实验平台的限制,我们可以在Linux PC上编译实验,也可以在虚拟机上,不需要真的有一个I2C控制器和e2prom。

  I2C总线是嵌入式开发里面比较常见通信总线,e2pom是一种非易失性存储,也就是掉电不丢失,一般嵌入式产品会使用I2C+e2prom的组合实现基础的设备信息存储管理。比如在e2里面存储着设备信息,系统起来后从e2里面读取等。

  这篇实现a题的内容,主要介绍软件,下一篇再通过b题来介绍总线。

环境装备

  Linux环境x1,用于编码和实验,建议内核版本4.9以上,推荐选择deepin,不是一味推荐国产,而是可以直接安装QQ、微信等软件真的太香了 deepin主页

  手指x10,用于快速码代码 

  脑子x1,用于。。。

 构思

  代码不能敲之过急,要显示构思清楚,尽然是Linux驱动开发,那就要搞清楚Linux驱动框架,主要有两点:

  • “一切皆文件”,驱动将硬件抽象成文件,供app使用;
  • Device & Driver,Linux将硬件设备抽象成软件层面的Device,软件驱动程序Driver通过name或者dts或者acpi和Device进行匹配,一个Device只能同时被一个Driver控制。

  上面提到的dts和acpi先搁着不管,详细的Device和Driver怎么匹配的可以先大概了解下  Linux设备驱动——Platform设备与驱动match probe过程

充其量也就是C语言的函数接口调来调用,最后用字符串或值比较、匹配,两个的关键属性值一样就匹配命中,触发初始化。

  那么我们这里的题目就谈到了I2C控制器和e2prom,有两个硬件设备就有两个Dev,一个Dev对应一个Drv:

  • I2C控制器Dev & I2C控制器Drv
  • e2prom Dev & e2prom Drv

忙碌了一周了,不摸鱼不打盹,要过周末去了。

=======================================

目录结构

  打开一个终端(一般是快捷键ctl+shift+t),在系统主目录创建一个文件夹,这将会是我们编码的主目录。

#linux下mkdir是新建目录的意思,-p是如果该目录已存在不报错,目录不存在就创建
mkdir ~/workspace/gooohi/ -p

  新建四个目录,分别是上面说的2个Dev和2个Dri开发目录,模块化鲜明一些,不会混。

#进到我们创建的目录里面
cd ~/workspace/gooohi/
#创建四个目录
mkdir simulate_i2cdev simulate_i2cdrv simulate_e2dev simulate_e2drv

  编写主Makefile,这个主Makefile预期功能是遍历四个目录,编译成内核驱动模块。

  Linux编写Makefile和代码首先要选一个编辑器,推荐使用vim编辑器,文本编辑器的选用这里就不多介绍了。

Linux下的几个基础命令和路径概念介绍:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值