自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

樊茂林的博客

天生我材必有用

  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 platform总线按键驱动分析(精华版)

驱动做了三个多星期了,从helloworld到LED再到PlatformLED,现在终于到了按键驱动,对于驱动的理解深刻了不少,从完全看不懂到现在能够独立分析,进步很大,今天完成了按键驱动,做一个总结性的分享,给后面的自己看!加油!按键驱动:与之前不同,这次将按

2017-08-28 13:53:30 2288 3

原创 UDA1341声卡驱动与madplay移植播放mp3(第三方源代码移植步骤)

首先配置声卡UDA134驱动,看原理图我们只需要将相应的IIS管脚设置为我们开发板的原理图设计的管脚就可以了。我们只要在/arch/arm/mach-s3c2440/mach-smdk2440.c文件中注册UDA1341 平台设备的控制端口就可以了,端口如上图所示,打开mach-smdk2440.c,添加如下内容:[fanmaolin@Centeros

2017-04-23 20:39:27 1275

原创 windows10 如何给应用程序设置快捷键及一些常用好玩快捷键

自己经常使用截图、画图、计算器等系统自带的实用小工具,但是每次用鼠标点来点去觉得很郁闷,就上网百度加自己研究发现它们有些根本没有快捷键需要主人自己进行设置,而且这次还发现了一些之前不怎么使用的有用的win10工具,文章所有的内容我都亲身实践过,收获满满,特此总结一下,那些复制粘贴类的基础快捷键我就不一一介绍了。目的一是担心自己忘了,二是也把它分享给其他使用win10的朋友们,有不懂的地方欢迎留言讨

2017-04-11 18:18:42 24669 1

原创 linux下使用ntpdate同步网络时间

为什么需要网络同步时间:Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步安装ntpdate[fanmaolin@Centeros ~]$ sudo yum install ntpdate

2017-09-04 17:01:38 8389

原创 结构体对齐详解

阅读说明1、在文中要注意#pragma pack()函数的使用2、本文中博主用于演示的是linux32位系统3、如果有不同意见可以在下面评论区一起讨论(windows下的我不是很清楚,听说例二windows下的那个分析有问题,1B+8B=13B,阅读分析时请注意)4、我觉得这篇文章解释的非常清楚,看完之后醍醐灌顶5、标注为“注”的是我的注释我认为结构体对齐要考虑三点:1、确认结构体对齐值(模数),通

2017-09-04 16:43:39 1175

转载 关于configure和Makefile

转自:http://blog.csdn.net/lltaoyy/article/details/7615833Linux下Makefile的automake生成全攻略  作为linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。

2017-09-02 13:08:55 1159

转载 UDA1341声卡传输基本原理

转自:http://www.cnblogs.com/TaigaCon/archive/2012/12/07/2807922.htmluda1341连接soc的引脚分为两类:数据引脚、控制引脚。  数据引脚用于音频码流的传输,  控制引脚用于该声卡芯片控制,比如说音量控制等如下图为uda1341的声卡或者可以看我以前的博客,有FL2440的uda1341声卡原理图 http://blog.csdn.

2017-09-02 11:34:25 662

转载 Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解

引言前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? 在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢? 我们在进行Linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下界

2017-09-01 16:52:03 529

转载 C编程注意32位机器和64位机器的差别及unsigned和signed

1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。C/C++ 32位机器和64位机器 差异问题总结 跨平台 移植问题 语言编程需要注意的64位和32机器的区别#include < stddef.h>OS versi

2017-09-01 11:21:30 7698

转载 Linux驱动中的platform总线分析

最近在复习platform总线相关的知识,碰到一篇感觉不错的文章。转载自:http://blog.csdn.net/pillarbuaa/article/details/7680372概述从Linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver 。Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_devi

2017-08-27 20:48:14 6757

转载 版本控制系统GIT和SVN的区别

两个都使用过,但是就保存代码来说,我偏向于SVN,而且用的比较熟练。但是GIT也有它的优势所在。1)Git是分布式的,SVN不是:这 是git和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以不用联网在本地提交;如果你能理解这个概念,那么你就已经上手一半了。需要做一点声明,GIT并 不是目前第

