自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 嵌入式Linux驱动开发(四)——字符设备驱动之中断方式以及中断方式获取按键值

之前我们完成了关于通过查询的方式获取按键键值的驱动程序,可以参考:嵌入式Linux开发——裸板程序之中断控制器。虽然读取键值没有什么问题,但是测试程序占用CPU过高,一直在不断的查询,资源消耗过大,这个问题非常严重,我们必须要来解决一下。但是在解决这个问题之前,我们先来思考一个问题,除了不断的这样 read,是不是还有其他的方法可以获取按键的键值呢?自然是有的,这个方式就是通过终端的方式来获取键

2017-08-23 21:10:58 1544

原创 嵌入式Linux开发——裸板程序之中断控制器

ARM体系的CPU具有7种工作模式用户模式(usr):ARM处理器正常的程序执行状态快速中断模式(fiq):用于高速数据传输或通道处理中断模式(irq):用于通用的中断处理管理模式(svc):操作系统使用的保护模式数据访问中止模式(abt):当数据或指令预取终止时进入该模式,用于虚拟存储以及存储保护系统模式(sys):运行具有特权的操作系统任务未定义指令中止模式:(und):当未定

2017-08-23 21:10:55 750

原创 嵌入式Linux驱动开发(三)——字符设备驱动之查询的方式获取按键值

之前的文章讨论了字符设备驱动的框架以及通过自负设备驱动程序来控制开发板上的LED嵌入式Linux驱动开发(一)——字符设备驱动框架入门嵌入式Linux驱动开发(二)——字符设备驱动之控制LED在这里我们可以简单的复习一下。首先,字符设备驱动程序的框架核心是file_operations结构体,其中注册上层应用和底层驱动程序的对应关系。正式通过这个结构体,应用层的write才能找到驱动程序中

2017-08-23 21:10:52 1192

原创 嵌入式Linux开发——裸板程序点亮开发板上的LED灯

LED灯点亮的案例LED灯的原理图有上图可以看出到,开发板上有三盏LED,分别通过LED1、'LED2'和'LED4'四条线连接,从图上可以看出如果对于三盏LED来说,右侧如果为低电平,那么LED将可以被点亮2440连接LED灯的引脚在开发板的原理图上可以搜索到,LED1、'LED2'和'LED4'三根线引入到了2440芯片,引脚分别为EINT4/GPF4、EINT4/GPF5、E

2017-08-23 21:10:46 6360

原创 嵌入式Linux驱动开发(二)——字符设备驱动之控制LED

关于驱动程序框架,请参考:嵌入式Linux驱动开发(一)——字符设备驱动框架入门同时,在这篇文章里面留下了两个问题,现在先来解决其中的第一个问题,就是如何用驱动程序来操作需要操作的硬件。关于开发板点亮LED的问题,在这里简单介绍一下,也可以参考之前我写的文章:嵌入式Linux开发——裸板程序点亮开发板上的LED灯首先为了操作硬件,看接线原理图是必不可少的一步,这几个LED的原理图相对来说

2017-08-23 21:10:43 4954 2

原创 Linux嵌入式开发入门(二)——快速看懂原理图,对接软件开发

这里只是为了看懂原理图,不牵扯具体的计算等内容(比如电路电流多少啊,三极管放大等等)。因为对于嵌入式开发人员来说,只需要明白不同的电平对于开发板的结果即可,不需要知道具体电路的情况。微机原理:侧重于讲计算机结构数字电子技术基础:侧重于门电路GPIO和门电路GPIO类GPIO:通用的输入输出端口,可以通过输入来测量外界的电平情况;可以通过输出来控制电路只要上面的2440芯

2017-08-23 21:10:40 7743 5

原创 Linux嵌入式开发入门(一)——初探嵌入式开发板的基本使用

嵌入式?! 从哪里开始讨论?开发板其实和一台电脑是同样的道理,他同样有计算、存储的功能。同样,对Linux的开发板来说,也会像PC一样装有一套系统,只是这套系统不是PC上最常用的Windows,而是Linux系统而已。嵌入式的硬件结构和PC其实没有什么不同,都是由运算器、控制器、存储器、输入设备和输出设备五大部分组成。而嵌入式设备来说,总体看来,嵌入式系统具有便利灵活、性能价格比高、嵌入性强

