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);

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

这里可以读一下这个节点的值,来判断值是否写成功:

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

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

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;

2、kernel层代码修改

kernel\arch\arm\boot\dts\rk3128-xxxxx.dts

usb0: usb@10180000 {

/*0 - Normal, 1 - Force Host, 2 - Force Device*/

rockchip,usb-mode = <2>; /*usb adb mode*/

};

将usb adb mode改为从设备模式

完成以上的修改就大功告成了,在调试中可以在串口给节点直接写值来切换相对应的

host和device模式即可。

你可能感兴趣的:(RK3128,安卓,驱动开发,c语言,host,mode,device,mode,adb)