自定义博客皮肤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)
  • 资源 (18)
  • 收藏
  • 关注

原创 linux设备驱动程序之并发和竞态(一)

信号量的头文件在<asm/semaphore.h>,所以要使用信号量就必须包含这个头文件。 声明:struct semaphore sem; 初始化: 1、静态初始化: DECLARE_MUTEX(&sem); //这个信号量初始化为1,可以马上使用; DECLARE_MUTEX_LOCKED(&sem); //这个信号量初始化为0,如果要使用要先解锁,打开信号量

2015-06-28 12:59:33 1098

转载 linux 文件系统之SSD

固态驱动器当前非常流行,但是嵌入式系统很久以前就开始使用固态驱动器进行存储。您可以看到 flash 系统被用于个人数字助理(PDA)、手机、MP3 播放器、数码相机、USB flash 驱动(UFD),甚至笔记本电脑。很多情况下,商业设备的文件系统可以进行定制并且是专有的,但是它们会遇到以下挑战。基于 Flash 的文件系统形式多种多样。本文将探讨几种只读文件系统,并回顾目前可用的各种读/写文

2015-06-17 11:24:58 3352

转载 SSD 之wl(wear leveling)算法分析

转来一篇关于NAND FLASH均衡算法的文章,加上一点思考和笔记,认为这种思考有助于更深刻的理解,更好的记忆,所以也算半原创了吧,最起码笔记是原创的。有意思的是,帖子提起这个算法并不是因为嵌入式开发的需要,而是企业存储。因为提到硬盘驱动器HDD的速度硬伤,目前估计就SSD一种好的存储介质解决方案吧,而SSD除了暂时价格小高以外,主要有一个寿命短的硬伤。这样的话就不可避免的涉及到映射、磨损均衡、存

2015-06-17 11:17:19 6830

原创 linux环境编程之多线程同步

多线程同步,当有多个线程同时访问共享内存时就会产生数据不一致性。所以为了保证数据的一致性必须让线程同步,同步方式有下面几种:互斥量        互斥量从本质上来说是一把锁,在访问共享资源前对互斥量进行加锁,访问完后释放互斥量上的锁。对互斥量加锁后,任何其他的线程对互斥量加锁都会被阻塞,直到互斥量上的锁释放。当锁释放后,阻塞的所有线程都会变成可运行的,然后进行抢占。        互斥

2015-06-16 20:46:05 1074

转载 SSD 之WL磨损平衡

闪存寿命是以P/E次数来计算的,而WL就是确保闪存内每个块被写入的次数相等的一种机制。若没有这个机制,SSD内的闪存颗粒就无法在同一时间内挂掉,那对用户来说就是灾难。       会出现这种情况的原因在于,用户在LBA空间里的数据更新速度是不同的,有部分是经常需要更新,而有些却长期不需要变更,因此若没有WL,很显然那些经常被更新的数据所在的闪存寿命会首先被消耗完毕,而不怎么需要变更的数据所在的

2015-06-16 16:19:51 4759

转载 SSD 之FTL转换层

闪存的读写单位为页,而页的大小一般为4KB或8KB,但我们的操作系统读写数据是按HDD的扇区尺寸进行的(512Byte(字节)),更麻烦的是闪存擦除以块作单位,而且未擦除就无法写入,这导致操作系统现在使用的文件系统根本无法管理SSD,需要更换更先进、复杂的文件去解决这个问题,但这样就会加重操作系统的负担。       而为了不加重操作系统的负担,SSD采用软件的方式把闪存的操作虚拟成磁盘的独立

2015-06-16 16:18:33 3473

转载 SSD 之GC垃圾回收机制

在前面向大家讲解FTL时,我们提到了GC的操作,所谓GC就是把一个闪存块里的‘有效’页数据复制到一个‘空白’块里,然后把这个块完全擦除。GC是SSD里的一个非常关键的操作,其效率对性能有决定性影响。闪存块里‘有效’页的数量对GC效率有决定性的影响,因数量越少,需要复制的页就越少, 花费的时间也越少,效率就高了。(GC操作参考下图)请看下图,把X块和Y块里的“有效”页复制到N块里,然后擦

2015-06-16 16:17:06 6544

转载 SSD 之Trim指令

Trim,其实是一个ATA指令,并无正式中文名称,操作系统发送此指令给SSD主控,以通知它哪些数据占用的地址是‘无效’的。       在讲解Trim的重要性前,先说一点文件系统的相关知识。当我们在操作系统中删除一个文件时,系统并没有真正删掉这个文件的数据,它只是把这些数据占用的地址标记为‘空’,即可以覆盖使用。但这只是在文件系统层面的操作,硬盘本身并不知道那些地址的数据已经‘无效’,除非系统

2015-06-16 16:15:24 6381

