自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DreamCatcher100的专栏

每天进步一点点

  • 博客(45)
  • 资源 (5)
  • 收藏
  • 关注

转载 Ceph Monitor源码机制分析(三)—— 选举

Ceph Monitor源码机制分析(三)—— 选举Monitor的选举机制Monitor要做的事情很明确了,就是管理、维护和发布集群的状态信息,但是为了避免单点故障或者性能热点问题,一般使用多个Monitor来做这一件事情,也就是管理层有多个成员。集群的正常运行,首先需要管理层达成一致,达成一致就需要有一个能拍板的monitor(leader),大家都听它的就行了。所以要达成一致核心问题就是在众多monitor中选出那个能拍板的monitor。Ceph解决这个问题的方法很简单,有点类似于领导人的选举

2021-04-25 18:58:34 510

转载 Ceph Monitor源码机制分析(二)—— 初始化

Ceph Monitor源码机制分析(二)—— 初始化2 Monitor的初始化Monitor的启动过程,相对比较简单,具体过程参见ceph_mon.cc这个源码文件。大概可以分为以下几部分:介绍ceph_mon命令能够处理的参数以及使用方法根据配置文件指定的mon_data目录创建名为store的MonitorDBStore实例并且打开数据目录。判断当前数据目录的使用情况是否超过报警限制。并且读出store的magic number确保store是正常的。mon第一次启动时,会执行mkfs操

2021-04-25 18:56:11 357

转载 Ceph Monitor源码机制分析(一)—— 概述

Ceph Monitor源码机制分析(一)—— 概述0 前言最近终于有点时间可以看看Ceph的代码了,接下来准备就Ceph monitor这个Ceph集群中最重要的组件进行深入的分析。1 Monitor的作用Monitor在Ceph集群中扮演着管理者的角色,维护了整个集群的状态(抽象成几张map,包括osdmap、monmap、mdsmap、auth、log等),保证集群的相关组件在同一时刻能够达成一致,相当于集群中的领导层。之所以说是相关而不是所有的主要是因为OSD map的更新采用了类似于灰度

2021-04-25 18:55:04 494

转载 java学习方向及主要内容

Java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习:*第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架; *第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及; *第三阶段:J

2017-01-02 21:59:59 499

原创 让qt程序在mini2440上支持触摸屏

1.设置qt运行的环境变量:#!/bin/sh#configure for tslibexport TSLIB_ROOT=/opt/tslib                               export TSLIB_TSDEVICE=/dev/input/event0                                                  

2013-09-25 20:57:59 862

原创 QT4在ubuntu上的安装及在mini2440上的移植

