自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

良师,益友

一直在路上:嵌入式(安防) -> 人工智能 -> 芯片

  • 博客(82)
  • 资源 (18)
  • 收藏
  • 关注

原创 智能家居之智能产品的表现形式

有木有一款产品能把手机、路由器、遥控宝、摄像头、触摸开关、传感器、家电等等完美的结合在一起呢?答案是肯定的!!!

2014-08-11 15:31:24 2112

原创 arm-linux AP热点

AP(Access Point)即无线接入点。我使用的是rt5370网卡(海思平台,工具链为:arm-hismall-linux-gcc),rt5370有三种模式:AP模式、STA模式以及STA-AP模式。        AP:即释放wifi热点供外部网卡(STA)连入。        STA:为普通网卡模式可连接外部路由器(AP)。        STA-AP:即可连接外部无线网络并

2013-12-04 09:19:27 7329 13

原创 C++ sizeof实例详解

在C++中使用sizeof要比C复杂很多,因为C++类中有static静态变量,virtual虚函数,还有继承、派生等。sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。sizeof使用形式有三种:sizeof(var_name)或sizeof var_name或sizeof(var_type)。 下面5个列子针对C++,没有涉及到sizeof字节对齐及基本数据类型即只针对C++特有,并且针对的是32位机。

2013-07-19 11:42:57 2949 5

原创 ARM-Linux下WEB服务器Boa的移植、配置和运行测试

Linux下使用的轻量级WEB服务器主要有:lighttpd、thttpd、shttpd和boa等等,而Boa是使用最为广泛的轻量级WEB服务器之一(当然,阿帕奇是世界使用排名第一的Web服务器软件)。Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。 工具链为:arm-hismall-

2013-07-17 16:30:13 5066

原创 不能错过的4本Linux好书

2010年大学毕业,在Linux下编程已三年有余了。最近看论坛上不少朋友谈论看过的编程(Linux)书籍,我感触良多。回头想想,当初那个一无所知,而且老是爱问白痴问题的自己,都想笑,如今终于入门了。再回头数数,这几年买过的关于Linux的书籍太多了:《嵌入式Linux应用开发完全手册》《Linux设备驱动开发详解》《深入理解LINUX内核》《LINUX设备驱动程序(第3版) 博韦》《unix环

2013-07-01 09:31:30 59295 120

原创 项目即将死亡的前兆

1)第一版做太多功能;        2)太依赖新技术平台        3)与公司另一个有份量的产品竞争        4)团队人手不足        5)复杂的问题,需要复杂的解法…        6)成员开始隐藏进度落后的事实和原因        7)不断更改、增加的需求        8)2.0 症候群-非要更大、更强、更美        9)产品没有市场立

2013-07-01 09:30:19 2552 1

原创 字符编码转换libiconv库

当前流行的字符编码格式有:US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16、GBK、GB2312等,其中GBK、GB2312是专门处理中文编码的。因为在Email时使用中文老出现乱码问题,需要"gb2312"转换成"utf-8"格式,所以,需要使用字符编码转换,而libiconv是一个常用的编码转换库,支持常用的多种编码之间的转换。在Linux下

2013-06-25 10:39:17 5689 2

原创 2013年夏,我们的产品出现了散热问题

夏天来了, MM的身材是一道美丽而直接的风景;如果驱车去深圳大梅沙,不光可以游泳,看海,和看飞(鸟)人;比基尼也是一道让人遐想的风景。当然,也可以去河源玩漂游更为刺激——这一切都是因为美好的夏天。但就在今年的夏天,2013年的夏天,我们的产品出现了“散热”问题,一个让我们伤尽脑筋的问题,一个让我们一年的努力都将付之东流的问题——这一切都是因为炎热的夏天。所以,这个夏天对我来说,不太美。

2013-06-17 08:55:37 2150 7

原创 探讨父子线程、进程终止顺序不同产生的结果

Linux下编程,线程、进程退出顺序问题纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处理呢?反之,如果子进程/线程先于父进程/线程终止,系统又会做什么处理呢?下面是我个人平时在笔记上做的一些象征性的总结,如果有疑问之处,大可提出,我一直认为怀疑是人类进步的根本所在。一、线程    Linux线程创建函数为pthread_create(),默认规则是谁创建子线程,谁就

