2019年3月27日

ARM中断处理过程

摘要: 转自:http://www.wowotech.net/irq_handler.html 一、前言 本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述: 1、第二章描述了中断处理的准备过程 2、第三章描述了当发生中的时候,ARM硬件 阅读全文

posted @ 2019-03-27 21:44 haitao2000s 阅读(1235) 评论(0) 推荐(0) 编辑

IRQ与FIQ的区别

摘要: 1、对FIQ你必须进快处理中断请求,并离开这个模式。 2、IRQ可以被FIQ所中断,但FIQ不能被IRQ所中断,在处理FIQ时必须要关闭中断。 3、FIQ的优先级比IRQ高。 4、FIQ模式下,比IRQ模式多了几个独立的寄存器。 不要小看这几个寄存器,ARM在编译的时候,如果你FIQ中断处理程序足够 阅读全文

posted @ 2019-03-27 15:50 haitao2000s 阅读(2273) 评论(0) 推荐(1) 编辑

2014年4月21日

sscanf()的用法

摘要: 头文件 #include 定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对... 阅读全文

posted @ 2014-04-21 15:06 haitao2000s 阅读(353) 评论(0) 推荐(0) 编辑

2014年3月6日

keypad代码分析

摘要: keypad作为input设备注册到内核,与platform总线驱动match。1、描述一个输入设备对象1 static struct input_dev *kpd_input_dev;告知输入子系统 kpd_input_dev 是一个input设备。2、注册platform总线驱动r = platform_driver_register(&kpd_pdrv);继续看kpd_pdrv有哪些信息: 1 static struct platform_driver kpd_pdrv = { 2 .probe = kpd_pdrv_probe, 3 .remove ... 阅读全文

posted @ 2014-03-06 20:01 haitao2000s 阅读(634) 评论(0) 推荐(0) 编辑

2014年3月5日

linux 内核驱动--Platform Device和Platform_driver注册过程

摘要: linux内核驱动--PlatformDevice和Platform_driver注册过程从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device和Platform_driver。Linux 中大部分的设备驱动,都可以使用这套机制 ,设备用 Platform_device 表示,驱动用 Platform_driver 进行注册。Linux platform driver 机制和传统的 device driver机制 ( 通过 driver_register 函数进行注册 ) 相比,一个十分明显的优势在于 platform 机制将设备本身的资源注册进内核,由内 阅读全文

posted @ 2014-03-05 14:30 haitao2000s 阅读(15237) 评论(0) 推荐(0) 编辑

2013年11月1日

ubuntu如何使用minicom

摘要: minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将讲解minicom的安装和配置。一、安装minicom:使用以下命令:# sudo apt-get install minicom以下为安装的详细信息:# sudo apt-get install minicom正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成将会安装下列额外的软件包:lrzsz下列【新】软件包将被安装:lrzsz minicom共升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个 阅读全文

posted @ 2013-11-01 10:50 haitao2000s 阅读(936) 评论(0) 推荐(0) 编辑

2013年10月31日

kmalloc/kfree,vmalloc/vfree函数用法和区别

摘要: kmalloc/kfree,vmalloc/vfree函数用法和区别1.kmalloc1>kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.2>kamlloc函数原型:#includeVoid *kmalloc(size_t size, int flags);(1)第一个参数是要分配的块的大小(2)第二个参数是分配标志(flags),他提供了多种kmalloc的行为。(3)第三个最常用的GFP_KERNEL;A.表示内存分配(最终总是调用get_free_pages来实现实际的分配;这就是GFP前缀的由来)是代表运行在内核空间的进程执 阅读全文

posted @ 2013-10-31 17:13 haitao2000s 阅读(459) 评论(0) 推荐(0) 编辑

size_t ssize_t loff_t 的区别

摘要: Ssize_t 与size_t跟踪linux源码得到以下宏:#ifndef _SIZE_T#define _SIZE_Ttypedef __kernel_size_t size_t;#endif#ifndef _SSIZE_T#define _SSIZE_Ttypedef __kernel_ssize_t ssize_t;#endif在不同平台上,其具有不同的定义:/* sparc 64 bit */typedef unsigned long __kernel_size_t;typedef long __kernel_ssize_t;/* sparc 32 bit */typedef uns. 阅读全文

posted @ 2013-10-31 17:00 haitao2000s 阅读(1010) 评论(0) 推荐(0) 编辑

2013年9月16日

虚机下Ubuntu与Win7文件共享

摘要: 使用Samba服务实现虚机与本机的文件共享,简单的分为以下几个步骤,按部就班,so easy1、安装smb sudo apt-get install samba sudo apt-get installsmbfs (如果你的ubuntu是第一次运行,没有samba包,这时你需要更新下源列表下载安装包 sudo apt-get update)2、选择共享文件夹 shares-min 系统会弹出图形对话框,选择你或者新建一个共享文件夹3、更改权限 chmod 777 shares 搞定!通过Win7下的网络,就会看见Ubuntu网络名进入即可查看到共享文件夹shares 阅读全文

posted @ 2013-09-16 02:25 haitao2000s 阅读(801) 评论(0) 推荐(0) 编辑

2013年8月17日

static变量的使用

摘要: 静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执行过程中始终存在,但是在它作用域之外不能使用。另外,属于静态存储方式的量不一定就是静态变量。 例如:外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量 阅读全文

posted @ 2013-08-17 20:10 haitao2000s 阅读(15534) 评论(2) 推荐(1) 编辑

导航