- 博客(101)
- 收藏
- 关注
原创 test
fsdfasstruct mtd_chip_driver { struct mtd_info *(*probe)(struct map_info *map); void (*destroy)(struct mtd_info *); struct module *module; char *name; struct list_head list;};
2019-02-28 08:18:47
186
原创 test markd
{ struct device_node *dn = of_find_matching_node(from, matches); struct resource res; while (dn) { if (of_address_to_resource(dn, 0, &res)) continue; if (res.start == base_address) r...
2019-01-21 10:19:23
214
转载 UML类图与类的关系详解
虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;上面是UML的语法。在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关...
2019-01-05 13:21:26
226
2
转载 GRASP软件设计的模式和原则
GRASP模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。”这是关于模式最经典的定义,作者是建筑大师Christopher Alexander。如果是第一次看到这句话,多数人会觉得有些抽象难懂。其实“模式”两个字只是一个代号,就像我的英文名字叫Justin,如果我改叫Tom也没什么问题,只是我更喜欢Justin这个名字,所以从Christopher开始,有...
2019-01-05 13:04:14
303
原创 C中的总线错误和段错误
最近写了个基于linux的日志系统,中途遇到了两个错误: bus error(core dumped)和segmentation fault(core dumped)。 这两个错误非常的折磨人,错误信息对引起这两种错误的源代码错误并未作简单的解释,上面的信息并未提供如何从代码中寻找错误的线索。所以往往很难定位到具体出错在哪里。大多数的问题都出于这样一个事实:错误就是操作系统(OS)所检测到...
2018-05-20 01:36:08
1659
原创 有用的C语言工具
用于检查源代码的工具 工具 工具简要说明 参考链接 indent linux下代码格式化工具 Linux 代码格式化工具 indent astyle 一个开源的代码格式化工具,可美化C,C++,C++/CLI,Objective‑C,C#,Java等各种语言,还可集成到IDE,强烈推荐 Astyle:代码格式化工具简明指南 Linux下C/C...
2018-05-20 01:35:27
1087
原创 理解C语言声明的优先级规则
C语言的声明有时会很长,让人感到恐惧。这里描述了一种方法,用通俗的语言把声明分解开来,分别解释各个组成部分。理解C语言声明的优先级规则的步骤声明从它的名字开始读起,然后按照优先级顺序依次读取。优先级从高到低依次是:声明中被括号括起来的那部分后缀操作符: 括号()表示这是一个函数, 方括号[]表示这是一个数组前缀操作符:星号*表示“指向…的指针”如果const和(或)...
2018-05-20 01:34:35
364
原创 C语言常被搞错的运算符优先级
C语言的运算符有优先级和结合性两个属性,而且相同的符号存在复用的情况,所以很容易造成错误。这里有个建议,多给表达式加上括号,可以提高代码的可读性和减少错误的发生。C语言运算符优先级存在的问题 优先级问题 表达式 人们可能误以为的结果 实际结果 .的优先级高于*->操作符用于消除...
2018-05-20 01:27:49
257
原创 C语言中容易混淆的const关键字
const关键字是ANSI标准新增加的关键字。const是个类型限定符,可以和任何类型说明符一起使用,以指定被声明对象的特殊属性。C语言的类型说明符包括: - void - char - short - int - long - float - double - signed - unsigned - 结构体说明符 - 联合体说明符 - 枚举说明符 - 类型定义名co...
2018-05-20 01:24:02
284
原创 对C语言中无符号类型的建议
算术类型转换首先给出一段C代码:int main(void){ if (-1 < (unsigned char)1) printf("true, ANSI C semantics\n"); else printf("false, K&R C semantics\n"); return 0;}这段程序分别在AN...
2018-05-20 01:22:38
354
原创 C语言版本迭代
和大多数编程语言一样,C语言版本迭代过程也经历了诞生,到被关注,被广泛使用,必须标准化,最后普及的过程。《C专家编程》一书有介绍C语言诞生及K&R C,ANSI C,ISO C等标准化的一些故事,有兴趣的可以去看看。作为程序员,我关心的是版本的标准迭代。1978年,C语言经典名著The C Programming Language出版了,该版本描述的C受到了广泛使用,被称为K&am...
2018-05-05 23:25:51
782
原创 ANSI C定义的一些关于可移植性的术语说明
ANSI C标准定义了一些术语,用于描述某种编译器的特点。对这些术语有一个比较好的了解,对于提供代码的可移植性和错误的排查都有帮助的。不可移植的代码(unportable code)由编译器定义的(implementation-defined): 由编译器设计者决定采取何种行动,也就是说在不同的编译器中所采取的行为可能并不相同,但是它们都是正确的。每个编译器的文档会给出具体的行为方式。...
2018-05-05 17:35:44
245
原创 FreeRTOS IPC总结
createreceive/takesend/give/releasequeue_lenxItemSizeuxMessageWaitingwhen initBASExQueueCreatexQueueCreateStaticxQueueReceivexQueueReceiveFromISRxQueueSen
2018-05-03 09:17:13
1103
原创 各种屏幕分辨率列表
各种屏幕分辨率列表序号显示模式代码水平×垂直象素比例说明1QQCIF88×7211:9QuarterQuantum CIF2SUB-QCIF128×964:33
2018-04-27 17:47:10
8974
原创 《HeadFirst设计模式》读书笔记-第9章v3-组合迭代器
定义组合迭代器不是一个设计模式,是指如何在组合中使用迭代器。所以本章的代码是基于《HeadFirst设计模式》读书笔记-第9章v2-组合模式 修改过来的,需要先熟悉组合模式。代码实现首先在MenuComponent接口中增加一个方法 public abstract Iterator createIterator();MenuComponent.javaimpo...
2018-04-15 19:01:45
172
原创 《HeadFirst设计模式》读书笔记-第9章v2-组合模式
定义组合模式(composite pattern)允许你将对象组合成树形结构来表现“整体/部分“层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。代码实现本章使用组合模式来实现下图的树状菜单。首先为菜单和菜单项创建一个共同的接口作为组件接口,让我们能够用统一的做法来处理菜单和菜单项。换句话说,客户(Waitress)可以针对菜单或菜单项调用相同的方法。组件...
2018-04-15 10:45:01
224
转载 camera sensor readout position(flip/mirror)
预览过程:景物(sence)通过镜头(lens)生成的光学图像投射到图像传感器(sensor)上,图像以pixel为单位通过MIPI/DVP接口传输到VFE,经过external memory,最后经过MDP然后将图片显示到屏上。偶尔会出现这样情况:在屏上显示的图像方向不对。这是因为模组厂不严格根据sensor厂给出的sensor放置位置打样。
2018-03-19 19:39:44
704
原创 Aptina MT9M114 1.26M camera spec 学习
MT9M114是出自ON半导体公司的CMOS (CMOS与CCD的区别) digital image sensor, active-pixel array是1296 (H) × 976 (V)=1.26Mp.关键参数 Parameter Typical Value 中文解释 Optical Format 1/6-inch ...
2018-03-19 19:36:28
1774
转载 Bayer Pattern
在刚加入工作的时候,听到最多的就是RGGB Bayer Pattern。在之前的接触中,一直默认一张图片的每个像素点有RGB三个分量,那“RGGB Bayer Pattern”究竟是什么意思。在网上查找资料以后发现这其实也是非常简单的概念。以下内容大部分为翻译,结合“CCD工作原理教程(V1.2)”。1. 硬件上私以为对CCD的原理有大致了解可以帮助我们对Beyer Pattern
2018-03-16 14:55:24
289
转载 这三个普通程序员,几个月就成功转型AI,他们的经验是...
动辄50万的毕业生年薪,动辄100万起步价的海归AI高级人才,普通员到底应不应该转型AI工程师,普通程序员到底应该如何转型AI工程师?以下,AI科技大本营精选了三个特别典型的普通程序员成功转型AI的案例,也是知乎上点赞量相当高的案例:第一案例为普通程序员,经过六个月从接触机器学习到颇有心得的切身体会。第二个案例为只懂 ACM 竞赛相关算法
2018-03-11 10:59:12
287
原创 Linux 内核的并发和竞态
1. 并发的原因并发可能会导致竞态(race condition),竞态会导致对共享资源的非控制访问, 产生非预期的结果。Linux的并发来源于下面几个方面:正在运行的多个用户进程以无法预知的方式访问驱动程序代码外部设备的中断异步的发生,导致正在运行的进程或者驱动代码被中断linux的软件抽象(如timer, tasklet, workqueue)也在异步运行着现在SMP的处理器架...
2018-03-02 22:34:38
256
转载 Linux对I/O端口资源的管理
Linux对I/O端口资源的管理摘要 本文主要从内核实现的角度分析Linux 2.4.0内核IO子系统中对IO端口资源的管理的实现原理。本文是为那些想要深入分析Linux的IO子系统的读者和设备驱动程序开发人员而写的。(2002-10-08 14:14:05)By 阿开 Copyright © 2002 by 詹荣开 E-mail:zhanrk@soh
2018-02-27 09:23:53
398
转载 module_init解析及内核initcall的初始化顺序
module_init这个函数对做驱动的人来说肯定很熟悉,这篇文章用来跟一下这个函数的实现。在include/linux/init.h里面有module_init的定义,自然,因为一个module可以在内核启动时自动加载进内核,也可以由我们手动在需要时加载进内核,基于这种场景,内核使用了MODULE这个宏,见代码:#ifndef MODULE#ifndef __ASSEMBLY
2018-02-26 20:27:02
336
转载 符合JEITA规范的锂离子电池充电器解决方案
符合JEITA 规范的锂离子电池充电器解决方案 作者:钱金荣 (Jinrong Qian),德州仪器 (TI) 高级便携式产品电池充电管理部门经理 引言在高温下过充电时,锂离子 (Li-ion) 电池往往会变得很危险。对这些电池安全充电,已经成为电池供电的便携式设备中最重要的设计规范之一。在建立工业标准方面已经取得了一些进展,例如:旨在提高电池充电安全性的日
2018-02-25 18:29:33
2339
转载 简单介绍I2C总线
转自 《I2C总线协议应用指导书》 魏芬 编著说的简单通俗,所以转载了。第7章 I2C 总线简介ZLG7290B与微控制器的接口形式是I2C串行总线,因此有必要简要地介绍一下I2C总线协议标准。第8章还给出了用C51编写的I2C总线软件包,以供参考学习。7.1 I2C总线概述飞利浦(Philips)于20多年前发明了一种简单的双向二线制串行通信总线,这个总线被称
2018-02-24 17:51:37
640
原创 安装和使用echo-nginx-module模块
在配置和调试nginx.conf中的location时,有一个非常有用的模块可以安装, 那就是echo-nginx-module,它可以在location中直接使用类似linux shell命令echo一样的指令,帮助验证location配置是否符合预期。我在配置location的过程中,就遇到过奇怪的问题,最后发现因为代码走错了location。下载nginx源码mkdir ngin...
2018-02-10 17:59:06
2999
原创 android uevent的工作原理
Uevent是Linux/Android驱动模型的一部分,当设备添加或者删除时通知用户空间的一种统一方式。Uevent在内核空间如何发送到用户空间uevent模块使用起来比较简单,就是设备状态改变的时候,调用kobject_uevent系列的api即可,具体实现在可查看源码。// kernel_src/lib/kobject_uevent.cint kobject_uevent(struct k
2018-02-02 17:48:49
611
转载 DD-WRT中的各种无线模式
转载自: http://kusorz.blog.51cto.com/59379/1752092DD-WRT是一款功能强大的第三方路由器固件,通过设置不同的无线模式,可以增强无线路由器的功能。Broadcom芯片有这几种模式:访问点(AP),客户端(Client),客户端网桥(Clinet Bridge),点对点(Adhoc), 中继(Repeater),中继桥接(Repea
2017-10-13 17:10:46
3491
原创 得到-薛兆丰的北大经济学课-4-价格的作用
第037讲 经济计算问题经济学史上有一场持续了100多年的辩论,那就是经济是不是可以计划的问题.正方观点:经济是可以计划的,哪怕现在暂时做不到,将来也一定能够做到.理由是,人和自然界一样,都会产生很多数据,都根据一定的规律行事.只要我们掌握足够多的关于经济运行的规律,而且计算能力也跟的上的话,就可以对经济作出预测,对人类社会作出预测,甚至作出控制.反方观点:经济是不可预测的.理由是在预
2017-09-13 09:16:44
4322
原创 linux实用工具之sed实例
sed是linux上进行文本过滤和转换的流编辑器工具。sed以行为处理单位,依次从输入文件(可以是stdin,pipeline或者文件)读取每一行,执行相应的脚本,然后把处理过后的结果输出(同样可以输出到stdout,pipeline或者文件)。sed把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space)。一旦sed完成对模式空间中行的处理,模式空间中的行就被输出。行被处理完
2017-08-09 09:20:25
662
1
原创 Linux suspend-to-disk 流程分析
1. 实验平台cpu: omap4460 blaze tabletmemory: 1-GB DRAMOS: android 4.0.3, kernel 3.0.312.流程分析2.1 create and save image procedure1). echo "disk" > /sys/power/state2). state_s
2017-07-05 11:35:02
2165
2
原创 《HeadFirst设计模式》读书笔记-第9章v1-迭代器模式
定义迭代器模式(iterator pattern)提供了一种方法顺序访问一个集合对象中的各个元素,而又不暴露其内部的表示。代码实现下面以JDK现有的Iterator的例子来说明适配器模式使用。给出创建Iterator接口的定义:import java.util.Iterator;public interface Menu { public Iterator ...
2017-04-24 08:26:45
510
原创 《HeadFirst设计模式》读书笔记-第7章v1-适配器模式
定义适配器模式(adapter pattern)将一个类的接口,转换成客户期望的另外一个接口。适配器让原本不兼容的类可以合作无间。上图清晰地表述了适配器模式的威力,通过创建适配器接口,现有的系统可以不用修改代码就可以通过适配器接口调用厂商类,现有的系统和厂商类之间可以很好地协作。适配器模式让不兼容的接口变成兼容,还可以让客户从厂商类的实现中解耦,当厂商类改变时,适配可以封装变化,客...
2017-04-23 00:04:56
359
原创 《HeadFirst设计模式》读书笔记-第7章v2-外观模式
定义外观模式(facade pattern)提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更加容易使用。从上面的图可以看出,Facade类对子系统进行了一下封装,客户只需要和Facade类打交道,不需要接触子系统中的各个类,也不需要了解子系统中各个类间的关系。从这个角度来说,客户也就与子系统解耦了,不需要依赖于子系统中具体的类了。外观模式的一个重...
2017-04-20 23:44:23
340
原创 《HeadFirst设计模式》读书笔记-第8章-模板方法模式
定义模板方法模式(template method pattern)在一个方法中定义一个算法的骨架,而将一些步骤延时到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。下面给出了该类图的代码实现和说明:public abstract class AbstractClass { /** * 这个是个模板方法 * 声明为final...
2017-04-19 23:28:35
423
原创 Android与MVC设计模式
概念Android应用是基于MVC(Model-View-Controller)的架构模式进行设计的。Android应用中的任何对象,都属于模型对象,控制器对象,视图对象三类对象中的任何一种:模型对象模型对象存储着应用的数据和业务逻辑。模型类通常用来映射与应用相关的一些事物。模型对象不关心用户界面,它存在的唯一目的就是存储和管理应用数据。应用的全部模型对象组成了模型层。视图对象视图对象知道如何在
2017-04-17 20:56:01
598
原创 正则表达式总结
正则表达式(regular expression)是一个模式,这个模式描述了一个字符串的集合。 当前常见的有3个不同版本的正则表达式语法,它们是“basic” (BRE), “extended” (ERE) and “perl” (PRCE)。perl正则表达式提供了比extended更加丰富的功能,但是不一定在所有的平台上能够使用这些所有定义的功能。关于perl正则表达式的语法可查看man
2017-04-09 18:55:32
580
原创 《HeadFirst设计模式》读书笔记-第3章-装饰者模式
定义装饰者模式(decorator pattern)动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。从上面的类图可以看出,装饰者(ConcreteDecoratorA)和被装饰者(ConcreteComponent)具有相同的超类型(Component)。在这里,我们利用继承达到“类型匹配”,而不是利用继承获得行为。由于装饰者和被装饰者有相同的类型,所以装...
2017-03-28 23:05:21
263
原创 《HeadFirst设计模式》读书笔记-第6章-命令模式
定义命令模式(command pattern)将请求封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。从上面的类图可以看出,一个命令对象通过在特定接收者上绑定一组动作来封装一个请求。要达到这一点,命令对象将动作和接收者包装进对象中,这个对象只暴露出execute()/undo()方法,当execute()/undo()方法被调用的时候,接收者就会...
2017-03-21 23:06:57
350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人