自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杨涂涂的博客

做最好的自己!!

  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux git工具命令积累,持续更新ing......

Linux git工具命令积累【branch命令】--set-upstream-to=:设置本地分支追踪远程分支-D:删除一个本地分支【branch命令】–set-upstream-to=:设置本地分支追踪远程分支例如:git branch --set-upstream-to=origin/master master-D:删除一个本地分支例如:git branch -D master...

2020-08-25 12:04:08 233

原创 Linux shell命令积累,持续更新ing......

Linux shell命令积累【tar命令】--strip-components N:去除N级目录结构-C dir:解压到指定目录dir【tar命令】–strip-components N:去除N级目录结构例如:如果 xxx.tar.bz2 的目录结构为 dir1/dir2/dir3/test.txt使用 tar -xjvf xxx.tar.bz2 --strip-components 1结果 dir2/dir3/test.txt使用 tar -xjvf xxx.tar.bz2 --strip-

2020-08-25 11:47:20 260

原创 MTK平台 在lk阶段,读取IMEI号

MTK的写号工具“SN_WITERtool”,在写IMEI和SN的时候,会往“proinfo”分区里面也写一份IMEI和SN,可以通过读取这个分区,获取SN和IMEI。前面64个字节为SN号,紧接着4*10个字节为IMEI。

2022-08-02 17:00:31 2293 1

原创 Android 系统序列号从哪里来,以及客制化序列号

Android系统的SN号,实际是从“cmdline”里面的“androidboot.serialno”获取到的,那么在给系统传递“cmdline”之前,就需要获取到SN号。以MTK的一个Android 5.1系统为例,MTK的SN号,通过写号工具,和IMEI等参数,一起写入“NV(Non-Volatile)”中,然后开机再读出来用。...

2022-07-24 14:50:24 3562 1

原创 MTK平台 BootLoader lk部分串口驱动简析,以及客制化和外设通讯串口

只分析主要代码,省略了不重要的代码:bootable/bootloader/lk/platform/mtxxxx/uart.c

2022-07-02 18:33:54 1005

原创 MT8665 Android 5.1 I2C驱动,非DMA方式,无法读写超过8个字节的问题的修改

MTK驱动,在非DMA方式下,使用FIFO作为数据缓冲,但是,只使用了1次!这个FIFO刚好8字节,只使用1次就是,写满了之后发,或者收满了之后读,所以读写都被限定在8字节。

2022-06-28 15:23:43 1212

原创 记一次libusb库函数“libusb_bulk_transfer”的调用关系追踪

使用libusb库函数“libusb_bulk_transfer”对外部USB设备进行读取数据的时候,出现了无数据返回的情况,但是使用USB分析仪,看到USB总线是进行了一次完整的IN令牌的transfer,感觉像是中间某一个节点没有将收到的device数据包返回上来,所以对代码进行下追踪,定位下问题大致位置。

2022-05-09 15:32:11 5004

原创 Android 8.1 usb gadget configuration

Android 8.1 usb gadget configurationAndroid的usb gadget配置流程开机过程中usb gadget配置第一种:rc脚本第二种:UsbDeviceManager.java平台:MT6739系统:Android 8.1Android的usb gadget配置流程对于Android系统,和应用,要改变usb gadget是通过配置如下两个prop属性:persist.sys.usb.configsys.usb.config配置“sys.usb.conf

2021-08-23 11:24:10 2663

原创 Linux定时任务:Crontab

Linux定时任务:Crontab在linux系统上,可以使用“crontab”命令创建或删除定时任务,用来周期的执行需要的shell命令或者脚本。命令:crontab [-u username] -e/-l/-r参数:-u:指定用户-e:创建任务-l:列出现有任务-r:删除任务crontab可以创建多条任务,每个任务的构成为“时间 + 命令”,每行一个任务。时间:分、时、日、月、周五种,最小间隔是1分钟,操作符有*:表示所有单位时间/:表示间隔多少单位时间-:表示一个范围的单位

2021-08-09 12:13:48 683

原创 GPIO系列(2)——Linux的GPIO控制“gpiod_”和“gpio_”浅析

Linux的GPIO控制“gpiod_”和“gpio_”浅析Devicetree获取GPIOof函数获取gpiod_函数获取控制GPIO平台:MT6739Kernel:4.4新linux内核对于gpio的控制,从以前的旧的“gpio_”开头的函数,已经变为“gpiod_”开头的函数,本文简单对比分析下。具体文档可以查看:kernel-4.4\Documentation\gpio\consumer.txtkernel-4.4\Documentation\gpio\gpio-legacy.txtD

