
Kernel Device Driver
文章平均质量分 91
huyugv_830913
这个作者很懒,什么都没留下…
展开
-
I2C chip Drivers
1 i2c_board_info数据结构的定义<br /> <br />static struct i2c_board_info __initdata stargate2_i2c_board_info[] = { /* Techically this a pca9500 - but it's compatible with the 8574 * for gpio expansion and the 24c02 for eeprom access. */ { .type = "pcf原创 2010-09-11 13:05:00 · 1015 阅读 · 0 评论 -
bootmem & buddy Allocator
Linux内存分配器分析1) bootmem_init();初始化bootmem内存分配器typedef struct bootmem_data { unsigned long node_min_pfn; unsigned long node_low_pfn;原创 2010-09-16 20:23:00 · 1289 阅读 · 0 评论 -
android下实现framebuffer独占的原理
bool SurfaceFlinger::threadLoop()利用handleConsoleEvents()判断当前进程是否有console的控制权。当除了surfaceFlinger之外的进程使用VT_ACTIVATE激活了console后,surfaceFlinger失原创 2011-08-03 19:08:21 · 2665 阅读 · 1 评论 -
Linux头文件
常用Linux头文件/* linux/drivers/ker-driver.c * Copyright (c) Hu yugui * * kernel-driver * * This file is subject to the terms and condition原创 2010-09-08 22:46:00 · 1243 阅读 · 0 评论 -
Linux TAGS分析
Linux TAGS分析原创 2010-12-02 10:06:00 · 1365 阅读 · 0 评论 -
Linux下Cache的使用
1.首先我们看一下ARM中Cache的几种设置:00:表示Cache和Write Buffer都没禁止01:表示nonCache,Write Buffer使能10:Write-Through模式11:Write-Back模式如果是Write-Through方式的话,每次写操作都通原创 2010-09-09 07:09:00 · 6419 阅读 · 0 评论 -
nand flash测试工具集
nand flash测试工具集原创 2010-12-07 16:54:00 · 4030 阅读 · 0 评论 -
进程地址空间地址转换为物理地址
kernel代码/* * To test kernel's scheduler * Date:2011/8/8 13:04 * ### wait queue ### */#include #include #include #include #include原创 2011-08-08 20:31:00 · 1314 阅读 · 0 评论 -
ARM Linux权限内存控制的实现
ARM Linux权限内存控制的实现early_trap_init->modify_domain(DOMAIN_USER, DOMAIN_CLIENT);设置USER MODE的domain权限为client(01)根据创建的page maps表设置0xc0000000开始的地址SVC模式读写,USR模式不能读写gdb dump memory的命令如下:原创 2012-01-19 16:39:39 · 1362 阅读 · 0 评论 -
create_mapping如何创建内存映射表
1 ARM920T的MMU工作原理下图显示了MMU地址转化关系 一级表项的地址(pmd) = ( (TLB) & (0xFFFFC000) ) + ( (Table Index)注1:TLB(Translate table base),即转换表基地址注2:由于每个表项占32位(4Bytes),因此(Table Index)一级表项的内容(*pmd) = ( (pte)原创 2010-09-14 22:07:00 · 4441 阅读 · 1 评论 -
linux 用户进程额堆栈空间VMA
linux 堆栈expand_stack__bprm_mm_init@@@@@@@@0xbe86f000 - 0xbe871000: address 0xbe84f000int expand_downwards(struct vm_area_struct *vma, unsigned long address){int error;if(strncmp(curr原创 2012-01-20 15:58:27 · 1192 阅读 · 0 评论 -
EXT4写文件流程
测试函数#include#include#include#include#includeintmain(int argc, char *argv[]){intfd = 0, i = 0;charbuf[1024] = {0};fd= open(argv[1], O_CREAT | O_RDWR); //创建文件并打开文件for(i = 0; i原创 2012-05-29 17:52:49 · 4922 阅读 · 1 评论 -
UNSTUFF_BITS宏定义分析
UNSTUFF_BITS宏定义分析(RGB:185 225 221) 0x1234567 0x89ABCDEF 0x1234567 0x89ABCDEF,得到UNSTUFF_BITS(resp, 8, 4) = 0xDCONFIG_MMC_DEBUG = yecho 8 > /proc/sys/kernel/printk[ 1原创 2010-12-11 11:45:00 · 2446 阅读 · 1 评论 -
汇编和C语言
#file:hello.c#include #include extern void printk(char);extern int max_p(int, int);char str[]="Hello world!\n";int main(){ int i; for(i = 0; i < strlen(str); i++) printk(str[i]); int max原创 2012-08-09 20:07:46 · 1517 阅读 · 0 评论 -
分析android异常时的堆栈信息
android framework异常时会打印如下log,分析往往无从下手:24422 08-17 15:09:02.212 I/DEBUG ( 52): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***24423 08-17 15:09:02.212 I/DEBUG ( 52): Bui原创 2012-08-17 16:48:43 · 2318 阅读 · 1 评论 -
mm_init分析(Zoned Buddy Allocator)
1 mm_init分析file:init/main.cstart_kernel函数{ ... setup_arch(&command_line);//处理器相关的初始化代码,paging_init,详细见bootmem_init分析 mm_init_owner(&init_mm,原创 2010-09-15 21:36:00 · 5020 阅读 · 2 评论 -
vmalloc中物理地址重映射函数分析
vmalloc中物理地址重映射函数分析 Figure 1:Vmalloc Areas Figure 2:将非连续3个物理pages到连续虚拟地址注:图片来至原创 2010-09-19 09:53:00 · 2598 阅读 · 1 评论 -
request_mem_region函数分析
1 资源定义static struct resource resource[] = { [0] = { .start = 1, .end = 5, }, [1] = { .start = 7 .end = 11, }, [2] = { .start = 15, .end = 30, }, };2 资源分布图 3 源码分析static struct resource * __request_resource(struct reso原创 2010-09-12 14:34:00 · 1219 阅读 · 0 评论 -
Kernel Driver错误返回值总结
Kernel常见错误类型总结1) ENOMEMdev->base = ioremap(mem->start, resource_size(mem)); if (!dev->base) { r = -ENOMEM; goto err_free_mem; } dev = kzalloc(sizeof(struct omap_i2c_dev), GFP_KERNEL); if (!dev) { r = -ENOMEM; /* 内存分配失败 */ goto err_release_regi原创 2010-09-12 16:03:00 · 1380 阅读 · 0 评论 -
I2C设备驱动流程
一、I2C设备驱动流程1) i2c_register_board_info定义I2C器件信息(Name,Address,etc.)static struct i2c_board_info __initdata pi2c_board_info[] = { { I2C_BOARD_INFO("max1586", 0x14), .platform_data = &max1587a_info, },};i2c_register_board_原创 2010-09-24 20:07:00 · 5498 阅读 · 0 评论 -
MMC/SD驱动(1)
SD卡命令原创 2010-12-06 22:43:00 · 2045 阅读 · 0 评论 -
SD/MMC驱动2(SD检测)
SD/MMC驱动2(SD检测)原创 2010-12-11 02:28:00 · 1614 阅读 · 0 评论 -
Linux内核读写文件
Linux内核读写文件(filp_open/vfs_read/vfs_write)原创 2010-12-21 21:24:00 · 1581 阅读 · 0 评论 -
内核模块向用户进程发送消息
内核模块向用户进程发送消息转载 2010-12-23 17:33:00 · 1039 阅读 · 0 评论 -
poll机制分析
poll机制分析转载 2010-12-23 18:01:00 · 650 阅读 · 0 评论 -
块设备请求的具体实现(MTD)
块设备请求的具体实现(MTD)原创 2010-12-24 15:36:00 · 1106 阅读 · 0 评论 -
Ubuntu10.04内核升级为Linux2.6.37
Ubuntu10.04内核升级为Linux2.6.37原创 2011-01-06 12:56:00 · 1069 阅读 · 0 评论 -
ALSA driver(Control)
ALSA driver(Control)原创 2011-01-22 21:07:00 · 2510 阅读 · 0 评论 -
bootmem_init分析(Bootmem Allocator)
1 bootmem_init分析文件:arch/arm/mm/mmu.cpaging_init -> bootmem_init1) 为pgdat = NODE_DATA(node),pgda->bdata->node_bootmem_map分配内存空间,起始地址为_end(即ke原创 2010-09-15 20:54:00 · 4499 阅读 · 2 评论 -
wait_queue_head_t & wait_queue_t(MTD)
wait_queue_head_t & wait_queue_t使用(MTD)原创 2010-12-11 20:03:00 · 1498 阅读 · 0 评论 -
hrtimer和work工作队列的使用
1.hrtimers - 为高分辨率kernel定时器,可用于超时或周期性定时器使用1). hrtimer_init初始化定时器工作模式。 hrtimer_init(&vibe_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); vibe_tim原创 2010-09-09 21:24:00 · 8031 阅读 · 1 评论 -
驱动中id_table的分析(Input/I2C)
<br />驱动中id_table的分析<br />一、I2C驱动probe<br />***i2c_device_id用于device与drive配对<br />static const struct i2c_device_id tps65010_id[] = {<br /> { "tps65010", TPS65010 },<br /> { "tps65011", TPS65011 },<br /> { "tps65012", TPS65012 },<br /> { "tps65原创 2010-09-25 21:07:00 · 10188 阅读 · 8 评论