2013-05-06 09:03:10 4898 1

原创 Linux自动判断是否插入网线的几种方法

在嵌入式产品上,如何让用户选择有线还是无线上网呢?如何让他们判断使用了哪种方式上网呢?我们是这样处理的:优先使用网线上网,稳定。即程序自动判断,如果查了网线,则使用网线上网,如果没有网线连接,则无线上网。    所以,问题的重点是如何判断用户是否插了网线!下面介绍四种方法,仅供参考。方法一:/mnt/wifi$ cat /proc/net/devInter-|   Receive

2013-04-17 09:19:14 10467 11

原创 getline()函数

我在网上搜了半天getline()函数,大多针对C++的,重载函数比较多,云里雾里的,而且没有实例,反正就是没有自己所需要的getline()函数。所以,自己在Linux下man了一把,并做了测试。getline()函数的功能是从文件中获取行信息,即每次读取一行信息。    因为我使用getline()函数的目的是获取本地网卡信息,即eth0的信息,从而判断启动机子时是否查了网线(本来可以从驱

2013-04-16 09:15:14 12248 6

原创 这些年我记下的一些编程错误

编程不经历错误或警告,怎能见彩虹,没有人能随随便便成为高手。身为程序员的我们,如果哪一天没有了错误或警告的提示,一定会有一种不祥的预感,对吧,都懂的。编程N年来,碰到过的问题多得自己都记不清了,你也一样,如果可以选择,我愿时光倒流,真希望都能记下来,现在就可以写本《错误集》了,。下面是我心情好时,有想法时,随手记下的几个错误或警告,遗憾的是,这些年,就记下那么几个而已,见笑了,希望能给像我一样在路

2013-04-15 09:15:22 14051 12

原创 RAM与Nand/Nor flash之间的区别

主要讲RAM与flash,以及NAND flash与NOR flash的区别。一、RAM和flash的区别    RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲cache。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间

2013-04-15 09:13:05 6631

原创 有或无操作系统的Linux设备驱动区别

一、驱动的作用    任何一个计算机系统的运行都是系统中软硬件协作的结果,没有硬件的软件是空中楼阁,而没有软件的硬件则只是一堆废铁。硬件是底层基础,是所有软件得以运行的平台,代码最终会落实为硬件上的组合逻辑与时序逻辑;软件则实现了具体应用,它按照各种不同的业务需求而设计,满足了用户的需求。硬件较固定,软件则很灵活,可以适应各种复杂多变的应用。可以说,计算机系统的软硬件互相成就了对方。

2013-04-15 09:12:49 2934

原创 Linux设备驱动的Hello World—LED驱动

要看懂驱动源码,肯定是要从最基本的看起,C语言中,如printf("hello world\n");而对于驱动,肯定是LED,呵呵,恰好年轻时写过一个,还保留着,而且是流水灯式的,下面以ARM270(共有8个LED灯)为例。一、无操作系统时的LED驱动    在嵌入式系统的设计中,LED一般直接由CPU的GPIO(通用可编程 I/O 口)控制。GPIO一般由两组寄存器控制,即一组控制寄存器

2013-04-15 09:12:26 2657 2

原创 关于ES、PES、PS以及TS码流

一、基本概念1)ES     ES--Elementary  Streams  (原始流)是直接从编码器出来的数据流,可以是编码过的视频数据流(H.264,MJPEG等),音频数据流(AAC),或其他编码数据流的统称。ES流经过PES打包器之后,被转换成PES包。    ES是只包含一种内容的数据流,如只含视频或只含音频等,打包之后的PES也是只含一种性质的ES,如只含视频ES的PES

2013-04-01 09:01:22 18912 6

原创 视频压缩:I帧、P帧、B帧