2017-08-19 15:34:13 1348

转载 串口通信数据位长度对传输数据的影响

针对串口通信,关于设置数据位长度对通信的影响,如图: 在串口数据通信中,会看到串口参数设置。其中“数据位”设置,共有四档选项,分别是8、7、6、5。那么改变这个参数会对数据的传输有什么影响呢?我来做个试验,通过示波器观察通信过程,能够分析结果如下:例如数据位设置为5。那么就相当于规定了每个传输字节只能由5个二进制位来表示,例如:11111,10110,01110等。也就是说,这个RS232口只能发

2017-08-17 20:03:43 6047

原创 用buildroot制作交叉编译器

以前做文件系统的时候制作过交叉编译器,现在重新做一遍总结一下。认识交叉编译器交叉编译器简介 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码。比如我们在pc下编译的代码,想要在arm开发板上运行,就需要用交叉编译器编译pc端的代码,然后才能在arm板上运行。制作交叉编译器过程把buildroot上传到opt目录下我这里有.bin文件,也可以直接百度下载buildroot压缩包,重

2017-08-17 18:27:30 890

原创 二叉树的操作:创建、遍历、求树的深度、叶子结点数

二叉树认识二叉树在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。在该图中,用’#’表示空节点,我们真正要创建的树为有ABCD字符。先序遍历的方式创建二叉树int creatBitree(struct Bitnode *(*T)){ char data; // data = getc

2017-08-16 12:39:14 3798 1

原创 排序算法学习:快速的桶排序

排序原理 假设现在要对5 3 5 2 8这几个数进行排序。我们申请一个大小为9的数组(待排序数中最大数+1),假设为9个木桶,把9个木桶置为0,如图: 然后在对应桶的编号(这就是为什么要设置为待排序数组中最大数+1了)中标记1,如图在a[5]中标记为1,表示待排数组中有5,并且5在a[5]这个位置。 继续向后标记如果遇到重复的数字,比如两个5,就在该位置a[5]置为2,表示有两个5 把所有要

2017-08-14 17:18:24 348

原创 排序算法学习:冒泡、选择、快速

排序的相关概念排序:将一组杂乱无章的数据按一定的规律顺次排列起来。数据表( data list): 它是待排序数据对象的有限集合。排序码(key):通常数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据。该域即为排序码。每个数据表用哪个属性域作为排序码,要视具体的应用需要而定。分类 内排序:指在排序期间数据对象全部存放在内存的排序; 外排序:指在排序期间全部

2017-08-13 20:22:36 369

原创 单向链表的逆序,不使用额外节点存储实现

