驱动
刘星燎
弱小和无知不是生产的障碍,傲慢才是
展开
-
linux驱动开发简介
一、linux驱动开发简介1、linux驱动和裸板驱动的异同裸板驱动像写英语作文linux驱动程序像做英语完形填空2、linux下驱动程序开发需要具备的硬件基础 能看懂电路原理图阅读芯片的datasheet软件基础 内核态编程的基础(linux驱动程序运行在内核态) 内核模块框架如何动态申请内存如何解决竟态问题如何实现阻塞访问内核中关于驱动程序框架...原创 2018-05-18 14:06:27 · 1267 阅读 · 0 评论 -
I2S协议
一、引言I2S(Inter-IC Sound)是飞利浦公司针对数字音频设备(如CD播放器、数码音效处理器、数字电视音响系统)之间的音频数据传输而制定的一种总线标准。它采用了独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。标准的I2S总线电缆是由3根串行导线组成的:1根是时分多路复用(简称TDM)数据线;1根是字...原创 2018-11-06 17:37:08 · 1483 阅读 · 0 评论 -
通过socket获取网卡状态
#include <stdio.h>#include <string.h>#include <errno.h>#include <fcntl.h>#include <getopt.h>#include <sys/socket.h>#include <sys/ioctl.h>#include &转载 2018-10-10 17:20:50 · 2009 阅读 · 0 评论 -
设备树中ranges属性理解
作者 彭东林 pengdonglin137@163.com文章来源http://www.cnblogs.com/pengdonglin137/p/7401049.html正文一、设备树下面是我们将要实验的设备树的例子:/ { #address-cells = <1>; #size-cells = <1&g...转载 2018-06-20 16:26:16 · 7865 阅读 · 0 评论 -
设备树中#address-cells和#size-cells作用
#address-cells表示用几个cell表示地址,#size-cells表示用几个cell表示地址长度Example1/ { #address-cells = <0x1>; //在 root node下使用1个u32来代表address。 #size-cells = <0x0>; // 在root node下使用0个u32来代表size。...转载 2018-06-20 13:44:18 · 13728 阅读 · 2 评论 -
设备树
本文将介绍如何为一个新机器编写设备树。我们准备提供一个有关设备树概念的概述和如何使用这些设备树来描述一个机器。完整的设备树数据格式的技术说明书请参考ePAPR规范。ePAPR规范涵盖了比本文基本主题更丰富的细节,要查阅本文没有涉及到的高级用法请参考该规范。目录 1. 基本数据格式 2. 基本概念 2.1 模型机 2.2 初始结构 2.3 中央处理器 2...转载 2018-06-20 11:47:47 · 672 阅读 · 0 评论 -
内核开发特点
1、内联函数(inline)使用内联函数时,该函数会在它所调用的位置上展开,这样做的原因是可以消除函数调用和返回带来的开销,不过代码会变长。在使用内联函数的时候通常会吧那些对时间要求比较高,而代码本身的长度比较短的函数定义为内联函数。定义内联函数的时候通常使用static作为关键字,并用inline来限定: static inline void eolf(insigned long t...原创 2018-06-22 17:48:11 · 556 阅读 · 0 评论 -
内核配置
理论内核中提供了许多的功能,支持了许多的硬件,因而有许多的东西需要配置,对于这些可以配置的选项,在配置文件中都是以CONFIG为前缀的,例如对SMP的配置选项是CONFIG_SMP,设置了该选项就启动SMP,否则SMP不起作用,编译的时候不会被编译。如下图为一个配置文件的部分截图: 对于这些配置选项中,有的是两个选项,有的是三个选项,三个选项的分别是Y,N,M。M的意思就是模块,选择该选...原创 2018-06-22 17:47:32 · 661 阅读 · 0 评论 -
内核源码树
目录 描述 arch 包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。 block 部分块设备驱动程序。...原创 2018-06-22 17:46:59 · 663 阅读 · 0 评论 -
混杂设备
混杂设备#include <linux/miscdevice.h>概念 将不容易分类的设备,归纳为混杂设备可以简化编程可以省略设备号,cdev,设备文件的创建数据结构 struct miscdevice { int minor; //设备号const char *name; //名字const struct file_operations *fops; //...原创 2018-05-18 15:19:29 · 339 阅读 · 0 评论 -
printk 打印优先级/临时修改输出优先级的方法
printk 打印优先级1、与printf的异同点:printk的信息只能输出到控制台printk使用可以指定优先级 标准使用方式: printk(“<0>” “hello %s\n”, func); <0> :是优先级不加优先级是默认的优先级理论: linux内核中打印优先级分为8级:0~7值越小优先级越高printk输出时的优先级高于阈值的可...原创 2018-05-18 14:55:56 · 1384 阅读 · 0 评论 -
导出符号
导出符号解决的是模块之间的相互函数调用问题,使用导出符号可以在其他模块中使用该模块的变量或函数,可以形成模块依赖a.c int add(int a, int b){return a+b;} EXPORT_SYMBOL(add);或者 EXPORT_SYMBOL_GPL(add); a.h extern int add(int, int);b.c...原创 2018-05-18 14:50:35 · 1369 阅读 · 0 评论 -
最简单的内核模块编程
最简单的内核模块编程1、实验演示vi hello.c#include &amp;lt;linux/init.h&amp;gt;#include &amp;lt;linux/module.h&amp;gt;int __init hello_init(void){ printk(&quot;hello world!\n&quot;); return 0;}void __原创 2018-05-18 14:37:49 · 278 阅读 · 0 评论 -
I2C协议
一、概述IIC总线是由PHILIPS公司开发的两线式串行总线,用于连接微处理器和外部IIC设备。起初专用于音频和视频,现在在各个电子设备中都有使用。1、IIC总线的特点a、有两条总线线路,串行数据线(SDA)和串行时钟线(SCL),SDA负责传输数据,SCL负责数据传输的时钟同步。典型的设备连接方式如下:b、每一个连接到总线的设备都可以通过唯一的设备地址单独访问c、串行的8位双向...原创 2018-11-08 20:30:20 · 432 阅读 · 0 评论