自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tracy Mcgrady的专栏

冰山一角。

  • 博客(409)
  • 资源 (16)
  • 收藏
  • 关注

原创 md5、sha1实例

md5、sha1都是一种hash算法,对于任意长度的数据,经过运算之后得到结果长度都是固定的,并且是不可逆的,也就是说在不知道原始数据的情况下破解是非常困难的,通常用于密码的加密存储、数字签名、文件完整性校验等等,代码如下:#include #include #include void bufdump(char *buf, int len){ while (len--) { pri

2015-12-30 16:07:41 1803

原创 mqtt协议理解(结合libemqtt,subscribe部分)

1. connect在libemqtt代码中,客户端的connect代码是调用的mqtt_connect函数,代码如下:int mqtt_connect(mqtt_broker_handle_t* broker){ uint8_t flags = 0x00; uint16_t clientidlen = strlen(broker->clientid); uint16_t usern

2015-12-29 17:54:59 9561 2

原创 JSON

1. JSON简介JSON是JavaScript Object Notation的缩写,是JavaScript语法的一个子集,类似于XML,用来存储文本信息的一种语法,例如:{ "employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }

2015-12-28 10:18:36 561

原创 Linux域名解析得到ip地址

Linux下域名解析得到ip地址代码如下:#include #include #include #include #include int main(int argc, char *argv[]){ struct hostent *p; int i; if (argc < 2) return -1; p = gethostbyname(argv[1]); print

2015-12-10 17:23:25 6654

原创 mqtt协议理解

mqtt协议包格式控制包最多由3部分组成:固定头部、可变头部和payload。1. 固定头部固定头部只有两个字节,格式如下:byte1的高4位就是包的类型,包的类型定义如下:低4位为flag位,有的包需要,有的包不需要:byte2为剩余数据的长度,数据是包含可变头部和payload的。这个长度如果是单个字节的话,最多只能是127,如果数值大于12

2015-12-10 17:12:14 2758

原创 mqtt协议

mqtt即Message Queue Telemetry Transport,是基于服务器端、客户端的一个消息传输协议,那么自然分为服务器端和客户端,github主页:https://github.com/mqtt/mqtt.github.io/wiki/software?id=software,这里有很多服务器端、客户端的实现。1. 服务器端mosquittomosquitto源代码

2015-12-04 17:00:37 2006

原创 关于磁盘分区

首先来看几个概念,主分区、扩展分区、逻辑分区。主分区:主分区通常是硬盘的启动分区,通常是硬盘的第一个分区,例如我们常说的"C"盘就是硬盘的主分区。扩展分区:除去主分区外,剩下的分区都被称为扩展分区。逻辑分区:扩展分区是相对于主分区而言的,只是一个概念,并不能直接拿来使用,必须再划分成为逻辑分区,通常的"D"、"E"、"F"盘都是硬盘的逻辑分区,而他们又属于扩展分区。例如,在

2015-12-03 10:24:00 557

转载 Introduction to AT commands and its uses

IntroductionAT commands are instructions used to control a modem. AT is the abbreviation of ATtention. Every command line starts with "AT" or "at". That's why modem commands are called AT commands

2015-11-27 11:40:18 702

原创 什么是2G、3G、4G

什么是GSM?根据通信百科的解释如下:GSM全名为:Global System for Mobile Communications,中文为全球移动通信系统,俗称"全球通",是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。我国于20世纪90年代初引进采用此项技术标准,此前一直是采用蜂窝模拟移动技

2015-11-27 10:50:14 1165

原创 getopt函数

getopt函数用于解析命令行参数,Linux中的很多命令都用到了这个函数,函数原型如下:#include int getopt(int argc, char * const argv[], const char *optstring);其中,argc、argv是main函数中传递进来的,而optstring则是用来解析命令行参数个一个字符串,示例如下:#include

2015-11-04 16:00:27 608

原创 gtk events

1. 按钮点击事件代码如下:#include void button_clicked(GtkWidget *widget, gpointer data){ g_print("clicked\n");}int main(int argc, char *argv[]){ GtkWidget *window; GtkWidget *halign; GtkWidget *btn;

2015-10-21 10:59:50 825

原创 gtk dialog

1. message dialogmessage dialog有四种类型,分别是info、warning、question、error,代码示例如下:#include void show_info(GtkWidget *widget, gpointer window){ GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WI

2015-10-20 15:04:59 1446

原创 gtk布局

1. GtkFixedGtkFixed是固定控件位置和大小的容器,代码示例如下:#include int main(int argc, char *argv[]){ GtkWidget *window; GtkWidget *fixed; GtkWidget *btn1; GtkWidget *btn2; GtkWidget *btn3; gtk_init(&argc,

2015-10-16 17:16:39 826

原创 gtk学习

紧接着上一篇文章来继续学习gtk。1. 窗口居中显示#include int main(int argc, char *argv[]){ GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WIND

2015-10-13 10:31:06 650

原创 gtk第一个程序

1. 首先是gtk开发环境的安装由于通过源码方式安装gtk开发环境过于复杂,这里就不去介绍了,直接使用命令sudo apt-get install build-essential gnome-devel来安装gtk的开发环境。2. 程序示例代码如下:#include

2015-10-08 16:32:09 579

原创 耳机标准

耳机通常分为两种类型,即headphone和headset,那它们有什么区别呢?其实headset就比headphone多个microphone,也就是常说的3节、4节耳机。3节耳机的插头定义如图所示:从左到右依次为左声道、右声道,GND。而4节耳机多了一个microphone,4节耳机常见的也有两种标准,即国家标准(OMTP)和国际标准(CTIA),它们区别在于mic和G

2015-09-18 16:46:56 2845

原创 Android wakelock

Android wakelock机制是为了防止系统进入suspend或其他低功耗状态,那么首先来看driver API。那么在driver中需要include一个头文件,例如:struct state { struct wakelock wakelock;};init () { wake_lock_init(&state->wakelock, WAKE_LOCK_SUSPEND,

2015-09-17 18:12:48 702

原创 阻塞型I/O

在调用read、write等方法时,如果此时驱动无法满足要求时应该做何处理,例如当调用read系统调用时此时没有数据可读,或者调用write系统调用时没有空间供调用进程写入,调用进程是不会考虑这些事情的,它只是简单的调用read、write系统调用并等待它们的返回,那么这个时候应该阻塞调用进程,使它进入睡眠直到可操作时。那么在driver中使用等待队列来实现,等待队列由一个等待队列头来管理

2015-09-01 17:53:21 557

原创 霍尔器件

霍尔器件是一个磁感应器件,在手机等平台上主要用于例如滑盖手机、翻盖手机等场合,用于控制屏幕的亮、灭。那么如果来写driver呢,这里主要调用input_report_switch来上报事件,当然也可以上报其它键值,上层根据键值来做不同的处理。首先是input设备的注册,注册同其它input设备没有什么不同,这里主要看input设备的setting:input_set_capabil

2015-08-28 14:12:47 1775

原创 Linux select和poll系统调用

很多时候,我们调用read函数从文件描述符中读取数据时,如果此时恰好没有数据可读,read系统调用势必会阻塞住。同样,当调用write函数时,而没有空间供我们写入,write系统调用也会被阻塞住,直到有空间被写入时。那么在这种情况下我们为了不阻塞我们的程序,就需要检查文件描述符是否可读或可写。1. select系统调用首先我们来看一段代码:#include #include in

2015-08-11 17:50:21 1495

原创 Linux 用户和组编程

在Linux中,每个用户都有一个唯一的用户名和用户id。而用户又可以隶属于一个或多个组,每个组也有一个唯一的组名和组id。1. 密码文件/etc/passwd首先来看密码文件,对系统中的每个用户账户,密码文件/etc/passwd都会专门有一行对其进行描述,每一行都包含7个字段,用冒号分割,例如:root:x:0:0:root:/root:/bin/bash登录名:第一个字段是

2015-08-11 11:23:36 714

原创 android kl文件

android kl(key layout)文件是一个映射文件,是标准linux与anroid的键值映射文件,kl文件可以有很多个,但是它有一个使用优先级:/system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl/system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl/system/u

2015-08-08 16:28:47 14787

原创 Linux 文件相关编程

1. access系统调用access系统调用用于检测所指定的文件访问权限,原型如下:#include int access(const char *pathname, int mode);代码示例如下:#include #include int main(int argc, char *argv[]){ if (access(argv[1], F_OK))

2015-08-03 16:49:27 659

原创 graphviz教程

graphviz是一个开源的图形可视化软件,与其他图形软件所不同,它的理念是“所想即所得”,通过dot语言来描述并绘制图形。首先是安装,在ubuntu下,可以直接使用命令sudo apt-get install graphviz命令来安装,当然也可以从源码来安装,源码可以从这里下载:http://www.graphviz.org/pub/graphviz/stable/SOURCES/

2015-07-29 19:30:10 15572

原创 Android early suspend/late resume

early suspend/late resume是Android在标准Linux上增加的一个suspend/resume机制,也就是说标准Linux kernel中是没有这个机制的。early suspend也就是常说的浅睡眠,当用户空间请求内核进入suspend时,early suspend首先被调用,例如常见的会让屏和tp停止工作。首先来看early suspend相关接口函数应该如

2015-07-13 19:30:16 2289

原创 Linux/Android多点触摸协议

关于Linux多点触摸协议大家可以参考kernel中的文档:https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt,而这里根据实际的例子来理解多点触摸协议。多点触摸协议有两种,A协议和B协议。首先来看A协议,协议上说了报点格式是这样的,以两点为例: ABS_MT_POSITION_X x[0

2015-07-02 18:22:01 7203

原创 图像插值算法(最近临插值算法)

对于图像缩放算法来说,最近临插值算法是最简单的。最近临插值算法的原理是在原图像中找到最近临的一个点,然后把这个点的像素值插入到目标图像中,最近临插值算法优点是算法简单,易于实现,但是缺点是由于相邻像素点的像素值相同,容易出现色块现象。那么如何在原图像中找这个目标点呢,算法公式如下:src_x = dst_x * (src_width / dst_width);src_y = dst_y

2015-06-24 19:25:46 5915 2

原创 Android getevent用法

getevent命令用法如下:Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]    -t: show time stamps    -n: don't print newlines    -s: print swi

2015-06-16 10:06:43 12411 3

转载 Android Init Language

Android Init Language---------------------The Android Init Language consists of four broad classes of statements,which are Actions, Commands, Services, and Options.All of these are line-orient

2015-06-08 13:59:01 980

转载 Android的init过程(二):初始化语言(init.rc)解析

转载自:http://blog.csdn.net/nokiaguy/article/details/9109491本文使用的软件版本Android:4.2.2Linux内核:3.1.10    在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性。在本文将会详细分析init最重要的一环:解析init.rc文件。init.rc文件并不是普通

2015-06-08 13:54:12 778

原创 libxml2 的一个简单示例

该示例来自:http://www.xmlsoft.org/xml文件如下: John Fleck June 2, 2002 example keyword This is the headline This is the body text. 解析代码代码如下:#include #include #include #include #inc

2015-06-06 11:42:01 1880

转载 libxml2 使用教程

/* 查询节点集 */  xmlXPathObjectPtr getnodeset(xmlDocPtr doc, xmlChar *xpath){      xmlXPathContextPtr context;      xmlXPathObjectPtr result; /* 存储查询结果 */        /* 创建一个xpath上下文 */      contex

2015-06-06 11:33:41 7800

转载 XML技术概览

本文整理自w3school上的内容http://www.w3school.com.cn/x.asp。    1、XML简介    当 XML(扩展标记语言)于1998年2月被引入软件工业界时,它给整个行业带来了一场风暴。有史以来第一次,这个世界拥有了一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用于 WEB,而且可以被用于任何地方。XML被设计用来传输和存储数据。这与HTML

2015-06-06 11:31:06 917

原创 ia32问题

在64位ubuntu版本上使用mini2440的交叉编译器会出现下面的错误信息:/opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared objec

2015-06-04 23:25:17 739 1

原创 minicom保存uart log

使用minicom也有很长时间了,只用minicom抓过uart log,但是从来没有去保存过这个log,也不知道有这个功能。后来在超级终端中发现有这个功能(传送->捕获文字),想想minicom应该也有这个功能才对,后来搜索找到怎么用了,方法如下:首先打开minicom,然后按一下ctrl + a,再按z键,会出现下面这个界面:看到Capture on/off这项了吗,按下L键,会出现下

2015-06-03 19:36:06 27545 2

原创 为Android增加一个关机命令

首先在external目录下创建一个目录shutdown,然后进入shutdown目录,创建两个文件Android.mk和shutdown.c,增加内容如下:#define LOG_TAG "shutdown"#include #include #include #include #include int main(int argc, char *argv[]){ int

2015-06-02 16:59:38 981

原创 如何引导windows xp和ubuntu 12.04

之前一直使用的ubuntu + 虚拟windows xp的方式,虽然这也没有什么问题,可是有的应用毕竟不能在虚拟windows xp上使用,而且也发现越到后来虚拟的windows使用越慢,所以还是想办法装windows xp + ubuntu双系统的方式。先装上windows,然后再使用U盘方式装上ubuntu 12.04(必须以这个顺序),但是有个问题,以什么方式来引导windows xp和ub

2015-05-14 23:11:51 1818

原创 vim + ctags + cscope + taglist

1. ctags 和 cscopectags下载地址:http://ctags.sourceforge.net下载完成之后,解压,然后执行configure脚本生成Makefile文件,然后make,然后执行sudo make install来安装ctags。cscope官网地址:http://cscope.sourceforge.net,可以在官网找到下载链接。然后解压,同c

2015-05-08 18:30:43 1100

原创 vim 学习

1. 基本的编辑命令学会使用一个编辑器呢,我们先不管它的一些高级特性,先只看最基本的,至少保证我们能够正常使用这个编辑器吧。首先来认识vim编辑器,vim编辑器是一个模式编辑器,也就是说它可以工作在多个模式下,常见的有Normal和Insert模式,当我们打开vim编辑器之后,它最初是在Normal模式下的。再来看我们怎么输入文本呢?在Normal模式下输入字符'i',vim由

2015-05-03 12:34:30 717

原创 V4L2 应用编程

1. 打开设备、关闭设备在V4L2中,打开、关闭设备同打开其他设备没有什么不同。例如:fd = open("/dev/video0", O_RDWR);close(fd);2. 查询设备属性在V4L2编程中,会用到很多的ioctl函数,其中这里会跟一个VIDIOC_QUERYCAP命令,最后一个参数是struct v4l2_capability类型,struct v4l2_

2015-05-01 17:44:36 1493

ubox gps协议

本文档是ubox gps协议的详细介绍,在于对nmea语句的了解。

2016-01-18

hx8389b datasheet

hx8389b datasheet,方便做mipi开发的朋友们。

2015-01-05

J-Flash s3c2440的配置文件

用于J-Link J-Flash的2440配置文件,可用于mini2440 micro2440等开发板。

2014-07-05

led.tar.gz

sdcc使用Makefile的led工程实例

2014-01-13

sdcc-3.3.0-i386-unknown-linux2.5.tar.bz2

sdccc Linux x86二进制包。

2014-01-02

intel MCS51 MICROCONTROLLER FAMILY USER'S MANUAL

Intel 8051编程手册,对学习51的很有帮助

2012-11-17

u-boot nor flash驱动

u-boot的完整nor flash驱动,nor flash型号为sst39vf1601。

2012-06-01

编程修养-陈皓

讲述编程中需要注意的问题,如何提高自己的编程技术,自己编写的代码更稳定、易读、规范、易维护、专业。

2012-05-19

ARM汇编手册

arm汇编手册,对arm汇编学习很有帮组

2011-12-31

TDS1000B系列用户手册

TDS1000B系列 数字存储示波器 用户手册

2011-12-16

ARM Architecture Reference Manual

本手册介绍符合 ARMv4 和 ARMv5 标准的处理器的指令集、内存模型和程序员模型,这类处理器包括: * ARM7 * ARM9 * ARM10 * StrongARM * Intel XScale * Marvell Feroceon 产品系列 本手册还介绍最初的 ARMv6 体系结构版本。Thumb-2 或 TrustZone 安全扩展的内容不包含在本手册中。

2011-12-05

64-ia-32-architectures-software-developer

Intel处理器软件开发参考手册,对于理解Intel体系架构,以及汇编程序编程都有帮助

2011-12-02

Linux汇编教程

Linux下AT&T语法汇编教程,讲AT&T语法汇编比较少,讲的好的就更少了

2011-11-29

AT&T语法汇编教程

Linux下AT&T语法汇编程序教程,将AT&T语法书比较少,好的书就更少了

2011-11-28

深入理解计算机系统

以程序员角度理解计算机系统知识,适用于那些想要写出更快、更可靠程序的程序员。

2011-11-28

QT编程艺术

QT编程艺术,个人觉得比较好的QT编程书籍

2011-11-20

空空如也

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

TA关注的人

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