链表的逆序是常见考题,今天来简单学习使用如何实现单向链表的逆序。逆序过程初始链表状态 初始状态,prev是NULL,head指向当前的头节点A,next指向A节点的下一个节点B。首先从A节点开始逆序,将A节点的next指针指向prev,因为prev的当前值是NULL,所以A节点就从链表中脱离出来了,然后移动head和next指针,使它们分别指向B节点和B的下一个节点C(因为当前的next已经指向B

2017-08-12 10:00:20 688

原创 单向链表的节点插入与删除

理解了链表的创建后,其他链表操作也变得比较简单,对上次的代码做了些修改,今天来记录一下自己对链表节点的插入与删除操作的学习。在某个节点后插入节点struct node *insert(struct node *head, int datanum, struct node *new){ struct node *p1; if(head == NULL)//是空链表时 {

2017-08-10 20:33:40 1244

原创 创建N个单向链表对它进行摧毁和清空操作

摧毁和清空的含义及区别摧毁是先销毁了链表的头,然后接着一个一个的把后面的销毁了,这样这个链表就不能再使用了,即把包括头的所有节点全部释放。清空是先保留了链表的头,然后把头后面的所有的都销毁,最后把头里指向下一个的指针设为空,这样就相当与清空了,但这个链表还在,还可以继续使用;即保留了头,后面的全部释放。区别:清空是链表的头还在,可以继续插入节点;销毁就是链表没了,整个链表(包括头)的空间都被释放了,

2017-08-09 15:43:05 670

原创 单向链表的创建和遍历

单向链表简介单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始; 链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的下一个结点; 链表是由结点构成,head指针指向第一个成为表头结点,而终止于最后一个指向nuLL的指针。创建单向链表一个简单的单向链表创建过程说明: 图中的p为

2017-08-08 15:40:56 486

转载 c语言中基本数据类型printf()对应格式

printf() printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf(“<格式化字符串>”, <参量表>);其中格式化字符串包括两部分内容:一部分是正常字符, 这些字符将按原样输出;另一部分是格式化规定字符, 以”%”开始, 后跟一个或几个规定字符, 用来确定输出内容格式。 参量表是需要输出的一系列参数, 其个数必

2017-08-07 16:35:28 7898

原创 关于Markdown,吞文本问题

若str1==str2,则返回零; 若str1为什么后面的字不显示?解决方法:若str1==str2,则返回零; 若str1< str2,则返回负数; 若str1>str2,则返回正数。 matlab中函数,strcmp(s1,s2) 判断两个字符串s1和s2是否相同,相同返回true ,不同返回false“<s”也许在markdown里面是一个语法,不显示后面的文本内容,你要把它们分开,

2017-08-07 16:31:00 475

原创 常见字符串函数的学习总结

str系列,mem系列,常见字符串函数

2017-08-07 16:15:18 317

原创 C程序内存布局学习总结

C程序的编译过程由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-链接三个阶段。编译过程把c语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,链接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。C语言编写的程序经过编译-连接后,将形成一个统一格式的二进制可执行文件,这个格式是一个依照可执行文件格式的,可以被系统识别,并且加载到内存中执行的,它由几个部分

2017-08-06 17:16:58 412

原创 Linux下安装及使用sqlite3数据库

数据库数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。SQL数据库简介SQL是Structured Query

2017-08-05 20:24:29 9638 1

原创 LINUX下操作GIT远程仓库与本地仓库同步

GIT简介来源Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。功能1、从服务器上克隆数据库(包括代码和版本信息)到单机上。 2、在自己的机器上创建分支,修改代码。 3、在单机上自己创建的分支上提交代码。 4、在单机上合并分支。 5、新建一个分支,把

2017-08-05 15:36:10 1285

原创 centos下安装使用SVN

SVN简介svn功能实现SVN 全名 Subversion,即版本控制系统,它是一个自由/开源的同时支持多种操作系统的版本控制系统。在 Subversion 管理下,文件和目录可以回到任意时刻的版本,以及比较任意两个时刻的版本变动。 我们称用来存放上传档案的地方就做 Repository。用中文来说,有点像是档案仓库的意思。不过,通常我们还是使用 Repository 这个名词。基本上,第一次我们

2017-08-04 15:59:34 561

原创 centos下搭建ftp服务器

FTP简介FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”

2017-08-04 13:59:43 487

原创 centos下安装配置TFTP服务器

TFTP简介TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。安装TFTP服务器检查是否有TFTP服务器软件包[fanmaolin@centos6 ~]$ rpm -qa | grep tftp下载安装服务器软件包[fanmaolin

2017-08-03 19:22:50 818

原创 用C代码写贪吃蛇游戏--打印食物

贪吃蛇游戏创建食物:1、食物的产生要求是随机的 2、蛇吃掉食物后会长大 3、蛇吃掉食物后会再次产生食物因为食物的产生是随机的,要求用C产生随机数:产生1-6的10个随机数int main(void){ int i = 0; for(i=0;i<10;i++) { printf("%d ",rand()%6+1); } printf("\n

2017-08-02 15:49:01 2992

原创 用C代码写贪吃蛇游戏--用按键控制蛇移动

通过按键控制蛇的移动,首先需要读取按键,通过按键来控制。通过百度后得知用kbhit();用一小段代码进行测试:一直输出Hello World,直到用户按Esc结束#include "stdafx.h"#include<stdio.h>#include<conio.h>#include<stdlib.h>int main(void){ char ch; while(ch!=2

2017-08-02 15:03:32 11806 3

原创 用C代码写贪吃蛇游戏--创建一条蛇并移动

***********************************************开发工具:VC6.0中文版**********************************************前段时间实习做了贪吃蛇游戏,现在抽空进行总结和整理,重点是整理思路,如何让一个想法变成代码。1、创建一条蛇2、让这条蛇移动3、按键控制蛇的移动4、创建食

2017-08-02 13:12:09 8920

原创 socket编程之客户--服务器通信程序学习

操作系统有五大功能,简单总结为:操作系统的五大功能:1、进程管理2、内存管理3、文件系统4、网络管理5、设备管理网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 网络中的进程是通过socket来通信的,那什么是socket呢?socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写wr

2017-06-19 15:26:34 420

原创 FL2440-A7模块用程序实现GPS自动定位解析功能

**主机操作系统:Centos 6.7 交叉编译器版本:buildroot-2012.08 开发板平台: FL2440 Linux内核版本: linux-3.0 开发模块:A7模块GPS自动定位解析**一、添加内核选项支持cp2102因为我使用的是cp2102芯片USB转串口,要现在内核里面添加支持才能在开发板上开发使用。make menuconfig D

2017-06-12 15:16:25 592

原创 安信可A7模块GPS定位功能测试及解析

一、http://blog.csdn.net/zccst/article/details/4235068http://blog.csdn.net/gyb510/article/details/51775102?locationNum=2&fps=1http://blog.csdn.net/jwq2011/article/details/53674125$GPGGA,1228

2017-06-09 20:56:49 1812

原创 安信可A7模块GPRS功能测试及初步学习AT指令

一、GPRS简介GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块根据其提供的数据传输速率又可以分为GPRS模块、EDGE模块和纯短信模块。短信模块只支持语音和短信服务。GPRS,可说是GSM的延续。它经常被描述成“2.5G”,也就是说这项技术位于第二代(2G)和第三代(3G)移动

2017-06-08 17:27:59 4513

原创 安信可A7模块、DB9公母头及TTL\rs232简介

一、A7模块简介背面示意图二、实现串口通信要想通过计算机操作A7模块,还需要一个串口,我这里使用cp2102串口可以通过开关来转换TTL和RS232电平工作,第一次使用时需要安装驱动,因为安信可A7模块是TTL电平,所以我将串口电平开关拨到TTL端,如果两者电平不一致,会导致接收信息有问题,甚至烧毁芯片,所以一定要设置好设备的电平

2017-06-08 16:00:58 1808

原创 FL2440wifi模块学习之用rt3070芯片使开发板变为路由器上网

SoftAP模式。以开发板fl2440作为一个路由器,并使自己的手机、笔记本电脑连接到这个“路由器”上网。一、配置内核支持无线网卡softAP模式 [*] Networking support ---> Networking options ---> [*] Network packet filtering framework (Netfilt

2017-05-30 13:19:10 1418

原创 FL2440WiFi学习之rt3070无线网卡动态获取IP上网

主机操作系统:Centos 6.7交叉编译器版本:buildroot-2012.08 开发板平台: FL2440 Linux内核版本: linux-3.0 开发模块:rt3070无线网卡动态获取IP上网之前我们需要自己手动设置IP来上网,现在让它动态获取IP自己上网。一、修改内核Networking --->    Networkin

2017-05-30 12:11:05 651

原创 通过secureCRT的SSH2来实现无线连接开发板

这样做可以省去每次利用串口操作开发板的步骤,因为后面设置开发板为AP模式时,一直坐在路由器旁边不舒服。原理为通过开发板连接路由器的LAN口,电脑也连接到该路由器,这样子开发板和电脑处在同一个局域网内,设置好相应的IP就可以了。知道原理后就开始配置咯。一、电脑连到相应的路由器wifi上二、设置开发板的eth0,因为这里每次开机重启我们都要使它保持一个Ip这

2017-05-30 10:14:55 2345 1

树莓派3GPIO

绝对好用并且详细的GPIO引脚开发手册,用了就知道,快来吧

2017-12-17

空空如也

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

TA关注的人

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