linux开发笔记

  1. linux设备控制接口

    设备驱动程序的一个基本功能就是管理和控制设备,同时为用户应用程序提供管理和控制设备的接口。驱动支持设备控制接口,在Linux中这个接口是通过ioctl函数来实现的。

    ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:
    int ioctl(int fd, ind cmd, …);
        其中fd是用户程序打开设备时使用open函数返回的文件标示符,cmd是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这个参数的有无和cmd的意义相关。
        ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数来控制设备的I/O通道。
     ioctl的必要性
        如果不用ioctl的话,也可以实现对设备I/O通道的控制,但那是很乱的。例如,我们可以在驱动程序中实现write的时候检查一下是否有特殊约定的数据流通过,如果有的话,那么后面就跟着控制命令(一般在socket编程中常常这样做)。但是如果这样做的话,会导致代码分工不明,程序结构混乱,程序员自己也会头昏眼花的。所以,我们就使用ioctl来实现控制的功能。要记住,用户程序所作的只是通过命令码(cmd)告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程序要做的事情。

  2. MSB与LSB

    MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。  
    LSB(Least Significant Bit),意为最低有效位;MSB(Most Significant Bit),意为最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。

时间: 2024-08-28 20:32:15

linux开发笔记的相关文章

Linux 驱动开发笔记(一)

1.查看printk函数日记输出 (1)使用字符终端:通常使用ctrl+alt+f1切换查看: (2)使用cat /proc/kmsg命令:(在Linux系统启动后,/proc/kmsg文件可以查看内核对外所用的符号表,可以用cat命令查看器内容.) (3)使用dmesg命令查看. linux/kernel.h文件定义的printk函数的Log Level: 常数定义语句 意义 #define KERN_EMERG "<0>"/*系统不运行*/ #define KERN_A

Linux及Arm-Linux程序开发笔记(零基础入门篇)

Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer/archive/2011/05/05/2037449.html 目录 一.Arm-Linux程序开发平台简要介绍... 3 1.1程序开发所需系统及开发语言... 3 1.2系统平台搭建方式... 4 二.Linux开发平台搭建... 5 2.1安装虚拟工作站... 5 2.2安装Linux虚拟

(笔记) (ARM) QQ2440 开发板改为 GT2440 (Linux) (开发板)

QQ2440改 GT24401跟换Nand Flash   将QQ2440的Nand Flash k9f1208u0b (64M)焊接取下来,换上k9f2g08u0a 或k9f2g08u0b (256M)2.去掉QQ2440板上右边靠中间的电阻 NR5,不去掉无法从Nand Flash 启动 这里去掉电阻配置 Nand Flash Memory Configuration Table 对应的管脚 NCON0,      GPG13,    GPG14,    GPG15            

我的LINUX基础笔记

Linux系统管理      1 Day   2014.5.23 su -name   切换用户passwd 密码   更改密码gnome-terminal    伪CLI   桌面终端程序1.查看内核版本uname -r    2.查看红帽系统版本cat /etc/redhat-rdlease3.查看LINUX标准分发版信息  lsb_release4.查看网卡的IP,MAX       ifconfig                       ifconfig eth 10.0.0.10

【Kinect开发笔记之(一)】初识Kinect

一.Kinect简介 Kinect是微软在2010年6月14日对XBOX360体感周边外设正式发布的名字.它是一种3D体感摄影机(开发代号"Project Natal"),同时它导入了即时动态捕捉.影像辨识.麦克风输入.语音辨识.社群互动等功能. 二.Kinect分类 Kinect for Xbox 360:该版本设计之初就是为了Xbox 360定制的,并未考虑其他的平台.从微软授权角度而言,它无法用于商业开发. Kinect for Windows : 固件上做了升级,支持"

Linux学习笔记——虚拟机中安装VMware Tools

0 前言 VMware Tools是VMware虚拟机中自带的一种增强工具,只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,实现文件在虚拟机之间的复制粘贴. 最近购买了周立功的一款EasyARM开发板,作为树莓派Linux学习的补充.在虚拟机中安装了周立功提供的ubuntu镜像,总觉得在主机和PC机之间直接复制粘贴才爽,所以又安装了Vmware Tools.     [相关博文] [ Linux学习笔记--vmware plarer中安装ubunt

flask web开发笔记 -- 快速入门

flask web开发笔记 -- 快速入门 初始化 Flask应用需要创建应用实例. Web服务器通过Web Server Gateway Interface (WSGI)协议把从客户端接收到的请求传递给该对象.应用程序实例是Flask类对象,通常创建如下: from flask import Flask app = Flask(__name__) Flask类的构造函数唯一的参数是应用的主模块名或包名,用于确定应用的根目录.对于大多数应用程序,使用Python的__name__变量即可. 路由

DLNA&UPnP开发笔记(2)

由第一篇文章我们大致了解了DLNA的基本概念以及与UPnP的关系,本文主要介绍一下UPnP协议的基本组件和AV架构. 1.  UPnP协议组成 UPnP协议中,定义了两个主要的组件,一个是设备(Device),一个是控制点(Control Point).这就是为什么很多UPnP协议栈的SDK的接口代码一般都主要由Device和Control Point构成.设备是在网络中可见的对象,而控制点在网络中不可见. 一个UPnP的设备(Device)是不能直接访问和控制另一个UPnP的设备(Device

python运维开发笔记5

diff -Nur Diff和patch是Linux标配的工具.在Windows上,也有移植的版本可以使用. 使用中注意: 1.保证文件名完全相同,避免只有大小写不同的文件存在. 2.Diff只能比较文本文件,二进制文件只能判断是否相同,不能记录差异.Diff根据文件的前几个字节判断文件是不是文本文件. 使用方法: 可以对单个文件或者整个目录树进行处理. 以最实用的方式举例: diff –Nur dir_old dir_new > dir.patch patch –p0 < dir.patch