嵌入式Linux驱动学习之路(八)创建最小的根文件系统
busybox在配置busybox,在是否选择要静态链接库时,在静态下,busybox中的工具不需要动态链接库,能够直接运行。而用户自己编写的程序如果需要动态链接库,还是依然需要有。(从http://www.busybox.net/downloads/可以下载busybox工具)如果是动态链接库,则...
linux字符设备驱动学习笔记(一):简单的字符设备驱动
最近在鼓捣lnux字符设备驱动,在网上搜集的各种关于linux设备驱动的代码和注释,要么是针对2.4的,要么是错误百出,根本就不能运行成功,真希望大家在发博客的时候能认真核对下代码的正确性,特别是要把代码的运行环境和依赖条件列举出来,否则会对读者造成很大的误解。以下代码的运行环境为:操作系统:deb...
linux 驱动学习笔记03--Linux 内核的引导
如图所示为 X86 PC 上从上电/复位到运行 Linux 用户空间初始进程的流程。在进入与 Linux相关代码之间,会经历如下阶段。( 1 ) 当系统上电或复位时, CPU 会将 PC 指针赋值为一个特定的地址 0xFFFF0 并执行该地址处的指令。在 PC 机中,该地址位于 BIOS 中,它保存...
在Ubuntu上为Android系统编写Linux内核驱动程序(老罗学习笔记1)
这里,我们不会为真实的硬件设备编写内核驱动程序。为了方便描述为Android系统编写内核驱动程序的过程,我们使用一个虚拟的硬件设备,这个设备只有一个4字节的寄存器,它可读可写。想起我们第一次学习程序语言时,都喜欢用“Hello, World”作为例子,这里,我们就把这个虚拟的设备命名为“hello”...
嵌入式Linux驱动学习之路(二十)USB设备驱动
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID。在主机端,D+和D-都是下拉接地的。而设备端的D-接上拉时,表明此设备为高速设备:12M/s。 D+接上拉时则是全速设备:480M/S。PC的USB口中的D+D-有15K的下拉电阻,未接USB设备时,皆为低电平。而设备中的...
linux 驱动学习笔记01--Linux 内核的编译
由于用的学习材料是《linux设备驱动开发详解(第二版)》,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式。#make config(基于文本的最为传统的配置界面,不推荐使用)#make menuconfig(基于文本菜单的配置界面)#make...
TQ2440学习笔记——Linux上I2C驱动的两种实现方法(1)
作者:彭东林邮箱:pengdonglin137@163.com内核版本:Linux-3.14u-boot版本:U-Boot 2015.04硬件:TQ2440 (NorFlash:2M NandFlash:256M 内存:64M)摘要这里并不深入分析Linux下I2C驱动的实现,只是以TQ244...
嵌入式Linux驱动学习之路(十五)按键驱动-定时器防抖
在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开。而程序有时候会显示是两次按下,一次松开。这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定的波动,会让程序进行两次中断,如何解决这个问题呢?我们可以在发生一次中断之后等待一段时间再去判断按键...
如何在linux上搭建深度学习环境 :Ubuntu16.04 上显卡驱动、CUDA、cuDNN、tensorflow安装
1,首先要有台牛逼的主机,主机上要有英伟达的显卡 NVIDIA+CUDA目前在机器学习领域的地位还无人能够撼动 如何配主机请参照以下链接 https://www.zhihu.com/question/33996159/answer/102691414 2,Ubuntu系统安装好,考虑到大多数人都要装...
驱动开发学习笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇
驱动开发读书笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentation/driver-model/platform.txtDevice Enumeration 82 ...
Linux驱动学习1.hello world;
最近项目需要使用Linux系统开发,借此机会学习一下Linux驱动开发hello word代码hello.c#include <linux/module.h>#include <linux/init.h>static int hello_init(void)//模块入口{ ...
在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序(老罗学习笔记3)
简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中。接着,在Ubuntu上为Android系统编写Linux内核驱动程序(老罗学习笔记1)一文中举例子说明了如何在Linux内核编写驱动程序。在这一篇文章中,我们将继续介绍Android系统硬件驱动程序的另一方面实...
Linux设备驱动之Input子系统学习日记--笔者将分享学习一个全新的框架的方法并结合源码深入分析input子系统
目录 目录 前言 1Input子系统定义内核用来管理输入类设备的框架 2 Input 在linux系统中的定位以此引出怎样学习一个新的框架 3什么是输入输入的方式有哪些 ...
嵌入式Linux驱动学习之路(十五)按键驱动-定时器防抖
在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开。而程序有时候会显示是两次按下,一次松开。这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定的波动,会让程序进行两次中断,如何解决这个问题呢? 我们可以在发生一次中断之后等待一段时间再去判断按...
【Linux开发】V4L2驱动框架分析学习
Author:CJOKContact:cjok.liao#gmail.comSinaWeibo:@廖野cjok1、概述Video4Linux2是Linux内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取...
07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-按键驱动程序之异步通知机制+原子操作+互斥信号量+阻塞与非阻塞+定时器去抖
一、异步通知机制 从按键的实现方式来说,可以分为以下几种方式 查询方式,极度耗费CPU资源 中断方式,平时休眠,按键按下,唤醒休眠 poll机制,不需要一直read,根据poll返回值来决定是否read 以上都是应用程序主动去read。 下面来介绍异步通知实现按键,由驱动程序,提醒应用程序有...
11-S3C2440驱动学习(五)嵌入式linux-网络设备驱动(二)移植DM9000C网卡驱动程序
上一节 我们学习了嵌入式linux-网络设备驱动(一)虚拟网卡驱动程序 链接http://blog.csdn.net/fengyuwuzu0519/article/details/72809591 我们实现了一个虚拟网卡驱动程序,现在我们针对真实的网卡芯片DM9000C,编写移植DM9000C网...
Smart210学习记录-------Linux设备驱动结构
cdev结构体1 struct cdev { 2 struct kobject kobj; /* 内嵌的 kobject 对象 */ 3 struct module *owner; /*所属模块*/ 4 struct file_operations *ops; /*文件操...
Linux设备驱动之button按键驱动学习与小结
button按键驱动,相对于前面的LED驱动来说。增加了中断处理以及阻塞与非阻塞方式等新知识点。 先上学习的驱动代码。 内核:linux3.0 板子:fl2440 本文允许转载,但请注明出处:http://blog.csdn.net/u010944778/article/details/451136...
linux设备驱动学习(3) 字符设备驱动程序
主设备号,次设备号 主设备号表示设备对应的驱动程序;次设备号由内核使用,用于正确确定设备文件所指的设备。内核用dev_t类型(<linux/types.h>)来保存设备编号,dev_t是一个32位的数,12位表示主设备号,20为表示次设备号。在实际使用中,是通过<linux/kde...