- 博客(87)
- 资源 (36)
- 收藏
- 关注
原创 一 linux spi子系统(框架)
一.spi设备struct spi_device { struct device dev; //设备文件 struct spi_master *master; //spi主机 u32 max_speed_hz; //最大速率 u8 chip_select; //片选 u8 mode; //模式 u8 bits_per_word; //一个字有多少位 int irq;
2013-02-27 14:49:20 4569
原创 MACHINE_START MACHINE_END 宏
一、定义#define MACHINE_START(_type,_name) \ //板类型,板名字static const struct machine_desc __mach_desc_##_type \ __used \ __attribute__((__section__(".arch.info.init"))) = { \ .nr = MACH_TYPE_##
2013-02-26 09:13:45 2384
原创 【android】binder机制-service
参考下mediaservice的服务,在framework/base/media/mediaservice/main_mediaservice.cpp中的main函数是mediaservice的入口函数int main(int argc, char** argv){ sp proc(ProcessState::self()); sp sm = defaultServiceMa
2013-02-06 21:49:18 1793
原创 【android】binder机制-servicemanager
servicemanager的源码在/frameworks/base/cmds/servicemanager目录下由binder.c,binder.h,service_manager.c构成生成servicemanager文件放在/system/bin/目录下servicemanager的入口是在service_manager.c中的main函数int main(int argc, c
2013-02-04 18:44:47 2191
原创 【android】binder机制 binder协议
(关于_IOWR,_IOW,_IOR,_IO请参考linux命令码(_IO宏) )一.设备文件/dev/binder ioctl命令#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read) //读写命令#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, int64_t)
2013-02-03 10:14:21 2610 1
原创 linux命令码(_IO宏)
在ioctl.h头文件中定义了命令码命令码用一个32位的整型数表达bit29~31表示命令传输的方向,bit16~29记录要传输的数据的大小,bit8~15表示设备类型(一般用一个ASCII表示),bit0~7表示命令编号其中数据大小可以和方向的bit29重叠29位是特殊位,因为无方向定义值为1也就是无方向的时候会占用第29位,无方向就无所谓数据传输,所以携带数据大小段是0有方
2013-02-02 09:31:25 4140
原创 linux系统调用
一.声明系统调用的相关宏1.SYSCALL_DEFINE1~6#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)#define SYSCA
2013-01-31 12:43:49 2890
原创 六 linux串口编程
一.结构体1.termiosstruct termios { tcflag_t c_iflag; /* 输入模式标志 */ tcflag_t c_oflag; /* 输出模式标志 */ tcflag_t c_cflag; /* 控制模式标志 */ tcflag_t c_lflag; /* 本地模式标志 */ cc_t c_line
2013-01-30 14:23:12 4212
原创 五 linux 串口驱动
一.串口结构体1.串口驱动结构体struct uart_driver { struct module *owner; //模块所有者 const char *driver_name; //驱动名 const char *dev_name; //设备名 int major; //主设备号 int minor; //次设备号 int nr; //支持串口个数
2013-01-29 23:25:01 3201 2
原创 四 linux tty驱动
一. tty结构体1.tty_driverstruct tty_driver { int magic; struct kref kref; //参考计数 struct cdev cdev; //字符设备 struct module *owner; //模块所有者 const char *driver_name; //驱动名 const char *name; //设
2013-01-29 23:24:42 3099
原创 三 printk如何打印信息
printk的定义可变参数 参考va_list,va_start,va_arg,va_end可变参数asmlinkage int printk(const char *fmt, ...){ va_list args; //可变参数链表 int r;#ifdef CONFIG_KGDB_KDB if (unlikely(kdb_trap_printk)) { v
2013-01-29 23:24:12 2608
原创 二 console 设备驱动
一.结构体1.consolestruct console { char name[16]; //console名 void (*write)(struct console *, const char *, unsigned); //写方法 int (*read)(struct console *, char *, unsigned); //读方法 struct tty_d
2013-01-29 23:23:51 3087 1
原创 一 uboot传递参数'console=ttyXXX'的作用
linux启动时uboot传递进console=ttyS0,115200n8的参数内核中用__setup()宏声明参数处理的方法关于__setup宏参考 early_param和__setup宏__setup("console=", console_setup);console_setup函数处理1.console_cmdline结构体struct console_cm
2013-01-29 23:23:22 4745
原创 idr机制(32叉树)
一.结构体1.idr结构体struct idr { struct idr_layer __rcu *top; //idr_layer顶层,32叉树的根 struct idr_layer *id_free; //指向idr_layer的空闲链表 int layers; //idr_layer的层数量 int id_free_cnt; //idr_layer空闲链表中剩余的
2013-01-26 10:43:48 7343 5
原创 linux多线程例子
一.基本功能1.最简单例子--创建线程/*** 创建线程**/#include #include #include void *thread1(void *arg){ printf("this thread1!\n");}int main(int argc,char **argv){ int ret; pthread_t
2013-01-24 21:14:48 1691
原创 va_list,va_start,va_arg,va_end可变参数
<!--span {font-family:'Courier New'; font-size:10pt; color:#000000}.sc2 {color:#008000}.sc4 {color:#FF8000}.sc5 {font-weight:bold; color:#0000FF}.sc10 {font-weight:bold; co
2013-01-24 21:01:36 2486
原创 early_param和__setup宏
一.宏的定义在/include/linux/Init.h中#define __setup(str, fn) \ __setup_param(str, fn, fn, 0) #define early_param(str, fn) \__setup_param(str, fn, fn, 1)两个宏都会调用__setup_param跟踪进__setup_p
2013-01-23 15:53:23 2491
原创 linux多进程多线程互斥同步例子
进程1#include #include #include #include #include #include #define DEBUG 1#define SHARE_KEY 0x1234#define THREAD_NUM 4typedef struct{ pthread_mutex_t lock; pthread_cond_t c
2013-01-22 22:31:49 2804
原创 list_for_each_entry宏
1.list_for_each_entry宏的定义#define list_for_each_entry(pos, head, member) \ for (pos = list_entry((head)->next, typeof(*pos), member); \ prefetch(pos->member.next), &pos->member != (head);
2013-01-16 11:51:25 2927
原创 linux等待队列
一.头文件#include 二.结构体1.等待队列头struct __wait_queue_head { spinlock_t lock; struct list_head task_list;};typedef struct __wait_queue_head wait_queue_head_t;2.等待队列struct __wait_queue {
2013-01-16 10:12:18 3353
原创 linux通知链相关
一.头文件#include 二.结构体//通知块 struct notifier_block { int (*notifier_call)(struct notifier_block *, unsigned long, void *); //回调函数 struct notifier_block __rcu *next; //指向通知链表的下一项 int priority
2013-01-15 21:45:31 2400
原创 linux 多线程
一.头文件#include 二.编译选项-lpthread三.结构体pthread_tpthread_attr_tpthread_barrier_tpthread_barrierattr_tpthread_cond_tpthread_condattr_tpthread_key_tpthread_mutex_tpthread_mutexattr_t
2013-01-15 16:33:32 2984
原创 linux 进程间通讯--信号量
PV的定义 P就是请求资源,V就是释放资源P(sv) 如果sv大于0,减小sv。如果sv为0,挂起这个进程的执行。V(sv) 如果有进程被挂起等待sv,使其恢复执行。如果没有进行被挂起等待sv,增加sv。P表示通过的意思,V表示释放的意思System V机制一.头文件#include 二.结构体struct sembuf {unsigned sh
2013-01-15 11:55:48 1325
原创 linux 编程--目录相关
一.头文件#include 二.结构体struct dirent {#ifndef __USE_FILE_OFFSET64 __ino_t d_ino; __off_t d_off;#else __ino64_t d_ino; __off64_t d_off;#endif unsigned short int d_re
2013-01-10 21:35:50 1047
原创 linux 定时器timer使用
1.添加头文件#include 2.定义一个timer_list结构体成员struct timer_list t1;3.初始化定时器init_timer(&t1);4.填充t1成员t1.function=&timer_fn; //回调函数t1.expires=jiffies+HZ; //定时值t1.data=HZ; //回调函数参数5.添加定时器回调函数
2013-01-04 13:08:20 4931 2
原创 list链表
一.链表头结构体struct list_head { struct list_head *next, *prev;};二.初始化链表头也就是把list的next和prew指针指向自己static inline void INIT_LIST_HEAD(struct list_head *list){ list->next = list; list->prev = lis
2013-01-03 12:19:52 1390
原创 linux 进程间通讯-共享内存
头文件#include #include #include 结构体共享内存管理结构体:struct shmid_ds { struct ipc_perm shm_perm; int shm_segsz; __kernel_time_t shm_atime; __kerne
2013-01-03 09:55:20 1085
原创 五、从usb的插入开始
当usb设备插入接口,电压变化会通知到usb主控器,触发主控器中断,如果主控器不支持中断,那么会使用rh_timer方法,轮询接口其结果都是调用usb_hcd_poll_rh_statusvoid usb_hcd_poll_rh_status(struct usb_hcd *hcd){ struct urb *urb; int length; unsigned lon
2012-12-29 14:04:34 5600 1
原创 四、usb设备注册
一.usb设备驱动注册static inline int usb_register(struct usb_driver *driver){ return usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME);}usb_register_driverint usb_register_driver(struct usb
2012-12-29 14:04:00 2874
原创 三、usb主控器注册
第一步usb主控器设备的分配usb_create_hcdstruct usb_hcd *usb_create_hcd (const struct hc_driver *driver,struct device *dev, const char *bus_name){ struct usb_hcd *hcd; hcd = kzalloc(sizeof(*hcd) + driver
2012-12-29 14:03:39 3671
原创 二、usb子系统初始化
在/drivers/usb/core/Usb.c中,subsys_initcall(usb_init)声明了usb子系统入口函数usb_initstatic int __init usb_init(void){ int retval; if (nousb) { pr_info("%s: USB support disabled\n", usbcore_name); re
2012-12-29 14:02:20 4964
原创 linux特殊设备驱动
一. 内存设备结构体static const struct memdev { const char *name; mode_t mode; const struct file_operations *fops; struct backing_dev_info *dev_info;} devlist[] = { [1] = { "mem", 0, &mem_fops,
2012-12-22 21:42:15 1290
原创 linux i2c设备驱动
一. i2c的结构体 1. i2c适配器struct i2c_adapter { struct module *owner; //模块所有者 unsigned int id __deprecated; unsigned int class; //支持的类别(I2C_CLASS_HWMON,I2C_CLASS_DDC,I2C_CLASS_SPD) const stru
2012-12-22 17:27:07 3285
原创 linux input设备驱动
一. 输入设备结构体 1. input_dev 输入设备struct input_dev { const char *name; //设备名 const char *phys; //设备系统层的物理路径 const char *uniq; // struct input_id id; //输入设备id 总线类型;厂商编号,产品id,产品版本 unsig
2012-12-21 22:54:21 4553
原创 linux framebuffer设备驱动
一. framebuffer结构体 1. fb_infostruct fb_info { int node; //次设备号 int flags; struct mutex lock; struct mutex mm_lock; struct fb_var_screeninfo var; //可变参数 struct fb_fix_screeninfo f
2012-12-21 11:02:29 2706
原创 linux块设备驱动
杂记一. 块设备相关结构体块设备结构体struct block_device { dev_t bd_dev; //设备号 struct inode * bd_inode; /* will die */ struct super_block * bd_super; //超级块 int bd_openers; struct mutex bd_mutex; /*
2012-12-20 10:24:09 1391
原创 container_of宏
一. 作用struct XXX_dev{ cdev cdev;}struct XXX_dev *dev; /* device information */ *dev = container_of(inode->i_cdev, struct XXX_dev, cdev); 结构体对象 域
2012-12-19 14:54:48 1681
原创 linux RTC设备驱动
一. RTC设备结构体struct rtc_device{ struct device dev; //设备文件 struct module *owner; //模块所有者 int id; //RTC次设备 char name[RTC_DEVICE_NAME_SIZE]; //RTC设备名 const struct rtc_class_ops *ops; //RTC
2012-12-19 14:06:04 3094
原创 总线、设备、驱动、类
一. 总线、设备、驱动、类各自的相关结构体 1.总线 1.1 总线类型结构体struct bus_type { const char *name; //总线类型名 struct bus_attribute *bus_attrs; //总线属性 struct device_attribute *dev_attrs; //设备属性 struct driver_
2012-12-18 21:40:06 2285
原创 linux platform平台设备驱动
一. 平台总线 1. 总线结构体struct bus_type platform_bus_type = { .name = "platform", //总线名 .dev_attrs = platform_dev_attrs, //设备属性 .match = platform_match, //匹配函数 .uevent = platform_uevent,
2012-12-18 13:40:22 1639
linux 2+1+2
2012-08-20
Universal-USB-Installer-1.8.1.5.exe
2010-12-02
Advanced_Programming_In_The_UNIX_Environment(2005)2Ed
2010-12-02
SoftICE for XP
2010-11-06
coreutils linux终端源码
2010-09-02
网络调试助手+串口调试助手
2010-08-11
SD卡 物理层协议
2010-08-03
C # 记事本源代码
2010-07-23
Linux DeviceDrivers 3rd Edition
2010-07-23
华为PCB布线规范 华为PCB布线规范
2010-07-14
云计算 Cloud Computing--michael miller
2010-06-24
linux内核 0.11版本源码 带中文注释
2009-08-31
The Linux Kernel Module Programming Guide2.6.pdf
2009-07-29
Building.Embedded.Linux.Systems.Aug.2008.pdf
2009-07-29
S3C44B0X中文数据手册1~17
2009-07-15
现代电子技术实践基础教程
2009-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人