
android系统开发
文章平均质量分 80
Eliot_shao
年轻人有先见之明。。。。。
展开
-
往recovery添加应用程序
背景项目有个心跳功能,在正常模式下5s一个心跳,超过30s未收到心跳系统强制重启。但是进入recovery升级模式后,没有心跳功能,造成升级失败,需要添加心跳的应用程序。添加过程如下。打开串口logRecovery的日志是调试的关键,默认会在cache/recovery下面看到,但是里面是空的,没查到原因。遂把串口log等级跳到7,也可以看到日志。修改启动参数(dts里面,dts编译下载后会放在一个固定位置,uboot和kernel都可以访问):bootargs = "earlyco..原创 2021-07-28 10:21:25 · 818 阅读 · 0 评论 -
DAPM之二:audio paths与dapm kcontrol
在用alsa_amixer controls时,除了我们之前提到的snd_soc_add_controls添加的kcontrols外,还有一些多出来的controls。其实多出来的那些都是属于dapm kcontrol,主要用于切换音频路径。一、AUDIO PATHS OVERVIEW以标准内核2.6.32的wm8900 codec为例。先看AUDIO PATHS OVERVIEW,...转载 2019-10-22 16:39:34 · 536 阅读 · 0 评论 -
Android架构实例分析之编写hello驱动的HAL层代码
Android架构实例分析之编写hello驱动的HAL层代码摘要:HAL层中文名称又叫硬件抽象层,可以理解我Linux驱动的应用层。本文实现了一个简单的hello HAL的代码,衔接hello驱动和hello JNI:http://blog.youkuaiyun.com/eliot_shao/article/details/51860229Android标准架构实例分析之编写最简单的hello驱动HAL层的代码原创 2016-07-08 16:20:50 · 7415 阅读 · 2 评论 -
android 新增分区以及挂载方法
转载地址:http://blog.youkuaiyun.com/tfslovexizi/article/details/73833274 好长时间没更新我的优快云 了,今天抽时间来重新一下,了解一点android新增分区和挂载的东西。我是以高通平台代码为例来写的。闲话不多说,直接上方法:以新增kaicom分区举例:1.在partition.转载 2017-12-06 21:16:56 · 3666 阅读 · 0 评论 -
深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速
原文地址:http://blog.youkuaiyun.com/mr_raptor/article/details/8006721 感谢!Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速度越来越快,但是随着新版本的出现,其启动速度一直都比较慢,当然,作为程序员,我们是可以理解的,智能手机本身就要启动很多服务来支持应用的功能,并且Android系统大部分还是使用的Java语转载 2018-01-22 16:06:34 · 458 阅读 · 0 评论 -
Android FM 外部短天线支持(ez fm)
Android FM 外部播放功能(EZ FM),使用外部短天线搜台,默认FM是不支持外部功放播放功能的,因为硬件上需要FM天线低噪放大器的支持。硬件原理原理图:默认使用耳机当做天线。如果硬件上支持天线低噪放大器,原理图:查找FM的代码,分析如何打开这个功能,因为在MTK平台只需要在projectconfig.mk中打开:MTK_FM_SHORT_ANTENNA_SUPPORT=yes就打开这个功...原创 2018-04-09 09:56:45 · 2865 阅读 · 2 评论 -
APK无法识别gsensor问题剖析
APK无法识别gsensor问题的原因有很多,这里只是提供一条思路,解决现有项目遇到的问题。1、确保驱动层可以工作。2、打印LOGCAT数据,分析sensorservice流程1、移植流程:步骤:移植gsensor驱动,mc3413,大概步骤如下:1、移植kernel驱动文件;2、修改HAL层文件vendor\sprd\open-source\libs\libsensors_sprd\Acc_Mc...原创 2018-04-12 09:34:52 · 1709 阅读 · 1 评论 -
按键布局文件 android kl
按键布局文件(.kl 文件)将 Linux 按键代码和坐标轴代码映射到 Android 按键代码和坐标轴代码,并指定相关的策略标记。设备专属按键布局文件:对具有按键(包括音量、电源和耳机媒体按键等特殊按键)的内部(内置)输入设备而言是必要文件。对其他输入设备而言是可选文件,而对特殊用途的键盘和操纵杆而言则是推荐文件。如果没有可用的设备专属按键布局文件,则系统将改选默认文件。位置按键布局文件由 US...转载 2018-04-13 17:00:09 · 2229 阅读 · 0 评论 -
Android 系统默认参数的修改之系列(一)
一般在新项目开始之初,我们需要针对客户需求进行各种系统默认属性的配置,通常这些属性都是通过build.prop、settings.db 、default.xml、一些功能package下的 config.xml 等来进行初始化配置的。那么,要满足客户的定制需求,对于我们开发者来说,修改SettingsProvider默认值,而第一次开机时,用来填充settings.db的数据都是从framewor...转载 2018-05-08 13:50:48 · 2721 阅读 · 0 评论 -
Android 系统默认参数的修改之系列(二)
21. 修改声音(来电、短信、通知、音乐、通话、蓝牙、FM等)的默认大小修改frameworks/base/media/java/android/media/ AudioManager.java中的public static final int[] DEFAULT_STREAM_VOLUME = new int[] { 5, // STREAM_VOICE_CALL ...转载 2018-05-08 13:51:28 · 1217 阅读 · 0 评论 -
Android图形显示系统
转载请注明出处:http://blog.youkuaiyun.com/a740169405/article/details/70548443简介本文讲解的内容是Android4.1以后的系统机制,将从整体上分析Android图形显示系统的结构,不深入分析每一层内部的代码实现,更多的是使用流程图和结构图来让大家理解Android是如何绘制、合成图形并显示到屏幕上。本文将从三个层次进行讲解,大致如下图: 可以理解...转载 2018-06-29 15:04:18 · 1459 阅读 · 0 评论 -
Dual display on msm8937
转自:https://shiminblog.github.io/dual-dsi-msm8937/简述在 MSM8937 上有支持了 dual dsi 功能,本人在 msm8937-android6.0 上将其调通,以下简记其实现的思路以及关键代码片段。高通支持的双屏有两种方式:其一为将一副图片左右均分,然后通过两个 DSI 硬件接口刷到屏幕上去,似乎在 MSM8952 上就是这种方式;其二为将一...转载 2018-06-29 15:05:16 · 2855 阅读 · 0 评论 -
Android双屏异显另辟蹊径---minui的移植
minui介绍minui是Android自带的一个画图工具,可以绘制一些简单的图形和图像,显示png图片,显示字符串等。在Android设备中譬如,关机充电动画,自动测试程序,recovery模式界面等都是用minui绘制界面,进行人机交互,完成一些必要的功能。其优点是在不启动Android surfaceflinger等主要绘图进程的情况下,实现基于基本Linux显示框架下的显示功能,起...原创 2019-02-13 15:40:31 · 2660 阅读 · 2 评论 -
android 8 去掉selinux
修改:system/core/init/init.cppstatic void selinux_initialize(bool in_kernel_domain) { Timer t; selinux_callback cb; cb.func_log = selinux_klog_callback; selinux_set_callback(SELINUX_...转载 2019-06-03 10:06:32 · 1119 阅读 · 0 评论 -
Android8 自启daemon 实例(包含selinux权限)
本文纯Android技术操作,不涉及软件功能设计。创建开机自启daemon,在init进程启动的时候启动随着class main启动时候自启。android/sprd/sl8541e/device/sprd/sharkle/common/rootdir/root/init.common.rcservice spi0daemon /system/bin/spitest cl...原创 2019-06-03 10:28:49 · 1943 阅读 · 0 评论 -
Android架构实例分析之注册hello HAL的JNI方法表
Android架构实例分析之注册hello HAL的JNI方法表摘要:Android JNI是一种技术,提供Java调用Android native代码或者native调用Java代码的一种机制,并不提供策略。本文实现了基于前面两篇文章:Android标准架构实例分析之编写最简单的hello驱动 http://blog.youkuaiyun.com/eliot_shao/article/details/518原创 2016-07-09 00:50:13 · 2751 阅读 · 0 评论 -
例说Android 硬件抽象层
Android系统从宏观上可以看成一个图形系统,类似于QT,迷你GUI等开源的图形用户界面系统。但是android作为手机软件包,它还具有很多的其他功能是QT、MINIGUI不具备的,比如电话、定位、WIFI、sensor、摄像头等功能。Android集成了很多开源的代码,我们只需要在Linux层做好硬件的驱动程序剩下的很多软件开发工作android都是做好了的。烧写过手机固件的都知道,andro原创 2016-01-05 12:50:15 · 3802 阅读 · 0 评论 -
s5p4418-android5.1.1编译出错问题1
环境:ubuntu15.1wilyOPENJDK-7android5.1.1出错信息:Traceback (most recent call last): File "../../base/android/jni_generator/jni_generator.py", line 1527, in sys.exit(main(sys.argv)) File原创 2015-11-04 18:01:58 · 4356 阅读 · 2 评论 -
s5p4418-android5.1.1编译出错问题2
问题:~/s5p4418/lollipop-5.1.1_r6tmpfile: initramfs.cpio.2aba6039/home/eliot/s5p4418/lollipop-5.1.1_r6/device/nexell/tools/mkinitramfs.sh: 行 23: realpath: 未找到命令out_file: /root.img.gzmake su原创 2015-11-06 13:08:47 · 1422 阅读 · 0 评论 -
s5p4418调试usb camera设备结果分析与usb驱动简要分析
第一,开发环境硬件:三星s5p4418linux version:3.4.39ubuntu:14.04usb camera:whois第二,usb camera调试结果分析1,将usb camera驱动打入内核,插上usb camera,系统启动后会在kmesg中有如下提示:[ 1.015000] usb 1-1: New USB device found,原创 2015-11-11 14:51:23 · 2803 阅读 · 0 评论 -
input:ABS_DISTANCE上报空指针错误
在probe函数中设置事件类型EV_ABS和支持的事件码ABS_DISTANCE:input_set_capability(input_dev, EV_ABS, ABS_DISTANCE);然后在工作队列里上报传感器的数据:input_report_abs(dt->input, ABS_DISTANCE, 1);input_sync(dt->input);运行程序,每次到原创 2015-11-20 16:20:31 · 2556 阅读 · 0 评论 -
在/sys下面创建属性文件
以前一直有一个疑问:驱动到底在哪里创建文件节点才有意义,才能满足应用层的需求。后来一直得不到解答,慢慢的就不干觉得有困惑。因为android的开发,从原厂拿到bsp大多数驱动都已经做好了,功能健全,通过HAL提供本地方法。其实事实还有其他的途径提供驱动接口,比如字符设备,创建一个文件节点,然后JNI层包装一下节点的操作函数,向java层提供public class;输入设备,上报按键,触摸原创 2015-11-26 18:25:38 · 3892 阅读 · 0 评论 -
例说如何编译android模块
首先介绍一下android的编译系统。与Linux kernel的编译系统相比较,内核依赖于makefile文件,从顶层的makefile递归调用子目录中的makefile文件,完成对源码文件的编译。Android的编译系统不在依赖于makefile文件,而是make文件Android.mk。android由一个脚本会搜索目录和子目录第一个出现Android.mk文件,根据Android.mk的内原创 2015-12-31 14:01:21 · 3711 阅读 · 1 评论 -
s5p4418-linux MMC驱动子系统分析
平台说明:s5p4418SD/MMC控制器驱动:Synopsys DesignWare Dw_mmc-pltfm.c (drivers\mmc\host) 和Dw_mmc.c (drivers\mmc\host)linux 版本:3.4.29驱动原理:1.SD/MMC控制器的的接口是SDIO接口,工作方式有三种,单线,四线,SPI。2.在MMC的设备模型中,原创 2015-12-04 20:07:57 · 5615 阅读 · 0 评论 -
linux mmc驱动子系统
《MMC 卡驱动分析》 最近花时间研究了一下 MMC 卡驱动程序,开始在网上找了很多关于 MMC 卡驱动的分析文章,但大都是在描述各个层,这对于初学者来讲帮助并不大,所以我就打算把自己的理解写下来,希望对大家有用。个人觉得理解 LINUX 内核当中 MMC/SD 卡驱动程序构架是学习 MMC 卡驱动程序的重点,只有理解了它的基本框架或流程才能真正理解一个块设备驱动程序的写法,同转载 2015-12-04 15:22:50 · 4638 阅读 · 0 评论 -
s5p4418-sdio接口的wifi模块驱动及往android层的延伸
平台说明:s5p4418sdio接口的wifi模块驱动:If_sdio.c (drivers\net\wireless\libertas) linux 版本:3.4.29MMC驱动子系统回顾:在博客:http://blog.youkuaiyun.com/eliot_shao/article/details/50178475 中通过跟踪代码的方式,大概了解了mmc控制器HOST的原创 2015-12-05 17:42:12 · 2917 阅读 · 0 评论 -
android BSP与硬件相关子系统读书笔记(1)android BSP移植综述
对于一些简单的设备驱动,可以不用写HAL的代码,实际上很多时候也不用去写,一种常见的情况是由JNI的部分代码直接调用驱动程序的设备节点或者使用sys文件系统。也可以直接把/sys/的属性文件(可以通过cat和echo读写)的文件接口直接提供给java层代码调用。原创 2015-12-09 22:33:00 · 9053 阅读 · 0 评论 -
apk内置到系统的两种方法
第一种:不需要少些系统镜像(system.img),只需要root系统。具体操作:1、 将手机连接电脑,并开启USB调试模式。2、 通过CMD进入Windows命令行窗口,输如:adbshell如下图所示:3、 如果是root就可以进入下一步,不是root需要root自己的手机,并授权控制台root权限。4、执行exit退出adb shell,执行adbremoun原创 2016-02-24 20:13:57 · 10843 阅读 · 3 评论 -
Hardware information 修改方法
Hardware information是手机使用工程号码可以打开的,一个可以测试查看手机硬件的app,叫做Emode。以A165为例,工程号码为:*983*7#。A165是以MTK6735为处理器的Android6.0手机。这里的主要任务是在Emode界面中添加一条光感距传感器的型号信息。需要java层添加一个项,确定驱动文件的内容,并显示出来。主要修改了5个文件分别是:Z:\A16原创 2016-02-25 19:42:04 · 3907 阅读 · 0 评论 -
init.rc 语法 (附英文版介绍)
1、init.rc是一个可配置的初始化文件,通常定制厂商可以配置额外的初始化配置,init.%PRODUCT%.rc2、init.rc是在$GINGERBREAD/system/core/init/init.c中读取的,它基于“行”,包含一些用空格隔开的关键字(它属于特殊字符)3、如果关键字中有空格,处理方法类似于C语言,使用/表示转义,使用“”防止关键字被断开,另外注意/在末尾表转载 2016-04-27 23:51:04 · 3963 阅读 · 0 评论 -
例说android静态JNI调用C/C++代码——HelloWorld
JNI是实现android调用C/C++函数的一种方法。具体实现过程大概可以理解为如下过程:HelloWorld.java-------javah -jni HelloWorld--------->HelloWorld.h----->HelloWorld.c-----cc--->libHelloWorld.so|| javac HelloWorld|\/HelloWorld原创 2015-11-13 14:54:04 · 1226 阅读 · 0 评论 -
s5p4418-kitkat 编译及注意事项
切换到android源码目录下。源码的结构kernel的源码和u-boot的源码都放在android的源码目录下,且文件夹名称为kernel和u-boot。android源码目录下./device/nexell/tools/build.sh -b drone2 -t u-boot编译uboot./device/nexell/tools/build.sh -b drone2 -t k原创 2015-09-02 16:51:38 · 2731 阅读 · 0 评论