2017-08-23 21:10:38 5218 2

原创 (Boolan)C++设计模式 <十三> ——解析器(Interpreter)

“领域规则”模式在特定领域内,某些变化虽然频繁,但可以抽象为某种规则。这时候,结合特定领域,将问题抽象为语法规则,从而给出该领域下的一般性解决方案。典型模式Interpreter解析器(Interpreter)给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。——《设计模式》GoF动机在软件构建过程中,如果某一特定领域的问题比较复

2017-08-23 21:10:35 398

原创 (Boolan)C++设计模式 <十二> ——命令模式(Command)和访问器(Visitor)

“行为变化”模式在组建的构建过程中,组建行为的变化经常导致组建本身剧烈的变化。“行为变化”模式将组建的行为和组建本身进行解耦,从而主持组件的变化,实现两者之间的松耦合。典型模式CommandVisitor命令模式Command将一个请求(行为)封装为对象,从而使你可用不同的请求,对客户进行参数化;对请求排队或记录请求日志以及支持可撤销的操作。——《设计模式》GoF动机在软件

2017-08-23 21:10:32 471

原创 (Boolan)C++设计模式 <十一> ——组合模式(Composite)、迭代器(Iterator)和责任链(Chain of Resposibility)

“数据结构”模式常常有一些组建在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大的破坏组件的复用。这时候,将这些数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。典型模式CompositeIteratorChain of Responsibility组合模式(Composite)将对象组合成树形结构以表示“

2017-08-23 21:10:30 607

原创 (Boolan)C++设计模式 <十> ——状态模式(State)和备忘录(Memento)

“状态变化”模式在组建构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一个问题提供了一种解决方案。典型模式StateMemento状态模式(State)允许一个对象在其内部状态改变是改变它的行为。从而使对像看起来似乎修改其行为。——《设计模式》GoF动机在软件构建过程中,某些对象的状态如果改变,其行为也会随

2017-08-23 21:10:27 411

原创 (Boolan)C++设计模式 <九> ——单例模式(Singleton)和享元模式(FlyWeight)

“对象性能”模式 面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理。典型模式SingtonFlyweight单例模式Singleton保证一个类仅有一个实例,并提供一个该实例的全局访问点。——《设计模式》GoF动机在软件系统中,经常有这样一个特殊的类,必须保证

2017-08-23 21:10:24 537

原创 Linux文件编程

文件概述文件:存储在外部介质上的数据的集合,是操作系统数据管理的单位文件分类按逻辑结构分记录文件:由具有一定结构的记录组成(定长和不定长)流式文件:有一个个字符(字节)数据顺序组成按存储介质分普通文件:存储截至文件(磁盘、次贷等)设备文件:非存储介质(键盘、显示器、打印机等)组织形式分文本文件:ASCII文件,每个字节存放一个字符的ASCII码二进制文件:数据按其在

2017-08-23 21:10:22 458

原创 (Boolan)C++设计模式 <八> ——门面模式(Facade)、代理模式(Proxy)、适配器(Adapter)以及中介者(Mediator)

“接口隔离”模式在组建构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接接口(稳定的),来隔离本来相互紧密关联的接口是一种常见的解决方案典型模式FacadeProxyAdapterMediator门面模式(Facade)系统间的耦合的复杂度系统间耦合的复杂度对于客户系统和子系统之前存在很多的耦合的情况,如果不考虑设计的情况,

2017-08-23 21:10:19 705

原创 (Boolan)C++设计模式 <七> ——工厂方法(Factory Method)、 抽象工厂(Abstract Factory)、原型模式(Prototype)、构建器(Builder)

“对象创建”模式通过“对象创建”模式绕开直接new一个具体的类型,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类型),从而支持对象创建的稳定。他是接口抽象之后的第一步工作。典型模式Factory MethodAbstract FactoryPrototypeBuilder工厂方法 (Factory Method)定义一个用于创建对象的接口,让子类决定实例化哪个类。

