1. 程式人生 > >高通關機插入usb 會自動開機,不進入關機充電模式的解決辦法

高通關機插入usb 會自動開機,不進入關機充電模式的解決辦法

1. 插入USB會自動開機,這個查資料是由於userdebug模式會進入自動開機,而user模式會進入充電介面。所以只要編譯的時候用user模式編譯就不會自動開機了。

    bootloader/lk/aboot.c  裡的unsigned char *update_cmdline(const char * cmdline)函式裡

else if ((target_build_variant_user() || device.charger_screen_enabled)                                                    |||     cmd_erase_nand         
 371                         && target_pause_for_battery_charge()) {                                                                      |||     cmd_erase_mmc          
 372                 pause_at_bootup = 1;                                                                                                 |||     cmd_erase              
 373                 cmdline_len += strlen(battchg_pause);                                                                                |||     aboot_get_secret_key   
 374         }                 

紅色部分是版本判斷

2. 如果在debug模式關掉,可以通過命令切換。

先進入 fastboot  模式  : sudo adb  reboot bootloader

 然後執行 :

                     sudo fastboot oem enable-charger-screen   //開啟關機充電

                     sudo     fastboot oem disable-charger-screen  //關閉充電,自動開機

                         sudo fastboot reboot //重啟就可以生效

---------------------------

usb插入通過傳遞cmdline給init解析從而啟動充電程序

1. LK

lk\app\aboot\aboot.c

update_cmdline


----------

       if (boot_into_ffbm)  // 工廠測試模式
        {
                cmdline_len += strlen(androidboot_mode);
                cmdline_len += strlen(ffbm_mode_string);
                /* reduce kernel console messages to speed-up boot */
                cmdline_len += strlen(loglevel);
        }
        else if (target_pause_for_battery_charge())   // 判斷是否關機充電
        {
                pause_at_bootup = 1;                    // charger flag
                cmdline_len += strlen(battchg_pause);   //更新 cmd line 長度
        }
----------

        else if (pause_at_bootup)                    // charger flag
                {
                        src = battchg_pause;         // static const char *battchg_pause = " androidboot.mode=charger";
                        if (have_cmdline) --dst;
                        while ((*dst++ = *src++));
                }

2.init

#init.c
if (!is_ffbm)
    is_charger = !strcmp(bootmode, "charger");



----------
if (is_charger)
   action_for_each_trigger("charger", action_add_queue_tail);


# init.rc
on charger
    class_start charger


----------


# init.qcom.rc
service charger /charger
    class charger


----------


#system/core/healthd/Android.mk 

LOCAL_MODULE := healthd
...
# Symlink /charger to /sbin/healthd

相關推薦

關機插入usb 自動開機進入關機充電模式解決辦法

1. 插入USB會自動開機,這個查資料是由於userdebug模式會進入自動開機,而user模式會進入充電介面。所以只要編譯的時候用user模式編譯就不會自動開機了。     bootloader/lk/aboot.c  裡的unsigned char *update_cm

Ubuntu系統開機進入grub rescue模式解決辦法

Ubuntu系統開機後進入"grub rescue>"模式?肯定是grub開機管理程式出問題了,出現這種問題也不用急著重灌系統,還有解救辦法。下面我就描述下自己的經歷吧。 我們有10臺普通PC機用作伺服器(OS為Ubuntu 12.04 LTS),之前安裝系統的時候沒

註意鎖標記是自己自動釋放必須有通知

bounds tof rgs bound text nds package cep 使用 釋放鎖標記只有在Synchronized代碼結束或者調用wait()。 註意鎖標記是自己不會自動釋放,必須有通知。 註意在程序中判定一個條件是否成立時要註意使用WHILE要比使用IF要

System.IO.File.Create 自動釋放一定要加Dispose

System.IO.File.Create 不會自動釋放,一定要Dispose 這樣會導致W3P程序一直佔用這個檔案 System.IO.File.Create(HttpContext.Current.Server.MapPath(strName))    最好加

看完就知道日國際搬家公司為什麼那麼貴擔心物品在運的過程中損壞或變形

有用過日通都覺得比較貴,今天日通來給大家介紹下為什麼國際搬家的服務會比較貴的原因是什麼呢? 日通是定位在高階搬家,提供一站式、使用者不用動手的搬家業務。提供收納、拆裝和收納,到搬運新家物品還原。整個過程使用者不需要提前收拾東西和到了新家再還原好,只需要把鑰匙給日通公司即可。一.國際極致的服務: 1.搬家前

詳解·Vuforia識別追蹤3D物體/模型Unity開發

研究這個問題的初衷: 1.公司要做一個識別3D物體的案例,參考了各個平臺,發現EasyAR和Vuforia支援3D物體識別與追蹤。 2.剛開始用EasyAR做,但做了一半發現有一定的限制: 1).必須Pro版本的EA外掛才能支援3D物體識別與追蹤; 2).Pro版本雖然可以免費試用,但是每天

Java中 每個類在沒有宣告構造方法的前提下,自動生成一個帶引數的構造方法

