tiny4412内核自带led驱动分析 内核版本:linux-3.5 平台:tiny4412一、关于混杂设备此版本内核led驱动使用的是混杂设备misc,具体misc.c的实现路径:linux-3.5/drivers/char/misc.c这就很大程度简化了我们的驱动代码,没有发现ldd3中提到的各种字符设备注册函数,而是发现了一个misc_register函数(共用的注册函数),这说明led设备是作为杂项设备出现在内核中的,在内核中,
判断一个链表是否有环,并且找出入口点 1.如何判断是否有环?如果有两个头结点指针,一个走的快,一个走的慢,那么若干步以后,快的指针总会超过慢的指针一圈。2.如何计算环的长度?第一次相遇(超一圈)时开始计数,第二次相遇时停止计数。3.如何判断环的入口点:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始走,相遇的那个点就是连接点。为什么呢?需要一个简单的计算过程: (1)当fast与slow相遇时,sho
内存泄漏、越界、溢出 一、内存泄漏:常见内存泄漏情况:1、while循环中,不断用malloc( )分配内存并且没有free( )。 2、线程中存在malloc()没有调用free(),而线程一直开启。3、文件描述符没有close()4、数据库的读表操作,读取了表但是没有释放数据表指针指向的空间。二、越界与溢出:溢出:超过类型值 越界:下标short int a;a=32767;a++;//溢出char
C语言编译、链接过程 这些天遇到关于编译与链接的问题,所以根据网上资料写下了对这个过程进行简单梳理!一、编译过程: 预处理 -->编译-->汇编1、预处理: 完成对源程序的“替代”工作,主要对头文件宏定义,特殊字符处理2、编译: 对语法进行差错,分析是否符合规则,然后翻译成汇编代码。3、汇编: 把 汇编代码--->目标机器代码 的过程。目标代码通常有两个段组成:代码段:该段中包含主要的程
结构体对齐(图解)与位域 一、结构体对齐 在计算结构体大时往往需要考虑到结构体对齐,简单的总结下我的一些经验。 结构体对齐时,先找出本结构中最大类型的长度,先考虑自身对齐,然后在与最大类型对齐,最后考虑整个结构对齐(与最大类型长度对齐),下面用图解法进行分析:例:(64位系统,模数最大为8,所以结构体最大对齐值为8 ; 32位系统为模数为4,结构体对齐值为4)#include <stdio.h>struct A{
linux下多线程与互斥锁编程实例 #include <pthread.h>#include <stdio.h>#include <sys/time.h>#include <string.h>#define MAX 10pthread_t thread[2];pthread_mutex_t mut;int number=0, i;void *thread1(){ printf ("thread1 : I'
循环buffer 循环buff即循环缓冲区,顾名思义,就是可以不断写不断读的一个局域,在缓冲区写满之后,如果还没有读取就不能继续写了,否则会把原来的覆盖掉。所以说这是个循环读写的过程,写指针写一个字节移动一次,读指针读一个字节移动一次,移动到buff的末尾位置,又从开始位置进行读写。重点代码分析:1、计算空闲空间/数据空间大小:设定总空间为size-1,始终保留1个字节来表示buff已满。先看看负数的二进制我们来求-
锁、PV操作、进程互斥与同步的实现 什么是临界区? 每个进程中访问临界资源的那段程序称为临界区(临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。 一、锁机制:1、锁:在多线程编程中,操作系统引入了锁机制。通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。加锁过程用如下伪码表示: 1、read loc
进程状态(含状态变迁图) 一、三态模型:三态模型:在多道程序系统中,进程在处理器上交替运行,状态也不断地发生变化。进程一般有3种基本状态:运行、就绪和阻塞。(1)就绪:当一个进程获得了除处理机以外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。(2)运
Linux进程间通信 Linux下的进程间通信机制:大致包括:管道 信号(在Windows上成为消息) 消息队列 共享内存 信号量 套接字(socket)一、基本概念管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接
根文件系统树的制作及详解 制作的文件系统用于的平台:fl2440(ARM9)一、嵌入式Linux文件系统简介1、基本概念: linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统 进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。Linux启动时,
内存检测工具valgrind安装及测试 本文转自:peter tang最近在学习数据结构的时候总是遇到关于内存错误的问题,因为数据结构这块多用指针,由此产生的段错误多不胜数,因此学习了一下valgrind这个工具,来检测我们的程序是如何出现内存问题的。centos系统下的valgrind,首先我们得有autoconf和automake两个工具,一般系统都会自配。安装过程:wget http://valgrind.org/downloads
C语言经典编程题 一、递归求一个数的阶乘:int factorial(int n){ while (n > 1) { return n*func(n-1); }}当然也可以不用while循环,因为都是n级运算,算法复杂度都为O(n),所以影响不大。int factorial(int n){ if(n == 0) { return 1;
二分查找法(递归与非递归方式) 思想: 首先要确保数组中数是按顺序排列好的,假设我们要查找的数为277。要查找的数277:比较277与中间数的大小,如果刚好为277,则就算找到。如果大于277,排除另外一半,然后把新的half_num-1设置为上界。同理,如果小于277,则把half_num+1设置为下界 。然后继续重复之前的步骤。一、非递归#include <stdio.h>void create_num(i
二叉树的基本操作 一、树:树 :一种非线性数据结构树的应用:操作系统中:用树表示文件目录组织结构编译系统中: 用树表示源程序语法结构 相关概念常见表示方法:树有且仅有一个根节点树的结构定义是一个递归的定义树可以看做一个集合,每个集合下面又有很多子集合,所以单节点与子树之间可以表示为 T={跟结点,左孩子,右孩子} -实例:T1 ={A,B,C}当然,树还可以用括号表示,这样更加容易看上图可表示为:(A
Linux下git操作(三)——分支管理与标签 本文命令:配置显示颜色是:git config --global color.ui true给命令设置别名:git config --global alias.co checkout查看远程仓库:git remote -v创建远程仓库分支:git checkout -b dev origin/dev创建分支:git branch <name>查看分支:git branch切换分支:git check
单向链表的基本操作 一、链表与数组: 首先,我们来看看为啥我们有了数组,还需要链表呢?那么我们来看看链表与数组的区别。二者都属于一种数据结构: 从逻辑结构来看:1、 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。2、 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据
Shell脚本学习第五天——算术运算符 我希望有个如你一般的人 如山间清爽的风 如古城温暖的光 从清晨到夜晚 由山野到书房 只要最后是你 就好 ——张嘉佳 《从你的全世界路过》一、chars=` seq -s ” ” 100 ` :从1到100,以空格为分隔符。 获取字符串长度的三种方法: echo ${#chars} #取长度 291 echo $chars|
常见字符串函数的实现过程 一、strlen()函数求字符串长度,不包括 ‘\0’unsigned int mystrlen( char *s ){ unsigned int len=0; while(*s != '\0') { s++; len++; } return len;}二、字符串追加函数strcat( ):char *mystrcat(ch
排序算法——桶排序、冒泡排序、快速排序、选择排序 一、桶排序:最快最简单的算法,但是因为要借助辅助内存(数组),所以占用空间,如果要对很多数据排序就不太合适。 一个旗子表示该数出现过一次。#include <stdio.h>int main(){ int book[1001],i,j,t,n; for(i=0;i<=1000;i++) { book[i]=0; } scanf("%d"
shell脚本学习第四天——bash内部变量,变量主串,变量替换 一、bash内部变量:常见的内部命令:echo,eval,exec,export,readonly,read,shift ,wait,exit和点(.)也就是source命令。 命令 作用 echo 变量名 将变量名表指定的变量显示到标准输出 eval 读取一连串的参数,然后再依参数本身的特性来执行 exec命令参数 当Shell执行到exec语句时,不会去创建新的子进
C语言内存四大区域几点总结 未初始化全局变量默认值为0,未初始化局部变量一般默认值为随机数,但有的编译器也为0。一、栈: 栈遵循后进先出,栈的大小由编译器决定。一般来说,默认栈的大小为1M,所以如果变量分配内存过大可能会造成栈溢出。比如: 定义一个数组长度为200M,double a[1024*1024*200]如果编译器栈大小不够的话会造成溢出。栈不同于堆,栈用完立即回收,所有局部变量都存放在栈中。 如下程序会一直进
递归与栈 登斯楼也,则有去国怀乡,忧谗畏讥,满目萧然,感极而悲者也。 ——《岳阳楼记》一、递归: 简单来说,递归就是自己调用自己,然后一层一层的返回。 所有for循环都可以用递归来做。废话不多说,直接上例题:1、实例1: 50个台阶,一次只能走一步或者两步,问有多少方法到达第10个台阶? 解决这个方法,我们首先要找到数学规律: f(1
C语言编程实战——编写简单贪吃蛇程序 心之何如,有似万丈迷津,遥亘千里,其中并无舟子可渡人,除了自渡,他人爱莫能助。 —-三毛 编程环境:VC++一、相关结构体以及函数:1、Windows下坐标结构体COORD: COORD是Windows API中定义的一种结构,表示一个字符在控制
Linux下git操作(二)——远程仓库 一、前期准备:1、创建SSH Key在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,创建SSH Key:进入主目录下.ssh目录(~/),执行如下命令: ssh-keygen -t rsa -C "497049229@qq.com" 第一次提示输入保存文件名可以不输入,它会默认保存为i
shell脚本学习第三天——特殊变量 一、位置变量:$0 获取当前执行脚本的文件名,包括脚本路径。 $n 获取当前执行脚本的第n个参数,1~9,大于9,用{}括起来,比如:${10}。 $# 表示参数个数seq 9|sed 's#[0-9]#$g'seq -s " $" 1 10 | sed 's/1/$1/' 以上用两种方法用产生“$1 $2一直到$10 ”用到了一个函数seq,下面对这个函数进行介绍。 用法:seq
C语言读写二进制文件 可以这么说,除了文本文件以外的所有文件都是二进制文件。二进制文件相对于文本文件更容易修改。因为文本文件的修改,需要修改以后写入内存,然后再清空原文件,再从内存中读取出修改以后的内容到本文件中。二进制文件修改只需要找到特定的字符,然后对它进行修改。对二进制文件进行操作主要用到fopen,fread,fwrite,fseek等函数。完整代码:#include #include
Linux下git操作(一)——git基本命令 每日诗词欣赏:《汉广》南有乔木,不可休思。汉有游女,不可求思。 汉之广矣,不可泳思。江之永矣,不可方思。 翘翘错薪,言刈其楚。之子于归,言秣其马。 汉之广矣,不可泳思。江之永矣,不可方思。 翘翘错薪,言刈其蒌。之子于归,言秣其驹。 汉之广矣,不可泳思。江之永矣,不可方思。git和svn一样,是一款强大的版本控制系统软件,它和svn有一些区别,目前从我现在对svn以及git学习以后来看,gi
Wireshark抓包工具使用以及数据包分析 多年之后,愿你有清风与烈酒,也有人是你的归途。打开Wireshark抓包工具开始抓包会看到如下展开内容: 这里我是对wlan进行抓包,192.168.2.112是我当前wifi的ip地址。点击某个包,可以查看具体内容,差不多刚好对于五层协议:Frame:物理层的数据帧概况。Ethernet II:数据链路层以太网帧头部信息。Internet Protocol Version 4:互联网层I
shell脚本学习第二天——变量定义(含字符串变量定义) 一、脚本书写规范脚本打头指明解释器,以及作者,联系方式,以及脚本功能等等。#!/bin/bash#Author:yangni#Mail:497049229@qq.com#Func:This is ......循环语句的书写规范: 习惯写法:先函数写出结构,再填充内容if [ xxx ] #这里[ ]前后都需要有空格,然后在中间填值 then fi 所以在脚本书写的时候遇到[
shell脚本学习第一天 shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。相对于Perl、Python等脚本语言优势在于它能处理底层业务,因为有大量Linux命令作为支撑,如“报警业务”,“一键安装”等用shell脚本写就会非常简单。Linux下的shell脚本默认为bash ,sh其实是bash的一个链接。查看默
Linux下GDB调试 关于GDB调试:在lilnux下,一般用GDB来调试程序,具体有如下功能:在程序中设置断点,当程序运行到断点处暂停显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来单步执行运行时修改变量的值跟踪路径线程切换具体操作:以这个程序为例:#include<stdio.h> #include<stdlib.h> #include<netinet/in.h>
Linux下网络socket编程——实现服务器(select)与多个客户端通信 一、关于socket通信服务器端工作流程:调用 socket() 函数创建套接字 用 bind() 函数将创建的套接字与服务端IP地址绑定调用listen()函数监听socket() 函数创建的套接字,等待客户端连接 当客户端请求到来之后调用 accept()函数接受连接请求,返回一个对应于此连接的新的套接字,做好通信准备 调用 write()/read() 函数和 send()/recv(
SIM5360E模块ppp拨号上网 愿你有清风与烈酒,愿有人是你的归途。主机操作系统:Centos 6.7 交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440 Linux内核版本: linux-3.0 .54 模块:sim5360e该模块支持WCDMA/GSM,
内存管理几个程序实例 一、Test 函数的语句 GetMemory(str, 200)并没有使 str 获得期望的内存, str 依旧是 NULL,为什么?void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory
linux下桥接模式设置静态IP实现上网 桥接网络连接模式的虚拟机就当作主机所在以太网的一部分,虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑,可以像主机一样可以访问以太网中的所有共享资源和网络连接,可以直接共享主机网络的互联网接入线路访问互联网。主机与虚拟机之间,以及各虚拟机之间都可以互访。对应虚拟机就被当成主机所在以太网上的一个独立物理机来看待,各虚拟机通过默认的VMnet0网卡与主机以太网连接,虚拟机间的虚拟网络为VMn
RT3070无线网卡AP模式——开发板实现路由功能 RT3070无线网卡有两种工作模式STA模式和softAP模式,分别由STA驱动和softAP驱动来实现,STA驱动支持无线网卡工作在STA模式下,可以连接到网络实现上网功能。而SoftAP的驱动支持无线网卡工作在softAP模式下,可以作为一个软的接入点,实现无线路由器功能。 之前进行STA模式的驱动移植,使得我们的开发板能够连接到互联网实现上网功能。这里对RT3070的第二种工作模式即
C++编程实例——实现简单的时间加减运算 C++是面向对象的程序语言,区别我们的C语言,具体编程首先要定义一个类,类中包含私有成员以及公有成员两部分,私有成员主要是变量,公有成员主要是方法,另外还需要另外的.cpp程序来实现这些公有方法,以及一个主函数。一般的,外部对私有成员是不能直接访问的,需要通过调用公有方法来实现访问私有成员。 本程序用来实现对时间的加减,例如2小时40分钟加上5小时55分钟,最后输出结果:8小时35分钟。
RT3070 STA模式——开发板实现上网功能 北方有佳人,遗世而独立。 北方有佳人,绝世而独立。 一顾倾人城,再顾倾人国。 宁不知倾城与倾国? 佳人难再得!交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440 rtl3070中文名称为雷凌3070,是台湾
Linux中设置服务、脚本自启动的三种方式 何昔日之芳草兮,今直为此萧艾也。 —-《楚辞》本文转自 [http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html]有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务主要用三种方式进行这一操作:ln -s 在/etc/rc.d/rc*.d目录中建立/etc/i
gets,fgets,getchar,puthar,stdin,stdout总结 一、gets()函数: char *gets(char *s); 从键盘中读入字符串到s中,但是有个缺点,就是不会考虑到溢出问题。例子:#include <stdio.h> int main(int argc,char **argv) { char str[5]; gets(str); printf("%s",str); return 0;} 使用g
SecureCRT用网线连接开发板 我们之前都是用串口连接开发板,一直用得很happy,不过做到需要模块的时候才发现,一根线不够用了呀,我们需要另辟蹊径了,所以我们可以用网线连接开发板。一、查看开发板IP地址:首先我们得先用串口线连接开发板查看ip地址:>:ifconfig Bcast:默认网关 Mask:子网掩码 二、查看端口:>:netstat
GPRS用AT命令发送中文短信(TEXT模式到PDU模式的转换) 一、直接使用 PDU格式编码: 1、编码: 使用GSM/GPRS AT指令发送中文短信,汉字时,需要先将短信内容编码成PDU格式,然后通过AT+CMGS AT+CMGW等指令发送。 在线PDU格式编码/解码工具 http://www.multisilicon.com/_a/blog/a22201774~/pdu.htm 输入自己的发送方与
安信可A7模块介绍,以及GPRS基本测试命令 一、模块介绍: 电源开关打开后,按PWR_KEY(模块启动按钮)按键1s以上启动内核(类同于手机开机)。二、模块连线 首先,我们在PC上调试,用我们的串口线的TXD与A7模块的RXD相连,串口线的RXD与A7模块的TXD相连,GND与GND相连。连接方式如下图所示: 三、打开串口调试:
DB9串口管脚详解 一、公头和母头:DB9是9针的串口线,分为公头和母头。公头:泛指所有针式的接头(5针朝上,从左到右依次是1~9)母头:泛指所有插槽式的接头(5针朝上,从右到左依次是1~9)二、各管脚的功能:1 、DCD( Data Carrier Detect) :载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音,处于在
通过dsp设备实现录音与放音编程实例 今日诗词欣赏: 柳永 《雨霖铃》 寒蝉凄切,对长亭晚,骤雨初歇。都门帐饮无绪,留恋处,兰舟催发。执手相看泪眼,竟无语凝噎。念去去,千里烟波,暮霭沉沉楚天阔。 多情自古伤离别,更那堪,冷落清秋节!今宵酒醒何处?杨柳岸,晓风残月。此去经年,应是良辰好景虚设。便纵有千种风情,更与何人说?=============
madplay播放器——用按键控制音量 今日诗词欣赏:晏殊 《蝶恋花》槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去。明月不谙离别苦,斜光到晓穿朱户。昨夜西风凋碧树,独上高楼,望尽天涯路。欲寄彩笺兼尺素,山长水阔知何处。==========================================================================主机操作系统:Centos 6.7
IP地址(配置),MAC地址,DNS,电脑无法上网解决解决步骤 一、IP地址:1、关于IP与IP地址: IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通,IP协议也可以叫做“因特网协
基于uda1340 的 mixer混音器编程实例 ==========================================================================主机操作系统:Centos 6.7 交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询)开发板平
fl2440——fork()函数简单应用实例 今日诗词分享: 南宋▪辛弃疾 《鹧鸪天·晚日寒鸦一片愁》晚日寒鸦一片愁,柳塘新绿却温柔。若教眼底无离恨,不信人间有白头。肠已断,泪难收,相思重上小红楼。情知已被山遮断,频倚栏干不自由。==================================================================================
fl2440——按键控制madplay音乐播放器 今日诗词分享:该段诗词描述的是国产武侠游戏《剑侠情缘三》中的职业——天策(游戏中对唐朝军人的称呼)。 天策长河落日东都城,铁马戍边将军坟。尽诛宵小天策义,长枪独守大唐魂。==========================================================================
linux下shell脚本的使用——安装madplay播放器,sed函数详解 今日诗词推荐 ——青玉案·元夕,由南宋著名抗金将领辛弃疾所作。东风夜放花千树,更吹落、星如雨。宝马雕车香满路,凤箫声动,玉壶光转,一夜鱼龙舞。 蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。 进入正题,之前已经在移植uda1341声卡的时候,顺便安装了madplay播放器,不过都是一步一步做的,而且源码包也是楼主从网上找的,下载好了
fl2440——内核自带按键驱动 代码分析 2017 年4月26日,晴!先读一首词再开始写按键驱动代码分析! 待卿长发及腰,我必凯旋回朝。昔日纵马任逍遥,俱是少年英豪。东都霞色好,西湖烟波渺。执枪血战八方,誓守山河多娇。应有得胜归来日,与卿共度良宵。盼携手终老,愿与子同袍。==========================================================================
三星s3c24xx平台GPIO操作详解 原文出处:http://blog.chinaunix.net/uid-22030783-id-3391515.html先介绍三星S3C24XX平台BSP中定义外设寄存器和GPIO的相关头文件以linux-3.4系统为例,linux2.6.37系统也类似,只是存放的目录有区别平台的头文件存放在arch/arm/mach-s3c24xx/include/mach/目录下
fl2440——linux内核自带的led驱动添加 ====================================================================================================================== 主机操作系统:Centos 6.7 交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.
linux下基于S3C2440的PWM蜂鸣器移植以及驱动程序分析 ==========================================================================主机操作系统:Centos 6.7 交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询)开发板平台: f
s3c2440之uda1341声卡驱动以及madplay播放器移植 ===================================================主机操作系统:Centos 6.7 交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询)开发板平台: fl2440 Linux内核版本: linu
platform按键驱动(二)——编程测试实例以及select()函数详解 一、测试程序: 之前对按键驱动程序原理大概进行了分析,那么现在给出测试程序了。。。/********************************************************************************* * Copyright: (C) 2017 qicheng * All righ
Linux下基于fl2440开发板platform按键驱动详解(一) ===============================================操作系统:center os 64位平台:fl2440内核版本:Linux 3.0.54交叉编译器版本:2012.08===============================================#include "s3c_driver.h"
Linux内核之 中断以及中断处理程序 人生若只如初见,何事秋风悲画扇。 --------纳兰容若 《木兰花令·拟古决绝词》一、什么是中断: linux管理所有的硬件设备,要做的第一件事先是通信。然而CPU的处理速度要远快于外围设备,总不能让CPU一直在等待外围设备
Linux 定时器 每篇诗句分享: 赌书消得泼茶香,当时只道是寻常。好了,进入正题了。在platform驱动中,我们用到了定时器函数timer,当时遇到也有点懵逼。不过郭工讲听了以后的,自己查阅相关资料,所以决定写下这篇博客。这就是这篇文章的典故了。 首先来两个概念,接好了。系统定时器:系统定时器能以固定频率产生中断,称之为定时器中断,对应中断处理程序负责更新系统时间,也负责执行需要周期行运行的
Linux下基于Platform的led驱动(二)——测试 之前,我们熟悉了platform的驱动相关知识,现在我们要对其进行相关测试。 首先,我们需要写好makefile来生成.ko文件。 Makefile如下: RCH = s3c2440KERNEL_VER = linux-3.0.54 //内核版本,必须与开发板相同LINUX_SRC ?
Linux下基于Platform总线led驱动学习(一) ===============================================操作系统:center os 64位平台:fl2440内核版本:Linux 3.0.54交叉编译器版本:2012.08=============================================== 通常情况下,Linux设备和驱动通常
Linux下fl2440之led驱动编写以及测试 ===============================================操作系统:center os平台:fl2440内核版本:linux 3.0.54交叉编译器版本:2012.08===============================================驱动: 程序即添加到操作系统中的一小块代码,其中包含有关硬件设
Linux下diff和patch命令以及简单补丁 补丁:就是对旧版本进行更新。在原有的版本下修改或者添加,减少内容。利用补丁,我们可以方便快捷的修改我们以前的版本。1.制作补丁: 先创建两个文件a,b ,假设b是a的新版本。 [yangni@yangni mypatch]$ touch a b[yangni@yangni mypatch]$ ls内容分别为:[yangni@yangni mypatch]$ cat a1
数据结构之深度优先遍历 深度优先遍历:即从根节点开始遍历,从左到右依次遍历,遍历时应先将一条分支上遍历完才进行下一轮遍历。 如图:遍历顺序为:1 2 4 3 5程序如下:#include int book[101]; //用于标记是否已遍历过,未遍历则为值为0int sum; //每标记一次加 1 ,直到sum等于需要遍历的顶点个数n为止int n,e
静态库、动态库的制作以及调用 库:本质上说库是一种可执行代码的二进制形式,Linux系统支持动态库(共享库)和静态库。Linux下库一般放在b或/usrb。头文件放在/usr/include中。 动态库:以“.so”为后缀libxxx.so。因为编译的时候并没有被编译进目标代码中,程序执行到相关函数时才调用函数库里的相应函数,所以文件大小不大,容易升级。 静态