随笔分类 - Linux
摘要:CPU信息查看 #查看CPU型号: $>grep 'model name' /proc/cpuinfo |uniq model name : Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz #查看CPU物理个数 $>grep 'physical id' /proc
阅读全文
摘要:高通平台8916/8917 对于第三方Fuel Gauge,跳变多是因为IC内部算法的问题,这样我们可以通过驱动来规避。 例如:usb在位时,要阻止电量的向下跳变。 当电量越级跳变时,要在驱动中能检测到。 问题情形:1.电量跳变到50%或偏差过大2.电池ID脚接地3.温度脚来判断电池是否在位 推测原
阅读全文
摘要:poll机制分析 韦东山 2009.12.10 所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。 一、内核框架
阅读全文
摘要:【参考】韦东山 教学笔记 1. 原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0atomic_read(atomic_t *v); //返回原子变量的值void atomi
阅读全文
摘要:【参考】韦东山 教学笔记 为了使设备支持异步通知机制,驱动程序中涉及以下3项工作:1. 支持F_SETOWN命令,能在这个控制命令处理中设置filp->f_owner为对应进程ID。 不过此项工作已由内核完成,设备驱动无须处理。2. 支持F_SETFL命令的处理,每当FASYNC标志改变时,驱动程序
阅读全文
摘要:【参考】韦东山 教学视频 一. V4L2框架: video for linux version 2 虚拟视频驱动vivi.c分析:1.分配video_device2.设置3.注册:video_register_device vivi_init vivi_create_instance v4l2_de
阅读全文
摘要:本程序的Makefile分为3类:1. 顶层目录的Makefile2. 顶层目录的Makefile.build3. 各级子目录的Makefile 一、各级子目录的Makefile: 它最简单,形式如下:obj-y += file.oobj-y += subdir/ "obj-y += file.o"
阅读全文
摘要:【参考】韦东山 教学笔记 1. 程序框架1.1 触摸屏: 主按线程,通过socket发给显示进程 封装事件:ts线程 按键线程 操作系统 封装的数据有:时间类型(点击、上下左右移动)位置速度幅度 1.2 显示 放大(上) 缩小(下) 左边 右边 当前 显示控制 接收sochket libjpeg m
阅读全文
摘要:【参考】韦东山 教学笔记 一. 内核启动流程,据此配置内核(机器ID)1.1 修改Makefile1.2 选择默认配置 : make s3c2410_defconfig1.3 make uImage 步骤1:在UBOOT里: set machid 16a // smdk2440 mach-smdk2
阅读全文
摘要:【参考】韦东山 教学笔记 最简单的bootloader的编写步骤: 1. 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH2. 如果bootloader比较大,要把它重定位到SDRAM3. 把内核从NAND FLASH读到SDRAM4. 设置"要传给内核的参数"5. 跳转执
阅读全文
摘要:i2c_add_driver i2c_register_driver driver->driver.bus = &i2c_bus_type; driver_register(&driver->driver); list_for_each_entry(adapter, &adapters, list)
阅读全文
摘要:1. 框架1.1 硬件协议简介1.2 驱动框架1.3 bus-drv-dev模型及写程序a. 设备的4种构建方法a.1 定义一个i2c_board_info, 里面有:名字, 设备地址 然后i2c_register_board_info(busnum, ...) (把它们放入__i2c_board_
阅读全文