Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android USB/SD Card總結

android USB/SD Card總結

編輯:關於Android編程

總結一下在公司看的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) # ynn modify for user mode
	if [ $usb_current_config != mtp ]&&[ $usb_current_config != mtp,adb ]; then
		echo boot_cust_mode is 0
		setprop persist.sys.usb.config mtp
	fi
2 user mode和test mode的轉換

 

通過#*20110606#打開和關閉測試開關,先在kernel/drivers/power/reset/msm-poweroff.c設置restart_reason

 #ifdef USER_TEST_MODE_SWITCH
		else if (!strncmp(cmd, userswitch, 10)) {			
			__raw_writel(0x77665506, restart_reason);
		}else if (!strncmp(cmd, testswitch, 10)) {			
			__raw_writel(0x77665507, restart_reason);
		}
 #endif		 
其中0x77665506、0x77665507在bootable/bootloader/lk/app/aboot/aboot.c中定義
 #define USER_SWITCH_MODE   0x77665506
 #define TEST_SWITCH_MODE   0x77665507

 

在aboot.c中設置重啟後的模式:

 #ifdef HY_MODE_SWITCH // ynn	
	else if(reboot_mode == USER_SWITCH_MODE) {
		device.charger_screen_enabled=1;
		device.magic_poweron = 0x44332211;
		write_device_info(&device);		
	}else if(reboot_mode == TEST_SWITCH_MODE) {
                device.charger_screen_enabled=0;
                device.magic_poweron = 0;
                write_device_info(&device);                
        }
 #endif
 #ifdef HY_MODE_SWITCH
        if(0x44332211 == device.magic_poweron)
	{
	        device.charger_screen_enabled=1;
	}else
	{
	        device.charger_screen_enabled=0;
	}	
 #endif
device.charger_screen_enabled為1表示重啟後為user模式。
 #ifdef HY_MODE_SWITCH
	if(device.charger_screen_enabled)
	cmdline_len += strlen(user_mode);
 #endif

 #ifdef HY_MODE_SWITCH
        if(device.charger_screen_enabled)
        {
            src = user_mode;
            if (have_cmdline) --dst;
            have_cmdline = 1;
            while ((*dst++ = *src++));
        }
  #endif


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved