- 博客(48)
- 收藏
- 关注
原创 tty驱动详解
/dev/tty代表当前tty设备,在当前的终端中输入 echo “hello” > /dev/tty ,都会直接显示在当前的终端中。/dev/ttyS*是串行终端设备。/dev/pty*即伪终端,所谓伪终端是逻辑上的终端设备,多用于模拟终端程序。例如,我们在X Window下打开的终端,以及我们在Windows使用telnet 或ssh等方式登录Linux主机,此时均在使用pty设备(准确
2013-08-22 21:36:59
2611
原创 longson平台显卡驱动
[gentoo]amd显卡将闭源驱动换成开源驱动+kms听说开源驱动现在已经不错了,就试着把系统里面的闭源驱动(fglrx)切换成开源驱动。首先,先卸载闭源驱动:emerge -C x11-drivers/ati-drivers,因为现在用的xorg.conf是通过ati的命令生成的,先干掉。然后,在make.conf中的VIDEO_CARDS环境变量中,将原来的fglrx改成ra
2013-08-22 19:17:25
1774
原创 将终端默认shell设置成bash
jason:~/linux-kernel/arm8168$ sudo dpkg-reconfigure dash[sudo] password for jason: 正在删除 dash 导致 /bin/sh 本地修改至 /bin/sh.distrib正在添加 bash 导致 /bin/sh 本地修改至 /bin/sh.distrib正在删除 dash 导致 /usr/share/m
2013-08-22 15:49:12
4099
原创 内核初始化与gpio子系统
定义在linux/arch/arm/plat-s3c/gpio-config.cint s3c_gpio_cfgpin(unsigned int pin, unsigned int config){struct s3c_gpio_chip *chip = s3c_gpiolib_getchip(pin); //得到对应GPIO结构体首指针,里面包含了该GPIO的各种参数unsig
2013-08-22 15:45:25
3298
原创 mcp2510驱动备份
MCP2515 CAN控制器的使用MCP2515最高支持SPI速率为10MHZ,本身CAN速率最高支持1MHZ(传输距离缩短),只支持SPI倆种传输模式 00,11。有些寄存器只能在配置模式修改。MCP2510的发送操作通过三个发送缓冲器来实现。这三个发送缓冲器各占据14个字节的SRAM。第一字节是控制寄存器TXBNCTRL,该寄存器里的内容设定了信息发送的条件,且给出了信息的发送状态;第
2013-08-21 16:13:42
2426
原创 spi读写分析
1.spi_write_then_readstatic int s3c24xx_spi_setupxfer(struct spi_device *spi, struct spi_transfer *t) { /*设置了每字长的位数,发送速度*/ bpw = t ? t->bits_per_word : spi->bits
2013-08-21 15:20:35
7101
原创 spi子系统
ti8168驱动备份queue_work调度执行一个指定workqueue中的任务。输入参数:@ workqueue_struct:指定的workqueue指针@work_struct:具体任务对象指针spi目录下Makefile:ccflags-$(CONFIG_SPI_DEBUG) := -DDEBUG 如果配置了SPI_DEBUG则添加DDEBUG宏定义;其中cc
2013-08-21 15:07:18
2093
原创 platform
一.platform bus1.结构表示platform bus也是一种设备:struct device platform_bus = { .init_name = "platform",};struct bus_type platform_bus_type = { .name = "platform", .dev_at
2013-08-21 11:35:03
1037
原创 sysfs
1.bus_create_fileint bus_create_file(struct bus_type *bus, struct bus_attribute *attr)//参数为(bus, &bus_attr_drivers_autoprobe){ int error; if (bus_get(bus)) { e
2013-08-21 11:21:10
754
原创 device
1.device的结构:struct device{ struct klist klist_children; //设备列表中的子列表 struct klist_node knode_parent; //兄弟节点 struct klist_node knode_driver; //驱动程序节点 struc
2013-08-21 11:16:59
1068
原创 driver
1.driver结构struct device_driver { const char *name; //名字 struct bus_type *bus; //其所在的bus int (*probe) (struct device *dev); //匹配成功时可能会调用到的函数
2013-08-21 11:16:26
1043
原创 bus
"ls" 命令的 "-F" 命令为所列出的每个文件使用后缀来显示文件的类型,后缀 "/" 表示列出的是目录,后缀 "@" 表示列出的是符号链接文件。1.bus定义总线是不同IC器件之间相互通讯的通道;在计算机中,一个总线就是处理器与一个或多个不同外设之间的通讯通道;为了设备模型的目的,所有的设备都通过总线相互连接,甚至当它是一个内部的虚拟总线(如,platform总线);例如,设备模型
2013-08-21 11:15:57
3124
原创 kset
1.kset结构struct kset { /** struct list_head list; /** 用于连接该kset中所有kobject以形成环形链表的链表头 */ spinlock_t list_lock; /** struct kobject kobj; /**内嵌的kobject。这样kset本身也是一个kobject
2013-08-21 11:15:21
7800
原创 kobject
1.Kobject结构每个在内核中注册的kobject都对应于sysfs文件系统中的一个目录。struct kobject { const char *name; //kobject的名称 struct list_head entry; //kobject 之间的双向链表,与所属的kset形
2013-08-21 11:14:14
1033
原创 sys fs的原理和使用
本文摘自网络2.6内核要求 sysfs 总是挂载在 /sys 目录上.sysfs 与 procsysfs 与 proc 相比最重要的莫过于设计上的清晰。一个 proc 虚拟文件可能有内部格式,如 /proc/scsi/scsi ,它是可读可写的,(其文件权限被错误地标记为了 0444 !,这是内核的一个BUG),并且读写格式不一样,代表不同的操作,应用程序中读到了这个文件的内容一般还需
2013-07-27 16:40:53
2870
原创 uboot中nand详细分析(一)
一.gpmc初始化uboot首先执行start.s,初始化cpu并从nand中拷贝其他代码到内存中;最后跳转到start_armboot()函数;在start_armboot()中,循环初始化外设,其中board_init()函数就调用gpmc_init()初始化了gpmc:void gpmc_init(void){ //通过把gpmc_cfg指向gpmc基地
2013-07-18 14:43:36
4734
原创 uboot nand 备份
1.nand_init_chip()顺序调用board_nand_init()和nand_scan()实现NAND FLASH初始化工作。2.其中board_nand_init()实现S3C2440 NAND FLASH控制器相关的初始化,设置控制器的时序,设置寄存器的读写地址。3.nand_scan()主要实现NAND FLASH各种参数设置(比如自动识别NAND FLASH的大小、每一
2013-07-17 13:24:21
3487
转载 ECC算法的详细说明
今天本来是想写NAND的读写来着,可是这个东东要用到ECC的算法,就深入进来了,从网上找了些资料,不是很好,直到找到这个,郑重感谢Linux时代网站的wwxbei (旺旺) ,在黑暗中点亮了指明方向的路灯。http://linux.chinaunix.net/bbs/viewthread.php?tid=1116253&extra=page%3D1以下为转载,为之备忘!ECC
2013-07-17 09:21:33
14749
转载 BIOS中断大全
BIOS中断:1、显示服务(Video Service——INT 10H) 00H —设置显示器模式0CH —写图形象素01H —设置光标形状0DH —读图形象素02H —设置光标位置0EH —在Teletype模式下显示字符03H —读取光标信息0FH —读取显示器模式04H —读取光笔位置10H —颜色05H —设置显示页11H —字体06H、07H —初始
2013-06-28 12:23:02
826
原创 linux使用备份
vmstat可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下问切换、CPU使用等。除了 sysstat 工具包外,这个工具能查看的系统资源最多。free命令显示系统内存的使用状况(物理内存和交换内存)通过这个命令我们可以看到系统进程实际使用的物理内存,buffer和cache使用的物理内存这行分别显示了物理内存的总量(total)、已使用的(used)、空闲
2013-06-28 11:03:26
1053
原创 x window配置
一.xorg.conf配置文件生成xorg.conf文件关闭x window:init 3 生成配置文件:X -configure然后就可以生成xorg.conf.1. 编译内核时选中内核驱动:drivers/char/agpgart/VIA chipsetdrivers/char/drm/ATI Radeon2. 安装ati xserver驱动: apt-
2013-06-28 10:35:40
4858
原创 数据校验
奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶 校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校 验“1”的个数是否为奇数,从而确定传输代码的正确性。ECC校验是一种内存纠错原理,它是比较先进的内存错误
2013-06-17 15:25:49
2789
原创 nor flash
NOR FLASH的读取和RAM很类似,但不可以直接进行写操作。对NOR FLASH的写操作需要遵循特定的命令序列,最终由芯片内部的控制单元完成写操作。从支持的最小访问单元来看,NOR FLASH一般分为 8 位的和16位的(当然,也有很多NOR FLASH芯片同时支持8位模式和是16 位模式,具体的工作模式通过特定的管脚进行选择) 。 对8位的 NOR FLASH芯片,或是工作在8-BIT模式的
2013-06-17 15:25:11
941
原创 word转换成html
一.概述将word转换成html,然后在qt中将html显示出来。其中先要将word文档解析成xml文档,这里需要base64方法,具体介绍如下:Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个位元为一个单元,对应某个可打印字符。三个字节有24个位元,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮
2013-06-17 15:21:47
2285
原创 X Window
X Window从逻辑上分为三层:X Server、X Client和X协议。最底层的X Server(X服务器)主要处理输入/输出信息并维护相关资源,它接受来自键盘、鼠标的操作并将它交给X Client(X客户端)作出反馈,而由X Client传来的输出信息也由它来负责输出;最上层的X Client则提供一个完整的GUI界面,负责与用户的直接交互(KDE、GNOME都是一个X Clien
2013-06-17 15:20:57
1036
原创 OSS驱动
最常用的音频接口:蓝色:音频输入端口,可将MP3、录音机、音响等的音频输出端通过双头3.5mm的音频线连接到电脑,通过电脑再进行处理或者录制。蓝色接口在四声道/六声道音效设置下,还可以连接后置环绕喇叭,在8声道输出时,仍为音频输入端口。绿色:音频输出端口,用于连接耳机或2.0、2.1音箱。粉色:麦克风端口,用于连接到麦克风。黑色:后置环绕喇叭接头,在四声道,六声道,八声道音效设置下,用
2013-06-17 15:08:41
946
原创 hd audio驱动
hd_audio引脚:RST(Intel High Definition Audio Reset): This signal is the master hardware reset to external codec(s).SYNC(Intel High Definition Audio Sync): This signal is a 48 kHz fixed rate sample
2013-06-17 15:07:40
3852
原创 platform框架
1.platform_device结构体struct platform_device {const char * name;/* 设备名 */u32 id;struct device dev;u32 num_resources;/* 设备所使用各类资源数量 */struct resource * resource;/* 资源 */};设备的分配:stru
2013-06-17 15:02:38
900
原创 USB鼠标驱动
/var/log/messages查看错误信息1.各种描述符七种描述符:设备,配置,借口,端点,字符串,Qualifier,other speed configuration;还有一些类特殊描述符:如hid描述符和音频借口描述符,厂商自定义的描述符等。设备描述符决定该设备有多少配置,每一层都对下层描述符描述;首先获取设备描述符,接着获取配置描述符,然后根据配置描述符中的配置集合
2013-06-17 15:01:57
974
原创 I2C驱动
I2C设备驱动程序编写首先要明确适配器驱动的作用是让我们能够通过它发出符合I2C标准协议的时序。在Linux内核源代码中的drivers/i2c/busses目录下包含着一些适配器的驱动。如S3C2410的驱动i2c-s3c2410.c。当适配器加载到内核后,接下来的工作就要针对具体的设备编写设备驱动了。编写I2C设备驱动也有两种方法。一种是利用系统给我们提供的i2c-dev.
2013-06-17 14:59:26
728
原创 linux串口驱动
一.常见结构体的分析1.tty_driver结构体:struct tty_driver { int magic; struct cdev cdev; /* 对应的字符设备cdev */ struct module *owner; /*这个驱动的模块拥有者 */ const char *driver_name; const char *devfs_name;
2013-06-17 14:58:45
914
原创 dm9000驱动介绍
一. 硬件情况DM9000在电路板上的连接中与编程相关的如下:1)EECS拉高:16bit模式;2)EECK拉高,INT连接到2440 EINT7:INT脚为低时为有效中断信号,中断线为EINT73)cs连接到2440的nGCS2,CMD连接2440地址总线ADDR[2]:INDEX和DATA端口地址分别为0x1000_0000和0x1000_0004。知道上面这些信息已经
2013-06-17 14:58:07
862
原创 framebuffer驱动
一.应用程序在fb_fix_screeninfo中有__u32 smem_len 是这个/dev/fb0的大小,也就是内存大小。__u32 line_length 是屏幕上一行的点在内存中占有的空间,不是一行上的点数。在fb_var_screeninfo 中有__u32 xres ,__u32 yres 是x和y方向的分辨率,就是两个方向上的点数。__u32 bit
2013-06-17 14:57:16
918
原创 spi驱动
一 管脚SPI以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时):(1)SDO – 主设备数据输出,从设备数据输入(2)SDI – 主设备数据输入,从设备数据输出(3)SCLK – 时钟信号,由主设备产生(4)CS – 从设备使能信号,由主设备控制二四种工作方式SPI输出串行同步
2013-06-17 14:56:27
1309
原创 中断/IO/DMA
一.中断操作与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(),request_irq()的原型为:int request_irq(unsigned int irq,void (*handler)(int irq, void *dev_id, struct pt_regs *regs),unsigned long
2013-06-17 14:55:30
1145
原创 字符设备驱动
字符设备驱动程序是由一个cdev结构描述的,其定义为:struct cdev {struct kobject kobj;//内嵌的kobjectstruct module *owner;const struct file_operations *ops;struct list_head list;//与字符设备文件对应的索引节点链表的头,该链表用于收集相同字符设备驱动程
2013-06-17 14:54:45
534
原创 linux之.config,makefile,kconfig
1.顶层顶层的Makefile文档读取内核配置文件.config文档的内容.递归向下访问子目录的形式完成build内核和模块的工作。.config文件的内容是在makemenuconfig的时候,通过Kconfig文档配置的结果.arch/$(ARCH)/Makefile则提供补充体系结构相关的信息;2.内核中的kconfig每个Kconfig分别描述了所属目录源文件相关的
2013-06-17 14:53:50
764
原创 ARM MMU简介
一. CP15寄存器mcr将ARM处理器的寄存器中的数据写到CP15中的寄存器中mrc将CP15中的寄存器中的数据读到ARM处理器的寄存器中4.1.2 CP15寄存器介绍寄存器编号基本作用在MMU中的作用在PU中的作用0ID编码
2013-06-17 14:45:03
1632
原创 AC97 与 HD audio的区别
一.AC97AC'97规范的特点就是双集成结构,分为Digital Controller(数字信号控制器)和Audio Codec。ADC和DAC模块独立出来成为一块称之为“Audio Codec”的小型芯片。声卡的主芯片即数字部分则成为一块称之为“Digital Control”(数字信号控制器)的大芯片(也就是集成I/O控制与DSP的主芯片)。Digital Controller和Audi
2013-06-09 12:34:06
11139
原创 oss编程
一、概述1.声卡声卡有三个基本功能:一是音乐合成发音功能;二是混音器(Mixer)功能和数字声音效果处理器(DSP)功能;三是模拟声音信号的输入和输出功能。混音器的作用是将来自音乐合成器、CD-ROM、话筒输入(MIC)等不同来源的声音组合在一起再输出,混音器是每种声音卡都有的。模拟声音输入输出功能 主要是A/D、D/A转换。2.MP3格式MP3其中的VBR,ABR
2013-06-09 12:30:15
1892
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人