当前位置: 首页 > news >正文

RK3128增加usb调试模式,开放adb和root权限

前言
USB OTG的模式
一般在调试usb的时候,都有一个小常识,就是切换到host模式时,U盘就能正常使用,而切换到device模式时,U盘则不能使用了,而是板子和电脑可以连接adb进行调试,像常用的adb push和adb pull操作。
需求修改
目前的需求是需要增加usb调试功能,开发adb和root权限,以方便调试连接,而这需要涉及到frameworks层和kernel层的修改。修改如下:
1、frameworks层修改
frameworks/base/services/java/com/android/server/usb/UsbDeviceManager.java
- Settings.Global.putInt(mContentResolver, Settings.Global.ADB_ENABLED, mAdbEnabled ? 1 : 0);
+ Settings.Global.putInt(mContentResolver, Settings.Global.ADB_ENABLED, 1);
AI写代码
cpp
运行
device/rockchip/rksdk/init.rc
这里写了一个服务来判断给force_usb_mode节点赋值2
+chmod 0660 /sys/bus/platform/drivers/usb20_otg/force_usb_mode
+on property:persist.service.adb.enable=1
+ write /sys/bus/platform/drivers/usb20_otg/force_usb_mode 2
+ start adbd
AI写代码
cpp
运行
这里可以读一下这个节点的值,来判断值是否写成功:
cat /sys/bus/platform/drivers/usb20_otg/force_usb_mode
force_usb_mode的值如果由1变为2,说明更改已经生效了。
device/rockchip/rk3128/system.prop
+persist.service.adb.enable=1
-sys.rkadb.root=1
+sys.rkadb.root=0
-ro.adb.secure =1
+ro.adb.secure =0
AI写代码
cpp
运行
core/main.mk
ifneq (,$(user_variant))
# Target is secure in user builds.
- ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
+ ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
ifeq ($(user_variant),userdebug)
# Pick up some extra useful tools
@@ -332,12 +332,12 @@ endif # !user_variant
ifeq (true,$(strip $(enable_target_debugging)))
# Target is more debuggable and adbd is on by default
- ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
+ ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1
# Include the debugging/testing OTA keys in this build.
INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging
# Target is less debuggable and adbd is off by default
- ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0
+ ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1
endif # !enable_target_debugging
AI写代码
cpp
运行
system/core/adb/adb.c
static void drop_capabilities_bounding_set_if_needed() {
}
static int should_drop_privileges() {
#ifndef ALLOW_ADBD_ROOT
- return 1;
+ return 0;
AI写代码
cpp
运行
2、kernel层代码修改
kernelarcharmbootdtsrk3128-xxxxx.dts
usb0: usb@10180000 {
/*0 - Normal, 1 - Force Host, 2 - Force Device*/
rockchip,usb-mode = <2>; /*usb adb mode*/
};
AI写代码
cpp
运行
将usb adb mode改为从设备模式
完成以上的修改就大功告成了,在调试中可以在串口给节点直接写值来切换相对应的
host和device模式即可。

http://www.dtcms.com/a/338905.html

相关文章:

  • leetcode 有效的括号
  • 西游记23:三藏不忘本,四圣试禅心;八戒挑行李;分工明确;
  • Java试题-选择题(11)
  • 从闲置到珍宝:旧物回收小程序系统重塑物品价值
  • dockerfile文件中crlf与lf换行符问题
  • 记录Webapi Excel 导出
  • 电影购票+票房预测系统 - 后端项目介绍(附源码)
  • Android Studio常用知识总结
  • HP Pavilion G6 笔记本使用ventoy启动安装Ubuntu 22.04 桌面版
  • Redission是什么
  • 低延迟、跨平台与可控性:直播SDK的模块化价值解析
  • 探访隐形冠军|安贝斯携手武汉科创协会x深钣协“湖北行”,溯源南海光电的创新密码
  • Qt个人通讯录项目开发教程 - 从零开始构建联系人管理系统
  • 【运维进阶】Ansible 角色管理
  • 【自动化运维神器Ansible】Playbook调用Role详解:从入门到精通
  • 数字孪生 :提高制造生产力的智能方法
  • 红日靶场03
  • 【Qt】 数据库连接池
  • B站 韩顺平 笔记 (Day 23)
  • LG P3710 方方方的数据结构 Solution
  • 【Qt开发】常用控件(五)
  • DzzOffice版权信息修改教程
  • 遥感amp;机器学习入门实战教程 | Sklearn 案例③:PCA + SVM / 随机森林 对比与调参
  • CSDN 创始人蒋涛:以开源驱动技术创新,拥抱黄金十年
  • LeetCode100-560和为K的子数组
  • 开源 C++ QT Widget 开发(二)基本控件应用
  • leetcode_ 76 最小覆盖子串
  • 决策树(续)
  • 大数据技术栈 —— Redis与Kafka
  • 字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密