linux驱动开发通用笔记

控制台下 bcdedit /set testsigning on 重启后计算机进入测试模式(用于烧录不了软件,设备驱动无法安装等情况)

可以通过全编后的out/target/product/xxx/obj/KERNEL_OBJ/所需要查询编译前源文件名的目录(得到源文件名)


在kernel里面,添加新的模块.c时,直接在Makefile中 obj -m += XX.c ,千万千万不要去Kconfig里面添加,\
去Kconfig里面添加,会引起编译kernel时,需要restart config时,十分麻烦


/****git 拉分支、切分支*******/
git branch 查看本地分支

git branch -va 查看所有分支

git fetch origin yudong-hanyang-R870:yudong-hanyang-R870 (从服务器拉分支下来本地)

git checkout yudong-hanyang-R870 切到这个分支
/****git 拉分支、切分支*******/

/*****回退本地还没提交的文件*****/
git status .
git diff 修改的文件
rm 修改的文件
再回退修改git checkout -- xx.file
/*****回退本地还没提交的文件*****/

git checkout -b ap分支 aosp/ap分支 //换分支

git branch -D 旧ap分支  //删除旧分支


从手机/sdcard/mtklog中取出log到windows
c:\users\administrator>adb pull /sdcard/mtklog
start .


adb shell 
dmesg -v time | grep HXTP > E:\tp.txt

1、adb reboot bootloader 进入fastboot 模式 
2、fastboot flashing unlock 解锁unlock状态 
3、fastboot flashing lock 锁定状态 
4、fastboot erase data 清空data数据 
5、fastboot format data 格式化data分区数据 
6、fastboot getvar devices-state 得到锁的状态 
7、fastboot erase boot 擦除boot分区 
8、fastboot flash boot **.img 烧些img 
9、fastboot reboot 重启


push文件到手机
adb remount
adb push xxxx.ko /data
adb shell
chmod 644 /data/xxxx.ko
adb reboot
输入命令adb remount ,意思是将设备改为可读可写;
显示remount succeeded就代表命令执行成功;
c:\users\administrator>adb push C:\Users\pangjianwen\v0b.bin /data
msm8953_64:/sys/bus/i2c/devices/3-0038 # echo /data/v0b.bin >  fts_upgrade_app

当机器死机,不能抓串口log, 
cat /proc/kmsg或者dmesg也抓不出log时,mtk平台的这个路径/data/logcat_log_mtp下面       
ls 
capture.pcap0_2018-05-13_15-10-51 logcat_events_2018-05-13_15-10-51.log
kernel_2018-05-13_15-10-51.log    
logcat_main_2018-05-13_15-10-51.log


设备管理器下面没有android phone的处理办法
点击计算机管理->操作->添加过时硬件->Android Device->更新驱动程序软件->浏览计算机上的驱动程序文件->添加对应驱动程序文件的路径


打开C:\windows\inf\setupapi.dev.log 

这个文件包含了有关即插即用设备和驱动程序安装的信息,当然它也记录你Arduino驱动安装失败的原因

手机距离传感器原理

  红外LED灯发射红外线,被近距离物体反射后,红外探测器通过接收到红外线的强度,
测定距离,一般有效距离在10cm内。距离传感器同时拥有发射和接受装置,一般体积较大。

  用途:检测手机是否贴在耳朵上正在打电话,以便自动熄灭屏幕达到省电的目的。
也可用于皮套、口袋模式下自动实现解锁与锁屏动作。

手机距离感应器怎么关?    
    1、进入拨号页面
    2、点击手机下方的第一个菜单键,出现菜单,点击“设置”。
    3、出现设置菜单后,点击“通话设置”。
    4、出现通话设置菜单,点击“来电时状态设置”。
    5、来电时状态设置中,第三个,关闭距离感应器。

    
光线感应器一般位于手机屏幕右上方,副摄像头左边,它能根据手机目前所处的光线亮度,
自动调节手机屏幕亮度,来给人最佳视觉效果的功能。
例如在黑暗的环境下,手机屏幕背光灯就会自动变暗,否则很刺眼。   

二、功能 它的功能是用来感应光线强弱的,然后反馈到手机,自动为你调节屏幕亮度,用以省电
    

/***********A33的学习笔记----------start ***************/


在kernel里面,添加新的模块.c时,直接在Makefile中 obj -m += XX.c ,千万千万不要去Kconfig里面添加,\
去Kconfig里面添加,会引起编译kernel时,需要restart config时,十分麻烦


/* A33/m86下 改产品ID等配置----start */

Z:\R847\android\device\softwinner\astar-m86\astar_m86.mk and \
Z:\R847\android\build\tools\buildinfo.sh改产品ID等配置

/* A33/m86下 改产品ID等配置----end */


/* A33/m86下 修改系统运行内存----start */

