- 博客(168)
- 资源 (40)
- 收藏
- 关注
原创 Android adb shell一次执行多条指令
注意:adb shell中不能带>或|重定向和管道符,这些符号会优先被adb shell解释执行,不会传递到shell内部。以上几种方法一些是不进入到adb shell内部执行的,一些是先进到adb shell内执行的,跟据需要选择。说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功。说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,
2024-08-28 13:56:08 500
原创 Android 启动时判断overlay fs是否挂载
这种文件系统在执行adb remount 后,修改system 、vendor分区内容并不是真正存储在原来的位置,而是单独利用super剩余空间或data分区存了一份新的,原来的文件并没有改变。这就带来一个问题,调试时使用adb push 更新了需要开机下载的固件,但是开机过程中不是一开始就挂载overlay fs的,这就可能导致加载的还是老的固件。所以只需要我们在init的第二个阶段去加载固件就可以保证overlay fs已挂载,加载的是新的固件。二、Init阶段overlay fs挂载前后阶段分析。
2024-08-28 13:25:12 671
原创 Android分区管理工具sgdisk使用
Android的sgdisk是从linux移植而来,使用方法和Ubuntu上的sgdisk基本一样,可以参考Ubuntu的help信息。11代表分区序号,即sda11,中间的0代表起始簇为第一个可用地址,最后的0代表结束簇为最后一个可用地址。通过上面的分区详情也可以看到userdata最后一个簇是14996479,接下来可以使用的簇就是14996480,与上面指令得到的一致。借助Android系统自带的sgdisk可以查看详细的分区信息,类似fdisk命令,sgdisk同样可以创建分区,功能也很强大。
2024-07-29 12:32:00 932
原创 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 1093
原创 gz格式文件16进制分析
上篇说到分割得到的ramdisk会有垃圾数据,对于ramdisk无用的垃圾数据可能有其他用途。我们只需要修改ramdisk,就必须准确知道ramdisk的起始地址和结束地址,修改后只替换原始ramdisk部分,其他与ramdisk无关的部分不改动。因此,我们只需要将原始文件分割为3个部分,ramdisk前,ramdisk,ramdisk后。只替换ramdisk,ramdisk前后不动,将三个部分再次拼接得到新的分区文件。gzip文件尾定义4个字节压缩前文件标准CRC32 ,4个字节压缩前文件长度。
2024-07-02 16:09:34 420
原创 长虹55D3P (海思平台)kernel分区解包ramdisk重新打包
重新打包后发现新的ramdisk比原来的小了很多,原因是我们分隔出来的ramdisk尾部包含了很多垃圾数据,并不属于ramdisk的内容,当解压为cpio时,这些数据就已丢弃,重新打包也不会再包含这些数据。注:ramdisk解包打包可以借助原来的boot解包工具,里面包含了ramdisk解包打包的工具和指令。长虹电视部分海思平台并没有boot分区使用的kernel分区,无法使用网上的boot解包工具解包打包。如果无法开机,可能ramdisk后面的数据也是有用的,可以打包时仅替换ramdisk试试。
2024-07-01 16:14:41 692
原创 长虹智能电视55D3P(机芯:ZLH74GiR2G)海思平台固件解析打包
system之前分区文件的起始地址都比原始文件偏移0x20字节,这是因为header多了两行,也就是记录system第二段的存放地址和大小。查看fastboot文件大小是999424字节对应16进制就是F4000,很可能打包头部信息记录了分区的文件大小,文件地址、烧录地址,这样才能将固件中国取出对应分区文件并写到EMMC对应地址上。打包得到新的固件,对比下头部信息,发现略微差异,这个差异是system的,看起来是新打包的将system分割了(可能是工具判断文件大小自己调整的)
2024-05-31 14:16:24 1755 14
原创 长虹55D3P海思平台固件破解
另外读出的2M fastboot除了有头外,比工具解析出来的fastboot多出部分不是全0,看来raw分区也无法直接dd来合并,通过对比发现后面的信息也不是下一个分区bootargs的,而是recovery的。注意:不建议使用mkuserimg.sh 和mkfs.ext4等工具打包system,因为我们没有selinux的file-contents文件,直接打包会丢失selinux 标签,系统可能无法启动。帖子中也没讲解解包的原理,对于不熟悉海思平台的来说,感觉无从下手。
2024-05-31 09:58:55 1104
原创 随身WIFI 路由器等嵌入式Linux 编程器固件解包打包
随身WIFI固件解包打包,jffs2,squashfs文件系统解包打包,工具和方法,实操训练。破解卡槽限制,破解速度限制
2024-05-29 15:34:42 700
原创 Gerrit 通过指令添加Reviewer和review以及submit
有时批量提交一些patch时没有加reviewer,手动一个个加太麻烦,可以通过指令批量添加reviewer,review,以及submit。和review指令一样,添加-s参数即可,通常review和submit 同时执行。也可以把git rev-list换成两个commit之间。
2023-12-22 14:12:21 1295
原创 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 4712
原创 自己编译静态ffmpeg freetype2 not found问题解决
整理好依赖的ffmpeg仓库地址: https://github.com/pyke369/sffmpeg。报错:ERROR: freetype2 not found using pkg-config。安装后还是报一样的错,实际编译依赖的freetype2已经在build文件夹里下载了。网上查询说是需要安装freetype-devel。后来发现需要修改Cmakefile.txt。添加如截图的外部库后,成功编译。
2023-09-11 11:30:33 1907
原创 基于Android R快速编译recovery-ramdisk.img
Android默认没有单编recovery-ramdisk.img的命令,我们可以自己修改Makefile实现。注意:这个image是开启了Android AB系统时才有用,未开启AB系统,使用的是ramdisk.img。我们一般整编代码后,有时只修改部分代码,为快速验证,或者想预置一些问题到此image都可以使用此方法。生成recovery-ramdisk.img后,再使用打包boot脚本,即可快速验证。修改:build/core/Makefile。
2023-08-22 17:42:48 1016
原创 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 1668 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 2453
原创 PI4IOE5V6534 gpio扩展芯片linux驱动
regmap的方式会有更新i2c寄存器不及时的问题,有时读取不更新,暂采用实时读取的方式/* * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/ * Keerthy <j-keerthy@ti.com> * * This program is free software; you can redistribute it and/or * modify it under the term.
2022-04-29 17:15:29 416
原创 linux kernel spi write_and_read clk不间断
spi_write_and_read,一帧完成写和读,CS保持低,clk不间断
2022-04-29 14:34:20 1943 3
原创 kernel打印函数指针的函数名称,方便找到调用的真实函数
核中函数指针用的很多,在debug 的时候能直接打印出一个函数指针对应的函数就会很方便。打印裸指针(raw pointer)用 %p,%p除了可以用来打印指针外还可以打印其它的信息%pF可打印函数指针的函数名和偏移地址,%pf只打印函数指针的函数名,不打印偏移地址。如 printk("%pf %pFn", driver->ops->open) 但是为了支持这个功能你需要开启CONFIG_KALLSYMS 选项...
2022-03-25 14:42:19 795
原创 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 2121
转载 基于Hypervisor智能驾舱的AUTOSAR解决方案
MENTOR嵌入式管理程序 目前,通常使用两种类型的管理程序(图6): Type 1本机管理程序:一种在硬件上本机运行的管理程序,因为它充当核心中的操作系统。Type 2托管虚拟机监控程序:此类型的虚拟机监控程序必须由另一个操作系统托管,并且仅负责使用主机操作系统可用的资源来虚拟化客户操作系统。 图6:虚拟机管理程序 虚拟化的工作原理是从硬件上运行的应用程序中抽象出物理硬件和设备。虚拟化流程管理和配置该系统的资源,包括处理器、内存、存储和网络资源。这使该系统能够同时承载多个工作负载,从而在整个企业中.
2021-12-03 11:08:55 785
转载 ARM 虚拟化介绍
0.目录 文章目录 0.目录1.概述1.1 Before you begin 2.虚拟化介绍2.1 虚拟化为什么重要2.2 hypervisors的两种类型2.3 全虚拟化和半虚拟化2.4 虚拟机和虚拟CPUs 3.AArch64中的虚拟化4.stage 2 转换4...
2021-12-03 10:36:32 2686
转载 嵌入式HypervisorXvisor与KVM和XEN+ACRN架构的对比分析
目录 目录 目录摘要1.介绍2.虚拟化技术分类2.1 Hypervisor设计1.完全宏内核设计2.部分宏内核设计3.微内核设计 2.2 虚拟化模式1.全虚拟化2.半虚拟化 3. **嵌入式系统的开源Hypervisor**3.1 XEN3.2 KVM3.3...
2021-12-03 10:29:07 2795
转载 Zephyr环境搭建
Zephyr 环境搭建我这里 Zephyr 环境搭建在 Ubuntu 20.04 上,Ubuntu 运行在 virtualbox 虚拟机中。前置条件Ubuntu 20.04 (virtualbox on win10)环境搭建首先输入sudo apt updatesudo apt upgradesudo apt upgrade 第一次更新的时候可能会失败,再输入一次即可。安装依赖包需要使用 apt 来安装依赖包,最好使用国内源。sudo apt install --no-insta
2021-12-02 17:41:57 614
转载 ubuntu通过apt的方式更新cmake到最新版(ppa)
添加签名密钥 wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - 将存储库添加到您的源列表并进行更新 稳定版 sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'...
2021-12-02 17:28:55 1344
原创 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 558
转载 操作系统微内核架构研究
1 简介 微内核是操作系统内核的一种,在工控系统、嵌入式系统、实时系统等领域发挥着重要作用。本文较为全面地研究了微内核技术的各个方面,包括微内核的定义、微内核的体系架构、微内核的发展历史、微内核的特点、微内核的应用场景,以及麒麟软件有限公司所进行的部分研究工作。本文部分内容和图来自网上,由于内容较多,有些没有标注,如果原作者觉得不合适请联系删除。 2 微内核的定义 在计算机科学中,内核是操作系统的核心部分,...
2021-11-26 13:39:15 1676
原创 Ubuntu 16.04安装python3.6及其以上版本
Ubuntu16.04 自带python2.7 和3.5,若需要安装高版本需要添加源网络搜索几个源sudo add-apt-repository ppa:jonathonf/python-3.6sudo apt-get updatesudo apt-get install python3.6这个已不存在会报错如下Cannot add PPA: 'ppa:~jonathonf/ubuntu/python-3.6'.ERROR: '~jonathonf' user or team
2021-11-19 16:38:36 3281 10
原创 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 4568
原创 MTK平台AndroidP/Q快速生成dtb.img和dtbo.img(2秒生成)
背景:MTK升级新的Android版本后,无法快速编译dtbo image,当我们修改DWS和PROJECT DTS后验证问题非常麻烦,必须删除out下KERNEL_OBJ才能生成新的dtbo.img,而且必须整编。所以跟据编译流程,写了下面这个脚本,可以快速生成dtbo和dtb image,可以几秒钟完成使用方法:(1)将脚本放在工程跟目录(2)修改脚本开头的几个变量,改为你的工程配置(3)执行:./build_dtb.sh project_name #project_n...
2021-11-03 18:32:32 3046
原创 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 1886
nodejs V9 android arm64 版本,可执行程序,android系统内解压使用
2022-06-20
system image解包打包工具
2022-05-08
Android arm64 hcitool 源码及可执行文件
2022-03-08
spi tool 测试工具源码和bin档,android arm64 bin文件
2022-03-03
Android alsa util 和 lib 源码,Android.mk已写好,编译通过
2022-02-08
build_dtbo.sh
2021-11-03
boot解包打包工具.rar
2021-07-12
adb1.0.41.rar
2021-02-09
MTK平台支持Android 原生API打开USB摄像头patch
2020-12-31
usb_audio+cdc复合设备驱动.rar
2020-12-24
uvc_gadget_img-1.0.0.rar
2020-10-29
xTIMEcomposer-User-Guide (X3766A)译文.pdf
2020-06-03
90640上位机程序.rar
2020-04-27
自动解压APK lib生成Android.mk
2020-04-27
Android R img2simg mkbootimg mkuserimg-mke2fs mke2fs工具
2024-07-17
hitool STB 4.011用于长虹电视固件打包
2024-06-19
HiTool-DPT-4.0.15 海思烧录工具支持HI3751系列
2024-06-18
e2fsprogs Android端可行性程序
2024-03-22
Android busybox 可执行文件支持arm,arm64,x86,x86-64
2024-01-23
Android boot解包打包工具,支持Android 4到android11,Linux 环境可用
2023-10-16
i2c调试工具支持android、Linux
2023-10-11
alsa static 编译源码,已修改好源码文件和Android.mk
2023-09-19
alsa静态编译版本 arm64架构Android
2023-09-19
Android adb/fastboot驱动
2023-08-24
tinyalsa 工具,静态编译,不依赖库
2023-08-23
memory test tool
2023-08-02
WAV 音频制作软件,正弦、固定数据等
2023-07-13
Android linux arm arm64 aplay 和 tinyplay工具
2023-06-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人