- 博客(15)
- 资源 (2)
- 收藏
- 关注
原创 Linux驱动中保存读写文件方法
在linux驱动开发中,经常要调试驱动,保存数据以便查看是否正确,方法如下:代码: #include #include #include static int filecount = 0; filecount++ char filename[50]; sprintf(filename,"/root/saveimg/filename_screen_%d",
2015-08-27 16:12:15
2390
2
原创 Linux netlink机制及示例
原理Netlink是一种在内核态和用户态可以进行双向数据传输的通信机制,也就是说,用户进程既可以作为服务器端又可以作为客户端,内核也是如此。用户进程和内核谁是服务器端谁是客户端,这个问题与谁先主动发起数据交互会话有关。用户进程主动向内核发起会话在Linux内核中很常见,比如系统调用、对/proc的操作等。本文通过详解一个简单的实例程序来说明用户进程通过netlink机制如何主动向内
2015-08-27 16:06:59
791
转载 Linux内核中内存相关的操作函数-2
1、kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) 内核空间申请指定大小的内存区域,返回内核空间虚拟地址。在函数实现中,如果申请的内存空间较大的话,会从buddy系统申请若干内存页面,如果申请的内存空间大小较小的话,会从slab系统中申请内存空间。 gfp_t
2015-06-24 17:51:44
438
转载 Linux内核中内存相关的操作函数-1
1.原理说明 Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示。四级页表分别为: * 页全局目录(Page Global Directory) * 页上级目录(Page Upper Directory) * 页中间目录(Page Middle Di
2015-06-24 17:47:03
353
转载 Linux设备驱动之I/O端口与I/O内存
Linux设备驱动之I/O端口与I/O内存一、统一编址与独立编址该部分来自于:http://blog.chinaunix.net/space.php?uid=21347954&do=blog&id=443670,感谢mason_hu的分享。 从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接
2015-06-19 16:50:13
337
转载 Linux 内存映射函数 mmap()函数详解
一、概述 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间用户空间两者之间需要大量数据传输等操作的话效率是非常高的。以下是一个把普遍文件映射到用户空间的内存区域的示意图。图一:二、基本函数 mma
2015-05-06 11:29:31
326
转载 CPU访问外设
在嵌入式编程里,特别是32bit CPU里,各种各样五花八门的动作是CPU通过对外设的驱动来完成的.因为底层编程大部分工作就是外设编程。 CPU本身几乎每一种外设都是通过读写设备上的寄存器来进行操作的。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。注意,这里的外设是相对于CPU来讲的,比如S3C2440除
2015-02-13 13:44:20
2223
2
转载 GPIO
首先应该理解什么是GPIO。GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口
2015-02-10 21:44:32
502
转载 I/O端口、I/O内存
1. CPU对外设IO端口物理地址的编址方式(1)I/O映射方式(I/O-mapped),即独立编址(2)内存映射方式(Memory-mapped),即统一 编址 1.1 独立编址 一些体系结构的CPU(典型地如X86)为外设专门实现了一个单独地地址空间,称为"I/O 地址空间"或者"I/O端口空间"。 这是一个与CPU地RAM物理地址空
2015-02-10 21:32:21
510
转载 有关像素深度bpp的概念
像素深度是指存储每个像素所用的位数,它也是用来度量图像的分辨率。像素深度决定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数。例如,一幅彩色图像的每个像素用R,G,B三个分量表示,若每个分量用8位,那么一个像素共用24位表示,就说像素的深度为24,每个像素可以是16 777 216(2的24次方)种颜色中的一种。在这个意义上,往往把像素深度说成是图像深度。表示一个像
2015-02-10 21:28:48
1097
转载 ./configure,make,make install的作用
./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。make是用来编译的,它从Makefile中读取指令,然后编译。make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。-----
2015-02-06 14:51:23
312
转载 详解FrameBuffer 二
(二)一个LCD显示芯片的驱动实例 以Skeleton LCD 控制器驱动为例,在LINUX中存有一个/fb/skeleton.c的skeleton的Framebuffer驱动程序,很简单,仅仅是填充了 fb_info结构,并且注册/注销自己。设备驱动是向用户程序提供系统调用接口,所以我们需要实现底层硬件操作并且定义file_operations 结构来向系统提供系统调用接口,从而实现更
2015-01-27 09:37:34
406
转载 详解FrameBuffer 一
一、FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出 FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过 Fram
2015-01-27 09:34:26
575
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人