Z:\R847\android\device\softwinner\polaris-common\BoardConfigCommon.mk(以字节为单位2147483648/1024/1024=2048(字节)) and \
Z:\R847\lichee\tools\pack\chips\sun8iw5p1\configs\m86\sys_partition.fex (以扇区为单位,一个扇区512字节 4194304/1024/1024=4个扇区 4*512(字节)=2048(字节))\
在这两个文件中的system标签下设置系统运行内存的大小

/* A33/m86下 修改系统运行内存----end */

/* A33/m86下 u-boot ,kernel,android 的编译与清理命令----start */

available boards: A33/m86
/work/lichee/brandy/u-boot-2011.9$ make distclean && build.sh -p sun8iw5p1 (uboot的清理并编译)

/work/lichee/linux-3.4 $ make clean (kernel清理 防止.o,.ko没有在最新的修改上编译)

/work/lichee$ ./build.sh (kernel 编译)

/work/android $ make installclean && make -j8;pack -d (android 清理并编译打包 清理是为了修改全编前,\
先清掉旧out 目录下的文件,以及旧的.apk .so)

/* A33/m86下 u-boot ,kernel,android 的编译与清理命令----end */

/* A33/m86下 sysconfig.fex 的gpio选项的定义---------start */

; port configuration:
 ; port_name = port:GPIO<mux><pull up/down><driver level><default value>
 ; mux: GPIO function configuration, 0-input, 1-output, 2+: special funciton for modules
 ; pull up/down: 1-pull up, 2-pull down
 ; driver level: 0,1,2,3. 2 is recommended
 ; default value: default output value when this IO is configured as an output IO

/* A33/m86下 sysconfig.fex 的gpio选项的定义---------end */

/* A33/m86下 LCD调试需配置的相关路径 ---------end */
LCD 
kernel
\\192.168.1.10\pangjw\lichee\tools\pack\chips\sun8iw5p1\configs\m86\sys_config.fex\(gpio,panel_para)
\\Z:\R847\lichee\tools\pack\chips\sun8iw5p1\configs\m86\bootlogo.bmp

\\192.168.1.10\pangjw\lichee\linux-3.4\drivers\video\sunxi\lcd\panels\m86.c(LCD_init)

\\192.168.1.10\pangjw\lichee\linux-3.4\drivers\video\sunxi\lcd\panels\panel.c

\\192.168.1.10\pangjw\lichee\linux-3.4\drivers\video\sunxi\lcd\Makefile

u-boot-2011
Z:\lichee\brandy\u-boot-2011.09\drivers\video_sunxi\sunxi_v2\de_bsp\lcd\panels\panel.c

Z:\lichee\brandy\u-boot-2011.09\drivers\video_sunxi\sunxi_v2\obj_video

Z:\lichee\brandy\u-boot-2011.09\drivers\video_sunxi\sunxi_v2\de_bsp\lcd\panels\R847.c

Z:\R847\android\device\softwinner\astar-m86\init.sun8i.rc //在modules下添加.ko,使开机自动加载LCD.ko
Z:\R847\android\device\softwinner\astar-m86\initlogo.rle //开机动画,LCD调试时可以不管

/* A33/m86下 LCD调试需配置的相关路径 ---------end */

/* A33/m86下 如果添加adb devices drive后,还连不上adb ---------start */

android adb 开关
Z:\R847\android\device\softwinner\astar-m86\astar-m86.mk
1
    PRODUCT_PROPERTY_OVERRIDES += \
    persist.sys.usb.config=mass_storage,adb \
2
    #for gms
PRODUCT_PROPERTY_OVERRIDES += \
    persist.service.adb.enable=1 \
3    串口中敲入
        settings put  global adb_enabled  1 或下面这个指令
        setprop sys.usb.config mtp,adb

/* A33/m86下 如果添加adb devices drive后,还连不上adb ---------end */
    

    
/* A33/m86下 更新上层的apk ---------start */

下载好压软件,解压应用给的APK,得到包名和.so
Z:\R847\android\device\softwinner\polaris-common\prebuild\preinstallapk (apk的存放路径)
C:\Users\Administrator\Desktop 2\2019-04-19\daodan\lib\armeabi-v7a\1.so compareof Z:\R847\android\device\softwinner\polaris-common\prebuild\apklib\1.so
Z:\R847\android\device\softwinner\polaris-common\prebuild\tools\mypreinstall.sh (通过比对第三方APK包名得对应的apk名字)
先是把新的所有系统自带apk以及第三方apk,覆盖到prebuild\preinstallapk\下、如果是系统自带apk更新,则需把系统自带apk的so在该\prebuild\apklib\目录里覆盖,
把第三方apk对应得包名和.so添加到\tools\mypreinstall.sh脚本里