qt-everywhere-opensource-src-4.6.2/lib/libQtGui.so: undefined reference to `ts_read_raw'

2013-09-23 21:58:13 1277

原创 用tslib1.4校准mini2440触摸屏

1.解压tslib-1.4.tar.gz到某目录下clx@Think:/work$ cd tslibclx@Think:/work/tslib$ lsacinclude.m4      autom4te.cache  CVS          NEWS     tslib.pc.inaclocal.m4        ChangeLog       etc          p

2013-09-15 21:30:44 2054

原创 Linux设备驱动开发基础---mini2440触摸屏驱动

一、触摸屏设备工作原理1、触摸屏设备的类型触摸屏按其技术原理可分为五类:矢量压力传感式、电阻式、电容式、红外线式、表面声波式,其中电阻式触摸屏在嵌入式系统中用的较多。

2013-08-05 23:49:23 1239

转载 Input子系统分析

Linux  Input 设备驱动1认识和使用 input 事件:1.1Linux input 驱动分类Input驱动程序是Linux输入设备的驱动程序,分成游戏杆(joystick)、鼠标(mouse和mice)和事件设备(Event queue)3种驱动程序。其中事件驱动程序是目前通用的驱动程序,可支持键盘、鼠标、触摸屏等多种输入设备。Input驱动程序的主设备号是13,驱动程

2013-08-05 22:49:46 666

转载 Linux input子系统分析---5、事件传递过程

三. 事件传递过程(以s3c2410_ts为例)   1. 事件产生    当按下触摸屏时,进入触摸屏按下中断,开始ad转换,ad转换完成进入ad完成中断,在这个终端中将事件发送出去,调用    input_report_abs(dev, ABS_X, xp);    input_report_abs(dev, ABS_Y, yp); 这两个函数调用了 input_event(de

2013-08-05 22:32:10 841

转载 Linux input子系统分析---4、事件处理层分析

二.  事件处理层分析(以evdev事件处理器为例)    1.事件处理层与用户程序和输入子系统核心打交道,是他们两层的桥梁。一般内核有好几个事件处理器,像evdev mousedev jotdev。evdev事件处理器可以处理所有的事件,触摸屏驱动就是用的这个,所以下面分析这个事件处理器的实现。它也是作为模块注册到内核中的,首先分析它的模块初始化函数。 static 

2013-08-05 22:30:48 739

转载 Linux input子系统分析---3、输入子系统核心分析

一.  输入子系统核心分析。    1.输入子系统核心对应与/drivers/input/input.c文件,这个也是作为一个模块注册到内核的。所以首先分析模块初始化函数。 static int __init input_init(void)  {      int err;        input_init_abs_bypass();          //这个暂时

2013-08-05 22:29:20 634

转载 inux input子系统分析---2、主要函数

一. 各种注册函数    因为分析一所讲的每种数据结构都代表一类对象,所以每种数据结构都会对应一个注册函数,他们都定义在子系统核心的input.c文件中。主要有三个注册函数     input_register_device    向内核注册一个input设备     input_register_handle    向内核注册一个handle结构     input_regi

2013-08-05 22:27:45 798

转载 Linux input子系统分析---1、概述与数据结构

Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。下面分析input输入子系统的结构,以及功能实现。一. Input子系统结构与功能实现  1. Input子系统是分层结构的,总共分为三层: 硬件驱动层,子系统核心层,事件处理层。

2013-08-05 22:26:15 725

原创 Linux输入子系统

1.input子系统概述输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板,等)是典型的字符设备,其一般的工作机制是低层在按键,触摸等动作发生时产生一个中断(或驱动通过timer定时查询),然后cpu通过SPI,I2C或者外部存储器总线读取键值,坐标等数据,放一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取键值,坐标等数据。在Linux中,输入子系统

2013-07-29 22:22:06 571

原创 Linux设备驱动开发基础---字符设备驱动程序开发之mini2440_ADC驱动

一、硬件原理分析S3C2440内部ADC结构图我们从上面的结构图和数据手册可以知道,该ADC模块总共有8个通道可以进行模拟信号的输入,分别是AIN0、AIN1、AIN2、AIN3、 YM、YP、XM、XP。那么ADC是怎么实现模拟信号到数字信号的转换呢?首先模拟信号从任一通道输入,然后设定寄存器中预分频器的值来确定AD转换器频率,最后ADC将模拟信号转换为数字信号保存到ADC数据寄

2013-07-23 19:51:11 1079

原创 PWM控制蜂鸣器驱动

1、PWM定时器概述 PWM ( Pulse Width Modulation ) —— 脉宽调制,它是利用微控制器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量、通信、功率控制与变换等许多领域 。S3C2440A 有5个16位定时器。其中定时器 0、1、2 和3具有脉宽调制(PWM)功能。定时器 4 是一个无输出引脚的内部定时器。定时器0还包含用于大电流驱动的死区

2013-07-20 15:37:50 19408

转载 PWM原理

脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。模拟电路 模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。9V电池就是一种模拟器件,因为它的输出电压并不精确地等于9V,而是随时间发生变化,并可取任何实数值。与此类似,从电池吸收的电流也不限定在一组可能的取值范围之内。模拟信号与数字信号的区别

2013-07-20 13:15:09 1892

原创 s3c2440系统时钟

1、FLCK、HCLK和PCLK的关系一般来说,MCU的主时钟源主要是外部晶振或外部时钟,而用的最多的是外部晶振。在正确情况下,系统内所使用的时钟都是外部时钟源经过一定的处理得到的。由于外部时钟源的频率一般不能满足系统所需要的高频条件,所以往往需要PLL(锁相环)进行倍频处理。在s3c2440中,有2个不同的PLL,一个是MPLL,另一个是UPLL。UPLL是给USB提供48MHz。在

2013-07-18 23:21:52 691

原创 Linux设备驱动中的并发控制---信号量

Linux 设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发访问会导致竞态。 1、并发与竞态并发(concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(race  conditions)。在Linux内核中,主要的竞态发生于如下几种情况:(1)、对称多处理器(S

2013-07-18 17:29:25 773

原创 字符设备驱动程序开发之基于中断的按键驱动加去抖动

中断实现原理分析#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

2013-07-13 20:49:01 1003

原创 Linux设备驱动开发基础---字符设备驱动程序开发之基于中断的按键驱动

二、硬件原理分析Mini2440 具有6 个用户测试按键,它们都是连接到CPU 的中断引脚。如图:由原理图可知,这些引脚在按键没有按下的情况下被上拉为高电平,按键被按下的时候变为低电平。三、实现方式1、在/linux-2.6.32.2/drivers/buttons目录下创建一个新的驱动程序文件mini2440_buttons.c,内容及详细注释如下:#include

2013-07-09 22:18:06 1125

原创 Linux内核定时器及内核延时

一、内核定时器内核定时器 (也称为动态定时器)是内核在以后某一个时刻运行一段程序或进程的基础,软件定时器可以在一个确切的时间点上(更严格地说是一个时间点以后)激活相应的程序段或进程。软件定时器在设备驱动程序中被大量应用以检测设备的状态。使用一个软件定时器很简单,只需做一些初始化工作,设置一个相对于当前时刻的超时时间和超时处理函数,将其插入到内核定时器队列中即可,设置的超时处理函数会在定时器

2013-07-09 22:13:38 1033

原创 Linux驱动模块自动创建设备节点

在宋宝华《Linux设备驱动开发详解》中我们能找到如下描述:devfs与udev的另一个显著区别在于:采用devfs,当一个并不存在的/dev节点被打开的时候,devfs能自动加载对应的驱动,而udev则不能。这是因为 udev的设计者认为Linux应该在设备被发现的时候加载驱动模块,而不是当它被访问的时候。udev 完全在用户态工作,利用设备加入或移除时内核所发送的热插拔事件(hotpl

2013-07-09 11:24:06 1417

原创 Linux设备驱动开发基础---Linux内核中断原理

一、Linux中中断原理1、中断的分类在Linux操作系统中,中断的分类是非常复杂的。根据不同的角度,可以将中断分为不同的类型。根据中断的来源,中断可分为内部中断和外部中断,内部中断的中断源来自CPU内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态需借助CPU内部的软件中断) ,外部中断的中断源来自CPU外部,由外设提出请求。 根据是否可以屏蔽中断分为可屏蔽

2013-07-08 23:44:33 958

原创 Linux设备驱动开发基础---字符设备驱动程序开发

一、Linux字符设备驱动结构1、cdev结构体在 Linux 2.6 内核中使用 cdev结构体描述字符设备, cdev 结构体的定义如下所示: cdev 结构体 1  struct cdev  2  { 3   struct kobject kobj; /* 内嵌的kobject对象 */ 4   struct module *owner;    /*所属模块*/

2013-06-28 09:49:47 790

原创 Linux设备驱动开发基础---Linux内核模块

一、Linux内核模块的程序结构●模块加载函数(必须) 当通过insmod或 modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作。 ●模块卸载函数(必须) 。 当通过rmmod命令卸载某模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能。 ●模块许可证声明(必须) 。 ●模块许可证(LICENSE)声明描述内

2013-06-26 22:48:00 748

原创 Linux设备驱动开发基础---新驱动程序添加到内核方法(2)

一 . 概述:在 linux 内核中增加程序需要完成以下三项工作:1. 将编写的源代码复制到 Linux 内核源代码的相应目录2. 在目录的 Kconfig 文件中增加新源代码对应项目的编译配置选项3. 在目录的 Makefile 文件中增加对新源代码的编译条目二 . 以mini2440中ADC驱动的添加为例来进行说明ADC设备在Linux中可以看做是简单的字符设备,也可以

2013-06-26 20:19:13 1080

原创 Linux设备驱动开发基础---新驱动程序添加到内核方法(1)

1、编写Linux设备驱动的技术基础●编写Linux 设备驱动要求工程师具有良好的硬件基础,懂得 SRAM、Flash、SDRAM、磁盘的读写方式,UART、I2C、USB等设备的接口,轮询、中断、DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等。  ●编写Linux 设备驱动要求工程师具有良好的 C语言基础, 能灵活地运用 C语言的结构体、指针、函数指针及内存动

2013-06-25 22:47:34 1295

原创 文件操作之特殊文件操作

四、特殊文件操作在linux系统中,所谓特殊文件,就是指普通文件以外的其他文件,除了普通文件外,还有其他三类文件:设备文件,目录文件,链接文件,管道文件!在这一节里,我们将学习以上所述的,区别于普通文件的操作——特殊文件操作。1、目录文件操作与文件目录相关的系统调用有mkdir,opendir,closedir ,readir,scandir等:mkdir函数说明:创建目录

2013-06-02 22:51:26 834

原创 文件操作之标准I/O函数库

三、标准I/O函数库C标准库提供了文件的标准 I/O函数库,相比前述的系统调用,主要差别是实现了跨平台的用户态缓冲的解决方案。标准I/O库使用简单,与系统调用I/O相似,也包括打开、读写、关闭这些操作。系统调用是操作系统直接提供的函数接口。因为运行系统调用时,Linux必须从用户态切换到内核态,执行相应的请求,然后再返回到用户态,所以应该尽量减少系统调用的次数,从而提高程序的效率。1、

2013-06-02 15:44:14 1065

原创 使用Eclipse开发Arm-linux程序

1、首先是安装Eclipse在命令行终端下运行,会将需要安装的软件都安装上clx@think:~$ sudo apt-get install eclipse安装完成后将会出现如下的界面,但此时还不能进行C/C++程序的编写,还需要安装安装CDT插件。2、安装CDT插件(1)、启动eclipse,(2)、选择Help->Install New Software...,

2013-06-01 11:45:07 947

原创 文件操作之系统调用

一、Linux文件系统Linux系统提供的文件系统,是树形层次结构的系统,最顶层是根“/”,然后在下层创建其他目录,所有的文件最终都归属到最顶层的根目录“/”,Linux支持多种文件系统。每个文件都具有特定的属性,Linux系统的文件属性比较复杂,主要包括文件类型和文件权限两个方面。在Linux中,最常见的文件类型有五种,他们是普通文件,目录文件,衔接文件,管道文件,和设备文件。

2013-05-31 23:22:12 947

原创 Linux-2.6.32.2内核在mini2440上的移植----通过LCD显示内核启动信息及修改Linux LOGO

1、通过LCD显示内核启动信息之前内核通过串口打印内核信息时,内核命令行参数为)通过LCD显示内核启动信息console=ttySAC0,现在可以多加一项,即“console=ttySAC0, console=tty1 ”。注意,tty1表示第一个虚拟终端,tty2表示第二个虚拟终端,... ... tty0表示当前虚拟终端。param set linux_cmd_line "co

2013-05-31 15:33:15 1836

原创 Linux-2.6.32.2内核在mini2440上的移植----LCD驱动移植

1、LCD 驱动基础知识Linux-2.6.32.2 内核已经支持S3C2440 的LCD 控制器驱动,但在此我们先介绍一下关于2440 LCD 控制器以及驱动相关的LCD 的一些基础知识。注意:在此我们只讨论 TFT LCD,也就是真彩屏。LCD 驱动中最关键的就是时钟频率(Clock frequency)的设置,时钟频率设置不对,LCD的显示就会闪,或者根本没有显示。一般LCD 的

2013-05-31 11:08:26 991

原创 Linux-2.6.32.2内核在mini2440上的移植----增加LCD背光驱动

1、LCD 背光控制原理在 mini2440/micro2440 开发板中,LCD 背光是通过CPU 的LCD_PWR 引脚来控制的,从原理图中可以看出,它对应于GPG4,如图当LCD_PWR 输出为高电平“1”时,将打开背光;当输出为低电平“0”时,将关闭背光(注意:这里只是打开和关闭背光,而并没有背光亮度的调节作用)。2、在内核中添加背光驱动程序增加一个简单

2013-05-24 14:36:56 1043

原创 Ubuntu10.04+mini2440下ARM-linux开发环境搭建(2)----NFS服务器的配置及通过NFS启动linux

六、NFS服务器的配置1、安装NFS客户端和服务器Ubuntu上默认是没有安装Ubuntu nfs服务器的,因此我们首先安装Ubuntu nfs服务器端:$sudo apt-get install nfs-kernel-server在安装nfs-kernel-server时,apt会自动为我们安装好nfs的客户端nfs-common,以及端口映射器portmap。2、配置/

2013-05-24 10:33:48 1287

转载 ubuntu下mini2440 NFS挂载

网络文件系统(NFS)一、NFS简介1、NFS就是Network File System的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(share files)——可以通过NFS挂载远程主机的目录,访问该目录就像访问本地目录一样,所以也可以简单的将它看作一个文件服务器(File Server)。注意:一般而言,使用NFS服务能够方便地使

2013-05-22 11:23:11 823

原创 Linux-2.6.32.2内核在mini2440上的移植----激活RTC驱动

1、在初始化文件中加入RTC设备结构Linux-2.6.32.2 内核对2440的RTC驱动已经十分完善了,但并未在mach-mini2440.c中的设备集中加入它,因此并没有被激活,加入RTC结构体如下红色字体:打开/arch/arm/mach-s3c2440/mach-mini2440.c,定位到253行附近,修改如下static struct platform_device *m

2013-05-21 23:27:40 935

原创 Linux-2.6.32.2内核在mini2440上的移植----用busybox制作根文件系统

1、交叉编译Busybox(1)、解压 busyboxclx@think:/work$ tar -jxvf busybox-1.20.0.tar.bz2 -C /work/armlinux(2)、进入源码,修改Makefile文件:修改:  CROSS_COMPILE ?=arm-linux-   //第 164 行  ARCH ?=arm //第 190 行

2013-05-15 16:29:46 1522

Unix环境高级编程 third

Unix环境高级编程 第三版 高清带书签,放在手机随时阅读

2018-08-04

Linux 核心命令速查手册

Linux 核心应用命令速查手册,Linux学习工作必备,高清带书签

2018-08-04

高清带书签C 标准库

C 语言标准库,C 语音进阶必备,需要具备一定的C语言基础

2018-08-04

ucos_II+ucGUI+s3c2410+LCD+触摸屏整合

ucos_II+ucGUI+s3c2410+ucos II 1移植到ARM9 s3c2410 ucGui 390移植到ARM9 s3c2410

2012-04-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除