Welcome 微信登录

首页 / 操作系统 / Linux

Linux设备模型分析之基本数据结构

Linux设备模型分析之基本数据结构

Linux随着硬件设备的发展及内核版本的演进,设备模型也变得越来月复杂,早先看了《Linux设备驱动程序》觉得一头雾水,又看了许多资料和高手的帖子,总算有了一定认识,下面写出来和Linux内核爱好者分享一下。 本文相配套的《Linux设备驱动程序》下载在http://www.linuxidc.net/thread-2029-1-1.html 共3卷,17M。一、底层数据结构:kobject 和 kset1、kobject内核对象:Linux2.6设备模型的...
Linux:主设备号和次设备号

Linux:主设备号和次设备号

Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编号,如硬盘的主设备号是3。 一个字符设备或者块设备都有一个主设备号和次设备号。主设备号...
第一个Linux驱动-s3c6410 gpio

第一个Linux驱动-s3c6410 gpio

前段时间学着写了第一个linux下的驱动,很简单,基于友善之臂的tiny6410,通过控制GPIOK4-7输入输出来控制板上的4个led。led的驱动友善已经提供,不过我自己写的有些不一样,是按照标准的char驱动来写的,下面是全过程。注意:此代码基于友善之臂提供的已经移植好的linux2.6.36核心第一步编写驱动代码//tiny6410_gpio.c#include <linux/miscdevice.h>#include <linu...
Linux网络编程UDP过程遇到的问题记录

Linux网络编程UDP过程遇到的问题记录

几天来写的代码,一经测试,竟然最基本的练级都没有成功。甚是失望~整了两天的时间终于解决了该些问题。现在记录下来。first of all,关于sendto()和recvfrom()的参数问题。recvfrom()的最后的一个参数lenth是指针整型的,而sendto()是普通整形,看了那么长时间的书竟然刚发现这个问题,甚是汗颜。如果在这两个参数错误,perror()会提示“address error”。sencondly,关于ip地址的表示。格式:“x.x...
嵌入式开发板与PC串口传输文件

嵌入式开发板与PC串口传输文件

目标板与主机pc传输文件问题,可以使用linux的工具lrzsz 工具,交叉编译后把 lrz lsz 传输到目标版的bin目录下,然后在想要接受文件的目录下运行lrz :比如 cd /tmp 在tmp目录下运行lrz 则接受到的文件就放在tmp下。 我的串口传输用kermit 所以需要在运行先设置一下kermit的配置 在/home/richard/.kermit 文件中写道:set line /dev/ttyUSB0set speed 115200se...
Linux Shell 编程笔记

Linux Shell 编程笔记

其实作为命令语言交互式地解释和执行用户输入的命令只是shell功能的一个方面,shell还可以用来进行程序设计,它提供了定义变量和参数的手段以及丰富的程序控制结构。使用shell编程类似于DOS中的批处理文件,称为shell script,又叫shell程序或shell命令文件。1.shell基本语法shell的基本语法主要就是如何输入命令运行程序以及如何在程序之间通过shell的一些参数提供便利手段来进行通讯。(1)输入输出重定向在Linux中,每一个进...
Android下耳机HOOK键功能开发

Android下耳机HOOK键功能开发

目前大多数耳机线上,都有一个key,可以用来接听电话、解决电话、FM换台等功能,那么在Android平台上怎么实现呢?首先得解决Linux kernel里驱动的问题,headset的这个key在硬件上一般都会连接到SOC的GPIO上,或者变相接到GPIO上,所谓变相就是不直接连接,而是通过codec内部产生一个中断给SOC的GPIO,codec有自己GPIO的可以将此GPIO直接连到SOC的GPIO,但是这两种方案有很大区别,方案一直接连SOC的GPIO的...
Android 开发手记之NDK 编程实例

Android 开发手记之NDK 编程实例

在 Android 上,应用程序的开发,大部分基于 Java 语言来实现。要使用 c 或是 c++ 的程序或库,就需要使用 NDK 来实现。 NDK 是 Native Development Kit 的简称。它是一个工具集,集成了 Android 的交叉编译环境,并提供了一套比较方便的 Makefile ,可以帮助开发者快速开发 C 或是 C++ 的动态库,并自动的将 so 和 java 程序打包成 apk ,在 Android 上运行。好,闲话少说,我们...
Linux 增加Zydas WiFi模块

Linux 增加Zydas WiFi模块

在S3C2440开发上增加 USB WiFi 网卡,就可以通过无线上网。手头正好有一块现成的Zydas的WiFi网卡。试试无线通讯.一.增加USB网卡驱动Linux 2.6.29 加入Zydas 的驱动支持.动态模块形式.一般采用WiFi Zyda 2611的网卡,注意在内核中有一个ZB1201的无法驱动比较新的网卡,make modules 编译动态模块最终的zd1201.ko即是所需的动态模块.将其拷出来用insmod zd1201.ko 安装,(注意...
移植WIFI无线网卡到mini2440上全过程

移植WIFI无线网卡到mini2440上全过程

前段时间移植了U-boot和linux2.6.27.9到mini2440上,最近有点空,手头有一个usb接口的zd1211b芯片的wifi无线网卡(PSP和NDSL玩家都知道的神卡),于是决定在内核中加入此无线网卡的驱动。我是在我移植的linux2.6.27.9内核上移植的。关于内核移植,请看我的这篇文章。http://www.linuxidc.com/Linux/2011-03/33933.htm新版的linux2.6.27.9已自带zd1211b的驱动...
Linux设备模型(热插拔、mdev 与 firmware)

Linux设备模型(热插拔、mdev 与 firmware)

热插拔有 2 个不同角度来看待热插拔: 从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。 从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、udev 和 mdev)的交互。 当需要通知用户内核发生了某种热插拔事件时,内核才调用这个用户空间程序。现在的计算机系统,要求 Linux 内核能够在硬件从系统中增删时,可靠稳定地运行。这就对设备驱动作者增加了压力,因为在他们必须处理一个毫无征兆地突然出现或消失的设备。热插拔工具...
Linux2.6.27.9移植到mini2440

Linux2.6.27.9移植到mini2440

终于完成了linux2.6.27.9到mini2440的移植。全部功能都正常了。支持yaffs文件系统。支持lcd,触摸屏等。移植文档正在整理中,现在把几个难点大致讲一下。linux2.6.27.9对S3C2440的支持是很好的。要想让它在S3C2440上跑起来基本不需要改动什么。难在一些驱动的移植上,如网卡驱动,uda1341驱动。一是因为linux2.6.27.9很多头文件的位置发生了变化,要重新寻找,一是很多网上提供的驱动中的很多函数已不再支持,要使...
Linux音频驱动之二:声卡的创建

Linux音频驱动之二:声卡的创建

1. struct snd_card1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体。正因为如此,本节中,我们也从 struct cnd_card开始吧。Linux音频驱动之一:ALSA架构简介1.2. snd_card的定义snd_card的定义位于改头文...
<< 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 >>