2021-08-09 10:08:11 7434 2

原创 Android JNI接口的使用示例

Android JNI接口的使用示例yangtutu_jni.cppAndroid.mkYangTuTuJni.javayangtutu_jni.cpp#include <jni.h> //必须要的头文件#include <stdio.h> #include <sys/time.h> #include <android/log.h>//用来获取系统时间,精确到ms,可以测量程序运行时间static long getCurrentTimeMs

2021-07-19 13:13:19 396

原创 Android编译传递宏定义到lk和kernel的c文件

Android编译传递宏定义到lk和kernel的c文件方式1:通过不同project配置文件传递一般在Android的主目录,device目录下,不同board工程目录里,有“BoardConfig.mk”文件,一般会有两个宏:LK_PROJECT := yangtutuKERNEL_DEFCONFIG := yangtutu_defconfig第一个“LK_PROJECT”的值,代表的是,编译lk的时候,使用lk主目录下,project目录中的“yangtutu.mk”配置文件来编译,在这个

2021-07-16 19:28:12 1589 2

原创 linux驱动开发,定时器hrtimer的使用

一次驱动开发,定时器hrtimer的使用#include <linux/hrtimer.h> //需要引用的头文件static struct work_struct mytimer_work;static struct workqueue_struct * mytimer_workqueue = NULL;static struct hrtimer mytimer_timer;static bool mytimer_isStartHrtimer = false;static

2021-07-08 15:04:59 476

原创 MTK平台 配置GNSS的不同模式

MTK平台 配置GNSS的不同模式Android 5.1 相关源码:hardware/mediatek/gps/mnl/mnl_aosp/mnld/src/mnld.chardware/mediatek/gps/mnl/mnl_aosp/inc/mtk_gps_type.hAndroid 8.1 相关源码:vendor/mediatek/proprietary/hardware/connectivity/gps/mtk_mnld/mnld_entity/src/gps_controller.cv

2021-03-12 16:37:06 1764

原创 MTK平台 更换前后camera的MIPI CSI接口