Z:\R847\android\device\softwinner\polaris-common\prebuild\apk\android.mk系统自带apk的.so需要在这里面有添加
Z:\R847\android\device\softwinner\polaris-common\prebuild\preinstallapk\android.mk系统自带和第三方apk都的有添加
Z:\R847\android\device\softwinner\polaris-common\polaris-common.mk 系统自带和第三方apk都的有添加(第三方的要带.apk后缀,系统的APK不需带后缀)
Z:\R847\android\device\softwinner\polaris-common\prebuild\apklib\android.mk系统自带apk的.so需要在这里面有添加

apk编了后,还要在Z:\R847\android\device\softwinner\polaris-common\prebuild\apklib下mm -B编译对应得so库,croot到android目录下,再make snod更新system.img(因为重新编了\prebuild\apklib\.so, .so编译后生成新的system.img),\
再get_uboot && make -j8 otapackage打包得到给客户的use版本

mm: 编译当前目录下的模块,它和mmm一样,不编译依赖模块;
make snod (次命令可以打包out/target/product/xxxx/system的内容并生成新的system.img文件)

find -name "*lib*"

进入cmd在此目录下输入aapt dump badging XX.apk查看包名
D:\sdk\sdk\build-tools\android-4.4W>aapt dump badging XX.apk

Z:\R847\android\out\target\product\astar-m86\system\preinstall apk安装后在此目录下会存在

/* A33/m86下 更新上层的apk ---------end */


/***********A33的学习笔记----------end ***************/


mtk 

mtk android driver知识大全
https://www.cnblogs.com/biglucky/p/4413797.html


屏幕截图快捷方式 打开QQ ctrl + alt + A

MTK Android Driver :key https://www.cnblogs.com/cyqx/p/4870790.html


关于mtk GPIO口的定制 https://blog.csdn.net/mcgrady_tracy/article/details/40788873

MTK6573代码目录结构 https://www.cnblogs.com/lhwcoding/p/5102688.html


alps\vendor\mediatek\proprietary\bootable\bootloader\lk\platform\mt6739\mt_leds.c呼吸灯
alps\vendor\mediatek\proprietary\bootable\bootloader\lk\platform\mt6739\mtk_key.c按键

LCD 
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/mt65xx_lcm_list.c
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/CPT_CLAA101FP01_DSI_VDO/CPT_CLAA101FP01_DSI_VDO.c

kernel-4.4/drivers/misc/mediatek/lcm/mt65xx_lcm_list.c
kernel-4.4/drivers/misc/mediatek/lcm/mt65xx_lcm_list.h

开机的时候第一个logo(linux启动) 和第二个logo(android启动那几个字)
Android:system\core\init 中的init.c 控制第二个logo  
kernel:drivers\video\console fbcon.c 里面有两个控制光标的函数

KEY
alps\vendor\mediatek\proprietary\bootable\bootloader\preloader\platform\mt6739\src\drivers\keypad.c


MTK LCM驱动移植
https://blog.csdn.net/u010245383/article/details/50981877

详解MTK的编译过程
http://blog.sina.com.cn/s/blog_6b2328a20100nui0.html

boot用的哪个lcm和boot_logo.bmp
Y:\alps\vendor\mediatek\proprietary\bootable\bootloader\lk\project\k31v1_bsp_512.mk

MTK Android Driver:led  https://blog.csdn.net/cbk861110/article/details/21287303

MTK 驱动(63)---MTK TP驱动移植  https://blog.csdn.net/zhangbijun1230/article/details/80781868

MTKLOGGER_SUPPORT

lichee/linux-3.4/sound/soc/sunxi/audiocodec/sun8iw5_sndcodec.c

/sys/class/timed_output/vibrator # echo 8000 > enable

/sys/class/timed_output/vibrator # echo 0> enable

get_camera_name
/sys/bus/platform/drivers/image_sensor/$cat get_camera_name
/sys/bus/platform/drivers/mtkfb/$cat get_lcm_name

LCM休眠唤醒闪白屏问题调试记录
https://blog.csdn.net/eliot_shao/article/details/57075101

MTK 驱动(59)---音频基础知识
https://blog.csdn.net/zhangbijun1230/article/details/80780670

Android手机显示的4G信号强度的格子数
https://blog.csdn.net/pan0755/article/details/78437249

MTK6735(Android6.0)-按键灯的实现
https://blog.csdn.net/xiaopangzi313/article/details/52335959

Android 8.0 基于MTK平台 客制化/增加一个物理按键
https://www.jianshu.com/p/d4988d632e82


MTK Android Camera运行流程
https://www.cnblogs.com/cyqx/p/4871033.html

常见camera问题的处理
https://blog.csdn.net/qq_33575901/article/details/80906969

MTK camera bring up
https://blog.csdn.net/liaokesen168/article/details/78908876

