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

原创 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
7491
9

原创 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
3020
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
5245

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

原创 项目即将死亡的前兆
1)第一版做太多功能; 2)太依赖新技术平台 3)与公司另一个有份量的产品竞争 4)团队人手不足 5)复杂的问题,需要复杂的解法… 6)成员开始隐藏进度落后的事实和原因 7)不断更改、增加的需求 8)2.0 症候群-非要更大、更强、更美 9)产品没有市场立
2013-07-01 09:30:19
2608
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
5836
2

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

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

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

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

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

原创 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
6879

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

原创 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
2753
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
19126
1

原创 视频压缩:I帧、P帧、B帧
/****************************************************************************************************************************************************************************************说明:
2013-04-01 08:59:46
12431
1

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

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

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

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

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

原创 DHCP:开发板上动态获取ip的2种方法
DHCP动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途: 1.给内部网络或网络服务供应商自动分配IP地址 2.给用户给内部网络管理员作为对所有计算机作中央管理的手段。方法一:dhclient 1.下载 https://www.is
2013-02-25 10:06:12
4624
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
7432

翻译 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
8880
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
14627
3

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

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

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

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

原创 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
5703
2

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

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

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

原创 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
3345
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
3966
5

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

原创 字节序问题:大小端的判定
大小端的判断很简单,可判断了有什么用呢?这是一个难缠的问题,我最近就碰到了这样一个问题,比如,int a = 0x12345678,char* p = &a,那么p[0]等于多少呢?答案要么是0x12,要么是0x78,对吧,如果你知道他是小端(因为地球人都知道),那么你肯定就知道p[0] = 0x78,呵呵,换句话说,理解大小端对指针的运用还是有一定帮助的。 一、大小端概念
2012-12-17 13:32:45
1912
2
boa-0.94.13.tar.gz
2013-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人