android
Free飝Fly
这个作者很懒,什么都没留下…
展开
-
android R ext4 image打包脚本介绍
android编译log里执行是没有报错的,暂时原因未知。由此脚本输出log可以确认实际调用的还是mke2fs这个命令。0x460地址的53EF对应ext4文件系统,0x4A0地址存储的lable name,0x4B0地址存储的挂载点名字。系统:Windwos→windows,Mac→darwin,linux→linux。版本:platform-tools的版本名称(26.0.0,33.0.0...)(6)mkf2fsuserimg.sh 使用介绍。(5)mkuserimg_mke2fs使用举例。原创 2024-07-17 19:18:45 · 927 阅读 · 0 评论 -
长虹55D3P (海思平台)kernel分区解包ramdisk重新打包
重新打包后发现新的ramdisk比原来的小了很多,原因是我们分隔出来的ramdisk尾部包含了很多垃圾数据,并不属于ramdisk的内容,当解压为cpio时,这些数据就已丢弃,重新打包也不会再包含这些数据。注:ramdisk解包打包可以借助原来的boot解包工具,里面包含了ramdisk解包打包的工具和指令。长虹电视部分海思平台并没有boot分区使用的kernel分区,无法使用网上的boot解包工具解包打包。如果无法开机,可能ramdisk后面的数据也是有用的,可以打包时仅替换ramdisk试试。原创 2024-07-01 16:14:41 · 549 阅读 · 0 评论 -
crc32 C语言参考源码
【代码】crc32参考源码。原创 2024-06-17 14:36:47 · 129 阅读 · 0 评论 -
Android单编模块报FAILED: ninja: unknown target ‘MODULES-IN-vendor错误解决
在检查Android.mk或Android.bp无误后,就要怀疑是不是这个目录的上级目录是不是没有包含这个目录的Android.mk,导致编译系统无法加载这个目录的Android.mk从而报unknown target错误。例如:我的模块路径为vendor/xxx/hardware/audio/external/alsa-utils-1.2.8/Android.mk。可以看到只有定义了VENDOR_USING_ALSA_LIB才会加载alsa-utils-1.2.8下的Android.mk。原创 2023-09-19 10:31:37 · 3573 阅读 · 0 评论 -
linux ALSA 驱动架构
各Driver Probe流程和machine相同,都是调用 devm_snd_soc_register_card和devm_snd_soc_register_component两个函数。首先配置dai-link,然后通过devm_snd_soc_register_card 调用snd_soc_register_card注册card并且解析dai-link,调用snd_soc_card_probe调用platform driver的dai_probe函数。sound:对应machine driver。原创 2023-02-10 15:08:47 · 1613 阅读 · 1 评论 -
Audio参数讲解
音频基础参数frame_bits 一帧数据的位数比如 :16bits 2ch frame_bits = 16*2sample_bits 采样位数 比如16bit 24bit 32bitperiod_size 指一个周期包含多少帧periods 每次处理AD/DA转换的间隔周期内核可以缓冲很多周期的数据,每个周期都会生成一个中断和一个副本,用户层可以间隔很长时间再处理一次,一次可以处理多个周期的数据buffer_size= period_size * periodsparams_p原创 2022-12-05 17:54:34 · 2254 阅读 · 0 评论 -
Android P/Q/R 版本快速制作recovey.img
快速制作recovery.img原创 2022-08-18 19:01:52 · 934 阅读 · 0 评论 -
UFS/EMMC压力测试
EMMC,UFS 压力测试原创 2022-06-20 16:42:10 · 2908 阅读 · 0 评论 -
linux kernel spi write_and_read clk不间断
spi_write_and_read,一帧完成写和读,CS保持低,clk不间断原创 2022-04-29 14:34:20 · 1037 阅读 · 3 评论 -
Android编译模块报错的奇葩错误
移植编译alsa-util时遇到一个奇葩错误如下[ 98% 218/222] target C: aplay <= vendor/xxxx/bin/alsa-utils-1.1.9/aplay/aplay.cvendor/xxxx/bin/alsa-utils-1.1.9/aplay/aplay.c:3:1: warning: return type of 'main' is not 'int' [-Wmain-return-type]void main()^vendor/xxxx/bi.原创 2022-02-08 17:51:43 · 2055 阅读 · 0 评论 -
Kernel 中MakeFile 使用if条件编译
有时需要通过if else来选择编译哪个驱动,单纯的obj-$(CONFIG_)就不是很方便,下面提供两种参考案例:案例一:来源:drivers/char/tpm/Makefileifdef CONFIG_ACPI tpm-y += tpm_eventlog.o tpm_acpi.oelseifdef CONFIG_TCG_IBMVTPM tpm-y += tpm_eventlog.o tpm_of.oendifendif案例二:来源:drivers/char/Mak...原创 2021-11-30 17:22:00 · 505 阅读 · 0 评论 -
MTK Android P/Q system/vendor/super快速打包
一、Android 新版本默认开启了动态分区,把system vendor product等分区打包成一个super分区。这对于我们使用替换分区的方法来排查问题不是很方便,直接替换一个super也不知道到底是哪个部分导致的。所以我们需要自己制作super.img来缩小范围。下面讲讲如何快速生成system、vendor、super,以及vbmeta(校验image,不匹配可能会导致不开机)二、快速生成system.img传统做法,使用系统自带打包命令:make snod ,这个命令在老版本an...原创 2021-11-17 17:17:45 · 4357 阅读 · 0 评论 -
MTK AndroidP/Q快速打包ramdisk
一、Android P/Q ramdisk与老版本的差异Android老版本的ramdisk是out下的root/ramdisk打包而来,里面包含了init /sbin init.rc default.prop等文件。是一个完整的ramdiskAndroid新版本ramdisk分为了out 下的ramdisk目录和root目录,init ,init.rc等文件大部分都放到了system下(当然这是基于把system作为跟目录的情况,但是现在默认应该就是这样配置了吧)。Android新版本...原创 2021-11-02 18:59:38 · 1839 阅读 · 0 评论 -
Android P/Q MTK平台无依赖打包boot.img
背景: 有时排查版本问题,需要用到替换img的方式来查找问题出现在哪个img,若出现在bootimg,那到底是kernel、DTB 还是ramdisk。此时就需要单独替换其中一个的方式来打包,之前直接make bootimage-nodeps就可以了,但现在发现执行这个命令无效了。下面就分析下新版本如何找到正确的打包命令。一、找到编译boot的命令之前Android编译log里就会把make boot等img的指令打印出来,现在这个log也没有了,那就只能自己修改Makefile 把...原创 2021-09-30 10:04:21 · 1056 阅读 · 0 评论 -
MTK平台DTBO如何生成的以及DWS生成DTS
一、MTK平台最初就是使用DWS来配置GPIO,非常方便、直观;但随着kernel版本升级使用设备树之后,硬件信息都由DTS来描述,但MTK仍然保留了DWS,下面看看MTK如何将DWS转换为DTSI的。kernel使用的DWS路径:drivers/misc/mediatek/dws/mt6752/mt6752_64.dws虽然vendor\mediatek\proprietary\custom\mt6752_64\kernel\dct\dct\codegen.dws也存在但默认不用这个DWS转换为原创 2021-08-06 17:29:46 · 3735 阅读 · 0 评论 -
MTK单编image
一、通用的单编指令支持的指令定义在build/core/main.mk具体这些image如何生成定义在build/core/Makefile自己新增image编译也就需要修改这两个文件,可以参考boot.img 和 system.img快速编译image,无需依赖定义在build/make/core/config.mk二、开启secure boot 即AVB feature情况若开启安全启动,需要生成带verified 的img,使用上述命令编译出的img烧录..原创 2021-07-27 18:45:46 · 1147 阅读 · 0 评论 -
Kernel编译使用系统环境变量
在编译Android代码时,有时想使用一个宏控制各个模块的功能开关(preloader、lk、kernel、android)。但是Android device下的project config mk配置默认只对android的代码有效。如果想全局有效,需要修改Google的默认设计。我们可以使用环境变量来实现,需要做的就是将环境变量转换为代码可使用的宏定义。kernel默认的宏定义就是Kconfig文件的定义,而且Kconfig文件是可以读取到系统环境变量的。实例:导出环境变量 expo.原创 2021-07-16 16:45:55 · 843 阅读 · 0 评论 -
Android.bp中编译强制静态可执行文件
有时我们想编译一个不依赖动态库的可执行程序,就需要添加强制静态的条件。Android.mk 中添加LOCAL_FORCE_STATIC_EXECUTABLE:=true即可那Android.bp如何编译呢?只需在Android.bp对应模块中添加stl: "libc++_static",即可例如:cc_binary { name: "img2simg", host_supported: true, srcs: ["img2simg.c"], static原创 2021-07-12 20:24:25 · 1529 阅读 · 2 评论 -
Android AB system之system_other.img
开启AB升级方案的项目,因为很多需要升级的镜像都有两份,所以存储空间比较浪费。为缓解此问题,有个针对odex的优化方案。 编译版本会生成两个system镜像:system.img和system_other.img,其中,system_other.img中存储的就是odex文件,这样system.img就能小很多,意味着可以为system分区划分较小的空间。 在首次开机时,假设system.img镜像存储在A s...转载 2021-06-21 14:52:32 · 1429 阅读 · 0 评论 -
通过HEX工具判断so文件是32位还是64位
查看开始的第5个字节,01 代表32位,02代表64位另外linux下可以通过file xxx.so或者通过readelf -h xxx.so 查看文件的ELF Header信息扩展知识:ELF文件格式介绍https://blog.csdn.net/mergerly/article/details/94585901https://blog.csdn.net/u012195899/article/details/52684368https://blog.c...原创 2021-03-04 16:22:34 · 1162 阅读 · 1 评论 -
RK平台调试串口改普通串口,FIQ串口改串口号
一、把调试串口即FIQ串口修改为普通串口Kernel部分:注释掉kernel config里的FIQ_DEBUGGER相关配置#CONFIG_FIQ_DEBUGGER=y#CONFIG_FIQ_DEBUGGER_NO_SLEEP=y#CONFIG_FIQ_DEBUGGER_CONSOLE=y#CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y#CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y或者修改DTSI也可以&原创 2021-02-22 17:12:27 · 4193 阅读 · 2 评论 -
Linux USB Gadget 驱动开启调试信息
CONFIG_DEBUG_FS=yCONFIG_DEBUG_KERNEL=yCONFIG_USB_GADGET_DEBUG=yCONFIG_USB_GADGET_VERBOSE=y原创 2021-02-20 18:12:09 · 588 阅读 · 0 评论 -
XPOSED框架下载地址
虽然现在Xposd没有前几年那么火了,很多都用面具了,但有时还是想拿老手机来折腾下,发现曾经比较好找的资源现在也很难找了(分享的人少了,原来的下载链接被和谐或取消了)。那就把这些信息记录下来吧,方便以后查看XPOSED官网:https://repo.xposed.info/GitHub:https://github.com/rovo89/Xposed不同版本XPOSED卡刷包:http://dl-xda.xposed.info/framework/...原创 2021-02-18 16:02:36 · 27463 阅读 · 2 评论 -
【官方】下载最新adb及安装驱动的方法
Only adb:驱动:https://adbdriver.com/downloads/adb工具:https://adbshell.com/upload/adb.ziphttps://adbshell.com/downloadsGoogle官方platform_tool工具(包含adb)下载下载:https://developer.android.com/studio/releases/platform-toolsADB和Fastboot for Windowshtt.原创 2021-02-09 11:47:08 · 79442 阅读 · 1 评论 -
解决ADB自动连接网络adb设备
如果手动连接过网络adb设备,虽然使用的端口不是默认5555端口,adb还是会自动连接同端口的其他IP设备,有时在一个局域网内办公还是挺烦人的。可以添加环境变量ADB_MDNS 为 0,和ADB_MDNS_AUTO_CONNECT 为0试一试,我都添加了,不确定哪个会生效...原创 2021-02-07 10:24:27 · 2156 阅读 · 10 评论 -
RK Android平台RGA功能介绍和接口封装
RK RGA说明:⽬前实现的api功能涵盖拷⻉、旋转、裁剪、缩放、格式转换和合成,⽬前仅需要关注以下2个API即可,使⽤如下的2个函数就能满⾜上述功能。int RgaBlit(rga_info *src, rga_info *dst, rga_info *src1) ;int rga_set_rect(rga_rect_t *rect,int x, int y, int w, int h, int sw, int sh, int f);librga接口函数librga ...原创 2021-02-03 16:52:08 · 9164 阅读 · 5 评论 -
Linux/Android 实现CDC+MASS STORAGE复合设备
由于产品需要,需将设备枚举为CDC + MASS STORAGE 或 +ETHER 等设备,如果使用configfs的方式,由于没有提供复合设备功能,简单的复合(例如uac + adb)是不行的,因为uac cdc uvc这些都是gs节点,简单复合后虽然能枚举出来,但是会出现叹号,无法正常工作。除非自己写一个复合设备驱动。好在linux已经提供了一些常用的复合设备驱动,例如cdc + mass storage + ether,但是如何使用,并未做详细的说明,会出现加载驱动识别的情况,failed to.原创 2020-12-22 12:15:55 · 1099 阅读 · 4 评论 -
RK平台MJPEG硬编码接口函数实现
JPEG软编码比较耗时,可能满足不了帧率的需求,RK平台自带JPEG硬编码,支持NV12和RGB565格式编码为MJPEG ,下面是封装后的函数实现int hw_jpeg_encode_nv12(long input_phy_addr,long output_phy_addr,uint8* input_vir_addr,uint8* output_vir_addr,int width,int height,int picfmt,int quality,int thumbquality ){ Jp原创 2020-12-10 14:04:40 · 2307 阅读 · 0 评论 -
Android.mk 批量包含所需编译的源文件写法
SRC_FILS := $(wildcard $(LOCAL_PATH)/YUVlib/*.c)LOCAL_SRC_FILES := \ $(SRC_FILS:$(LOCAL_PATH)/%=%)原创 2020-11-16 18:58:17 · 232 阅读 · 0 评论 -
UVC webcam驱动添加分辨率
kernel webcam驱动默认只支持640*360 和 1280 * 720分辨率支持下面讲讲如何添加自己的分辨率,以添加640*960为例static const struct uvc_format_uncompressed uvc_format_yuv = { .bLength = UVC_DT_FORMAT_UNCOMPRESSED_SIZE, .bDescriptorType = USB_DT_CS_INTERFACE, .bDescriptorSubType = UVC_V.原创 2020-11-11 16:12:49 · 2393 阅读 · 0 评论 -
kernel config配置模块编译不生效的可能原因
有时我们想把一个驱动编译为模块形式,在kernel的config配置为m编译是报***配置项 creates inconsistent choice state 编译后发现驱动并没有被编译,检查kernel下的.config并没有该配置项就以CONFIG_USB_G_WEBCAM为例,单独将CONFIG_USB_G_WEBCAM配置为m就报USB_G_WEBCAMcreates inconsistent choice state的警告。出现这个问题的原因是Kconfig中有...原创 2020-11-03 12:16:18 · 3840 阅读 · 0 评论 -
Android initrc中执行shell脚本
由于initrc中支持的命令有限(不能支持system/bin下所有命令),而且不适合写比较复杂的逻辑(如传参、函数块 ),通常把这些功能放在shell脚本里来执行,但是shell脚本又需要放在initrc中来调用执行。因为随着Android版本更新,selinux的限制越来越多,在initrc中执行shell脚本肯能会遇到很多问题,即使设置selinux 为Permissive 也可能会遇到selinux问题。下面提供两个参考示例供参考service test_shell /syste...原创 2020-10-27 10:15:11 · 1929 阅读 · 0 评论 -
Android终端通过adb 配置静态IP和DNS
有时我们需要使用命令行来配置eth0的IP信息,这在linux系统是非常简单的,网上也有很多资料。但是在Android系统,就非常困难,因为Android精简掉了很多linux命令,而且配置的方法也和linux有区别,甚至不同Android版本,不同平台方法也不一样。 那如何解决这个问题呢?还是得借助busybox,busybox集成了很多linux的命令,只需要push这一个命令就可以解决,确实方便不少。下面说说具体方法。1.ifconfig 查看物理网卡名称,通常是et...原创 2020-10-26 12:50:06 · 15754 阅读 · 19 评论 -
展锐camera 调用流程
本文将要为您介绍的是【Camera专题】Sprd-深入浅出Camera驱动框架1(HAL层-Kernel层),具体完成步骤:一、前言 本文主要研究展讯平台Camera驱动和HAL层代码架构,熟悉展讯Camera的控制流程。 平台:Sprd-展讯平台 Hal版本:【HAL3】 知识点如下: 从HAL层到deiver层 1.Camera的打开(open)、初始化(init)和供电(power on)调用流程 2.预览(preview)调用流程 3.拍照(snapshot)调用流程 Camera软件架构 .转载 2020-10-21 13:50:04 · 6323 阅读 · 7 评论 -
RK平台关闭温度控制降频功能
策略切换到user_space:开机后输入echo user_space > /sys/class/thermal/thermal_zone0/policy或者把mode设置成disabled状态:echo disabled > /sys/class/thermal/thermal_zone0/mode解除频率限制:/* 具体有多少个cdev,根据实际情况修改 */echo 0 > /sys/class/thermal/thermal_zone0/cdev0/cur_s原创 2020-08-20 09:58:21 · 1716 阅读 · 0 评论 -
ANDROID 8.1 多个apk同时录音
多app 录音可以用这个,工作量比较小~/3326/frameworks/av/services/audiopolicy/managerdefault$ git diff ./diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cppindex e947c8be0..8c4c8cfff 1007原创 2020-08-11 17:28:07 · 657 阅读 · 0 评论 -
展讯调试总结
1.IO配置u-boot15/board/spreadtrum/xxx/pinmap-xxx.c{REG_PIN_SDA2, ...转载 2020-02-06 15:13:32 · 2543 阅读 · 0 评论 -
RK3399 Android7/8 system vendor分区挂载参数
以往Android系统,所有分区挂载都是修改fstab* 的文件,可能自从Android实现AB system后,ramdisk被打包在system里面后,system的挂载参数就不能在ramdisk中的fstab文件中配置了,而是迁移到DTSI中配置。RK3399 SDK中随没有开启AB system,但system 和vendor的挂载参数也是放在DTSI中,可以搜索项目的DTSI文件中...原创 2020-01-17 11:25:53 · 1721 阅读 · 0 评论 -
Android/Linux 磁盘写入缓存/等待时间 参数修改
Linux系统当进行文件写操作时,并不会将数据立马写入磁盘,而是写写到缓存,等待达到占用内存一定比例或超过一定时间才会批量将这些缓存数据写入磁盘,这样可以减少IO操作,提升性能和磁盘寿命。如果数据还没来得及写入磁盘发生硬件掉电,这些数据就会丢失。应用可以调用sync实时将内容写入磁盘避免丢失。排查丢失问题可以在断电前执行sync命令,看能不能复现,若无法复现,说明就是缓存没有及时写入磁盘导致。...原创 2020-01-09 10:31:48 · 2018 阅读 · 0 评论 -
RK3399 kernel驱动中实现长按按键恢复出厂设置
一般情况下在Android上层恢复出厂设置比较简单,可以直接发广播或调用相应的接口,如写cache/recovery/command这个文件后重启。OTA升级就是写的这个文件。但这样也有弊端,就是系统无法开启到上层或上层死机了就无法处理这个事件。那我们可以在kernel内实现,这样只要可以开机到kernel就可以处理,RK平台在第一次开机时就会恢复出厂设置一次,原理就是misc这个文件里有bo...原创 2019-10-30 11:22:59 · 3494 阅读 · 0 评论