子类__Android
文章平均质量分 92
RK3399平台下Android frameworks相关修改
内核笔记
一直从业于半导体行业,曾为Linux内核开源文档社区提交过若干文档。
主要从事Linux、Android相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,喜欢阅读内核源代码,在不断的学习和工作中深入理解内存管理,进程调度,文件系统,设备驱动等内核子系统。
展开
-
RK3399平台开发系列讲解(安卓篇)1.25、Android 进程内存回收机制
Android启动时会把一些进程作为缓存加载到内存中,这些在缓存中的进程,通常不会影响系统整体运行速度,当用户使用该进程时因为不用重新加载缓存中的进程资源,会提高应用启动速度和切换速度,提升用户体验,这是Android的特性。当系统需要更多的内存时,如果内存剩余不足会触发系统自身的进程调度策略来根据进程的adj策略回收部分进程来释放内存。如果低内存状态下,频繁有申请-回收的过程,系统可能会出现卡顿变慢。原创 2018-08-14 21:51:32 · 1413 阅读 · 11 评论 -
RK3399平台开发系列讲解(系统篇)1.27、Semantic-Segmentation-Suite部署使用
文章目录1. 文档介绍2. 环境部署2.1. Docker环境2.2. 安装依赖3. 训练3.1. 训练参数3.2. 网络模型3.3. 数据集3.4. 训练结果4. 测试4.1. 测试参数4.2. 测试结果5. 推理5.1. 推理参数5.2. 推理结果1. 文档介绍本文档目的在于指导读者使用Semantic-Segmentation-Suite训练语义分割模型。2. 环境部署2.1. Docker环境拉取镜像docker pull tensorflow/tensorflow:1.11.0-gpu原创 2018-08-16 21:36:43 · 979 阅读 · 8 评论 -
RK3399平台开发系列讲解(系统篇)1.28、ML知识拓展—RAPIDS初探
Linux i2c相关驱动1.驱动的注册过程i2c_add_driver( )–> i2c_register_driver( ) –> driver_register( )i2c_add_driver( ):宏,仅仅调用i2c_register_driver( )i2c_register_driver( ):定义总线类型bus_type,driver->drive...原创 2018-08-21 18:32:13 · 1032 阅读 · 11 评论 -
RK3399平台开发系列讲解(系统篇)1.26、目标检测模型Nanodet的训练和转换总结
文章目录第一章文档介绍第二章模型简介2.1.Nanodet模型结构2.2.Naodet模型性能第三章训练3.1.训练环境3.2.训练3.2.1.修改训练参数3.2.2.训练第四章模型转换和使用4.1.测试模型4.2.模型转换4.3.Ncnn使用第一章文档介绍本文档描述了轻量级目标检测模型Nanodet的训练和转换过程。目前各项目都会使用到目标检测模型来检测图像中的目标,虽然当前使用的Mobilenet SSD或者InceptionV2 SSD都是改进过的适合终端加速的网络,但是相对模型计算量和参数量还是原创 2018-08-17 19:09:13 · 2012 阅读 · 11 评论 -
RK3399平台开发系列讲解(系统篇)1.24、Tensorflow object detection API部署使用
你可以用 Linux 中的 IP 工具做 3 件有用的事情 如何使用 IP 工具来快速轻松地找到你的 IP 地址、显示路由表等等。ifconfig 命令在 Linux 上被弃用已有十多年的时间了,而 iproute2 项目包含了神奇的工具 ip。许多在线教程资源仍然采用旧的命令行工具,如 ifconfig、route 和 netstat。本教程的目标是分享一些可以使用 ip 工具...原创 2018-08-17 19:08:08 · 1191 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统篇)1.23、新yolo算法在rk平台上的挣扎历程
本文档记录总结了新版yolo算法在RK平台上部署过程。主要解决的问题在于版本的匹配,其次是网络的重建,最后是输出的处理。其中RK平台目前最新toolkit是1.4.1,对于本人熟悉的pytorch深度学习框架仅支持1.2版本(目前最新为1.7)。直接套用原始的代码在实验中出现了结果完全无法对应的情况(我愿称之为:玄学),因此对网络的重建以及原子操作的拆分很重要,由此确保结果的一致。最后,RK平台的工具只支持4维向量的操作,但yolo算法最后一层为5维向量,无法直接完成输出转换,由此需要后期自行处理。本文是原创 2018-08-23 19:22:10 · 2708 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统篇)1.22、Andriod 下 GPU 渲染开发总结
成为 Linux 终端高手的七种武器Linux 终端不仅是一个键入命令的地方。如若你能熟谙这些基础技巧,那么你会在绝大多数 Linux 发行版的默认使用的 Bash shell中游刃有余。这是howtogeek.com 网站特供给初级用户升级打怪时不能忘记携带的七种武器——1.Tab 补全这样能节省时间,并且对于输入那些你不很确定其具体名称的文件和命令来说很方便。比如,当前目录...原创 2018-08-17 18:58:22 · 1660 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统篇)1.21、百度 CarLife 总结
在 Linux 上检测 IDE/SATA SSD 硬盘的传输速度你知道你的硬盘在 Linux 下传输有多快吗?不打开电脑的机箱或者机柜,你知道它运行在 SATA I (150 MB/s) 、 SATA II (300 MB/s) 还是 SATA III (6.0Gb/s) 呢?你能够使用 hdparm 和 dd 命令来检测你的硬盘速度。它为各种硬盘的 ioctls 提供了命令行界面,这是由...原创 2018-08-17 19:04:09 · 2374 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统篇)1.20、 Android 9.0 下中科微 GNSS HAL 的移植过程
如何在 Linux 系统中结束结束进程或是中止程序 在 Linux 中有几种使用命令行或图形界面终止一个程序的方式。进程出错的时候,您可能会想要中止或是杀掉这个进程。在本文中,我们将探索在命令行和图形界面中终止进程或是应用程序,这里我们使用 gedit 作为样例程序。使用命令行或字符终端界面Ctrl + C在命令行中调用 gedit (如果您没有使用 gedi...原创 2018-08-17 19:07:14 · 3870 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统篇)1.19、 按下开机键后安卓系统的开机流程
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1直接上input的脉络图:原创 2020-08-14 22:53:48 · 3066 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统篇)1.18、init_parse_config_file函数解析init.rc脚本示意图
init_parse_config_file函数解析init.rc脚本示意图原创 2020-08-06 01:43:16 · 1892 阅读 · 11 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.21、热成像传感器MLX90640的JNI添加
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录JNI回调函数回调函数的实现JNI文件:native-lib.cpp#include "IICDev.h"#include <android/log.h>#include <jni.h>#include <stdio.h>#include&l...原创 2020-02-20 21:29:04 · 2762 阅读 · 8 评论 -
RK3399平台开发系列讲解(系统篇)1.17、Camera软件框架(目录介绍)
官网框架介绍我这里简要介绍下:软件架构从上至下来看Applicationpackage/apps/Camera2 这个 APKFramework/rk3399/frameworks/base/core/java/android/hardware/Camera.javaandroid.hardware.Camera这个类用来链接或者断开一个 Camera 服务,设置参数,开始...原创 2018-12-19 19:32:57 · 4078 阅读 · 12 评论 -
RK3399平台开发系列讲解(其他篇)1.21、HDMI 自动适配过程分析
在这个里面判断是否打开自动适配宏开关drivers/video/rockchip/hdmi/rk_hdmi.h这个里面赋值宏:drivers/video/rockchip/hdmi/rk_hdmi_task.c判断宏默认分辨率在如下设置:drivers/video/rockchip/hdmi/*_hdmi.h所以这里这个宏需要打开arch/arm/configs/*_def...原创 2018-12-09 15:14:03 · 5672 阅读 · 12 评论 -
RK3399平台开发系列讲解(系统篇)1.16、音频播放与录音框架
安卓音频播放框架:1、播放声音时都要创建AudioTrack对象2、java的AudioTrack对象创建时会导致c++的AudioTrack对象被创建;3、所以分析的核心是c++的AudioTrack类4、创建AudioTrack时涉及一个重要函数: set录音框架:1、APP创建、设置AudioRecord2、AudioPolicyManager根据inputSource等参数...原创 2018-11-30 19:36:37 · 3130 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统编译篇)8.6、安卓开发环境的搭建及编译
编译 Android 对机器的配置要求较高: 1、64 位 CPU 2、16GB 物理内存+交换内存 3、30GB 空闲的磁盘空间用于构建,源码树另外占用大约 8GB虚拟机:ubuntu16.04(64位)开发、测试和调试Linux驱动需要哪些工具:JDK或以上版本;Eclipse3.4或以上版本;ADT(用于开发Android应用程序);CDT(用于开发Android N...原创 2018-11-30 19:21:37 · 2474 阅读 · 7 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.20、system.img扩容
打包脚本修改:目录:TenPurple/handle.sh修改位置:29 echo "****mount系统镜像system.img****"下面增加:扩容256M 30 dd if=/dev/zero bs=1M count=256 &gt;&gt; os/system.img 31 e2fsck -f os/system.img 32 resize2fs os/system.i...原创 2018-11-30 19:10:24 · 2043 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统编译篇)8.5、编译时so库生成不了问题
疑惑:添加一个HAL模块后修改hardware/libhardware/modules/Android.mk, 将hq_fm模块加进去但是android整体编译时不会生成so库。单独编译时是可以生成so库:mmm hardware/lib/hq_fmmake snod修改build/target/product/embedded.mk,添加hq_fm.default编译模块了解真个...原创 2018-11-30 19:06:41 · 2141 阅读 · 8 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.19、添加白名单
[PX3][Android7.1] 调试笔记 — 添加白名单需求现在道道通导航后台运行时,容易被系统回收,包名:cn.jyuntech.map需要把他加入白名单原理进程是有它的优先级的,这个优先级通过进程的adj值来反映,它是linux内核分配给每个系统进程的一个值,代表进程的优先级,进程回收机制就是根据这个优先级来决定是否进行回收,adj值定义在com.android.server....原创 2018-11-29 21:35:33 · 3098 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统篇)1.14、通信机制 Binder
本博客首先介绍了进程间的通信机制 Binder,其次介绍了 JNI 机制以及传感器模 块实现中是如何使用的,最后以数据传递为主线分析了各模块的设计与实现。平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录1、进程间通信机制1、进程间通信机制Binder作为 Android 中另外一个庞大的体系,虽然代码量多、跨度广,但也 同样需要自己...原创 2020-01-30 21:10:38 · 1908 阅读 · 8 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.18、加密芯片支持(二)JNI
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录i2c_jni.cppCallback实现i2c_jni.cppJNIEXPORT 和 JNICALL 是用于导出函数的、依赖于编译器的指示符。返回类型是映射到Java类型的 C/C++ 类型。#include "IICDev.h"#include <android/log.h...原创 2020-02-18 01:55:20 · 2318 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统编译篇)8.4、AOSP build 流程分析
04指针与数组指针与地址指针与函数参数指针与数组数组传递地址算术运算字符指针与函数指针数组以及指向指针的指针多维数组指针数组的初始化指针与多维数组命令行参数指向函数的指针指针与地址通常的机器都有一系列连续编号或编址的存储单元,这些存储单元可以单个进行操纵,也可以连续成组的方式操纵。通常情况下,机器的一个字节可以存放一个 char 类型的数据,两个...原创 2018-08-28 22:53:59 · 1730 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.17、Android系统永不休眠修改步骤(一般是为了开发便利)
产品版本:芯片名称 内核版本 RK3399 Linux4.4 目录1、修改2、解析修改修改一:在framework中,资源文件的定义为:frameworks/base/packages/SettingsProvider/res/values/defaults.xml系统支持最大不休眠的时间 大概为2147483647 ,大概200...原创 2018-12-17 19:43:10 · 3614 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统篇)1.12、安卓系统怎样检测键盘等输入设备的拔插?输入系统中的inotify、epoll
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录怎样检测键盘等输入设备的拔插?怎样知道哪个键盘被按下?怎样检测键盘等输入设备的拔插?https://www.ibm.com/developerworks/cn/linux/l-inotify/index.html从Linux 2.6.13 内核开始,Linux就推出了inotify,允...原创 2019-02-16 15:40:11 · 1745 阅读 · 8 评论 -
RK3399平台开发系列讲解(系统篇)1.11、 Android 各个重要模块启动和/dev/binder的启动
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1原创 2020-08-14 22:57:43 · 2361 阅读 · 11 评论 -
RK3399平台开发系列讲解(系统篇)1.4、安卓系统输入子系统从下到上的三种配置文件
平台内核版本输入系统框架输入系统了解文章目录三种配置文件为什么?按键布局文件(`.kl`文件)keylayout 文件格式按键字符映射文件(kcm文件)kcm文件格式三种配置文件idc:input device confkl:keylayoutkcm:key character map为什么?Android系统的输入系统不直接使用内核提供的键值为什么?...原创 2019-03-25 19:27:50 · 1756 阅读 · 8 评论 -
RK3399平台开发系列讲解(系统篇)1.3、安卓系统SurfaceFlinger显示框架
假设现在有多个app1 2 3,如果它们随意访问fb,则屏幕显示必然是混乱不堪的。因此系统必须要有一个统一的管理者SurfaceFlingerSurfaceFlinger的任务给app提供buffer1.1、 通过gralloc模块向ashmen申请内存1.2 、得到一个fd1.3 、通过binder把fd传给某个app1.4、 app再mmap('fd')app 1 2 ...原创 2019-03-26 19:44:17 · 2492 阅读 · 7 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.14、Android系统打开user版本的root权限
环境:android7.01、lunch时的选择lunch时候会选择user、userdebug、eng选项,那么他们又有什么区别尼?2、编译系统的解析(user模式下apk的优化)编译系统初始化设置中有解析编译的TARGET_BUILD_VARIANT的配置如果TARGET_BUILD_VARIANT是eng,那么tags_to_install为debug,eng, 并设置Ro...原创 2018-12-18 19:37:54 · 3788 阅读 · 7 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.13、安卓系统hal层修改最大支持摄像头数量
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录修改修改目录:hardware\rockchip\camera\CameraHal\CameraHal_Module.h#define CAMERAS_SUPPORT_MAX 2 #if defined(TARGET_RK3399) #define C...原创 2019-01-06 14:41:29 · 2663 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统篇)1.1、安卓系统WIFI相关目录介绍与总结
系列内容WIFI系统框架文章目录wifi部分代码app 层framework层Hal 层Wifi kernelAP6255是一款支持蓝牙BT4.2+WiFi支持11ac双频的蓝牙11ac双频WiFi二合一模块,采用博通BCM43455方案。wifi部分代码app 层代码目录:packages/apps/Settings/src/com/android/setti...原创 2019-05-04 00:09:50 · 2341 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统篇)1.10、 安卓系统中启动init.rc文件格式介绍
变量名数据类型及长度常量变量和声明算术运算符关系运算符和逻辑运算符类型转换自增运算符和自减运算符按位运算符赋值运算符条件表达式01 基本数据类型变量名变量名由字母和数字组成,但第一个字符必须是字母。下划线被认为是字母。大小写字母是有区别的,一般变量名用小写字母,符号常量名全部使用小写字母。关键字等保留字不能用于变量名。数据类型及长度...原创 2018-08-28 22:54:59 · 1451 阅读 · 5 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.10、修改安卓系统浏览器默认主页
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录修改默认主页修改默认主页目录:packages/apps/Browser/res/values/strings.xml实际效果:修改: &amp;lt;!-- The default homepage. --&amp;gt; &amp;lt;string name=&quot;homepag...原创 2019-01-06 14:04:01 · 2429 阅读 · 7 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.9、安卓系统强制横屏或者竖屏显示
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录目录:device/rockchip/rk3399/system.prop目录:frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java红框内容改为:横屏显示:int r...原创 2019-01-06 14:34:35 · 4500 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.11、 修改安卓系统默认壁纸
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录修改默认壁纸Launcher3 默认壁纸加载流程修改默认壁纸系统默认壁纸的存放路径:frameworks/base/core/res/res/drawable 下图片文件名:default_wallpaper替换为同分辨率的图片即可。Launcher3 默认壁纸加载流程参考:h...原创 2019-01-05 17:06:10 · 3332 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.12、隐藏安卓系统的导航栏和状态栏
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录导航栏与状态栏一、隐藏导航栏方法一,修改资源文件代码方法二,通过系统 property 来控制二、隐藏状态栏修改资源文件代码导航栏与状态栏最上面是状态栏 StatusBar最下面是导航栏 NavagationBar一、隐藏导航栏方法一,修改资源文件代码frameworks/ba...原创 2019-01-05 16:58:08 · 4486 阅读 · 13 评论 -
[RK3399平台开发系列讲解(系统修改记录篇)1.1、安卓界面如何去掉顶部Google搜索栏
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录修改方法修改方法搜索资料了解到,其为 QuickSearchBox。代码在 packages/apps 中测试了很多网上的修改 launcher3 源码的方式,都是不行的。正确改法:在build/target/product/core.mk 去掉 QuickSearchBox...原创 2019-01-05 16:53:49 · 3386 阅读 · 10 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.2、如何修改安卓系统的浏览器默认主页
Android - 系统启动过程计算机是如何启动的?首先熟悉一些概念,计算机的硬件包括:CPU,内存,硬盘,显卡,显示器,键盘鼠标等其他输入输出设备。 所有的软件(比如:操作系统)都是存放在硬盘上,程序执行时需要将程序从硬盘上读取到内存中然后加载到 CPU 中来运行。 当我们按下开机键时,此时内存中什么都没有,因此需要借助某种方式,将操作系统加载到内存中,而完成这项任务的就是 BIOS...原创 2018-08-27 21:27:15 · 1691 阅读 · 8 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.15、安卓系统旋转后导航栏丢失,并有黑边问题解决
Android启动流程①init进程分析简介init主函数属性服务property_init()start_property_service()init.rcservice解析init启动zygote小结参考资料简介当Linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,它的生命周期贯穿整个linux 内核运行的始终, li...原创 2018-08-28 19:31:31 · 1625 阅读 · 9 评论 -
RK3399平台开发系列讲解(系统修改记录篇)1.8、安卓系统去掉ADB打开时的确认框
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录直接上patch目录:services/usb/java/com/android/server/usb/UsbDebuggingManager.java原创 2019-01-06 19:23:41 · 2565 阅读 · 7 评论 -
RK3399平台开发系列讲解(系统篇)1.6、安卓系统JNI的使用
JNI目录:frameworks/base/services/jni/com_android_server_FMService.cpp 因为要调用hardware中的函数,因此需要添加头文件:#include &amp;amp;lt;hardware/hw_tea5767.h&amp;amp;gt; 注册JNI方法 int register_android_server_FMService(JNIEnv ...原创 2018-08-09 19:32:09 · 1580 阅读 · 7 评论