5 七月流星.

尚未进行身份认证

我要认证

A naughty Engineer

等级
TA的排名 19w+

linux内核同步机制之读写信号量

读写信号量与信号量之间的关系类似于自旋锁与读写自旋锁。读写信号量可能会引起进程阻塞,但是它允许N个读执行单元同时访问共享资源,而最多只允许有一个写执行单元访问共享资源;因此,读写信号量是一种相对放宽条件的、粒度稍大于信号量的互斥机制。注意:信号量不允许任何操作之间有并发。理解:定义于#include<linux/rwsem.h> 实际上在arch/X86/incl...

2019-03-25 18:13:15

linux内核同步机制之互斥锁

用互斥量进行同步#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <pthread.h>#include <semaphore.h>void *thread_function(void *a...

2019-03-25 18:04:06

linux内核同步机制之完成量

定义在头文件linux/completion.h中;完成量(completion)是Linux系统提供的一种比信号量更好的同步机制,是对信号量的一种补充;它用于一个执行单元等待另一个执行单元完成某事;使用完成量等待时,调用进程是以独占睡眠方式进行等待的;不是忙等待;1).定义完成量:struct completion my_completion; //定义完成量my_completi...

2019-03-25 18:00:30

linux内核同步机制之顺序锁

定义在头文件linux/seqlock.h中 顺序锁(seqlock)是对读写锁的一种优化,若使用顺序锁,读执行单元绝对不会被写执行单元所阻塞,也就是说,读执行单元可以在写执行单元对被顺序锁保护的共享资源进行写操作的同时仍然可以继续读,而不必等待写执行单元完成之后再去读,同样,写执行单元也不必等待所有的读执行单元读完之后才去进行写操作; 但是写执行单元与写执行单元之间...

2019-03-25 17:55:17

linux内核同步机制之读写自旋锁

定义:读写自旋锁(rwlock)是一种比自旋锁粒度更小的自旋锁机制,它保留了“自旋”的概念。但是在写操作方面,只能最多有一个写进程,在读方面,同时可拥有多个执行单元,当然读和写也不能同时进行。一句话:防写不防读理解推荐:http://blog.sina.com.cn/s/blog_6d7fa49b01014q86.html操作:定义于#include<linu...

2019-03-25 17:42:13

linux内核同步机制之RCU

定义: 把共享的数据结构复制一个副本,对副本进行修改,最后使用回调机制在适当的时候将指向原来数据的指针指向新的数据。对于被RCU保护的共享数据结构,读操作不需要获得任何锁就可以访问,但写操作在访问它时首先拷贝一个副本,然后对副本进行修改,最后在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。...

2019-03-25 17:34:37

linux内核同步机制之自旋锁

定义: 最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环----旋转----等待锁重新可用。 自旋锁有“加锁”和“解锁”两种状态。“加锁”一直在寻求“解锁”,“解锁”马上会寻求“加锁”,并原地打转,所以加锁位置的代码进入临界区执行,直到解锁。注意: 1.占用临界区的时间必须短; 2.拥...

2019-03-25 17:06:54

linux内核同步机制之原子操作

原子操作原子的操作指的就是在执行过程中不会被别的代码所中断的操作,也就是最小执行单位。在Linux中原子操作的方法有很多,有整型原子和位原子,他们在任何情况下操作都是原子的,这些原子操作的实现都是依赖CPU来实现的,因此这些函数都与CPU架构密切相关。整型原子我们arm架构的原子实现在kernel/arch/arm/include/asm/atomic.h1. 设置源自变量的值...

2019-03-25 16:16:53

linux内核同步机制之中断屏蔽

定义: 在进入临界区之前屏蔽系统的中断。可保证正在执行的内核执行路径不被中断处理程序抢占,(linux的进程调度都依赖于中断)中断屏蔽相关函数:local_irq_disable(); //屏蔽所有中断...... //临界区代码local_irq_enable(); //开放所有中断注:使用该函数有时会出现问题,如果有些中断在屏蔽中断前就是关闭的,那么在开放...

2019-03-25 15:54:31

linux内核同步机制之信号量

定义: 如果有一个任务试图获得已经被占用的信号量时,信号量会将其推进一个等待队列,使其睡眠,当持有信号量的进程将信号量释放以后,再唤醒该任务,并获得该信号量。头文件head.h代码:#ifndef __HEAD_H__#define __HEAD_H__#include <stdio.h>#include <stdlib.h>#incl...

2019-03-25 15:10:53

