Shimejing

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  ARM嵌入式底层及内核驱动

摘要:在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/*** container_of - cast a member of a structure out to the containing struc... 阅读全文
posted @ 2014-12-31 12:25 Shimejing 阅读(291) 评论(0) 推荐(0)

摘要:一个比较好的学习内核的博客:http://edsionte.com/techblog/ 阅读全文
posted @ 2014-11-18 09:18 Shimejing 阅读(195) 评论(0) 推荐(0)

摘要:http://edsionte.com/techblog/tasklet的实现tasklet(小任务)机制是中断处理下半部分最常用的一种方法,其使用也是非常简单的。正如在前文中你所知道的那样,一个使用tasklet的中断程序首先会通过执行中断处理程序来快速完成上半部分的工作,接着通过调用taskle... 阅读全文
posted @ 2014-11-18 09:15 Shimejing 阅读(240) 评论(0) 推荐(0)

摘要:Run-time PM.每个device或者bus都会向run-time PM core注册3个callbackstruct dev_pm_ops {...int (*runtime_suspend)(struct device *dev);int (*runtime_resume)(struct ... 阅读全文
posted @ 2014-08-25 21:11 Shimejing 阅读(1107) 评论(0) 推荐(0)

摘要:设备电源管理Copyright (c) 2010 Rafael J. Wysocki, Novell Inc.Copyright (c) 2010 Alan Sternstern@rowland.harvard.edu*****************************************... 阅读全文
posted @ 2014-08-25 21:10 Shimejing 阅读(1622) 评论(0) 推荐(0)

摘要:新版linux系统设备架构中关于电源管理方式的变更 based on linux-2.6.32一、设备模型各数据结构中电源管理的部分linux的设备模型通过诸多结构体来联合描述,如struct device,struct device_type,struct class, struct device... 阅读全文
posted @ 2014-08-25 21:08 Shimejing 阅读(651) 评论(0) 推荐(0)

摘要:三、pm_test属性文件读写int pm_test_level = TEST_NONE;static const char * const pm_tests[__TEST_AFTER_LAST] = { [TEST_NONE] = "none", [TEST_CORE] = "core", [TE... 阅读全文
posted @ 2014-08-25 21:04 Shimejing 阅读(671) 评论(0) 推荐(0)

摘要:1. Based on linux2.6.32, only for mem(SDR)2. 有兴趣请先参考阅读: 电源管理方案APM和ACPI比较.docLinux系统的休眠与唤醒简介.doc3. 本文先研究标准linux的休眠与唤醒,android对这部分的增改在另一篇文章中讨论4. 基于手上的一个... 阅读全文
posted @ 2014-08-25 21:03 Shimejing 阅读(2181) 评论(0) 推荐(0)

摘要:在Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务;(2)调用注册的设备的suspend的回调函数;(3)按照注册顺序休眠核心设备和使CPU进入休眠态。 冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文。当这些进程被解冻的时候,他们是不知道自... 阅读全文
posted @ 2014-08-25 21:01 Shimejing 阅读(839) 评论(0) 推荐(0)

摘要:电源管理芯片可以为多设备供电,且这些设备电压电流有所同。为这些设备提供的稳压器代码模型即为regulator。下面通过下面三个过程分析regulartor供电机制:1.分析regulator结构体2.regulator注册过程3.设备使用regulator过程一.分析regulator结构体Regu... 阅读全文
posted @ 2014-08-25 20:59 Shimejing 阅读(1350) 评论(0) 推荐(0)

摘要:在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下. 本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来,最后还是放弃了.甚至参考了linux下i2c-algo-bit.c和i2c-gpio.c,依然... 阅读全文
posted @ 2014-06-29 23:10 Shimejing 阅读(339) 评论(0) 推荐(0)

摘要:其实,10bit地址我没用过,通用广播地址更没用过.通用广播地址应该是在多个mcu之间用i2c进行通信时使用的.虽说没用到,但还是做了翻译,说不定以后有机会用到:10bit地址 10bit的寻址扩展可能寻址的数目.有7bit地址和10bit地址的设备可以连接到相同的I2C总线上,而且7bit寻址和1... 阅读全文
posted @ 2014-06-29 23:05 Shimejing 阅读(1687) 评论(0) 推荐(0)

摘要:时钟拉伸(Clock stretching)clock stretching通过将SCL线拉低来暂停一个传输.直到释放SCL线为高电平,传输才继续进行.clock stretching是可选的,实际上大多数从设备不包括SCL驱动,所以它们不能stretch时钟.从字节级来看,一个设备可能在快速模式下... 阅读全文
posted @ 2014-06-29 23:04 Shimejing 阅读(794) 评论(0) 推荐(0)

摘要:字节格式发送到SDA线上的每个字节必须是8位.每次传输的字节数量是不受限制的.每个字节后必须跟着一个ACK应答位.数据从最高有效位(MSB)开始传输.如果从机要执行一些功能后才能接收或者发送新的完整数据,比如说服务一个内部中断,那么它可以将时钟线SCL拉低来强制使主机进入wait状态.当从机准备好新... 阅读全文
posted @ 2014-06-29 23:03 Shimejing 阅读(983) 评论(0) 推荐(0)

摘要:I2C只用两条线(SDA和SCL)在连接到总线上的设备之间传送数据.每一个设备都由唯一的地址来识别(不管是微处理器、LCD驱动器、存储器或者键盘接口),并且可以依照设备的功能作为发送器或者接收器使用.LCD驱动器可能只是个接收器,而存储器可以发送和接受数据.除了发送器和接收器,当传送数据时设备还可以... 阅读全文
posted @ 2014-06-29 22:58 Shimejing 阅读(857) 评论(0) 推荐(0)

摘要:I2C我是想全面深入的从嵌入式软件工程师的角度做个理解,刚刚还申请了一个专栏,这个好好写. 学习技术从外文文档看起~~ 要全面了解I2C,可以从《I2C-bus specification and user manual》看起.I2C最初是由Philips提出的,那么这文档就是由NXP... 阅读全文
posted @ 2014-06-29 22:57 Shimejing 阅读(451) 评论(0) 推荐(0)

摘要:NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是... 阅读全文
posted @ 2014-05-26 10:04 Shimejing 阅读(238) 评论(0) 推荐(0)

摘要:文件系统类型: ext2 : 早期linux中常用的文件系统 ext3 : ext2的升级版,带日志功能 RAMFS : 内存文件系统,速度很快 NFS : 网络文件系统,由SUN发明,主要用于远程文件共享 MS-DOS : MS-DOS文件系统 VFAT : Windows 95/98 操作系统... 阅读全文
posted @ 2014-05-23 10:45 Shimejing 阅读(433) 评论(0) 推荐(0)

摘要:此文摘自百度百科:http://baike.baidu.com/view/245026.htmSPI概述SPI:高速同步串行口。3~4线接口,收发独立、可同步进行.SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC... 阅读全文
posted @ 2014-05-13 02:38 Shimejing 阅读(471) 评论(0) 推荐(0)

摘要:我们都知道bss段需要初始化,但是这是为什么呢? 通过浏览资料,我们都会发现,bss段是不会出现在程序下载文件(*.bin *.hex)中的,因为全都是0。如果把它们出现在程序下载文件中,会增加程序下载文件的大小。实际应用中,通常只需要把bss段的起始地址和结束地址保存起来,而不需要将程序下载文件中出现bss段(一堆0)将来真正运行程序的时候,再根据这两个数据进行bss段的初始化就行了。 以上这段文字是网上的资料说的。但是,我可不可以让bss段出现在程序下载文件中呢?如果这样可以的话,当程序由存储器(例如nandflash)拷贝到内存中时,捎带着会把bss段像data段那样初始化。 实际上是可 阅读全文
posted @ 2014-03-17 19:39 Shimejing 阅读(2231) 评论(0) 推荐(1)