- 博客(22)
- 资源 (7)
- 收藏
- 关注
原创 linux字符设备驱动例子
无聊,照着书上边抄边写,贴上来共享一下,非常不规范,仅供娱乐/********************************************************#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_EMERG "H
2012-04-25 15:47:19
357
原创 码农与大牛
在这个浮躁的社会环境中有相当一部分人见多识广、能说会道,大家都说他们很聪明。但是为什么只有凤毛菱角的人能够成为智者。读史使人明智。现在很多的理论都是从人类的历史长河中提炼出来的。大部分人都只是知道并且使用这些经过升华的理论,并不会去归本溯源追述来源以及形成原因和形成环境,所以他们很难创造新的理论。
2012-04-18 13:29:47
350
原创 GT2440启动过程
一下为个人分析结果,可能存在错误。GT2440可以分两种启动方式:1.从nor flash启动;2.从nand flash启动;GT2440启动时存在一个地址映射问题,因为GT2440启动总是从0x0这个地址开始的下面就两种启动方式分别做一下介绍1.从nor flash启动当从nor flash启动系统时,就直接将nor flash映射到系统的bank0,只要nor flash中有
2012-04-11 09:46:51
913
1
转载 Linux内核中等待队列的几种用法
Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible 唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要
2012-04-06 13:22:07
307
原创 linux内核组成
linux内核主要由以下几个部分组成1.模块加载函数模块加载时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作例:static int __init init_function(void){ //初始化代码 }module_init(init_function);2.模块卸载函数模块卸载时,模块的卸载函数会自动被内核执行,完成
2012-04-05 13:44:24
445
原创 linux内核空间与用户空间互访操作
由于内核空间与用户空间不能直接互访,所以需要借助函数调用来完成1.unsigned long copy_from_user(void *to,const void __user *from,unsigned long count);此函数将用户空间内容复制到内核空间,复制成功返回0否则返回不能被复制的字节数2.unsigned long copy_to_user(v
2012-03-31 13:57:49
470
原创 MTK黑白屏调试注意点
1.get_lcd_frame_buffer_address();通过这个函数可以得到frame的首地址2.RGB -> BWRGB图像到BW图像的转换算法3.刷数据的方向一般黑白屏都是一个page一个page刷数据的,所以通过get_lcd_frame_buffer_address();得到的数据需要整理后再送到屏幕上
2012-03-30 15:55:50
1938
原创 linux内核定时器
简单介绍一下linux提供内涵定时器的相关数据结构struct timer_list { struct list_head entry; unsigned long expires;//定时器到期时间 void (*function)(unsigned long);//定时器到期后执行的函数 unsigned long da
2012-03-30 14:45:01
367
原创 linux原子操作
原子操作指的是在执行过程中不会被别的代码路径所中断的操作,下面列出原子操作相关的函数1.void atomic_set(atomic_t *v,int i); //设置原子变量的值为i2.atomic_t v = ATOMIC_INIT(0); //定义原子变量V并初始化为03.atomic_read(atomic_t *v); //返回原子变量的值4.void atom
2012-03-27 17:34:28
1844
原创 MTK平台支持T卡热拔插
1.配置相关的中断2. 关闭宏__MSDC_NOT_SUPPORT_HOT_PLUG__ ,打开__MSDC_CD_EINT__ #CUSTOM_OPTION += __MSDC_NOT_SUPPORT_HOT_PLUG__ __EXTEND_QWERTY_KEYPAD__ CUSTOM_OPTION += __MSDC_CD_EINT__ __EX
2012-03-26 10:11:48
1805
转载 linux下vim命令详解
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的::qx 开始记录宏,并将结果存入寄存器xq 退出记录模式@x 播放记录在x寄存器中的宏命令稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,
2012-03-26 09:50:44
199
原创 C51单片机开发小感
虽说做驱动也有几个月了,以前只是将别人完成的驱动添加到项目中,基本不用去关注性能以及空间问题。 前段时间公司给安排了一个自主研发的项目,用C51单片机控制SLIC以及GSM模块去实现固话无线通话功能。项目的难度对于一个合格的驱动工程师来说也许是小菜一碟,但是对我这个半路出家,进入这个行业才几个月的小菜来说简直是无法想象。 刚一拿到
2011-11-09 19:09:02
425
原创 浅谈一下对汇编语言的认识
最近由于下班后没什么事就学习了一下汇编语言。 原来我们用的电子设备大到航天飞机,小到电子手表,或多或少都用到了汇编语言,看来在这个物联网的时代,汇编语言还是有用武之地的。 以前听说汇编语言有多么的难什么的,现在看来确实是有点。感觉汇编语言的语法没有高级语言那么好理解。本人记忆力天生就不是很好,恰巧汇编要记的指令又特别多,而且不像高级语言那样贴近正常人的思
2011-10-20 22:07:16
1476
原创 凡是有交换的地方就会繁荣
凡是有交换的地方就会繁荣。 植物呼入二氧化碳呼出氧气与人交换才有了生态平衡。 技术亦是如此,有交换才有创新。国内公司并不缺乏逻辑思维超强技术资深的工程师,也不缺乏思维发散有品位、思想前卫的创新人才。怎样让二者思想很好的交换结合是管理层需要思考的问题。
2011-10-18 20:45:19
369
原创 对聊天的看法
每当别人说出一些显而易见的观点时,我总是不知道如何去接下一句,只能回答“是的”或者是一笑而过。并不是不想继续聊下去,他们根本就是为了聊天而去聊天,说出的观点并不是自己经过思考后得出的结论,而且大部分人喜欢批判别人的观点,用网上看来得东西不管对错的反驳。这样的聊天个人觉得没有什么意
2011-10-07 22:50:55
396
原创 ARM乘法指令与乘加指令
乘法指令与乘加指令1.MUL 32位乘法指令2.MLA 32位乘加指令3.SMULL 64位有符号乘法指令4.SMLAL 64位有符号乘加指令5.UMULL 64位无符号乘法指令
2011-09-16 18:15:19
4277
1
原创 ARM指令集中的跳转指令
ARM程序中如何实现跳转1. 使用专门的跳转指令2. 直接向PC写人要跳转的地址 向PC写人地址在可以任意可以寻址的范围内任意跳转,然而跳转指令只能在当前指令向前或向后的32M的地址空间跳转 跳转指令包括:1. B
2011-09-15 22:10:57
849
原创 Linux的I2C体系结构
Linux的I2C体系结构分为3个组成部分1. I2C核心2. I2C总线驱动3. I2C设备驱动 Linux下实现I2C驱动的主要工作1. 提供I2C适配器的硬件驱动2. 提供I2C适配器的
2011-09-14 21:28:40
437
原创 I2C总线驱动
//////////////I2C.h//////////#define I2C_SCL=0 ()#define I2C_SCL=1 ()#define I2C_SDA=0 ()#define I2C_SDA=1 ()#
2011-09-14 20:21:48
297
原创 linux内核字符设备驱动相关的函数以及结构体
1. struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; struc
2011-09-13 21:39:32
501
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人