嵌入式技术
duanlove
嵌入式虚拟化,LINUX内核艺术,系统底层世界……
展开
-
CMOS图像传感器使用的SCCB总线协议
SCCB 是OmniVision 公司定制的串行摄像头控制总线(Serial Camera Control Bus) ,它用于对摄像头的寄存器进行读写,以达到对摄像头输出图像的控制。两线制SCCB 与I2C 总线类似,是一种双向二线制同步串行总线。SCCB 的数据传输由主器件控制,主器件能够发出数据传输启动信号、时钟信号以及传送结束时的停止信号。通常主器件都是微处理器,它寻址访问的设备称为从器件原创 2012-07-24 10:11:51 · 4744 阅读 · 0 评论 -
【信息整合】Linux内核驱动程序初始化顺序的调整
今天在做一个驱动的时候要用到另一个驱动(I2C)提供的API,在内核初始化时碰到了一个依赖问题。我的驱动在I2C初始化之前就运行起来了,而这时I2C提供的API还处于不可用状态。查了很多资料,网上有人说所有使用module_init这个宏的驱动程序的起动顺序都是不确定的(我没有查到权威的资料)。 在init.h 中有如下定义 #define pure_initcall原创 2012-08-01 10:42:41 · 874 阅读 · 1 评论 -
数字脉冲调光(用于手机或平板电脑等设备的背光调节原理)
数字脉冲调光是一种利用脉冲个数的不同来实现背光调节的 调光方法,此种方法占用一个普通的GPIO口,调光时通过向 背光IC的EN端口发送相应个数的脉冲来实现相应阶数的背光调 节,一般有16阶可调,所发脉冲要满足IC相应的要求。 下图为某IC对脉冲的相应要求,EN脚是芯片的使能引脚, 所以EN脚的第一个高脉冲保持时间需要大于20us,以打开该 IC,在LED电流大小设置完成后,EN 引脚需保持高电平。原创 2012-08-16 09:29:33 · 2700 阅读 · 0 评论 -
android/linux源码在线阅读地址汇总
android 源码在线阅读1. https://www.codeaurora.org/git/projects/qrd-gb-dsds-7225/repository/revisions/0c15e6aa7e51b42c5c0977389ffa5372c95ccb29/show linux 源码库在线阅读地址(带函数变量等引用超链接) http://原创 2012-08-07 15:56:08 · 790 阅读 · 0 评论 -
linux的GPIO平台适配模型(结合8810讲解)
GPIO是与硬件体系密切相关的,linux提供一个模型来让驱动统一处理GPIO,即各个板卡都有实现自己的gpio_chip控制模块:request, free, input,output, get,set,irq... 然后把控制模块注册到内核中,这时会改变全局gpio数组:gpio_desc[]. 当用户请求gpio时,就会到这个数组中找到,原创 2012-08-02 09:06:43 · 1262 阅读 · 0 评论 -
SVN常用命令(检出、更新、删除、上传提交等)
原文地址: http://blog.csdn.net/sunboy_2050/article/details/6187464 SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录转载 2012-08-29 15:23:37 · 8094 阅读 · 1 评论 -
更新ubuntu的PAE内核失败(更新源下载失败)
如果你通过命令:sudo apt-get install linux-generic-pae linux-headers-generic-pae下载更新 激活了PAE功能的内核时,出现下载不了的错误,那很有可能,你的 源不完整。以163的源为例,你很有可能落下了如下源地址: deb http://mirrors.163.com/ubuntu/natty-updates原创 2012-09-03 14:26:37 · 1383 阅读 · 0 评论 -
adduser添加(创建)用户和终端方向键tab键不能用的解决(在ubuntu11上验证)
问题描述:用adduser命令新增了用户之后,发现在该新建用户下的命令终端,使用方向键无法调出历史命令,同时tab键也无法补全输入命令。 问题解决:在/etc/passwd中发现,该新建用户使用的shell为/bin/sh,而能正常使用的用户shell为/bin/bash,通过ls -l /bin/sh查看/bin/sh得知,在ubuntu系统中,/bin/sh默认链接为dash。因转载 2012-09-28 13:01:36 · 1117 阅读 · 0 评论 -
触摸屏i2c设备和驱动的创建流程及方法
添加i2c设备的流程:1. 初始化 i2c_board_info 结构信息 和 i2c_driver 结构 //设备驱动结构体 static struct i2c_driver goodix_ts_driver = { .probe = goodix_ts_probe, .remove =原创 2012-08-01 10:33:45 · 3805 阅读 · 2 评论 -
linux 内核驱动相关的函数记录
kernel/drivers/video/fbmem.c fb_get_options()原创 2012-07-31 17:22:53 · 637 阅读 · 0 评论 -
触摸屏原理及调试过程记录
./kernel/arch/arm/mach-sc8800g/gpio.c:__must_check int sprd_alloc_gpio_irq(unsigned gpio)./kernel/arch/arm/mach-sc8800g/gpio.c:EXPORT_SYMBOL(sprd_alloc_gpio_irq);原创 2012-07-30 18:29:57 · 1643 阅读 · 0 评论 -
Linux设备驱动之I2C架构分析
Linux设备驱动之I2C架构分析------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:转载 2012-07-24 18:00:00 · 823 阅读 · 0 评论 -
__iomem 的定义及其作用
源码位置: include/linux/compiler.h#ifdef __CHECKER__# define __user __attribute__((noderef, address_space(1)))# define __kernel __attribute__((address_space(0)))# define __safe __attribu原创 2012-07-25 09:48:39 · 7291 阅读 · 0 评论 -
I2C的基本原理和linux中I2C架构的实现
1. I2C 协议 1.1 I2C总线工作原理 I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定)1.2 I2C总线的几种信号状态 1. 空闲状态:SDA和SCL都为高电平。 2. 开始条件(S):SCL原创 2012-07-25 10:27:10 · 2675 阅读 · 0 评论 -
linux的程序错误码规范与定义
在linux当中错误码被定义在:/usr/include/asm-generic/errno-base.h内容如下: #ifndef _ASM_GENERIC_ERRNO_BASE_H#define _ASM_GENERIC_ERRNO_BASE_H#define EPERM 1 /* Operation not permitted */#defin原创 2012-08-10 14:57:33 · 1767 阅读 · 0 评论 -
VIM的一个色彩设置等配置方案
set nocompatibleset encoding=utf-8set titleset numbercolorscheme evening"colorscheme elflord"set mouse=aset hlsearchset incsearchset lbrset backspace=indent,eol,startset hist原创 2012-06-15 11:28:41 · 947 阅读 · 0 评论 -
v4l2 API手册(规范),官方英文原版规范的,总结翻译版(原创,加入了自己的理解,未完待续)
官方文档地址:http://v4l2spec.bytesex.org/ $Chapter 1. Common API ElementsV4L2设备编程包含如下步骤: 1.打开设备 2.改变设备属性,选择一个video和audio输入、video标准、图片亮度等等 3.确定一个数据格式 4.确定原创 2012-08-09 19:35:15 · 6007 阅读 · 2 评论 -
I2C总线协议相关的函数详解
源码位置:drivers/i2c/busses/i2c-nomadik.c 通过 掩码“mask”设置寄存器某个几个位的值为1。 掩码中1对应的位置置为1。static inline void i2c_set_bit(void __iomem *reg, u32 mask){ writel(readl(reg) | mask, reg);} 通过 掩码“m原创 2012-07-25 09:39:01 · 3193 阅读 · 0 评论 -
各种手机或平板的外围器件datasheet的下载地址和相关介绍
OV5640 数据手册(主手册)http://www.jmtsz.com/upLoad/down/month_1203/201203071210418594.pdf SGM3727(串联背光升压IC)datasheet可参考 描述:DC/DC转换,可编程电流驱动LEDs;40V的电压可以驱动多达10个LEDs串;WLED亮度调整,是很容易通过单线接口来调整的,总原创 2012-07-25 14:04:46 · 1454 阅读 · 0 评论 -
[完结]Linux内核中的V4L2核心框架分析(V4L2 framework,video for linux 2,linux视频子系统)
标题: V4L2核心框架分析 驱动的结构------------------------------------------------------1)一个为设备实例定义的,并且包含设备状态信息的结构;2)一种初始化和命令子设备(sub-devices)的方式;3)创建V4L2设备节点(/dev/videoX, /dev/vbiX, /dev/radioX and原创 2012-08-10 20:44:45 · 18994 阅读 · 3 评论 -
linux系统中的“ __stringify() ”宏定义 详解
include/linux/stringify.h : #ifndef __LINUX_STRINGIFY_H#define __LINUX_STRINGIFY_H/* Indirect stringification. Doing two levels allows the parameter to be a * macro itself. For example,原创 2012-09-13 14:25:35 · 6742 阅读 · 0 评论 -
ubuntu 中的 grub2 功能和操作方法详解【适用于所有的GRUB】
各ubuntu版本对应的grub版本号:GRUB 2 Ubuntu since version 9.10 (Karmic Koala) //grub2 从9.10的ubuntu版本开始使用。Grub version 1.99 Ubuntu 11.04 (Natty Narwhal) 改进 Improvements原创 2012-10-11 18:02:42 · 5633 阅读 · 0 评论 -
linux 顶层Makefile执行的流程
原文地址:http://blog.csdn.net/melong100/article/details/6365299这篇文章还可以,就是写的稍微乱了点。 1、make menuconfigVERSION = 2PATCHLEVEL = 6SUBLEVEL = 26EXTRAVERSION =NAME = Rotary Wombat# *DOCUMENTATIO转载 2012-09-24 10:09:39 · 1753 阅读 · 0 评论 -
使用fsck命令修复linux文件系统错误【避开引起系统崩溃,启动不了的"-a"选项】
附注: fsck.ext3扫描文件系统时一定要在单用户模式、修复模式或把设备umount后进行。如果扫描运行中的系统,会造成系统文件损坏。选择在单用户模式下运行# runlevel ---查看运行级别# runlevelN 2#init 1 --单用户模式(1 S),在转换成单用户模式时可能会需要输入root密码。以保证只有你一个人在使用系统。# init 1# f转载 2012-10-12 14:17:30 · 6555 阅读 · 0 评论 -
oracle监控数据库性能的SQL汇总
1. 监控事例的等待 select event,sum(decode(wait_Time,0,0,1)) "Prev", sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot" from v$session_Wait group by event order by 4; 2. 回滚段的争用情况 select nam转载 2012-11-06 16:45:06 · 811 阅读 · 0 评论 -
android没有插SD卡/TF卡(TF卡其实就是microSD卡)时的图库(拍照的照片)里图片的保存路径(位置)
android没有插SD卡时的图库(拍照的照片)里图片的保存路径(位置): /data/internal_memory/DCIM/Camera并且,拍出来的照片默认是jpg格式的。这些是与驱动有关的。 想知道这路径怎么知道的吗?方法是通过ADB 调试工具,通过命令: adb shell tree / > tree_f原创 2012-08-06 15:28:50 · 3355 阅读 · 0 评论 -
arm架构下的原子操作(atomic)函数源码分析
关于下面源码中用到的ldrex和strexeq指令请参考:arm上ldrex和strexeq指令用来尝试获取独占内存权限和设置在独占权限时回写 (http://blog.csdn.net/duanlove/article/details/8048050 ) /* * arch/arm/include/asm/atomic.h * * Copyright (C) 199原创 2012-09-18 11:04:25 · 4427 阅读 · 0 评论 -
3个位不断循环(LED灯循环点亮)的程序模拟【给某位同学的演示代码】
之前有个同学,问我 一个普通的数,怎么把其低3位的二进制位中的一个“1”,循环移动。。。这个单片机里做某些功能的时候经常用到 。#include#includeint main(void){ char this_char = 0x31; char buf[16] ={0}; while(gets(buf)) // 这里只是用一个用户输入动作原创 2013-05-20 21:48:51 · 6007 阅读 · 0 评论 -
MT6255 2M sensor插值到5M实现方法
MT6255 2M sensor插值到5M实现方法[DESCRIPTION] 在MT6255 11B W1144SP上面实现2M sensor插值到5M拍照[KEYWORD]MT6255Interpolation[SOLUTION] 请修改以下代码: 1. 在 project make file中將YUVC转载 2013-07-20 09:01:05 · 2238 阅读 · 0 评论 -
【GRUB2】通过操作系统的ISO文件 启动或安装操作系统
首先,要使用ISO文件,当然,硬盘上得有,所以先下载好ISO文件存放在某个分区,比如/HOME目录(最好不要发那个在根分区,如果根分区空间不够的话,同样也别放在/boot分区,因为你给/boot分区的指定的空间也可能是不大的)。 接着我们的GRUB2要建立 menuentry , 但是我们需要操作系统ISO里的两个文件,即 内核和文件系统镜像(kernel, initrd image)。原创 2012-10-12 09:41:34 · 3391 阅读 · 0 评论 -
展讯平台 脚本 ANDROID_3RDPARTY_IMAGE_TAG 和 ANDROID_3RDPARTY_SELECTED_PRODUCT 两个变量的位置(追踪)
customize/customer_cfg/sp8810ga_s2/res/build.sh: export ANDROID_3RDPARTY_IMAGE_TAG=$ANDROID_3RDPARTY_SELECTED_PRODUCTcustomize/shell/build.products.sh: export ANDROID_3RDPARTY_SELECTED_PRODUCT=原创 2012-09-13 15:18:42 · 1241 阅读 · 0 评论 -
do{}while(0)宏定义的好处
转自:http://hi.baidu.com/gmwandodxdbnosq/item/9828455ab4721515abf6d770#define MACRO_NAME(para) do{macro content}while(0)的格式,总结了以下几个原因:1,空的宏定义避免warning:#define foo() do{}while(0)2,存在一个独立的转载 2012-10-10 18:15:01 · 939 阅读 · 0 评论 -
展讯8810平台的ANDROID/linux的GPIO物理地址与虚拟地址的变换
./kernel/arch/arm/mach-sc8810/include/mach/regs_global.h./u-boot/arch/arm/include/asm/arch-sc8810/regs_global.h ./mach-sc8810/board-sp8810/gpio_cfg.c gpio配置规划kernel/arch/arm/mach-sc8810/include原创 2012-09-14 13:40:32 · 2220 阅读 · 1 评论 -
arm上ldrex和strexeq指令用来尝试获取独占内存权限和设置在独占权限时回写
arm上ldrex和strexeq指令用来尝试获取独占内存权限和设置在独占权限时回写 (2010-05-13 16:40)分类: arm开发 【duan注】关于LDREX 和 STREX这两对指令的具体使用方法,及其作用(独占访问存储器),请查看 DUI0204IC_rvct_assembler_guide.pdf 手册的148页。 __raw_spin_lock转载 2012-10-08 13:43:10 · 4129 阅读 · 0 评论 -
kobject驱动模型的架构与相关函数
在linux内核中("kernel/include/linux/cdev.h")kobject结构定义如下:struct kobject { const char *name; struct list_head entry; struct kobject *parent; struct kset *kset;原创 2012-09-18 08:57:12 · 818 阅读 · 0 评论 -
HZ、CONFIG_HZ 和 jiffies 变量在 linux内核源码中定义的位置
HZ 和 CONFIG_HZ 宏定义的位置:实际上在 linux-2.6.x/include/asm/param.h 定义了HZ的值: /* * arch/arm/include/asm/param.h * * Copyright (C) 1995-1999 Russell King * * This program is free softwa原创 2012-10-08 17:24:43 · 8568 阅读 · 1 评论 -
使用call_usermodehelper在Linux内核中直接运行用户空间程序
转载自: by沈东良/良少http://blog.csdn.net/shendl 2011.07.19 原文章地址:http://blog.csdn.net/shendl/article/details/6618220系统初始化时kernel_init在内核态创建和运行应用程序以完成系统初始化 内核刚刚启动时,只有内核态的代码,后来在init过程中,在内核转载 2012-10-09 14:50:06 · 1717 阅读 · 0 评论 -
jiffies 和 jiffies_64 的联系与区别
HZ 和 CONFIG_HZ 宏定义的位置:实际上在 linux-2.6.x/include/asm/param.h 定义了HZ的值: /* * arch/arm/include/asm/param.h * * Copyright (C) 1995-1999 Russell King * * This program is free softwa转载 2012-10-08 17:25:39 · 2169 阅读 · 0 评论 -
configure 配置 extundelete-0.2.0的时候发现提示 没有找到 ext2fs 库的解决办法
问题:在ubuntu上安装之前,./configure 配置 extundelete-0.2.0的时候发现提示 没有找到 ext2fs 库 extundelete-0.2.0$ ./configureConfiguring extundelete 0.2.0configure: error: Can't find ext2fs library 解决办法:原创 2012-10-10 10:58:36 · 18372 阅读 · 2 评论 -
SYSFS以及设备文件或kobject目录创建的关系
sysfs_create_group()定义的文件 kernel/fs/sysfs/group.c: static int internal_create_group(struct kobject *kobj, int update, const struct attribute_group *grp){ struct sysfs_dire原创 2012-09-13 15:20:22 · 1908 阅读 · 0 评论