/****************************************************************************************************************************************************************************************说明:

2013-04-01 08:59:46 12217 4

原创 Linux下Json库的编译及代码测试

大部分情况下,我们需要对字符串进行解析,判断参数开始及结尾才能获取对我们有用的信息/参数,如果使用Json库,那对字符串的解析就显得非常的easy了,而Jsoncpp是用于c++的,让我们拭目以待吧。一、Json基础   JSON(JavascriptObject Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是在Javascript的一个子集,但

2013-03-25 09:28:16 6530

原创 海思hi3515各视频通道间的关系

主要是vi设备、vi通道、编码通道组以及编码通道间的一些分配关系,没有涉及输出设备、音频以及解码等通道关系。vi设备、vi通道、编码通道组以及编码通道间关系(写的太草,见笑了)注:1.Hi3515有4个VI设备端口,每个设备最多可接4路视频(视频输入通道与物理上的实际视频采集通道一一对应)。2.hi3515最多支持8路视频输入(VI通道)即设置接口模式为ITU-

2013-03-18 08:58:01 5316 1

原创 多媒体视频处理的一些基本概念

1.帧    在最早的电影里面,一幅静止的图像被称做一"帧(Frame)",影片里的画面是每一秒钟有24帧,为什么是24帧,这个数字是怎么来的,因为人类眼睛的视觉暂留现象正好符合每秒24帧的标准,所以用多也没有意义还会浪费电影胶片,增加成本,所以就是24帧。 2.帧与包    打个比方,我们在邮局邮寄产品时,虽然产品本身带有自己的包装盒,但是在邮寄的时候只用产品原包装盒来包装显然是

2013-03-18 08:57:41 3110

原创 数组指针和指针数组的区别

数组指针与指针数组的区别在于:数组指针p是一个指针,而指针数组p是一个存放N个指针变量的数组。一、数组指针    int (*p)[n]    重点:()优先级高([]、()的优先级是一样的,但它们的方向是从左至右的,所以先运行括号里的*p),首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长

2013-03-04 11:45:33 2493

转载 程序员的十大烦恼

程序员有太多的烦恼,下面有11个典型的烦恼,但名字取十个,顺口,易记!        每个程序员都有自己烦恼的事。不论这事指的是范围蠕变(scopecreep),还是指匈牙利变量命名(Hungariannotation),还是有臭味的同事,我们都明白,这是我们有我们行业里的特定的烦恼。当然,共有的烦恼也不少,其中最为敏感的就是:工资怎么还不涨,奖金这么少!!!下面要说的就是十大让程序员们烦恼的

2013-02-25 10:07:45 2446

原创 DHCP:开发板上动态获取ip的2种方法

DHCP动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:    1.给内部网络或网络服务供应商自动分配IP地址    2.给用户给内部网络管理员作为对所有计算机作中央管理的手段。方法一:dhclient    1.下载    https://www.is

2013-02-25 10:06:12 4512 2

原创 Linux下Wi-Fi的实现:wireless_tools和wpa_supplicant

平台为hi35XX,在Liunx下借助wireless_tools和wpa_supplicant(因为现在的无线wifi网络大多是wpa加密。所以需要移植wpa_supplicant工具)等工具实现wifi的过程。一、移植wireless_tools1. 下载并编译wireless_tools    tar zxf  wireless_tools.29.tar.gz(网上下载)

2013-02-25 10:05:49 7351

翻译 wpa_supplicant wps手册的翻译

看了《Wi-Fi Protected Setup in the wpa_supplicant》这篇文档,我想你就懂wps是怎么一回事了。   一、前言    The goal of Wi-Fi Protected Setup (WPS) is to automate the creation of a secure wireless network. The protocol re

2013-02-25 10:05:32 8676 3

原创 一键加密:WPS(Wi-Fi Protected Setup,Wi-Fi保护设置)

如果没有有效的安全加密设置,自己的局域网很可能在无意间就变成了公共网络。但是,面对WEP、WPA、WPA2等加密技术,用户往往觉得无线安全设置太麻烦,甚至感到那是高深莫测的事情。正是考虑到普通用户对无线安全设置的困惑,Wi-Fi联盟(Wi-Fi联盟是一家非营利性的全球行业协会,拥有275家成员企业,致力于共同推动无线局域网产业的发展)于2006年末推出了名为WPS的认证程序,那么,什么是wps呢?

2013-02-25 10:05:06 14156 23

原创 swap(a,b)值交换的4种方法

这篇文章所要表述的内容的确很简单,写之前,我纠结了很久:写与不写。平常swap(a,b)值交换,我们基本都是使用第一种方法,对于数学较好的人,可能会想到第二种方法,想到时,一定感觉很好,。对于汇编或对位有理解的人,可能会想到第三种方法,这个方法很妙。但,真正促使我写这篇文章的,还是第四种方法,妙,真的很妙,先(b = a),我是真没想到,我想,这么好的东西,尽管简单,但值得发表,以此共享。

2013-02-25 10:04:29 8888 9

原创 Linux线程管理必备:互斥量与条件变量

做过稍微大一点项目的人都知道,力求程序的稳定性和调度的方便,使用了大量的线程,几乎每个模块都有一个专门的线程处理函数。而互斥量与条件变量在线程管理中必不可少,任务间的调度几乎都是由互斥量与条件变量控制。互斥量的实现与进程中的信号量(无名信号量)是类似的,当然,信号量也可以用于线程,区别在于初始化的时候,其本质都是P/V操作。编译时,记得加上-lpthread或-lrt哦。    有关进程间通信

2013-01-28 09:10:53 4547 3

原创 通用i2c驱动

了解I2C的同志都知道,常规I2C驱动中的最重点就是这4个结构体:i2c_driver、i2c_client、i2c_adapter 和i2c_algorithm,而且他们之间的关系错综复杂,我看了好长一段时间,也没看出多少头绪来,而且代码的可移植性很差劲,换个平台,要该的地方一大堆,改了之后还不一定对呢,所以,下面介绍的通用I2C驱动就很必要了。    大家都知道, I2C总线仅仅使用SCL

2013-01-18 09:05:02 5861 4

原创 select函数详解

select()的机制中提供一个fd_set的数据结构,实际上是一个long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是Socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执行了select()的进程哪个Socket或文件可读。 一、select函数#incl

2013-01-04 12:19:20 12421 10

原创 Linux目录扫描:打印指定目录下的所有文件及目录

一、目录扫描函数及其相关结构1.  struct dirent *readdir(DIR *dp);   2.  DIR *opendir(const char *name);  4.  int closedir(DIR *dp);   5.  void rewinddir(DIR *dp);   6.  void seekdir(DIR *dp,long

2013-01-04 12:18:25 5499 6

原创 程序员诗2首:悲催诗(史)与爱情诗

我不是诗人,所以,只能够把爱你写进程序,当作不可解的密码,作为我一个人知道的秘密。

2012-12-28 17:38:03 10630 17

原创 C/C++混合编程

在工作中,C、C++密不可分,做我们嵌入式方面的,当然更多的是C,但,有时候却少不了C++,而且是C、C++混搭(混合编程)在一起的,比如,RTP视频传输,live555多媒体播放等都是C++下的,他需要调用JRTPLIB库,再比如,我那邮件发送,我也用C++写的,定义了一个Email对象,包含了成员:收发邮件地址,用户名,密码等,以及方法:邮件头、Base64编码和邮件发送这些操作,很好用,所以

2012-12-26 17:51:03 13086 10

原创 RTP通话:视频流(H.264)的传输

从摄像头获取的视频数据,经过编码后(当然,也可以不编码,如果你觉得也很ok的话),既可以视频录制,同时如果需要,当然也可以视频远程传输咯,而实时传输协议(Real-time Transport Protocol,RTP)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现传流媒体数据的实时传输。RTP

2012-12-25 09:38:34 11804 28

原创 Base64编码的原理及实现(源码)

Base64编码在邮件中最为常见,呵呵,因为我最近就是在做邮箱报警,SMTP验证就是Base64编码用户名和密码进行验证的,并且附件也是要转换成base64编码的数据,然后再发送的。该编码使用64个明文来编码任意的二进制文件,它里面只使用了A-Z,a-z,0-9,+,/这64个字符。编码里面还有“=”号啊,不过等号不属于编码字符,而是填充字符。    我在网上查了很多关于Base64编码代码,

2012-12-24 12:58:04 3026 1

原创 C语言指针并不难

C语言的核心在于指针,这2个指针题目,如果你不用编译就能得出正确的答案,那你一定是C的高手,不择不扣的高手—指针并不难!  第一题:求p[-1]、p[-5]的值(此题重点在于负号,很简单,考察对指针了解的广度方面)#include int main(void){       char* p = NULL;      char* tmp = "12345678";

2012-12-21 11:03:06 31983 13

原创 Linux下的时间函数:设置及获取时间

一、时间函数       time_t time(time_t *t);       char *asctime(const struct tm *tm);       char *asctime_r(const struct tm *tm, char *buf);       char *ctime(const time_t *timep);       ch

2012-12-19 17:04:27 3266 1

原创 精简Makefile

如果在Linux下玩不转Makefile,那你真out了,这应该是Makefile较为精华的部分,难得共享。 一、一个简单通用的Makefile例子1.编写源文件5个源文件:A.c   B.c   C.c   D.c   main.c5个头文件:A.h   B.h   C.h   D.h   main.h(工作中其实main.h可以不用的,也不用生成main.o)在同一

2012-12-19 10:53:20 3832 6

原创 Linux下\r\n问题

常在Linux下操作,难免要遇到\r\n问题,特别在很多地方比如最近的邮件发送,怎么都\r\n了,以前只有\n的时代好像已经过去了,因为我是一个比较喜欢总结的人,一个喜欢理论先行的人,所以,认真的测试并且理解了一番,尽管我个人认为是比较可以了,但,如果哪位高手看出了不妥之处,不吝赐教! 一、例子源文件:main.c例一:#include int main(void){

2012-12-18 11:10:57 6456 6

原创 字节序问题:大小端的判定

大小端的判断很简单,可判断了有什么用呢?这是一个难缠的问题,我最近就碰到了这样一个问题,比如,int a = 0x12345678,char* p = &a,那么p[0]等于多少呢?答案要么是0x12,要么是0x78,对吧,如果你知道他是小端(因为地球人都知道),那么你肯定就知道p[0] = 0x78,呵呵,换句话说,理解大小端对指针的运用还是有一定帮助的。 一、大小端概念

2012-12-17 13:32:45 1852 2

2011_0517_RT5370_RT5372_RT5390U_Linux_AP_V2.6.0.0_DPA.tar.bz2

RT5370--3070 AP驱动,详情请见本人博客

2014-03-28

boa-0.94.13.tar.gz

boa服务器源码,已通过移植,配置和测试。Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。

2013-07-17

udhcp_0.9.8cvs20050303.orig.tar.gz

嵌入式下的DHCP代码包,已经成功移植到多个平台:DHCP,动态分配IP。

2013-02-20

jrtplib-3.7.1.rar

jrtplib-3.7.1.rar ,RTP传输需要的库

2012-12-25

驱动点灯2.6内核

led驱动,包含Makefile文件。同时还有测试的流水灯应用程序。

2012-12-19

C/C++经典的销售信息管理源码

C/C++经典的销售信息管理源码,各个模块都很齐全,框架结构清晰,一看就懂。

2012-12-14

C语言函数集大全

C语言函数查询大全,C函数查询应有尽有。

2012-12-11

Linux常用指令大全

Linux常用指令大全,满足你对linux的好奇心。

2012-12-11

C/C++面试经典大全

C/C++面试经典大全,认真看完后,C/C++方面面试、笔试肯定过。

2012-12-08

Linux下udp多播程序

Linux下udp多播程序,含客户端和服务器以及Makefile

2012-12-08

Linux下的udp广播程序

Linux下的udp广播程序,含客户端和服务器。

2012-12-08

Linux下的udp通信

Linux下udp通信程序,含客户端和服务器以及Makefile

2012-12-08

Linux下tcp通信程序

Linux下tcp通信程序,含客户端和服务器以及Makefile,多线程-可同时收发操作。 不足:退出机制不太完整。

2012-12-08

Linux下的udp多播程序

Linux下udp多播程序,含客户端和服务器以及Makefile

2012-12-08

Linux下udp广播程序

Linux下udp广播程序,含客户端和服务器以及Makefile

2012-12-08

Linux下udp客户端和服务器程序

linux下的udp通信,有客户端和服务器以及Makefile.

2012-12-08

linux下的tcp客户单和服务器程序

linux下的tcp通信,有客户端和服务器,可同时收发操作

2012-12-08

移动侦测--邮箱报警

邮箱报警:邮件包含一个文本正文和10个附件图片. 只要修改邮箱号,就可以直接发送。

2012-12-03

空空如也

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

TA关注的人

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