当前位置: 代码迷 >> Android >> android USB/SD Card小结
  详细解决方案

android USB/SD Card小结

热度:719   发布时间:2016-04-28 00:06:42.0
android USB/SD Card总结

  总结一下在公司看的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。 

版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案