摘要: linux设备驱动程序 i2c(1):i2c总线的添加与实现 (基于4.14内核版本) 在上一章节 "linux设备驱动程序 i2c(0) i2c设备驱动源码实现" 中,我们演示了i2c设备驱动程序的源码实现,从这一章节开始,我们来剖析i2c设备驱动程序框架的实现原理。 前情回顾 在这之前,建议各位 阅读全文
posted @ 2019-03-07 22:58 牧野星辰 阅读(8020) 评论(0) 推荐(2) 编辑
摘要: linux 串行通信接口驱动框架 在学习linux内核驱动时,不论是看linux相关的书籍,又或者是直接看linux的源码,总是能在linux中看到各种各样的框架,linux内核极其庞杂,linux各种框架理解起来并不容易,如果直接硬着头皮死记硬背,意义也不大。 博主学习东西一直秉持着追本溯源的态度 阅读全文
posted @ 2019-03-07 20:09 牧野星辰 阅读(2732) 评论(0) 推荐(2) 编辑
摘要: linux内核可加载模块的makefile 在开发linux内核驱动时,免不了要接触到makefile的编写和修改,尽管网上的makefile模板一大堆,做一些简单的修改就能用到自己的项目上,但是,对于这些基础的东西,更应该做到知其然并知其所以然。 本篇文章中只讨论linux内核模块编译的makef 阅读全文
posted @ 2019-03-06 23:29 牧野星辰 阅读(32667) 评论(2) 推荐(5) 编辑
摘要: linux内核makefile概览 本博客参照内核 "官方英文文档" linux的内核makefile主要用于编译整个内核源码,按照用户的需求生成各种目标文件,对于用户来说,编译内核时非常简单的,只需要几个指令就可以做到,但是对于一个驱动开发者而言,了解内核源码的编译机制是非常必要的。 make 和 阅读全文
posted @ 2019-03-06 23:20 牧野星辰 阅读(15528) 评论(0) 推荐(5) 编辑
摘要: linux的initcall机制(针对编译进内核的驱动) initcall机制的由来 我们都知道,linux对驱动程序提供静态编译进内核和动态加载两种方式,当我们试图将一个驱动程序编译进内核时,开发者通常提供一个xxx_init()函数接口以启动这个驱动程序同时提供某些服务。 那么,根据常识来说,这 阅读全文
posted @ 2019-03-06 22:40 牧野星辰 阅读(14194) 评论(5) 推荐(13) 编辑
摘要: 设备树处理之——device_node转换成platform_device 以下讨论基于linux4.14,arm平台 platform device 设备树的产生就是为了替代driver中过多的platform_device部分的静态定义,将硬件资源抽象出来,由系统统一解析,这样就可以避免各驱动中 阅读全文
posted @ 2019-03-06 22:24 牧野星辰 阅读(10707) 评论(2) 推荐(1) 编辑
摘要: linux设备驱动程序 设备树(1) dtb转换成device_node 本设备树解析基于arm平台 从start_kernel开始 linux最底层的初始化部分在HEAD.s中,这是汇编代码,我们暂且不作过多讨论,在head.s完成部分初始化之后,就开始调用C语言函数,而被调用的第一个C语言函数就 阅读全文
posted @ 2019-03-06 19:58 牧野星辰 阅读(8639) 评论(0) 推荐(4) 编辑
摘要: linux设备树dtb格式 设备树的一般操作方式是:开发人员根据开发需求编写dts文件,然后使用dtc将dts编译成dtb文件。 dts文件是文本格式的文件,而dtb是二进制文件,在linux启动时被加载到内存中,接下来我们需要来分析设备树dtb文件的格式。 为什么要了解设备树dtb文件的格式 dt 阅读全文
posted @ 2019-03-06 19:47 牧野星辰 阅读(3447) 评论(1) 推荐(0) 编辑
摘要: linux 驱动程序中 container_of宏解析 众所周知,linux内核的主要开发语言是C,但是现在内核的框架使用了非常多的面向对象的思想,这就面临了一个用C语言来实现面向对象编程的问题,今天我们就来讲讲其中一个例子。 利用结构体中元素指针获取结构体指针 Kobject是linux设备驱动模 阅读全文
posted @ 2019-03-06 19:33 牧野星辰 阅读(2757) 评论(1) 推荐(1) 编辑
摘要: RS232、RS485和TTL 作为一个底层软件开发工程师,经常会碰到RS232、RS485和TTL这一类的问题。 之前总是碰到问题之后Google一下,把当下的问题解决了之后就不管了,过个一两天就忘得一干二净,结果后续每次都会碰到类似的问题,都是从零开始地去解决,这种方式看起来当时快速解决了问题, 阅读全文
posted @ 2019-03-06 15:25 牧野星辰 阅读(15491) 评论(0) 推荐(1) 编辑