MTK camera AF bring up
https://blog.csdn.net/liaokesen168/article/details/78909099

MTK camera flashlight bring up
https://blog.csdn.net/liaokesen168/article/details/78909144

psensor-light sensor driver添加
http://blog.chinaunix.net/uid-29562546-id-4192221.html

MTK android audio
https://blog.csdn.net/zhufuronglovewenzhen/article/details/47136279

MTK Android Driver :Audio音频参数
https://www.cnblogs.com/cyqx/p/4870885.html

Android ALSA音频系统架构分析
https://blog.csdn.net/shell812/article/details/73467010

修改充电电流: kernel-4.4/arch/arm/boot/dts/mt6739.dtsi
                        
                -               ac_charger_current = <700000>;
                +               ac_charger_current = <500000>;

                -               non_std_ac_charger_current = <700000>;
                +               non_std_ac_charger_current = <500000>;


userdebug版本或者user版本设置默认开启mtklog
device/mediatek/common/mtklog/mtklog-config-bsp-user.prop文件中对应字段值:
com.mediatek.log.mobile.enabled 设置成true

MTK平台编译userdebug版本开启串口log方法
Z:\kaios_31_temp\vendor\mediatek\proprietary\bootable\bootloader\lk\app\mt_boot\mt_boot.c
所有cmdline_append("printk.disable_uart=1");    //printk.disable_uart=0即可

开启MTK logger的命令
adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name start --ei cmd_target 1
关闭MTK logger的命令
adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name stop --ei cmd_target 7

Android Low Memory Killer
https://www.cnblogs.com/angeldevil/archive/2013/05/21/3090872.html

make -j36 lk 2>&1 | tee lk.log
make -j36 bootimage 2>&1 | tee bootimage.log

Android系统源码学习-SIM卡
https://blog.csdn.net/YinYueRenZhangWenDa/article/details/50764494

MTK安卓sim卡相关源码分析
https://blog.csdn.net/qq_26990833/article/details/50039589
  /** SIM card state: Locked: requires the user's SIM PIN to unlock */
    public static final int SIM_STATE_PIN_REQUIRED = 2

MTK_MULTI_SIM_SUPPORT = dsds 双卡 ss单卡

临时解决30w不能拍照问题
b/vendor/mediatek/proprietary/hardware/mtkcam/legacy/platform/mt6739/core/camshot/SingleShot/SingleShot.cpp
-        property_get( "debug.sshot.sharememory", strValue, "1");
+        property_get( "debug.sshot.sharememory", strValue, "0");

先在windows,环境变量里path下添加 D:\sdk\build-tools\android-4.4;
进入cmd在此目录下输入aapt dump badging XX.apk查看包名

D:\sdk\build-tools\android-4.4>aapt dump badging XX.apk

dts入门
https://blog.csdn.net/u014717231/article/details/53139968

Android手机指纹驱动工作原理
https://blog.csdn.net/zoosenpin/article/details/73275554


git log vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/gc9306_dbi_3wire_3102/                  //查看提交记录           
git checkout ce250ebe681a428b1f754c7ff058809aceac6c1c(主管review id) vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/gc9306_dbi_3wire_3102/       //把这个提交回退

./3102A_512x256_240x320_nand_YF_M2431_A2_EU.sh zipimage

NTC关闭
MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION = yes

upmu_set_isink_ch0_en(0x1);// Turn on ISINK Channel 0

Q:\kaios_72_normal\kernel-3.4\drivers\misc\mediatek\leds\mt6572\led.c
          #if defined (CONFIG_FISE_PROJECT_U7210) //pangjw 20190702

#if defined  VERSION_01
    OutputDebugString(_T("已定义--版本01\n"));
#elif defined VERSION_02
    OutputDebugString(_T("已定义--版本02\n"));
#elif (!defined VERSION_03) || (!defined VERSION_04)
    OutputDebugString(_T("未定义--版本03和版本04\n"));
#elif !defined VERSION_05
    OutputDebugString(_T("未定义--版本05\n"));
#endif

GPIO_PIN led_en_pin=GPIO128;
mt_set_gpio_mode(led_en_pin, GPIO_MODE_00);
mt_set_gpio_dir(led_en_pin, GPIO_DIR_OUT);
mt_set_gpio_out(led_en_pin,GPIO_OUT_ZERO);

led充电指示灯调试
https://blog.csdn.net/u012728256/article/details/70231838

通过iadb shell进入cd /sys/class/leds/red
brightness
delay_off
delay_on
device
max_brightness
notify_led 
power
subsystem
trigger
uevent
对以下节点进行操作控制led灯闪烁
echo 1 > notify_led 这时就会闪烁led
echo 0 > notify_led 停止闪烁
控制闪烁延迟亮灭时间
delay_off
delay_on

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zeropoint127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值