转载 SSD 之OP预留空间

SSD上的OP指的是用户不可操作的容量,大小为实际容量减去用户可用容量,OP区域一般被用于优化操作如:WL,GC和坏块映射等。       OP一般分三层(见下图)。第一层容量固定为SSD标称容量的7.37%,这是因为标称容量采用千进制为单位,而NAND颗粒容量单位为1024进制,两者正好相差约7.37%。这部分空间被默认用于作OP。第二层OP是否存在及容量大小取决于厂商设置。第三层OP是用户

2015-06-16 16:12:27 5240

转载 SSD 之WA写入放大

WA是闪存及SSD相关的一个极为重要的属性。由于闪存必须先擦除才能再写入的特性,在执行这些操作时,数据都会被移动超过1次。这些重复的操作不单会增加写入的数据量,还会减少闪存的寿命,更吃光闪存的可用带宽而间接影响随机写入性能。WA这个术语在2008年被Intel公司和SiliconSystems公司(于2009 年被西部数据收购)第一次提出并在公开稿件里使用。       举个最简单的例子:当要

2015-06-16 16:09:41 2587

转载 SSD 之BBM坏块管理机制

不管WL算法如何高明,在使用中都会碰到一个头痛的问题,那就是坏块,所以一个SSD必须要有坏块管理机制。何谓坏块?一个闪存块里包含有不稳定的地址,不能保证读/写/擦时数据的准确性。       坏块分出厂坏块和使用过程中出现的坏块,SSD有坏块表来管理坏块。出厂坏块在上面会有标记,所以很容易就能被识别,而使用中出现的坏块就要靠主控的能力了。一般来说,越到闪存生命的后期(P/E数开始接近理论最

2015-06-16 16:05:05 3236

转载 SSD 之ECC校验和纠错

ECC的全称是 Error Checking and Correction or Error correction Coding,是一种用于差错检测和修正的算法。上一节的BBM中我们提到过,NAND闪存在生产和使用中都会产生坏块,BBM就是坏块的管理机制,而要有效管理坏块的首要前提就是有可靠的坏块检测手段。如果操作时序和电路稳定性不存在问题,NAND闪存出错的时候一般不会造成整个Block或Pag

2015-06-16 16:02:10 8099

转载 SSD 之写入放大带来的难题

NAND闪存的写入(P/E循环)次数有限,SLC的量级是1万-10万次,而MLC普遍只有3000-5000次,TLC则更少,因此围绕SSD可靠性的争议和研究就没停止过,随便搜索SSD的资料见的最多的就是讨论SSD可靠性(reliability)的文章。       当然,也有一种说法称即便只有3000次写入寿命,60GB SSD的写入数据寿命也有3000*60GB=180TB,120GB也有3

2015-06-16 15:58:53 3843

原创 linux环境编程之线程基础知识

/tmp/ccc9R9dJ.o: In function `main':test.c:(.text+0x3c): undefined reference to `pthread_create'collect2: ld returned 1 exit status就很可能是因为编译时没有加-lpthread 选项;

2015-06-14 21:46:12 1102

原创 买哪种牌子的笔记本电脑好呢?

其实这是个被问烂了的问题,我想每个有电脑的人都问过这样的问题,因为谁买电脑的时候都想买个好一点的。我大一买电脑的时候也是这样的,找各种资料对比,我是从农村来的,上大学前我根本不知道电脑和电视有什么区别。为买个好电脑我查各种资料,过了一两个礼拜,我竟然对电脑的各种组件都有了一定的理解。比上课听老师讲这些组件的相关知识强多了。所以如果你想了解一门产品,最好的方法就是去买个,因为在买之前你一定会看各种资料进行对比(土豪除外)。哈哈,有些偏题了。 我现在手上有三台电脑:一台我自己的,是宏基4741

2015-06-14 10:46:08 6811

原创 多线程的生产者和消费者问题

多线程的生产者和消费者问题是比较经典的多线程问题,如果知道编码解决生产者和消费者问题,那么对于多线程应该基本算掌握了。我不知道大家的生产者和消费者问题是怎么样的(应该有几个版本吧),这里我说下我的生产者和消费者问题: 有多个生产线程,他们只负责生产资源;有多个消费者,同样他们只负责消费。但是他们需要满足下面条件: 生产者:只有当资源没有的时候,生产者才开始生产,但是为了防止浪费,每次只能生产指定数量的资源。当生产者生产完足够资源时,就进入睡眠,同时叫醒消费者去消费;

2015-06-12 14:51:55 3237

原创 ubunte中用ibus-setup安装中文输入法

(process:2553): Gtk-WARNING **: Locale not supported by C library. Using the fallback 'C' locale.Traceback (most recent call last): File "/usr/share/ibus/setup/main.py", line 582, in <module> locale.setlocale(locale.LC_ALL, '') File "/usr/lib/

2015-06-09 23:15:43 2556

Ubuntu下openssh-server安装

Ubuntu下openssh-server安装,里面有安装步骤

2017-07-11

bashdb-4.2-0.8

bashdb是一个类GDB的调试工具,使用GDB的同学使用bashdb基本无障碍, bashdb可以运行断点设置、变量查看等常见调试操作

2017-07-08

gcc-3.4.0.tar.gz

gcc-3.4.0.tar.gz

2016-10-10

Linux那些事儿.pdf

Linux那些事儿.pdf

2015-10-08

嵌入式Linux之我行系列

本书是根据相关的博客做的PDF格式的电子书,欢迎到原作者的博客去看看。 这个是目录: ·嵌入式Linux之我行——虚拟机中安装Linux ·嵌入式Linux之我行——虚拟机中实现Linux与Windows之间的文件传输 ·嵌入式Linux之我行——开发环境的建立与Eclipse的使用 ·嵌入式Linux之我行——配置内核时出现“ncurses-devel”错误 ·嵌入式Linux之我行——C+CGI+Ajax在S3C2440中的应用 ·嵌入式Linux之我行——嵌入式数据库sqlite在2440上的移植 ·嵌入式Linux之我行——嵌入式数据库sqlite在2440上的应用 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之内核 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之文件系统 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之RTC时钟驱动 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之DM9000E网卡驱动 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之USB驱动 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之MMC/SD卡驱动 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之LCD驱动 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之触摸屏驱动 ·嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之UDA1341声卡驱动 ·嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一) ·嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(二) ·嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(三) ·嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(四) ·嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(五) ·嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(六) ·嵌入式Linux之我行——s3c2440的IO静态映射的分析 ·嵌入式Linux之我行——内核访问外设I/O资源的方式 ·嵌入式Linux之我行——深入理解DM9000在mini2440上的驱动 ·嵌入式Linux之我行——LCD背光驱动在2440上的实例开发 ·嵌入式Linux之我行——LED驱动在2440上的实例开发 ·Linux内核常用的一些宏的收集 ·嵌入式Linux之我行——按键驱动在2440上的实例开发(带去抖动) ·嵌入式Linux之我行——ARM MMU工作原理剖析 ·嵌入式Linux之我行——设备文件系统剖析与使用 ·嵌入式Linux之我行——PWM在ARM Linux中的原理和蜂鸣器驱动实例开发 ·嵌入式Linux之我行——S3C2440上RTC时钟驱动开发实例讲解 ·嵌入式Linux之我行——S3C2440上看门狗(Watchdog)驱动开发实例讲解 ·嵌入式Linux之我行——S3C2440上ADC驱动实例开发讲解 ·嵌入式Linux之我行——S3C2440上触摸屏驱动实例开发讲解 ·嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一) ·嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解(二) ·嵌入式Linux之我行——RamDisk块设备驱动实例开发讲解 ·嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(一) ·嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二) ·嵌入式Linux之我行——内核通知链机制的原理及实现(转载) ·嵌入式Linux之我行——S3C2440上Flash驱动实例开发讲解(一)

