- 博客(30)
- 收藏
- 关注
原创 Linux中的LCD驱动程序设计
Linux中的LCD驱动程序设计 一块LCD屏显示图像不但需要LCD驱动器,还需要LCD控制器,帧缓冲设备对应的设备文件为/dev/fb*,如果系统有多个显卡,Linux还可支持多个帧缓冲设备,最多32个。 示例演示1、 清除LCDdd if=/dev/zeroof = /dev/fb0 bs=240 count=3202
2017-04-06 20:56:15
885
原创 Input输入型驱动程序设计
Input输入型驱动程序设计 Linux系统提供了input子系统,按键、触摸屏、鼠标等度可以利用input接口函数来实现设备驱动。体系结构如下图所示 设备描述 在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作是向系统报告按键、触摸屏、键盘、鼠标等输入事件((
2017-04-06 20:54:43
503
原创 Linux网卡驱动设计
Linux网卡驱动设计Linux网络体系结构 Linux的优点之一在于它丰富而稳定的网络协议栈。其范围从协议无关层到各种具体的网络协议实现。 协议层次对比图 网络接口层提供访问物理设备的驱动程序,对应的网络协议主要是以太网协议。 网络层协议管理离散计算机间的数据传输,如IP协议为用户和远程计算机提供了信
2017-04-06 20:53:18
2160
原创 tty串口驱动程序设计
tty串口驱动程序设计tty驱动程序构架 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备。1、 串口中断(/dev/ttyS*)2、 控制台终端(/dev/console)3、 虚拟终端(/dev/tty*) 控制台供内核使用的终端为控制台。控制台在Linux启动时,通过命令console=…指
2017-04-06 20:50:00
754
原创 PCI总线驱动程序设计
PCI总线驱动程序设计总线概念 总线是一种传输信号的信道;总线是连接一个或多个导体的电气连线。总线由电气接口和编程接口组成。PCI 是PeripheralComponent Interconnect(外围设备互联)的简称,是在桌面及更大型的计算机上普遍使用的外设总线。PCI总线具有三个非常显著的优点:1、 在计算机和外设间传输数据时具有更好的性能2、 能
2017-04-06 20:48:35
1349
原创 Platform总线
Platform总线 Platform总线实在Linux2.6内核加入的一种虚拟总线,platform机智的本身使用并不复杂,有两部分组成: platform_device和platform_driver。 Platform驱动与传统的设备驱动模型相比,优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序使用
2017-04-06 20:47:25
362
原创 Linux总线设备驱动模型
Linux总线设备驱动模型总线设计总线描述总线是处理器和设备之间的通道,在设备模型中,所有的设备读通过总线相连,甚至是内部的虚拟“platform”总线。在Linux设备模型中,总线由bus_type结构表示,定义在struct bus_type {const char *name; /* 总线名称*/struct bus_attribute *bus_attrs; /*
2017-04-06 20:43:33
469
原创 Linux中断处理程序设计
Linux中断处理程序设计中断概念 中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。 为什么需要中断?1、 外设的处理速度一般慢于CPU2、 CPU不能一直等待外部事件所以设备必须有一种方法来通知CPU它的工作进度,这种方法就是中断。中断实现 在Linux驱动程序设计中,为设备实现
2017-04-04 21:56:27
663
原创 Linux混杂设备驱动
Linux混杂设备驱动定义 在Linux系统中,存在一类简单的字符设备,它们共享一个主设备号10,但次设备号不同,我们称这类设备为混杂设备(miscdevice),它们会自动创建设备文件。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找相应的miscdevice设备。设备描述 structmiscdevice {int minor;
2017-04-04 21:23:28
291
原创 Linux阻塞型程序设计
Linux阻塞型程序设计等待队列 在Linux驱动程序设计中,可以使用等待队列来实现进程的阻塞,等待队列可以看做保存进程的容器,在阻塞进程时,将进程放入等待队列,当唤醒进程时,从等待队列中取出进程。Linux2.6内核提供了如下关于等待队列的操作1、 定义等待队列wait_queue_head_t my_queue2、 初始化等待队列init_wai
2017-04-04 21:22:53
281
原创 字符设备控制
字符设备控制在用户空间,使用ioctl系统调用来控制设备,原型如下: intioctl(int fd,unsigned long cmd,...)ioctl驱动方法有和用户空间版本不用的原型 int(*ioctl)(struct inode *inode,struct file *filp,unsigned int cmd,unsigned long
2017-04-04 21:22:07
192
原创 字符设备驱动模型
字符设备驱动模型整体框架 设备描述结构struct cdev{ structkobject kobj;struct module *ower;const struct file_operations *ops;//设备操作集struct list_head list;dev_t dev;//设备号unsigned int count;//
2017-04-04 21:20:00
227
原创 Linux驱动开发基础
Linux驱动开发基础驱动分类常规分类法1、 字符设备字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现open,close,read和write系统调用。例如:串口、LED、按键。2、 块设备在大部分的UIIX系统,块设备不能按字节处理数据,只能一次传输一个或多个长度是512字节(或一个更大的2次幂的数)的整块数据。而Linux则允许块设
2017-04-04 17:05:33
297
原创 硬件访问技术
硬件访问技术访问流程:地址映射-à读写存储器地址映射 在Linux系统中,无论是内核程序还是应用程序,都只能使用虚拟地址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和O
2017-04-04 17:03:53
301
原创 UBOOT
UBOOT定义 BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。流程 BootLoader的启动过程可分为单阶段和多阶段两种,通常多阶段的BootLoader具有更复杂的功能,更好的可移植性。从固态存储设备启动的BootLoader
2017-04-03 21:35:38
516
原创 Linux文件系统介绍
Linux文件系统介绍定义 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。Linux支持多种文件系统类型,包括ext2、ext3、vfat、jffs、romfs和nfs等,为了对跟各类文件系统进行统一管理,Linux引入了虚拟文件系统(vfs),为各类文件系统提供一个统
2017-04-03 21:33:43
416
原创 Linux系统构建
Linux系统构建交叉工具链 安装1、 解压工具链到某一目录下2、 修改/etc/profile,添加pathmunge/usr/local/arm/4.3.2/bin3、 执行source/etc/profile使用编译器 arm-linux-gcc反汇编工具 :arm-linux-objdumpELF文件查看工具:arm-linux
2017-04-03 21:31:43
293
原创 Linux内核地址空间
Linux内核地址空间内核空间 内核空间是内核负责映射,它并不会跟着进程改变,是固定的。空间分布 物理内存896MB以上的部分称为高端内存 直接映射区:线性地址=3G+物理地址。 动态映射区:该区域的地址由内核函数数vmalloc来来进行分配,其特点是线性空间连续,但对应的物理空间不一定连
2017-04-03 14:42:30
340
原创 Linux内核定时器
Linux内核定时器概念时钟中断由系统的定时硬件以周期性的时间间隔产生,这个间隔(即频率)由内核根据HZ来确定,HZ是一个与体系结构无关的常数,可配置(50-1200),在X86平台,默认值为1000。每当时钟中断发生时,全局变量jiffies(unsigned long)就加加1,因此jiffies记录了自linux启动后时钟中断发生的次数。驱动程序常利用jiffies来计算不同事件
2017-04-03 14:41:04
297
原创 linux内存管理子系统
linux内存管理子系统地址类型 物理地址:物理地址是指出现在CPU地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。 逻辑地址:程序代码经过编译后在汇编程序中使用的地址。 线性地址:又称虚拟地址。地址转换 CPU要将一个逻辑地址转换为物理地址,需要两步:首先CPU利用段式内存管理单
2017-04-03 14:08:59
411
原创 linux内核模块开发
linux内核模块开发什么是内核模块? linux内核的整体结构非常庞大,其包含的组件也非常多,如何使用需要的组件呢? 方法一:把所有的组件编译进内核文件,但这样会导致生成的内核文件过大和调整组件不方便。 因此需要我们的内核模块机制,其具有以下特点:1、 模块本身并不编译进内核文件2、 可以根据需求,在内核运行期间动态的安
2017-04-02 21:55:58
264
原创 linux内核配置与编译
linux内核配置与编译 Linux内核具有可定制的优点,具体步骤如下:1、 清除临时文件、中间文间和配置文件make clean removemost generated files but keep the configmake mrproperremove all generated files + config
2017-04-02 21:54:56
220
原创 linux内核简介
linux内核简介linux体系结构 从上图可知,linux由用户空间和内核空间两部分组成。 现代CPU通常实现了不同的工作模式,以ARM为例,实现了7种工作模式: 用户模式(usr)、快速中断(fiq)、外部中断(irq)、管理模式(svc)、数据访问中止(abt)、系统模式(sys)、未定义指令异常(und)。
2017-04-02 21:52:10
279
原创 linux网络程序应用
linux网络程序应用网络模型 计算机网络是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信,就是网络模型研究的问题。网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型。这两个模型在网络中应用最为广泛。OSI(Open System Interconnect),即开放式系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织
2017-04-02 16:48:03
761
原创 linux多线程设计
linux多线程设计概念线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建
2017-04-02 13:06:09
451
原创 linux进程通信(IPC)
linux进程通信(IPC)目的1、 数据传输2、 资源共享3、 通知事件4、 进程控制发展 Linux进程间通信(IPC)由以下几部分发展而来1、 UNIX进程间通信2、 基于System V进程间通信3、 POSIX进程间通信分类1、 管道与有名管道、2、 信号量3、 共享内存4、 消息队列5
2017-04-01 17:19:33
416
原创 linux文件编程与时间编程
Linux中的文件编程与时间编程文件编程与UNIX一样,Linux环境中的文件具有特别重要的意义,因为它们的操作系统服务和设备提供了一个简单而统一的接口。在linux中一切皆文件。这就意味着,通常程序可以像使用文件那样使用磁盘文件、串行口、打印机和其他设备。在输入输出操作中,直接使用底层系统调用的问题使它们的效率非常低。为什么呢?系统调用会影响系统的性能。与函数调用相比,系统调用的
2017-04-01 14:56:27
538
原创 linux中的进程控制
linux中的进程控制进程控制理论基础程序是一组可执行的静态指令集,而进程(process)是一个执行中的程序实例。利用分时技术,在Linux操作系统上同时可以运行多个进程。分时技术的基本原理是把CPU的运行时间划分成一个个规定长度的时间片,让每个进程在一个时间片内运行。当进程的时间片用完时系统就利用调度程序切换到另一个进程去运行。因此实际上对于具体单个CPU的机器来说某一个时刻只能运行一
2017-04-01 14:50:13
296
原创 国嵌视频第二季之ARMl裸机开发
国嵌视频第二季之ARM裸奔 开发板的介绍s3c2440处理器 2440norflash 2Mnandflash 256MRAM64Mlcd3.5寸 烧写linux系统顺序先使用J-LINK在windows上烧写boot-loader,再通过linux中的usb和windows的串口配合(v-k-y)依次烧写boot-loader,kernel和镜像。
2017-03-14 11:30:42
793
原创 国嵌视频第一季之嵌入式linux基础
嵌入式基础 linux常用命令cd 改变工作目录 ls 查看当前目录下的文件 chmod 改变权限 (r--读取权 w--写入权 x--执行权 )rwx r-x r--(自己 同组用户 其他用户)则可表示为:111 101 100 例:chmod 777 a.txt cp 将文件或目录复制到其他目录中 mv 移动文件命令
2017-03-13 09:55:05
449
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人