- 博客(38)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
转载 利用GetPrivateProfileString读取配置文件(.ini)
配置文件中经常用到ini文件,在VC中其函数分别为:写入.ini文件:bool WritePrivateProfileString(LPCTSTRlpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTRlpFileName);读取.ini文件:DWORD GetPrivateProfileString(LPCTSTRlpAppName,LPCTSTR...
2018-07-07 09:26:15
1428
原创 libpng库的开发
1、libpng是什么?libpng是一款C语言编写的比较底层的读写PNG文件的跨平台的库,全称是可携式网络图像(portable network graphics),借助它,你可以轻松读写PNG文件的每一行像素。因为PNG文件是经过压缩而且格式复杂的图形文件(有的PNG文件甚至像GIF文件一样带动画效果,但是不像jpg那样是有损压缩,png是无损压缩的),而且PNG可以是带透明通道的
2017-08-27 21:56:59
3038
转载 技术博客那些事儿-如何写好博客
转载:http://www.ityouknow.com/写文章是一个短期没有收益,长期收益很大的一件事情,但往往是很多人坚持不下来,特别是写文章的初期,刚写完文章没有人阅读会有一种挫败感,影响了后期写文章的积极性。这篇文章我给大家分享如何提升技术博客的影响力,如何去写技术博客,是否应该建立独立博客,如何去推广自己的文章,建立自己的品牌等。好多人刚开始写文章最主要的目的有两个:第一,
2017-08-22 20:45:04
8018
2
转载 嵌入式开发中对(*(volatile unsigned long *)) 的理解
一、说明(*(volatile unsigned long *))这个语句对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为C语言并没有提供真正的“端口”的概念。如果是内存映射,那就方便多了。二、举例讲解以 #define IOPIN (*((
2017-08-19 14:53:36
363
原创 【Linux应用开发】malloc内存分配原理
如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看。 majflt代表major fault,中文名叫大错误,minflt代表minor fault,中文名叫小错误。 这两个数值表示一个进程自启动以来所发生的缺页中断的次数。发成缺页中断后,执行了那些操作?
2017-08-14 18:17:58
1381
原创 【Linux应用开发】之孤儿进程和僵尸进程
1、基本概念 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进
2017-08-14 15:06:01
400
原创 【Linux应用开发】之守护进程
守护进程概述 守护进程,又叫daemon进程,是Linux中的后台服务进程。他是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或者等待处理某些发生的事件。守护进程常常在系统引导载入时启动,在系统关闭时终止。Linux有很多系统哦服务,大多数服务都是通过守护进程实现的。同时,守护进程还能完成许多系统任务,例如,作业规划进程cronf、打印进程lqd等(这里的结尾字母
2017-08-14 14:43:03
467
原创 linux下串口相关控制
因为linux下“一切设备皆文件”的思想,所以串口在linux下也不例外,也可以当做文件来进行处理。因此对他的一切操作都和文件的操作一样(涉及到了open,read,write,close等文件的基本操作)。 串口简历:串行口是计算机一种常用的接口,是异步全双工串行通信,具有连接线少,通讯简单,得到广泛的使用.常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是
2017-08-14 09:59:03
513
原创 Keil C51重定向printf到串口
概述进行C/C++开发的时候我们都会需要打印调试信息,打印调试信息时我们习惯使用printf函数,但是在Keil C51环境下,由于我们的程序是下载到单片机里,使用printf函数时不能直接打印到串口上,这个时候就需要我们对printf函数输出重定向。重定向重定向printf很简单,我们知道,printf函数是调用putchar实现字符数据传送的。我们只要重写putchar
2017-08-14 09:36:56
2190
转载 关于C++中的友元函数的总结
1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元函数:(1)运算符重载的某些场合需
2017-08-12 16:40:31
221
原创 内存区域的划分
本文主要讲解应用层(c/c++内存划分)、linux内核层(X86体系和ARM系统)关于内存上面的划分相关知识点。 一、应用层 1. 在c中分为这几个存储区:堆、栈、全局区(静态区)、常量区 (1).栈 - 由编译器自动分配释放。 栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除
2017-08-12 16:38:48
12416
1
原创 Linux下的V4L2的编程总结
V4L2介绍的博客:博客一:http://blog.csdn.net/eastmoon502136/article/details/8190262博客二:http://blog.chinaunix.net/uid-26833883-id-3249346.html 下面我就直接贴了,在根据这两篇博客的基础上,加以自己的一些注释,希望和我一样的初学者在看有关V4L2的AP
2017-07-29 15:56:36
2699
原创 搭建自己的基于motion移动物体的监控系统
参考文章:http://code.csdn.net/news/2820789https://www.zybuluo.com/daguang740/note/148852http://blog.csdn.net/ljmrs/article/details/38318835http://blog.csdn.net/raptor/article/details/42010
2017-07-29 12:55:40
2422
原创 c语言排序算法(所有的都是升序,冒泡排序、插入排序、快速排序、选择排序、希尔排序、堆排序 )
#include #include #include /*2017.7.25记录排序算法。所有的都是升序,冒泡排序、插入排序、快速排序、选择排序、希尔排序、堆排序 (归并排序、基数排序没有实现)还需要增加的优化代码增加升序还是降序操作。*///产生随机数组void gen_array(int arr[],int n){ int i;
2017-07-29 12:52:55
780
原创 ubuntu和arm平台下的ffmpeg和x264相关库的移植
本文讲解在ubuntu和arm平台下的ffmpeg和x264相关库的移植,最终实现使用ffmpeg进行H.264编码。1、源码下载: 本文使用的相关库已经上传,可以从本地址下载本次编译所使用的库:http://download.csdn.net/detail/yxtouch/7527291或者本个链接:http://onersw9j1.bkt.clouddn.
2017-07-29 12:48:57
753
原创 Linux内核数据结构
Linux内核数据结构1.内核的数据类型:bool:布尔类型 inbool:布尔反值charp:字符指针short:短整型 ushort:int:整形 uintlong ulong:2.内核编程不允许处理浮点数:cpu处理浮点型数据的效率极低---用户空间处理浮点型数据如果对内核模块的某一个变量进行修改,必须要声明:内核模块参数;module_param(name,tyoe,p
2017-07-27 14:47:17
1112
原创 Linux驱动入门总结
Linux驱动入门总结 1. linux用户空间和内核空间.用户空间:包含用户编写的应用软件,c库整个4g的虚拟地址空间,用户空间包含了0-3g。1用户不能访问内核的地址空间,包括代码和数据,不能直接操作硬件2.用户程序访问硬件通过系统调用和硬件中断来实现访问和两者数据转移。3.用户和内核都有自己独立的栈。内核空间:包含驱动,文件系统,平台代码等等,内核空间包含
2017-07-27 14:46:55
735
原创 Linux驱动之I2C总线
1. I2C总线的硬件特性:两线式串行总线.用于连接CPU和外设之间的通信接口需要2根信号线,时钟控制线SCL和数据传输信号线SDA.串行:CPU和外设之间传输是一个周期传输一个BIT位, 如果需要写入0X55,需要两个时钟周期才能完成.CPU又称master,外设又称slave.“一个时钟周期传输一个bit”:CPU和外设之间传输一个bit位,必须要通过时钟控制信号来实现双方的数据收和
2017-07-24 16:52:50
860
原创 Linux驱动之一线式总线(以ds18b20为例)
一线式总线:1硬件特性:“一线式”:CPU和一线式器件之间的数据通信就一根数据线,无时钟线。“串行”:数据一次传输一bits。 “总线”:这个数据线上可以挂载很多个一线式器件外设。硬件接法:两线式和三线式。 前者无独立的电源,通过数据线给内部的电容供电,电容对于芯片进行供电。后者有独立的电源:数据线接一个上拉电阻,表明数据线在CPU和外设都不控制的时候,数据线为高电平。 2.问
2017-07-24 16:52:07
2367
原创 Linux设备驱动ADC部分:
1.1ADC硬件 模拟信号:声音,电压,电流,温度,湿度,压力,速度:数字信号:0.1这些数字量组成的信号 数字系统不能直接处理模拟信号,需要将模拟信号转换成对应的数字信号;不管是数字信号还是描述的同一个事物,只是这个信号在不同形式下的表现实现! 1.2信号之间的转换:AD:模拟信号转数字信号的过程;DA:数字信号转成模拟信号的过程ADC:将模拟信号转成数字信号的硬件单元
2017-07-24 16:49:18
2740
原创 Linux中断及其相关内容.
1. 为什么要有中断?CPU的处理速度比外部硬件块.2.采用轮询的方式比较耗费CPU资源.3.中断处理的效率比较高.. 内核处理优先级:硬件中断 >软件中断 > 普通进程2. 中断的硬件触发流程.硬件外设产生硬件的电信号变化,这个电信号首先发送给中断控制器(能够打开,关闭中断,能够指定中断的优先级,还能够判断中断是否发生),中断控制器判断是否使能,判断优先级,最终决定是否给
2017-07-24 16:42:10
873
原创 Linux驱动之多路监听
Select/poll:IO多路监听案例:一个应用程序如何去处理多个设备,例如网口,串口,按键数据明确:对设备访问永远先open方法一:串行+阻塞的方式:缺点:每当阻塞读取标准输入时如果用户不进行标准输入的操作,而此时客户端给服务器发送数据,导致服务器无法读取客户端发来的数据!方法二、采用多线程或者多进程机制来实现读取:开辟多个线程,每一个线程处理一个设备,不会导致数据无法读取,但
2017-07-24 16:39:27
668
原创 Linux内核混杂设备
1.混杂设备:主设备号已经被内核注册进行自动分配,主设备号为10,通过此设备号区分的一类字符设备! 特点:还是字符设备,主设备号10,通过次设备号来区分设备个体.2.linux内核如何描述混杂设备:Struct misdevice{ Intminor; const char * name; const struct file_operations * fops; struc
2017-07-24 16:38:11
341
原创 linux内核并发和竟态:
1.概念:并发:多个执行单元同时发生;注意:执行单元包括硬件中断、软件中断、多进程(进程的抢占通过中断实现),竟态:并发的多个执行单元同时访问共享资源,引起的竞争状态形成竟态条件:1一定要有并发情况2一定要有共享资源 硬件资源(小到寄存器的而某个bit位)软件上的全局变量,例如open_cnt3并发的多个执行单元要同时访问共享资源互斥访问:当多个执行单元对共享资源进行访问时,只能允许一
2017-07-24 16:37:01
870
原创 linux的内存管理方式
为什么linux需要使用虚拟地址?--1.为了使用户操作的内存地址够大!2.mmu对地址的访问性和属性进行安全检查,虚拟地址必须映射到实际的物理地址才能进行访问。mmu:内存管理单元,管理内存的并把虚拟地址转换为物理地址的硬件,以页为单位处理,并进行内存访问权限保护等。进行虚拟地址和物理地址的检查(常见的段错误) linux内存最小管理单位为页,为4kb******************
2017-07-24 16:35:00
955
1
原创 Zigbee协议网络相关的东西(2)
Zigbee的术语重点弄懂它们的从属关系,主要包括:节点,设备,端点,簇(群集),属性。属性Attribute是一个反映物理数量或状态的数据值,比如开关值(On/Off),温度值、百分比等。群集Cluster是包含一个或多个属性(attribute)的群组。简单的说,群集就是属性的集合。每个群集都被分配一个唯一的群集ID且每个群集最多有655
2017-07-24 16:26:57
896
原创 Zigbee协议网络相关的东西(1)
协议栈的使用1. 为了让ZigBee的开发更加简单高效,TI公司推出了基于CC2530芯片的协议栈-Z-Stack。协议栈实质上就是能实现各个功能的示例框架代码,我们要实现自己想要的功能,只需要在协议栈的基础上修改或添加即可。2. Z-Stack的发展 由0.0.1 -2.5.1a Mesh:之前版本的升级 HA:智能家居 SE:智能能源他们的区别是应用部分不同工程打开路径\T
2017-07-24 16:24:41
2309
原创 常见的github错误和处理
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-06-15 14:56:45
345
转载 简单使用Git和Github来管理自己的代码和读书笔记
以前不知道使用代码管理工具,最后写的一些东西都没有了,由于硬盘坏了或者不小心格式化了之类的,后来使用了Git和Github来托管自己的代码和读书笔记方便了不少,到哪里只要有网就可以把自己的东西拷贝下来继续使用。我这里简单的记录一下我使用的过程,最简单的使用都是,高级的功能我一直没有使用到,虽然买一本《Git权威指南》但是很多东西用不到就不能够真的会。下面开始简单介绍我使用的方法,我这个
2017-06-14 10:06:50
399
原创 怎样将驱动静态的编译到内核中。
怎样将驱动静态的编译到内核中。 使用的开发板:tq210的s5pv210开发板内核版本:linux-3.8.3 编译器:arm-linux-gcc 4.4.3 相关下载地址: 一、准备好可以正常编译好引导开发板的源码(怎样实现正确配置和编译好内核源码的链接地址;http://blog.csdn.net/girlkoo/article/details/8719828)
2016-07-20 10:37:59
1848
1
原创 嵌入式开发制作最小的linux文件系统
要求:编译器的版本是4.4.6 查看当前交叉编译器的版本:arm-linux-gcc -v 如果不是4.4.6编译器,需要修改一下两个文件: vim /home/tarena/.bashrc 删除最后一行:export PATH = /opt/arm-2009q3... sudo vim /etc/environment添加4.4.6的支持 最小
2016-05-08 18:46:02
3406
1
原创 如何使用 ATK-SIM900A 模块进行中英文的短信发送
常见的at指令集AT+CNMI,用于设置新消息指示。发送:AT+CNMI=2,1,设置新消息提示,当收到新消息,且 SIM 卡未满的时候,SIM900A模块会返回数据给串口,如:+CMTI: "SM",2,表示收到接收到新消息,存储在 SIM 卡的位置2。AT+CMGF,用于设置短消息模式,SIM900A支持 PDU模式和文本(TEXT)模式等2种模
2016-05-08 17:04:56
17282
5
原创 嵌入式开发中qt环境的搭建
注意本博主使用的环境为ubunt 12.04 ,硬件为Contex A8的s5pv210处理器,以及使用的编译器为arm-linux-gcc 4.4.6The tslib functionality test failed! You might need to modify the include and library search paths
2016-05-08 16:51:05
1915
原创 tslib的安装
tslib是嵌入式开发中使用qt开发之前需要搭建的一个必须的环境,通过tslib,你编写的qt程序才能通过触摸屏进行操作,而tslib进行进行你的qt程序和硬件之间的接口,因此,学会如何搭建tslib是进行嵌入式开发的一个重要的环节。
2016-05-08 16:44:06
6423
转载 Linux开机启动过程分析
QLinuxQLinux的自学笔记Linux开机启动过程分析开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。启动第一步--加载BIOS当 你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这
2015-09-30 22:34:08
348
转载 linux内存映射mmap原理分析
linux内存映射mmap原理分析分类: linux2014-07-19 11:07 854人阅读 评论(0) 收藏 举报目录(?)[+]一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很
2015-09-30 15:38:05
401
原创 高功耗的USR-WIFI232-2b的sta+ap配置可以使手机连上互联网
默认的配件是不能同时的使用sta+ap两种模式的。配件的默认模式为ap的模式,我们今天就对这些配置有个理性的认识。默认的USR-WIFI232-2b模块上电后的启动配置:首先我们应该了解模块的两种模式sta模式和ap模式。ap模式:相当于usr-wifi232是一个wifi的热点,其它的终端如手机、ipad、电脑四作为sta可以连接模块的热点,这时候模块没有连接到路由器上面
2015-09-30 14:53:21
5165
原创 C语言中的关键字 extern
extern关键字是C语言中多文件编程中一个重要的关键字,对我们需要在一个文件使用另外文件中的变量起到重要的作用,并且在函数的申明中也有重要的地位,它和其他的关键字static const的有着很大的关系,关于他们的介绍请关注我的博客。
2015-09-29 16:03:41
495
4.4.6_TQ210_release_20120720.tar.bz2
2017-04-09
编译Android源码 tq210 s5pv210
2016-08-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人