2017-08-23 21:10:16 678

原创 Linux Shell编程

Shell简介Shell会执行用户输入的命令,并且在屏幕上显示执行的结果。单从字面的意思上理解,Shell的本意是“壳子”的意思,通俗的讲就是内部核心与外部使用者发生联系的介质。其实对于操作系统内核来说,Shell是与用户打交道的,比如Windows的界面其实就是Windows内核的的Shell,只是他是图形化的,而Linux开发常用的一般都是命令行的Shell界面,但其实Shell并不等于

2017-08-23 21:10:13 448

原创 (Boolan)C++设计模式 <六> ——桥模式(Bridge)

将抽象部分(业务功能)与实现部分(平台实现)分离,是他们都可以独立地变化。——《设计模式》GoF动机由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个维度的变化假设有如下的通信的伪码描述包括登陆、发信息、播放音乐等等的功能,同时也支持不同的平台的支持,比如PC、移动端等,其中版本也具有不同的功能,比如精简版和完整版。class Messager{public: vi

2017-08-23 21:10:10 340

原创 (Boolan)C++设计模式 <五> ——装饰模式(Decorator)

动态(组合)地给一个对象增加一些额外的指责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码、减少子类个数)。——《设计模式》GoF动机在某些情况下,我们可能会“过度的使用继承来扩展对象的功能”,由于继承为类型引入静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的在增多),各种子类的组合(扩展功能的组合)会导致子类的膨胀。在下面有一组伪代码,这组

2017-08-23 21:10:08 315

原创 (Boolan)C++设计模式 <四> ——观察者模式(Observer)

动机在软件构建的过程中,我们需要为某些对象建立一种“通知依赖关系”——一个对象(目标对象)的状态发生改变,所有的以来对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使得软件不能很好的抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。下面是一个文件切割的程序的伪码,可以把较大的文件分隔为若干个较小的文件。并且对于文件分割过程

2017-08-23 21:10:05 283

原创 (Boolan)C++设计模式 <三> ——策略模式(Strategy)

定义一系列算法,把他们一个个封装起来,并且是他们可以互相替换(变化)。该模式似的算法可以独立于使用它的客户程序(稳定的)而变化(扩展,子类化)。——《设计模式》GoF动机(Motivation)在软件构建的过程中,某些对象使用的算法可能是多种多样的,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一种性能负担比如现在需要有一个税种的计算系统,其

2017-08-23 21:10:02 438

原创 (Boolan)C++设计模式 <二> ——模版方法(Template Method)

定一个操作中的算法的骨架(稳定的),而将一些步骤延迟(容易变化的)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重新定义(Override覆写)该算法的某写特定步骤——《设计模式(GoF)》关于模版方法的设计模式,我们先来看这样一个伪码描述。下面的伪码主要是有两个开发人员来构成的代码,分别是库开发人员和应用程序的开发人员。对于库的开发人员来说,已经开发完成了

2017-08-23 21:09:59 306

原创 (Boolan)C++设计模式 <一> ——设计模式简介以及面向对象设计原则

什么是设计模式每一个描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案。这样,你就能一次又一次地使用该方案而不必做重复劳动。——Christopher Alexander对于我们处理工作中的实际问题的时候,其实绝大多数的问题都是呈一定的模式重复出现的,如果不使用设计模式,那么我们在处理问题的时候,不得不一遍又一遍重复做着类似的工作,不但浪费了大量的精力,同时也更是一种极度让人烦躁

2017-08-23 21:09:56 306

原创 Linux Makefile

Makefile的基本概念GNU make最初是Unix系统下的一个工具,设计之初是为了维护C程序文件不必要的重新编译,他是一个自动生成和维护目标程序的工具make是一个解释Makefile文件中指令的命令工具,其最基本的功能就是通过Makefile文件来描述源程序之间的相互关系并自动维护编译工作,他会告知系统以何种方式编译和链接程序。Makefile写好之后,每次改变了某些源文件只要执行mak

