自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 (七) POSIX 线程 ——线程池实例

#include #include #include #include #include #include //线程任务等待链表结构typedef struct worker{void *(*process)(void *arg);void *arg;struct worker *next;}CThread_worker;//线程池结构typedef struct threadpool{pthre

2014-08-12 16:27:24 537

原创 Linux驱动学习——I2C

I2C相关:1.串行传输:一个时钟周期传输一个bit位,通过一根数据线完成2.并行传输:一个时钟周期传输一个1字节,比如通过8根数据线完成相关概念:1.主端,主设备,master:一般就是常说的CPU2.从端,从设备,slave:一般就是说的I2C设备3.I2C总线:两线式串行总线,CPU跟外设之间的连接通过2根线进行,CPU跟外设之间的数据交互通过1根数据线完成,在这两个

2014-08-11 21:23:42 659

原创 Linux驱动学习——混杂设备

linux内核混杂设备:官方定义:非标准的字符设备属于混杂设备。代码定义:主设备号内核已经定义的一类字符设备。主设备号为10.通过次设备号来分区各个混杂设备。内核通过链表来管理混杂设备。核心代码在driver/char/misc.c 混杂设备对应的数据结构:struct miscdevice {       intminor; //次设备号,如果指定MISC_DYNAMIC

2014-08-09 14:02:56 559

原创 Linux驱动学习——platform平台总线

linux内核为了让设备驱动具有更好的可移植性,设备驱动采用设备-总线-驱动模型。设备-总线-驱动模型的实现原理:1.内核已经帮你定义好了一个虚拟总线“platform_bus_type”,也称为平台总线。2.在这个总线上维护着两个链表,一个是存放硬件信息的dev链表,一个是存放纯软件信息的drv链表;3.dev链表中的每一个节点的数据结构是struct platform_devi

2014-08-09 13:52:02 508

原创 Linux驱动学习——内核链表

传统链表的特点:1.传统链表的指针域跟节点的数据类型一样2.传统链表的指针域指向下一个节点的首地址3.传统链表中拿第一个节点作为头结点问题:由于传统链表的指针域跟节点的数据类型保持一致,如果有大量不同类型的链表,那么需要为每一种链表定义一套操作函数。linux内核链表的特点:对于指针域内核进行抽象,定义一个数据结构struct list_head作为节点的指针域1.节点

2014-08-09 13:31:44 664

原创 Linux驱动学习——等待队列

等待队列应用程序在中断发生之前应该有两种等待状态,一种是忙等待,另一种休眠等,也就是如果设备没有准备就绪,最好应该让进程进入休眠。休眠的概念就是将CPU的资源从当前进程上撤下来给别的任务去使用。只有驱动才能访问硬件设备,所以只有驱动才能判断设备到底可用不可用,如果驱动发生设备不可用,那么由设备驱动主动让进程休眠。如何唤醒休眠的进程:唤醒的前提是设备可用了,通过中断判断设备可用,如果产生中断

2014-08-09 11:08:59 557

原创 Linux驱动学习——并发和竞态

linux内核并发和竞态:并发:多个执行单元同时发生(进程和中断)竞态:多个执行单元对共享资源的访问。          条件:          1.并发          2.共享资源          3.同时访问共享资源:硬件资源和软件上的全局变量。硬件资源大到一个串口设备,小到寄存器的某个bit位互斥访问:当一个执行单元在访问共享资源时,其他执行单元禁止访

2014-08-09 11:03:03 338

原创 Linux驱动学习——中断、定时器

中断Linux内核有中断功能的原因:外设的处理速度远远慢于CPU,如果不采取中断机制,CPU获取外设数据只能靠轮询,这样会降低处理器的利用率。 中断源----->中断控制器----->CPU                        (硬件)ARM处理器的中断控制器集成在CPU内部,外设和CPU之间的中断信号要靠中断控制器来控制,中断控制器可以管理中断,屏蔽、使能中断、

2014-08-08 20:36:00 2776 1

原创 Linux驱动学习——简单字符设备

Linux系统划分为用户空间和内核空间。用户空间有应用程序和应用程序运行时使用的一些库,内核空间包含七大子系统。现代CPU通常实现了不同的工作模式,以ARM为例,有7种工作模式:用户模式、管理模式、快速中断、外部中断、数据访问中止、未定义指令中止、系统模式。其中USR模式和SVC模式,这两种本身硬件上就定义了自己的访问权限,后者的权限最高,能访问所有硬件资源。Linux系统的软件形式空间的划分

2014-08-07 15:47:43 435

原创 ARM启动(OK6410)

ARM启动模式(OK6410开发板)平台:ARM11 三星S3C6410开发板:飞凌OK6410-A开发板 datasheet中这张表列出了s3c6410支持的启动模式再根据飞凌的底板原理图的boot select 部分可知 ‘OM0’信号为S3C6410芯片时钟源选择信号,当‘OM0’信号为“0”时选择‘XTlpll’:当‘OM0’信号为“1”时选择‘EXTCLK’。

2014-07-26 15:25:02 1464

原创 ARM学习笔记(二)——ARM数据处理指令、加载\存储指令

数据处理指令的一般格式: {cond}{S}  , , :数据处理指令的助记符   ADD MOV  SUB  CMP{cond}:条件标识,EQ,NE所有的数据处理指令都可以条件执行{S}:本指令的结构会影响CPSR状态寄存器的条件标志位 NZCV:目标寄存器:第一源操作数,寄存器:第二源操作数LSL:逻辑左移,空出的低位由0填充LSR:逻辑右移,空出的高位由

2014-07-18 19:25:41 878

原创 ARM学习笔记(一)——ARM体系、跳转指令

ARM编程模式:1.                 工作模式:管理模式SVC模式:复位,SWI指令快速中断:发生高优先级的中断中断:发生低优先级的中断中止:访问存储器非法情况未定义:执行的指令,不能识别系统:权限高用户:权限受限2.                 工作模式的分类:权限:特权模式:其余6种      非特权模式:用户模式异常/非异常

2014-07-18 19:21:57 2464

原创 (六) 进程间通信

进程间通信(IPC)进程间通信的原因:数据传输、资源共享、通知事件、进程控制进程间通信方式:1.        管道(pipe)和命名管道(FIFO)(最古老的IPC,但目前很少使用)2.        信号(signal)3.        消息队列(重点)4.        共享内存5.        信号量 6.        套接字(socket) 

2014-05-17 11:12:38 367

原创 (五)信号 1

信号:(signal)中断分为软件中断和硬件中断,软件中断就是用软件的方式中断代码。信号是Unix/Linux系统下最常见的一种软件中断方式,提供了一种处理异步事件的方法。信号都有一个宏名称,以SIG开头。本质就是一个非负整数,查看信号的命令:kill -l编程时,信号用宏名称,因为有些系统信号数字不同,但宏名称是一样的。 信号导致代码中断的条件很多,比如:中断(Ctr

2014-05-17 11:11:31 372

原创 (三) Unix/Linux 进程控制

进程控制理论基础进程特点:动态性,并发性,独立性,异步性进程三态:就绪,执行,阻塞进程ID:PID         父进程ID:PPID       启动进程的用户ID:UID进程互斥是指若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他进程必须等待,知道占用该资源的进程释放资源。临界资源——一次只允许一个进程访问的资源称为临界资源。临界区——进程中访问临界

2014-05-17 11:06:03 332

原创 (二) Unix/Linux 文件编程

文件和目录stat()/fstat()/lstat() 成功返回0,出错返回-1.获取与文件目录有关的信息结构,fstat参数为已打开的文件描述符,而lstat可以处理符号链接,当文件是一个符号链接时,返回的是符号链接的信息而不是引用文件的信息(否则在处理目录时可能引起死循环)。信息结构struct stat 的大部分信息都取自i节点,文件名和i节点存放于目录项。具体信息一般有文件

2014-05-17 11:01:40 267

原创 (一) Unix/Linux 编程基础

Gcc编译器Gcc编译时分为四个阶段:预处理  编译      汇编      链接.c   .cc   .a .i  .ii  .o (编译后文件)   .s (汇编后文件)编译选项-E  只做预处理,不做其他的-c 只编译,不链接成可执行文件  生成.o的目标文件-S  汇编,生成 .s文件。-g 产生调试工具所必要的符号信息,想要程序能进行调试必须加入这个选项

2014-05-17 10:54:59 366

空空如也

空空如也

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

TA关注的人

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