08 2019 档案
摘要:1、前言 什么是字节对齐呢?现代计算机中的内存空间都是按字节(byte)划分的,从理论上讲似乎任何类型的变量的访问都可以从任何地址开始,但是实际情况是在访问特定变量的时候经常需要在特定的内存地址进行访问,因此,就需要各种类型数据按照一定的规则在空间上排列,而不是顺序地一个接一个地排放,这就是字节对齐
阅读全文
摘要:1、简介 Git是一个开源的分布式版本控制系统,能用于快速高效地处理任何或小或大的项目,它是Linus Torvalds为了帮助管理Linux内核开发而开发的一个源码开放的版本控制软件。 2、Linux平台安装git Git的工作需要调用curl、zlib、openssl等库,因此在安装git之前需
阅读全文
摘要:1、apt-get命令 apt-get命令是Debian Linux发行版中的APT软件包管理工具,所有基于Debian的发行都使用这个包管理系统。 (1)命令语法 (2)常用选项 -c:指定配置文件。 (3)参数 管理指令:对APT软件包的管理操作。 软件包:指定要操作的软件包。 (4)实例 使用
阅读全文
摘要:1、前言 在C语言的结构体中,由于字节对齐的问题,所以成员的地址并不能直接根据数据类型的大小进行计算,使用宏offsetof可以获得结构体成员相对于结构体首地址的字节偏移量。 2、offsetof宏实现 在C标准库中offsetof的声明如下,需要包含头文件<stddef.h>: size_t of
阅读全文
摘要:1、前言 Linux内核中有大量的驱动,而这些驱动往往具有类似的结构,根据面向对象的思想,可以将共同的部分提取为父类,而这个父类就是kobject,kobject结构体中包含了大量设备的必须信息,而三大类设备驱动都需要包含这个kobject结构,运用面向对象的思想来看问题,也就是继承来自kobjec
阅读全文
摘要:sysfs - _The_ filesystem for exporting kernel objects. sysfs – 用于导出内核对象(kobject)的文件系统 Patrick Mochel <mochel@osdl.org> Mike Murphy <mamurph@cs.clemson
阅读全文
摘要:Everything you never wanted to know about kobjects, ksets, and ktypes 关于kobject,kset和ktypes的一切,你永远不会想知道 :Author: Greg Kroah-Hartman <gregkh@linuxfound
阅读全文
摘要:1、前言 struct kref结构体是一个引用计数器,它被嵌套进其它的结构体中,记录所嵌套结构的引用计数。引用计数用于检测内核中有多少地方使用了某个对象,每当内核的一个部分需要某个对象所包含的信息时,则该对象的引用计数加1,如果不需要相应的信息,则对该对象的引用计数减1,当引用计数为0时,内核知道
阅读全文
摘要:1、losetup命令 Linux系统losetup命令用来设置循坏设备,循坏设备可以把文件虚拟成块设备,借此来模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱等设备,并挂入当作目录来使用。 (1)语法 (2)常用选项 -a:显示所有循坏设备的状态。 -d:卸载设备。 -e<加密选项>:启动加密
阅读全文
摘要:1、mke2fs命令 在Linux系统下,mke2fs命令可用于创建磁盘分区上的”ext2/ext3”文件系统。 (1)语法 (2)常用选项 -b<区块大小>:指定区块大小,单位为字节。 -c:检查是否有损坏的区块。 -f<不连续区段大小>:指定不连续区段的大小,单位为字节。 -F:不管指定的设备为
阅读全文
摘要:1、mount命令 在Linux系统下,mount命令用于加载文件系统到指定的加载点。 (1)命令语法 (2)常用选项说明 -V:显示版本。 -l:显示已加载的文件系统列表。 -h:显示帮助信息并退出。 -v:冗长模式,输出指令执行的详细信息。 -n:加载没有写入文件“/etc/mtab”中的文件系
阅读全文
摘要:1、mknod命令 在Linux系统下,mknod命令可用于系统下字符设备文件和块设备文件的创建。 (1)命令语法 (2)常用选项说明 -Z:设置安全的上下文。 -m:设置权限信息。 -help:显示帮助信息。 --version:显示版本信息。 (3)参数 文件名:要创建的设备文件名。 类型:指定
阅读全文
摘要:1、insmod命令 在Linux系统下,insmod命令用于将给定的模块加载到内核中去,Linux系统有许多功能是通过模块的方式,在需要时才载入kernel,这样做可以使kernel较为精简,进而提高效率,这类可载入的模块,通常是设备驱动程序。 (1)命令语法 insmod(选项)(参数) (2)
阅读全文
摘要:1、dd命令的使用 dd命令用于复制文件并对源文件的内容进行转换和格式化处理,在有需要的时候可以使用dd命令对物理磁盘进行操作,使用dd对磁盘操作时,最好使用块设备文件。 (1)命令语法 (2)常用选项说明 if=filename:输入文件名,默认为标准输入,即指定源文件。 of=filename:
阅读全文
摘要:1、globalmem虚拟设备实例 globalmem为“全局内存”的意思,在globalmem字符设备中会分配一片大小为GLOBALMEM_SIZE(4KB)的内存空间,并在驱动中提供对这片内存的读写、控制和定位函数,供用户空间的进程能通过Linux系统调用获取和设置这片内存。 (1)头文件、宏以
阅读全文
摘要:1、Linux字符设备驱动的基本结构 Linux系统下具有三种设备,分别是字符设备、块设备和网络设备,Linux下的字符设备是指只能一个字节一个字节读写的设备,不能随机读取设备内存中某一数据,读取数据的时候需要按照先后顺序进行,字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED
阅读全文
摘要:一、双向链表list_head Linux内核驱动开发会经常用到Linux内核中经典的双向链表list_head,以及它的拓展接口和宏定义:list_add、list_add_tail、list_del、list_entry、list_for_each等。 在内核源码中,list_head结构体的定
阅读全文
摘要:1、Linux文件的基本操作 Linux文件的基本操作主要包括了文件的创建、打开、读写和关闭等基本操作。 1.1、文件操作系统调用 (1)创建文件系统函数 int creat(const char *pathname, mode_t mode); 参数: pathname:要创建文件的名称 mode
阅读全文
摘要:本文章将介绍如何在Ubunt下进行Linux源码下载,并进行简单的编译步骤。 1、下载linux源码 先查看对应的Ubuntu对应版本源码 $ sudo apt-cache search linux-source 查看Ubuntu的源码版本相关信息 $ uname -a 使用命令下载对应的源码并解压
阅读全文
摘要:在Linux驱动开发过程中,往往需要搭建交叉编译开发环境,其中,最重要的环节就是安装交叉编译工具链,本文介绍如何在Ubuntu下搭建交叉编译开发环境。 1、官网下载交叉编译工具链 链接如下: https://www.linaro.org/downloads/ 2、解压文件 $ mv gcc-lina
阅读全文
摘要:如何去更改printk的打印级别? 1、查看当前控制台的打印级别 # cat /proc/sys/kernel/printk 该文件有4个数字值,它们根据日志记录消息的重要性,定义将其发送到何处,上面显示的4个数据分别对应如下: 控制台日志级别:优先级高于该值得消息将被打印到到控制台; 默认的消息日
阅读全文
摘要:1、find命令的使用 在Linux中可以使用find命令在指定的目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,当使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并将查找到的文件进行全部显示。 (1)命令语法 find命令的语法如下: find根据下面
阅读全文
摘要:在Linux系统中,vim是一款非常好用的文本编辑器,那么,如何在Linux下的vim编辑器设定Tab的缩进长度呢? Linux系统下,vim编辑器Tab键的默认长度为8个空格,在vim中可以通过修改用户的配置文件来进行设置,设置步骤如下。 1、创建.vimrc配置文件 用户可以通过下面的命令进行配
阅读全文