2017-08-23 21:09:53 288

原创 Linux GCC编译器和GDB调试器

GCC编译器GCC是一个交叉平台的编译器,我想大家并不会觉得陌生。C/C++开发的时候很多时候都会用到GCC来进行编译。GCC编译的流程文件后缀虽然在Linux环境下,文件的后缀对于系统来说并没有什么意义,。不想windows环境下,文件扩展名对应着程序的执行。但是和计算机交流的毕竟还是程序员,对于一个光秃秃没有后缀的文件来说,没办法一眼看出到底是什么文件类型,那么对于编译过程其实会有一系

2017-08-23 21:09:51 872

原创 (Boolan) C++ STL与泛型编程

关于STL的话题已经探讨了好几个篇了,今天来讨论一下剩下的一些内容吧一个万用的hash function使用以Hash Table为底层的容器,比如unordered_map(hash_map),在使用个过程中,需要有计算hash code的方法来计算出元素在hashtable中的具体位置。那么对于自定义类型来说,需要指定对应的Hash Function,只有这样才能在使用的过程,系统找到对应

2017-08-23 21:09:48 404

原创 (Boolan) C++ STL与泛型编程——算法、仿函数、Adapter

之前已经完成了STL中容器的梳理,那么从语言的层面来看:容器是class template算法是function template迭代器是class template适配器是class template分配器是class template一般STL中的算法都是如下的两种形式(Algorithm代表一种泛指,可以替代其他的函数名称)templateAlgorithm (Itera

2017-08-23 21:09:45 405

原创 (Boolan) C++ STL与泛型编程——容器2

对于标准库来说,容器是非常大的一块内容,那么之前已经谈过关于list、vector、array、forward_list(slist)的内容,还有很多的容器是没有谈到的,今天就把剩下的容器一网打尽,全部过一遍,看看他们背后到底藏着些什么秘密吧。容器结构分类序列式容器(Sequence Container)的衍生关系array (C++2.0)连续空间vector 连续空间he

2017-08-23 21:09:42 350

原创 (Boolan) C++ STL与泛型编程——容器1

STL标准库是开发中的利器,也是开发的宝库。这次的源码分析主要以GNU C++的2.9和4.9版本为例,因为4.9之后代码重构,核心部分发生了巨大的变化,再次分别分析一下。以GCC为例的标准库位置: ....\x.x.x\include\c++\本地的目录对于2.9和4.9最大的差别其实就是,2.9主要采用了泛型编程的思想,4.9引入了大量的面向对象编程的思想。OOP(Object-O

2017-08-23 21:09:39 619

原创 (Boolan)STL与泛型编程作业一

题目:一个整数集 , 该整数集可以有重复元素, 初始为空集合 。可以指定如下指令:add x 将x加入整数集del x 删除整数集中所有与x相等的元素ask x 对整数集中元素x的情况询问下面为指令解释,并要求进行如下输出:add 输出操作后集合中x的个数del 输出操作前集合中x的个数ask 先输出0或1表示x是否曾被加入集合(0表示不曾加入),再输出当前集合中x的个数,中间用空格

2017-08-23 21:09:36 303

原创 (Boolan) C++ STL与泛型编程

对于现在的计算机编程语言来说,语言和库已经形成了两大体系。只学一门语言可以实现自己想要的功能,也可以写出各式各样的程序,但是,不得已需要提一句,对于现在技术的发展速度来说,开发的效率变得尤为重要。而仅仅会一门编程语言,在现阶段其实已经成为了一件无意义的事。那么拿语言和数据结构来举例,他们俩已经是两个独立的体系了,而数据结构对于开发而言,基本的代码实现都是差不多的。那么,开发不同的系统,意味着会有巨

2017-08-23 21:09:33 361

原创 (Boolan)详解 C++ Operator new\delete、placement new\delete、Array new\delete

题目内容:class Fruit{int no;double weight;char key;public:void print() { }virtual void process(){ }};class Apple: public Fruit{int size;char type;public:void save() { }virtual void p

2017-08-23 21:09:30 341

原创 (Boolan) C++面向对象高级编程(五)

对象模型虚表和虚指针关于虚表和虚指针以及内存对其等问题,我之前的文章做了非常详细的测试和整理,如果需要查看,可以查看后面的链接: http://www.jianshu.com/p/46acf45ee795再次我对主要的知识点做一些梳理虚指针类中如果存在虚函数,就会在内存中存在虚指针在对象的内存空间中,只需要持有虚函数们的一个指针(实际虚函数们是以个虚函数的数组)由于虚函数指针,实

2017-08-23 21:09:27 270

原创 (Boolan) C++面向对象高级编程(四)

之前几次,对C++中的一些核心话题进行了一些梳理,主要都是集中在关于面向对象的思想方面。我通过部分故事的思路,结合生活来理解了关于面向对象的一些问题。如果需要可以回看我文章列表的中的文章。今天的部分比较零散,我的思考可能也有限,很多部分我的思考也不够,不足以用故事来涵盖,但是既然是个故事狗,那么还是来说一下,类型到底是干什么用的。但是C++的内容非常庞大,之前也仅仅是冰山的一角,还有非常丰富的知识

2017-08-23 21:09:24 383

原创 (Boolan) C++ 类型大小和内存分布(虚函数指针、虚表、内存对齐问题)

题目要求回答:(以下大部分都是基于x64编译器下的windows平台的gcc version 5.3.0 (GCC)编译器的测试结果,不能其他平台也能得出完全一致的结论,如果在x32下编译结果会指出)由于class相较于struct,默认的成员就是private,代码中没有特地强调privateFruit的类型大小为32,Apple的类型大小为40。完整测试用代码: http://

2017-08-23 21:09:21 2353

原创 (Boolan) C++面向对象高级编程(三)

今天来看一看关于面向对象的编程的一些内容,也就是关于类和类之间的关系。类和类之间的关系其实一种抽象的描述现实世界的方法。 现实生活中的事物不都和之前提到的String或者Complex一样与其他事务没有太多的联系,其实从不同角度看到事物往往会得出不同的结论。比如,生物界的划分经常是以界门纲目科属种这样的思路来划分的,找出其共性,然后再向上抽象 得出一个概述性的大类。比如,生物学上,人被分类为真核

2017-08-23 21:09:18 299

原创 (Boolan) C++面向对象高级编程(二)

之前写到了关于不带有指针的class的设计思路和注意事项,但是对于C/C++语言来说,还有一个非常重要的概念就是指针,为什么将指针作为class设计的分界点呢?那么,之前我讲了一个关于猫ヽ(=^・ω・^=)丿的故事,那么今天我再来讲一个关于国王和宝箱的故事吧 _-)||。关于 指 针(钥匙)的一个小故事语文老师教导,讲故事需要先说明时间地点人物发生了啥:话说很久很久以前(发现词语好匮乏、

2017-08-23 21:09:15 415

原创 (Boolan) C++面向对象高级编程(一)

感谢侯捷老师的悉心讲授的课程,让我在对很多东西上有了更深层次的认识。我呢,是一个非计算机专业毕业的本科生,毕业后带着对程序感兴趣的后知后觉开始学习编程,也不是抱着以工作的目的导向去的,学的比较杂,也缺乏系统性。算算日子,距离第一行java代码已经过去两年有余了,对于飞CS的我来说,坚持到今天也算不易。但是用了这么就的“面向对象编程”,但自己其实不能太说清其本质到底为何物。这也算是我正规划的第一步

2017-08-23 21:09:12 407

转载 Switching From Windows to Nix or a Newbie to Linux – 20 Useful Commands for Linux Newbies

http://www.tecmint.com/useful-linux-commands-for-newbies/

2014-08-21 16:10:16 785

mysql-5.6.20.tar.gz

mysql-5.6.20.tar.gz mysql

2014-08-22

httpd-2.4.10.tar.bz2

httpd-2.4.10.tar.bz2 apache

2014-08-22

空空如也

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

TA关注的人

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