每個類在沒有宣告構造方法的前提下,會自動生成一個不帶引數的構造方法,如果類一但宣告有構造方法,就不會產生了.證明如下: 例1: class person { person(){System.out.println("父類-person");} person(int

Android 8.0 程式碼預製apk可解除安裝恢復出廠設定apk可恢復

1:做個指令碼去實現拷貝APK都data/app目錄下面:#!/vendor/bin/shsleep 1cp /system/pre_install/RunUiTest/RunUiTest.apk /data/app/chmod 777 /data/app/RunUiTest

關於ul下內插入內容標籤自動換行在同一行問題

前提,li span {float:right;} 如果這麼寫 <li>美纖網<span>2013.05.23</span></li> 這個日期就會竄到下一行去 而如果這樣 <li><span>2013.05.23</span>

spring boot jar 進程自動停止自動終止能後臺持續運行

文件 boot 命令 nohup 部署 str 一次 tro ron 第一次部署spring boot 到linux上,用命令java -jar **.jar,發現應用自動退出,進程停止了。後來發現要不掛斷的執行命令,忽略所有的掛斷信號,用以下命令解決 nohup java

《終結者》裏的液態金屬是我們造出芯片的解決方案嗎?

液態金屬提起液態金屬,大家會想到什麽?可能果粉會想到經常傳說在下一代iPhone中使用的黑科技,硬件愛好者可能會想到散熱器。但更多人估計會第一時間聯想到《終結者2》裏的反派T-1000。電影裏這哥們的身體就是液態金屬做的,可以隨便改變形狀,受傷了能自我修復——當然最後還是被老州長幹掉了。那麽提起芯片,我們會想

Linux開機出現grub錯誤:grub> 解決辦法

出錯 grub配置文件 錯誤 In 引導 boot oot grub 安裝 出現錯誤具體原因未知,但開機不能引導肯定是grub配置文件出錯,/boot/grub2/grub.cfg 解決方法: 一,插入安裝U盤或者光盤,進入救援模式,重新生成grub.cfg文件: grub

綠色 | 企業:上雲將是常態上雲是例外

集群 而是 挖掘 能力 制造 而後 單點 數字化轉型 解決方案 在人工智能技術與實體經濟結合日益緊密的今天,雲計算等技術的潛力正被各行業的有識之士挖掘出來。目前,雲計算正以其特有的優勢給我國內各領域的建設提供有力的技術支撐。為提升相關產業發展的質量和水平,許多企業已經開始探

使用IDEA工具整合mybatis時使用@Resource和@Autowired自動註解bean時會顯示紅色問題的解決辦法

使用IDEA工具整合mybatis時使用@Resource和@Autowired自動註解bean時會顯示紅色問題的解決辦法 idea中springboot整合mybatis時,通過@Autowired注入的物件一直有下劃線提示,但是專案能執行,雖然不影響執行,但是強迫症的程式設計師肯定看不下去. 如何去除呢

翔SLAM例程執行提示段錯誤去主函式的解決辦法

最近執行高翔的SLAM程式碼,遇到了錯誤,經過除錯發現連主函式都沒進去,但是cmake,make是通過的,網上沒找到合適的答案(也不好找,因為錯誤提示對應的錯誤太多了),現在解決了在這裡記錄一下方便後來者。 現象: 編譯通過,但執行程式碼的錯誤提示如下:   Proce

window.open() 某些情況被瀏覽器阻止彈出窗口及解決辦法

默認 多次 location body 使用 www 介紹 fin 代碼   window.open() 的作用是創建一個新的瀏覽器窗口用來打開相關的資源,這是一個原生的 Javascript API 接口。   有關 window.open() 的基本使用可以參考 moz

Ubuntu16.04開機後黑屏無法進入登陸介面的解決辦法

工作原因,Ubuntu系統和windows系統需要切換工作,近兩個月來基本都是在Windows下做開發,所以ubuntu系統暫停了一段時間,誰知道再次進入的時候,居然黑屏了,解除安裝了Nvidia相關後依然不行,最後差點搞的Windows都進不去了,來回折騰了半天,懶得搞了,

mysql資料庫插入資料顯示Extracted SQL state class '22' from value '22001'解決辦法

Extracted SQL state class ‘22’ from value ‘22001’ 問題描述 最近在完成一個專案時,需要實現在網頁從excel匯入資料,然後儲存到資料庫中.在測試階段時發現執行沒有任何問題,但是實際部署過程中發現,使用者上傳exc

併發場景下的快取+資料庫雙寫一致問題分析與解決方案

1、最初級的快取不一致問題以及解決方案問題:先修改資料庫,再刪除快取,如果刪除快取失敗了,那麼會導致資料庫中是新資料,快取中是舊資料,資料出現不一致。解決思路:先刪除快取,再修改資料庫,如果刪除快取成功了,如果修改資料庫失敗了,那麼資料庫中是舊資料,快取中是空的,那麼資料不會

併發場景下的快取 資料庫雙寫一致問題分析與解決方案設計

馬上開始去開發業務系統 從哪一步開始做,從比較簡單的那一塊開始做,實時性要求比較高的那塊資料的快取去做 實時性比較高的資料快取,選擇的就是庫存的服務 庫存可能會修改,每次修改都要去更新這個快取資料; 每次庫存的資料,在快取中一旦過期,或者是被清理掉了,前端的ngin