2.NanoPi M1(全志H3)的GPIO控制总结(内核驱动)

开发环境:VM+Ubuntu编译环境:linux3.4交叉编译工具:arm-linux-gcc 4.4.3GPIO内核驱动程序链接:https://download.csdn.net/download/ddffyhg/11022291用户应用程序链接:https://download.csdn.net/download/ddffyhg/11022286注意:开发板的linux的...

2019-03-15 16:15:27

Nanopi m1(全志H3)内核驱动编程初探Helloworld(编译方式一)

方法一: 开发环境:VM+Ubuntu 编译环境:linux3.4(全志官方BSP) 交叉编译工具:arm-linux-gcc 4.4.31.编写helloworld设备源码#include<linux/module.h>#include<linux/kernel.h>#include<linu...

2019-03-13 15:41:53

1.NanoPi M1(全志H3)基于wiringPi的GPIO控制总结

开发环境:linux-3.4(开发板)步骤:1.安装WiringPi库:git clone https://github.com/friendlyarm/WiringNPcd WiringNP/chmod 755 build./build 检测是否安装成功:gpio readall2.编写LED测试程序 nanopi m1的pin7(...

2019-03-13 13:59:01

手机使用SSH登录Nanopi m1总结(本次使用在同一局域网)

ARM板:Nanopi m1+小米USBwifi手机端:JuiceSSH1.Nanopi m1连接用户手机热点(电脑PC端操作) 我使用的是Nanopi通过串口线与PC端连接调试,在putty连接(端口COMx,波特率115200)后,切换到root用户:$ sudo su是否检测到USB wifi:$ ifconfig连接wifi:$ nmc...

2019-03-07 11:39:08

nanopi-h3的lichee(linux-4.14)内核编译总结

nanopi-h3内核编译:编译环境:VMware+ubuntu交叉编译器:gcc-linaro-arm.tar.xz内核源码:linux-4.14BSP(全志H3厂商全志科技提供)步骤:1.安装交叉编译器访问此处下载地址的toolchain目录,下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz,然后解压编译器:$ m...

2019-03-06 12:00:27

在linux中安装arm-linux-gcc

1.下载amr-linux-gcc-4.4.3:https://download.csdn.net/download/ddffyhg/110018332.解压命令tar xvzf arm-linux-gcc-4.4.3 -C / (自动解压到系统根目录下路径为:/usr/local/arm)3.配置编译环境路径: 在#/usr/local/arm下输入:vi /etc/prof...

2019-03-06 10:03:11

nanopi-h3的lichee(linux-3.4)内核编译总结(方法二)

注意:本方法是在方法一实践之后继续的,可能会依赖方法一中的部分软件包 (方法一链接:https://blog.csdn.net/ddffyhg/article/details/88087829)nanopi内核编译:编译环境:VMware+ubuntu交叉编译器:gcc-linaro-arm.tar.xz内核源码:linux-3.4 BSP(全志H3厂商全志科技...

2019-03-04 18:06:31

第一节 使用arm-linux-gcc编译hello程序在全志H3上运行

编译环境:VMware+ubuntu交叉编译器:arm-linux-gcc-4.4.31.Ubuntu编写hello.c程序#include <stdio.h>int main(void){ printf("hello,world!\n"); return 0;}2.在Ubuntu上使用arm-linux-gcc编译: ...

2019-03-04 09:55:33

【NanoPi2试用体验】裸机第一步

前几天看了看4418的数据手册,现在准备开始裸机学习,友善的wiki自然是最好的选择吧,然而我就是弄不出,找了第三方的一篇微博,然后才迈出了第一步。官方教程也非常简单,可是是我姿势不对,大家也可以看看克隆Matrix配件代码仓库 $ git clone https://github.com/friendlyARM/matrix.git 编译测试程序进入Matrix代码仓...

2019-03-03 18:15:28

玩转NanoPi 2 裸机教程编程-01点亮User LED难点解析

一、关于winhex工具在网上找了很多都不能用,来,这个能用。链接:http://pan.baidu.com/s/1qWy5eu4密码:y8zf二、关于USB转TLL/232串口线我这个是PL2303HXD版本的USB串口芯片。相比PL2303HXA版本好用的多。CH340芯片的USB串口线也是可以的,淘宝卖的很便宜。三、关于串口助手习惯直接用STC的下载工具自带的串口助手。四、关于VMware...

2019-03-03 18:09:58

查看更多

勋章 我的勋章
    暂无奖章