MTK平台 更换前后camera的MIPI CSI接口在vendor目录下面,有一个文件“cfg_setting_imgsensor.cpp”,这个文件里面有一个函数“getMipiSensorPort”,如下:MINT32 getMipiSensorPort(EDevId const eDevId){ switch (eDevId) { case eDevId_ImgSensor0://main return EMipiPort_CSI2

2021-01-26 17:35:49 1391

原创 GPIO系列(1)——MTK平台GPIO的配置,控制及驱动分析

MTK平台GPIO的配置,控制及驱动分析GPIO配置GPIO控制GPIO驱动分析平台:MT8321,MT8665Android:5.1Kernel:3.10GPIO配置MTK平台的GPIO配置,通过“DrvGen”工具和“codegen.dws”文件实现,在“preloader”,“lk”,“kernel”里面,都有对应的“DrvGen”工具和“codegen.dws”文件。具体每个部分编译的时候使用的工具和文件的目录,可以参考每一个部分的编译脚本“drvgen.mk”:DRVGEN_TOOL

2021-01-24 16:31:39 6082

原创 RK3328 Android 7.1 录音左右声道分离的情况下,有时候会出现,右声道的声音和左声道一样的问题

RK3328 Android 7.1 录音左右声道分离的情况下,有时候会出现,右声道的声音和左声道一样的问题问题现象:产品有语音识别功能,需要回音消除,所以立体声录音需要左右声道分离,左声道为主MIC,右声道为回音消除MIC,产品偶现语音无法识别问题,查看出问题时候的PCM数据,左右声道数据一样,并且都是左声道数据,导致回音消除之后,软件以为没有说话!RK3328 Android 7.1平台,默认左右声道是没有分离的,左右声道叠加在一起,需要注释掉宏“#define SPEEX_DENOISE_ENA

2021-01-20 19:05:39 1296

原创 RK3328 Android 7.1 增加custom分区,当system分区比较大的时候,烧录update.img之后不开机

RK3328 Android 7.1 增加custom分区,当system分区比较大的时候,烧录update.img之后不开机问题现象:增加了custom分区,刚开始都正常,随着system打包的东西越来越多,出现了,当增加一个apk进system之后,编译出来的update.img烧录,机器无法开机,log打印为system分区损坏了!将system打包的东西去掉一点,或者将system分区增大,重新编译烧录,又可以开机了!RK烧录用的system是raw格式的ext4文件系统img,打包脚本在源码

2020-12-14 18:04:39 1049

原创 知乎问题:时间是怎么产生的?的个人回答

时间是怎么产生的?搬运知乎上自己对这个问题的回答:https://www.zhihu.com/question/53200130/answer/1358646240我个人的理解是,时间仅仅只是空间中物质变化或运动的一种体现!想象一下,如果现在已知的这个宇宙空间,没有任何物质的存在,是一个虚空的空间,那么这里有时间吗?或者说,这里能体现出时间的存在吗?我觉得是没有时间存在的。现在,往这个虚无的空间中放一个物质,假设放了一个宇宙大爆炸之前的“奇点”,然后假设这个物质“奇点”,是绝对静止的,这种空间中存在

2020-07-24 17:52:05 244

原创 MT6762 Android 8.1 移植acc+gyro二合一sensor之后,acc有数据,gyro没有数据的问题

MT6762 Android 8.1 移植acc+gyro二合一sensor之后,acc有数据,gyro没有数据的问题遇到的问题是因为开了虚拟陀螺仪,修改下面文件:/vendor/mediatek/proprietary/custom/k65v1_64_bsp/hal/sensors/sensor/hwmsen_custom.h注释掉: #define VIRTUAL_GYROSCOPE_ALGORITHMgyro就可以正常使用了!虚拟陀螺仪,VirtGyro的数据是由acc和msensor的数据

2020-07-22 18:18:49 1828 1

原创 MTK Android 8.1 Thermal Management 温控策略实现mtktscpu依次使用cpu_adaptive_0和cpu_adaptive_1

MTK Android 8.1 Thermal Management 温控策略实现mtktscpu依次使用cpu_adaptive_0和cpu_adaptive_1MTK 默认的温控策略,thermal zone “mtktscpu”如果设置两个如下thermal cooler “cpu_adaptive_0”和“cpu_adaptive_1”,则温度升高的时候,只会执行“cpu_adaptive_1”,不会执行“cpu_adaptive_0”,如图:当温度逐渐升高到100度的时候,开始执行coole

2020-06-15 15:16:35 3173 1

原创 MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区

MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区1.打开custom分区2.挂载custom分区3.OTA升级custom分区1.打开custom分区MTK的 Android 8.1 代码实际是支持custom分区的,只是默认是关闭的,修改 ProjectConfig.mk 的 “MTK_CIP_SUPPORT = yes” 可以打开custom分区。打开选项之后,重新编译系统,会看到生成“custom.img”文件,并且out目录下会生成“

2020-06-09 19:52:19 1660

原创 MT6739 Android 8.1 取消强制data分区加密,recovery时候挂载data分区

MT6739 Android 8.1 取消强制data分区加密,recovery时候挂载data分区注意:不取消data分区加密的话,recovery时候无法挂载data分区!取消data分区默认加密,修改如下:vendor/mediatek/proprietary/hardware/fstab/mt6739/fstab.in....../* Can overwrite FDE sett...

2020-04-18 18:26:58 6053

原创 MT6739 Android 8.1 修改HAL层mtkcam,避免camera对不支持的分辨率做裁剪拉伸

MT6739 Android 8.1 修改HAL层mtkcam,避免camera对不支持的分辨率做裁剪拉伸项目使用CVBS摄像头,然后转mipi,会用到NTSC和PAL制式的摄像头,隔行扫描,分辨率比较特殊,720x240,960x240,720x288,960x288,preview的时候,画面会被裁剪拉伸!通过log追代码,实际preview的时候是以1280x720去预览的,就是16:9...

2020-01-13 15:49:06 2544 1

原创 Android 8.1 客制化OTG U盘的挂载路径名称

有时候项目需要特殊的或者固定的U盘挂载路径,可以参考下面的办法修改!先大概看一下U盘挂载的过程:Android 8.1默认U盘是没有挂载到storage目录下面的,并且文件管理里面也看不到U盘,如果需要能在文件管理里面看到U盘,参考我另外一篇博客:[Android 8.1 OTG U盘无法显示在系统文件管理的修改]1.当U盘插入之后,会先new一个Disk类,其构造函数会传入一个参数“***eventPath***”,源文件:system/vold/Disk.cpp

2019-11-06 19:03:07 4049 5

原创 MT6739 Android 8.1 I2C口电平转换低电平无法到0V的解决办法

MT6739 Android 8.1 I2C口电平转换低电平无法到0V的解决办法项目使用MOS管做I2C的电平转换,I2C有内部上拉电阻,如下图:同样的电路在其他平台已经验证过了,到了MT6739这个平台发现,当I2C为master,向salve发送数据时,S1点(蓝色)和D1点(黄色)的低电平如下:可以看到S1点没有完全到0V,导致MOS管没有完全导通,所以D1点也没有降为0V;感觉...

2019-07-30 19:01:41 5687 2

原创 MT6580/MT6739 Android_8.1 消除奇偶帧隔行扫描抖动(实际是丢帧的方式)

MT6580 Android_8.1 消除奇偶帧隔行扫描抖动修改文件: ./vendor/mediatek/proprietary/hardware/mtkcam/legacy/platform/mt6580/hal/sensor/seninf_drv.cppint SeninfDrvImp::setTg1ViewFinderMode( unsigned long spMode){...

2019-07-03 17:55:20 1011

原创 Android 8.1 OTG U盘无法显示在系统文件管理的修改

Android 8.1 OTG U盘无法显示在系统文件管理的修改文件:frameworks\base\services\core\java\com\android\server\StorageManagerService.java函数:private void onVolumeCreatedLocked(VolumeInfo vol)如下修改: private void onVol...

2019-06-05 18:32:38 2729

原创 Sprd 9832A Android6.0 FM模式下的几种Audio路径以及非原生FM的音量调节

Sprd 9832A Android6.0 FM模式下的几种Audio路径以及非原生FM的音量调节一.FM三种模式下的Audio路径模式1:Line_in-Codec Loop(模拟FM)模式2:Line_in-VBC-Codec Loop(模拟FM)模式3: Digital FM-VBC-Codec Loop(数字FM)一.FM三种模式下的Audio路径先放两张图:图一:sprd9832A...

2019-03-28 16:15:02 2530

原创 MTK Android5.1 单独调整主副麦的模拟增益PGA(MT6350_PMIC)

项目使用副麦消噪,但是副麦增益太小,需要单独修改副麦增益,使用工程模式APP和Audio Tuning Tool调整的MIC的Level4的值,都会同时调整主麦和副麦的增益,而且这个调整的增益应该是数字增益!其实,主麦和副麦模拟信号进入PMIC之后,还是分别有一个模拟增益的调整的,不过好像工程模式APP和Audio Tuning Tool的工具没办法调整,需要去源码找!

2018-07-28 18:12:08 2639

原创 展讯 Android 7.0 编译错误相关问题

错误1: Communication error with Jack server (28). Try ‘jack-diagnose’错误2: Multiple same specifications for XXXX.Error: could not load context file from ……/service_contexts.tmp

2017-12-27 11:31:47 4444

原创 Android修改ueventd.rc之后另一种快速打包ramdisk.img的方法

Android修改ueventd.rc之后另一种快速打包ramdisk.img的方法:1. 修改 system\core\rootdir\ueventd.rc;2. 执行 make bootimage 编译命令

2017-10-12 15:20:06 929

原创 分享一道百度笔试程序题

有个朋友去百度面试,带回来一道笔试题,初步分析挺简单的嘛,不就是当收到的礼物超过K个时,接下来每次拿到手一个礼物之后,和手里的K个礼物做对比,淘汰K个里面比当前手里礼物价值低的里面的最低的一个!不过,写的时候还是把自己绕沟里去了,修改了一次才成功。下面是代码:

2017-09-12 16:33:12 518

原创 Android完全禁止第三方软件安装的方法

产品不允许第三方软件安装,所以需要禁止掉APK的安装功能。一开始我把Packageinstaller.apk从系统里面删了,试了一下,放一个APK到SD卡,点击安装,确实安装不了!不过,通过PC端类似于“手机助手”的软件以及ADB命令还是可以安装APK,最后百度了一圈,花了一天时间,终于搞定!!

2017-09-06 15:13:26 76224 8

STM32使用uip协议栈实现TCP数据传输源码

自己移植的,基于STM32F103 + ENC28J60 + uip1.0实现TCP数据传输,并实现了TCP保活功能,可以断线重连。源码中有比较详细的中文注释,帮助大家理解!

2016-05-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除