摘要: 七载,刹那芳华。九曲黄河,不若今朝悲怆吾心之上,已然裂土为疆功名利禄,从此不死不休。学校里七年的路太长,不知从何说起。学校里七年的路太短,不知说些什么。那年,我刚进校门,父亲送我来,中午只吃了两个馒头便匆匆离去。那年,我开始郁闷,咒骂学校,写下>。多少个图书馆排队,只为能练习打字,抄下了大半部蛮荒记... 阅读全文
posted @ 2014-06-19 15:04 天地不仁 阅读(503) 评论(1) 推荐(0) 编辑
摘要: 斯年已逝,给回忆留下点线索。在SPRD的日子,来这的第一天,立怀便把FPGA的大板给了我,后面都围绕这块据说辐射很大的东西...硬件的PM说,实习生不需要接触核心的东西,测试不让他做谁来做,我闷头测试,记录了前期芯片方案的性能数据。TROUT要量产,立怀抽不开身,我就take了gps的集成,ACL RF 还有Agps的相关工作。认识了以色列的Koby。GreenEye的TypeOut期限就要到了,和俩个同事连续接近一个月加班到晚上11 12点,最后一个晚上终于解决所有问题赶上了。庆功单上没有我们,我们出现在感谢名单里,还写错了老大的名字。随后部门老大Evan给了我一个奖,一个季度只有三个人,很 阅读全文
posted @ 2014-01-19 19:16 天地不仁 阅读(972) 评论(0) 推荐(0) 编辑
摘要: 内核定时器: unsigned long timeout = jiffies + (x * HZ); while(1) { // Check the condition. // Take a schedule. if (time_after(jiffies, timeout)) { printk("Timeout\n"); break; } }转换到秒: s = (jiffies - last_jiffies)/HZ;jiffies(约50天溢出)为jiffies_64的后32位,因此直接读取jiffies_64不具备原子性,使用get_jiffies_64,函数原理:[平 阅读全文
posted @ 2013-06-27 14:09 天地不仁 阅读(4518) 评论(0) 推荐(0) 编辑
摘要: SDIO的master board info:---------------------------------------------------------------------------------------------------------#define SD0_DETECT_GPIO 101//驱动器所占资源【host寄存器所占用的AP地址,及大小,探测GPIO/中断等】static struct resource sprd_sdio_resource[][3] = { SDIO_RESOURCE_BUILDER(SPRD_SDIO0_BASE, SPRD_SDIO0_SIZ 阅读全文
posted @ 2013-05-22 13:44 天地不仁 阅读(4020) 评论(0) 推荐(0) 编辑
摘要: 内存映射结构:1.32位地址线寻址4G的内存空间,其中0-3G为用户程序所独有,3G-4G为内核占有。2.struct page:整个物理内存在初始化时,每个4kb页面生成一个对应的struct page结构,这个page结构就独一无二的代表这个物理内存页面,并存放在mem_map全局数组中。3.段式映射:首先根据代码段选择子cs为索引,以GDT值为起始地址的段描述表中选择出对应的段描述符,随后根据段描述符的基址,本段长度,权限信息等进行校验,校验成功后。cs:offset中的32位偏移量直接与本段基址相累加,得出最终访问地址。0-3G与mem_map的映射方式:因linux中采用的段式映射为 阅读全文
posted @ 2013-05-15 13:53 天地不仁 阅读(7226) 评论(1) 推荐(0) 编辑
摘要: spi slave驱动spi slave驱动在kernel中可以主要参考spidev.c,这是一个字符驱动,可以匹配kernel中的多个名称为“spidev”的spi设备,分析这个文件,主要有以下几个重点:1. 如何编写多设备公用驱动2. 如何封装读写请求到spi框架层3. spi message请求如何分发到master自spi_board_info或者spi master注册后,两者就已经完成了匹配的工作,spi slave驱动不关心任何匹配的细节,它只需要完成与spi slave的匹配,就可以通过slave进而找到master。这里是通过spi_register_driver(& 阅读全文
posted @ 2013-05-14 22:10 天地不仁 阅读(7774) 评论(1) 推荐(0) 编辑
摘要: SPI主要分主控制器及SPI设备两端,两者之间靠spi.h这个公共接口来作为抽象层。首先来分析SPI总线:【本篇着重分析注册及匹配流程,下篇将会详细分析SPI master驱动的时序及实现方式】===================================================================================================spi bus================================================================================================= 阅读全文
posted @ 2013-04-28 20:38 天地不仁 阅读(4710) 评论(0) 推荐(0) 编辑
摘要: =============================================================================================================sysfs文件系统结构分析:=============================================================================================================这里仅对一个指定bus及其驱动进行结构分析:(pci)总线及驱动:sys-bus-pcipci├── devices PCI上注册的d. 阅读全文
posted @ 2013-04-28 20:36 天地不仁 阅读(2489) 评论(0) 推荐(0) 编辑
摘要: ----------------------------------------------------------------------------------------------gpio作为一种通用的IO接口,使用方法主要如下:----------------------------------------------------------------------------------------------Gpio:每个 GPIO 都代表一个连接到特定引脚或球栅阵列(BGA)封装中“球珠”的一个位标准头文件 [对外接口]其中根据是否定义CONFIG_GENERIC_GPIO判. 阅读全文
posted @ 2013-04-11 11:03 天地不仁 阅读(11957) 评论(0) 推荐(0) 编辑
摘要: Linux内核模块模型面向对象分析 C到C++,它们的关系演变过程是怎样的。从Linux的内核代码里面你可以了解到更深的编程层次的面向对象,而不是简单的封装、继承、多态。首先这个题目有点大,而且过于深,而我能了解到的也只是冰山一角,不过我觉得能去做这样的一种有意义的工作,对于提升自己来说,也是很有帮助。主要分以下几部分:引言。 C语言中的封装、继承与多态。 从Linux体系设备驱动模型(defs)来看面向对象。 类比插件系统来看内核模块模型中层叠技术的可扩展性。 虚拟函数表与Linux内核符号导出表的面向对象特性优劣分析。 总结 附录其中,每一部分都会穿插部分语言代码,让整个描述过程更加详实、 阅读全文
posted @ 2013-02-22 10:02 天地不仁 阅读(5690) 评论(3) 推荐(4) 编辑