Android MTK Camera File node(dev/proc/sys)

linux dev目录:

这个目录中包含了所有Linux系统中使用的外部设备。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。Linux的风格一切都是文件
dev
kd_camera_hw是camera注册的字符设备,c代表字符设备 (d 代表directory目录,l代表link链接,b代表block块设备,p代表pipe管道,s代表sock通信),其次对应的权限是owner group other的读写执行权限(chmod),第2个字段代表链接的个数,第3、4个字段代表owner,group(chown、chgrp),第5、6个字段代表设备文件的主次设备号(2.6内核把主设备号由8扩展到12位,次设备号由8位扩展到20位)

 #define MINORBITS    20
 #define MINORMASK    ((1U << MINORBITS) - 1)
 
 #define MAJOR(dev)    ((unsigned int) ((dev) >> MINORBITS))
 #define MINOR(dev)    ((unsigned int) ((dev) & MINORMASK))

 #define MKDEV(ma,mi)    (((ma) << MINORBITS) | (mi))//主次设备号合并转换成dev_t类型

linux proc目录

这个目录是伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。proc只读

cat proc/driver/camera_info

CAM_Info[0]:hi1336_mipi_raw;
Pre: TgGrab_w,h,x_,y= 4208, 3120,  0,  0, delay_frm= 1 
Cap: TgGrab_w,h,x_,y= 4208, 3120,  0,  0, delay_frm= 1  
Vid: TgGrab_w,h,x_,y= 4208, 3120,  0,  0, delay_frm= 1   
HSV: TgGrab_w,h,x_,y=  640,  480,  0,  0, delay_frm= 3  
SLV: TgGrab_w,h,x_,y= 1280,  720,  0,  0, delay_frm= 3
Seninf_Type(0:parallel,1:mipi,2:serial)=1, 
output_format(0:B,1:Gb,2:Gr,3:R)= 1    
Driving_Current(0:2mA,1:4mA,2:6mA,3:8mA)=0, mclk_freq=24, mipi_lane=4 
PDAF_Support(0:No PD,1:PD RAW,2:VC(Full),3:VC(Bin),4:Dual Raw,5:Dual VC= 2
HDR_Support(0:NO HDR,1: iHDR,2:mvHDR,3:zHDR)= 0

alps/kernel-4.19/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor.c

static inline int adopt_CAMERA_HW_GetInfo2(void *pBuf){

    /*Add info to proc: camera_info */
}
cat /proc/cmdline  输出内核启动命令行
cat /proc/devices  输出主设备号+文件名称 (驱动设备分类:字符、块、网络、闲杂)

Character devices:  
1 mem     
4 ttyS   
5 /dev/tty       
5 /dev/console    
5 /dev/ptmx 
...
496 accdet       
497 kd_camera_hw      
498 MT_pmic_adc_cali    

Block devices:  
1 ramdisk   
7 loop    
8 sd      
65 sd    
...

cat /proc/modules  输出可加载模块的信息
cat /proc/meminfo  压测后关注有没有内存泄露
ls /proc/device-tree -al 链接指向 /sys/firmware/devicetree/base

cat /proc/kmsg也是打印内核的信息,第二次打印会情况第一次的信息(adb shell dmesg 打印内核启动过程的所有信息,会被保存)

linux sys目录

这个目录是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。

cat /sys/devices/platform/1a040000.kd_camera_hw1/of_node/cam0_enable_sensor
hi1336_mipi_raw
该目录下cam0_vcamd-supply cam0_vcamio-supply 对应配置dtsi中的内容

cat/sys/devices/platform/pinctrl@1000b000/mt_gpio | grep 99
099: 0100000100
对应格式如下:
PIN:(MODE)(DIR)(DOUT)(DIN)(DRIVER)(SMT)(IES)(PULL_EN)(PULL_SEL)(R1 R0)
如果gpio 99 设置为mclk引脚,进入camera,MODE会变成1(mclk mode), 0(gpio mode)
099: 110000010

ls /sys/bus/i2c/devices/i2c-2/of_node/  可以查看i2c下挂载的设备
camera_main@40
camera_main_af@0c
camera_main_eeprom@50
bus子目录下包含两个子目录,devices和drivers;devices符号链接到/sys/devices/下的设备;而drivers下是注册在这个总线上的驱动

/sys/firmware/devicetree/base/kd_camera_hw1@1a040000  platform中的of_node所指向

/sys/module  系统中所有的模块信息,不论这些模块是以内联(inlined)方式编译到内核映像文件中还是编译为外模块(.ko文件)

结合博客MTK Flashlight闪光灯可以定位出闪光灯的测试节点在

for  /l %%I in (1,1,50) do (
adb shell "echo 0 > /sys/bus/platform/devices/flashlights_led191/led_flash"
adb shell "echo 1 > /sys/bus/platform/devices/flashlights_led191/led_flash"
ping /n 3 127.0.0.1 >nul)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值