总结一下在公司看的USB/SD Card部分的内容:
1 设置连接USB时的默认模式及4种模式对应的设备接口
charger:diag,serial_smd,rmnet_bam,adb
ptp:ptp,adb
mtp:mtp,adb
mass storage:serial_smd,serial_tty,mass_storage
其中diag为diag口,serial_smd为串口,rmnet_bam为网口,adb为adb口。
设置默认连接方式:
boot_cust_mode=`cat /sys/class/android_usb/android0/device_mode` usb_current_config=`getprop persist.sys.usb.config` case "$boot_cust_mode" in "0") # user mode if [ "$usb_current_config" != "mtp" ]&&[ "$usb_current_config" != "mtp,adb" ]; then setprop persist.sys.usb.config mtp fi
其中shell脚本中setprop设置android系统属性,getprop得到系统属性,c文件中用property_set/property_get,framewrok中用SystemProperties.set/SystemProperties.get.
2 user mode和test mode的转换
通过#*20110606#打开和关闭测试开关,先在kernel/drivers/power/reset/msm-poweroff.c设置restart_reason
else if (!strncmp(cmd, "userswitch", 10)) { __raw_writel(0x77665506, restart_reason); }else if (!strncmp(cmd, "testswitch", 10)) { __raw_writel(0x77665507, restart_reason); }其中0x77665506、0x77665507在bootable/bootloader/lk/app/aboot/aboot.c中定义
#define USER_SWITCH_MODE 0x77665506 #define TEST_SWITCH_MODE 0x77665507
在aboot.c中设置重启后的模式:
else if(reboot_mode == USER_SWITCH_MODE) { device.charger_screen_enabled=1; device.magic_poweron = 0x44332211; write_device_info(&device); }
if(0x44332211 == device.magic_poweron) { device.charger_screen_enabled=1; }device.charger_screen_enabled为1表示重启后为user模式。
if(device.charger_screen_enabled) { src = user_mode; }
3 android系统分区及常用目录
常用的系统分区有system分区,data分区,sd card分区等。
system分区是kernel和system app的地方。system/app保存系统自带apk,system/bin保存系统工具,system/xbin保存常用工具,system/lib保存so文件
data分区安装用户apk。
根目录下的/mnt文件夹用来挂载sd card,还有初始化脚本init.qcom.rc和init.qcom.usb.rc。
版权声明:本文为博主原创文章,未经博主允许不得转载。