2015-07-20

深入Linux设备驱动程序内核机制.pdf

深入Linux设备驱动程序内核机制.pdf 深入Linux设备驱动程序内核机制.pdf 深入Linux设备驱动程序内核机制.pdf

2015-06-29

PCI-E和FPGA

PCI-E和FPGA

2015-05-22

NVM-Express 1.2

NVM-Express-1_2-Gold-20141209.pdf

2015-05-21

Oracle VM VirtualBox 桥接模式驱动

Oracle VM VirtualBox桥接模式驱动;具体的使用请参考我的博客 http://blog.csdn.net/yuzhihui_no1?viewmode=contents中的《Linux下的网络配置命令》

2015-03-10

x86汇编从实模式到保护模式(pdf、相关代码、软件工具)

x86汇编从实模式到保护模式(pdf、相关代码、软件工具),注:没有14~17章,谁有麻烦给我份,谢谢!!

2014-12-11

软件开发电子书百宝箱

里面包含了所有软件开发所需要的电子书,有C语言、C++、Java、PHP、shell等等语言的开发电子书。也有windows下的各种开发电子书,更有unix/Linux编程开发,以及驱动 内核之类的(ldd3,深入理解linux内核等)电子书

2014-08-11

Linux设备驱动程序(中文版第三版含例题)

Linux设备驱动程序(中文版第三版)里面包含例题

2014-08-11

Linux设备驱动程序(每章一个文件)

Linux设备驱动程序。分章阅读,每一个pdf文件就是一章。

2014-08-11

空空如也

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

TA关注的人

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