【MTK/Chargeing/Charger/驅動/JEITA】新增電池節點改變電池溫度
Root Case
修改JEITA幾個階段的溫度、對應的電池電壓以及充電電流,為了測試修改的結果,需要新增一個電池節點,echo相應的溫度進手機裡,通過改變溫度用來測試修改的電流有沒有生效
Produce
試用期的一個練手專案
Modify Methods
修改JEITA每個階段的溫度、電池電壓以及充電電流
注:這裡對於本專案有一點需要注意的就是,一個是mt6765.dts以及專案名.dts,修改專案名.dts裡面相應的配置才會生效,mt6765.dts中同名的配置會在專案名.dts同名配置中被覆蓋
涉及到的檔案:/kernel-4.9/arch/aem64/boot/dts/mediatek/專案名.dts
修改dts檔案JEITA配置,找到sw jeita部分,修改jeita cold、cool、normal、warm、hot這五個階段的cc、cv以及temp;其中溫度配置中的 **_minus_x_gedree,這個配置的意思是在每個階段溫度的閾值電新增一個容錯空間,比如說超過50°C停止充電,那麼在這個閾值電設定一個容錯值為47°C,當溫度下降到47°C的時候才會重新開始充電。
新增電池溫度模擬節點
通過adb命令輸入電池溫度,模擬充電保護行為是否符合預期
涉及到的檔案有三個分別是:
- /kernel-4.9/drivers/power/supply/mediatek/battery/mtk_battery.c /**/
- /kernel-4.9/drivers/power/supply/power_supply_sysfs.c /**/
- /kernel-4.9/include/linux/power_sypply.h /**/
mtk_battery.c
注:僅代表我個人思路,我很菜的,程式碼邏輯不是很好,如果各位大佬有更好的方法,請在評論區補充(卑微滷蛋線上卑微)(> <)
兩個全域性變數:
- batt_temp_value /*用來儲存echo進來的模擬溫度*/
- batt_temp_test_judge /*一個標誌,用來判斷系統使用的是真實溫度 還是 echo進來的模擬溫度*/
修改的地方:
1、bettery_props[]陣列
在 static enum power_supply_property battery_props[] = {……}陣列中,新增電池溫度模擬節點 POWER_SUPPLY_PROP_BATT_TEMP_TEST
2、battery_get_property函式
這個函式的作用:你在cat batt_temp_test節點的時候返回的數值
在static int battery_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propral *val){……}新增:
static int battery_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propral *val){
……
case POWER_SUPPLY_PROP_BATT_TEMP_TEST:
val -> intval = battery_temp_value; /*關於這個值是從哪裡得到的,下面會繼續介紹*/
break;
……
}
3、battery_set_property函式
這個函式的作用:例如 echo 1 > batt_temp_test(節點),就會進入到這個函式中
在 static int battery_set_property(struct power_supply *psy, enum power_supply_property psp, const union power_sypply_propral *val){……}新增:
static int battery_set_property(struct power_supply *psy, enum power_supply_property psp, const union power_sypply_propral *val) {
switch (psp) {
/*在原有的switch中新增*/
case POWER_SUPPLY_PROP_BATT_TEMP_TEST:
batt_temp_value = val -> intval; /*看見了嗎,batt_temp_value就是在這裡被賦值了*/
if (batt_temp_value == 0) {
batt_temp_test_judge = 0; /*這就是個標誌位,在下面會介紹他的作用,你需要知道為0時將使用真實的電池溫度,為1時將使用echo進來的模擬電池溫度*/
}else if (batt_temp_value == 1) {
batt_temp_test_judge = 1;
}
} ……
}
4、battery_props_is_writable函式
這個函式的作用:我們需要echo 模擬溫度到節點中,那麼就需要這個節點擁有可寫的許可權,這個函式的作用就是讓這個節點有寫許可權。
在static int battery_props_is_writable(struct power_supply *psy, enum power_supply_property psp) {……}新增:
static int battery_props_is_writable(struct power_supply *psy, enum power_supply_property psp) {
switch (psp) {
/*在原有的switch中新增*/
case POWER_SUPPLY_PROP_BATT_TEMP_TEST:
}
}
5、battery_main結構體
作用:註冊battery_set_property、battery_props_is_writable函式
在struct battery_data battery_main = {……} 新增
struct battery_data battery_main = {
.psd = {
……
.set_property = battery_set_property,
.property_is_writeable = battery_props_is_writable,
……
}
}
6、force_get_tbat (bool update)函式
作用:讓系統使用echo進來的模擬溫度
在int force_get_tbat (bool update) {……} 新增
int force_get_tbat (bool update) {
/*在定義完變數後就新增下面的邏輯*/
if (batt_temp_test_judge == 1) {
return batt_temp_value; /*看見了嗎,batt_temp_test_judge的作用就在這裡體現了*/
}
……
}
新增節點部分完,接下來是處理JEITA處理cc以及cv部分的邏輯,未完待續,創作不易,全部是手敲的,覺得不錯的請點贊收藏,能請我喝杯奶茶那是再感謝不過啦!
相關文章
- 革命:鋰電池技術可能改變世界
- android電池(五):電池 充電IC(PM2301)驅動分析篇Android
- 自動駕駛汽車的未來,“鋰電池先驅”:需要更強勁的電池自動駕駛
- 全新到貨IBM DS4500電池/FASTT900電池/DS4400電池/FASTT700電池/FASTT500電池IBMAST
- win10 檢視電池健康度方法 win10電池健康度怎麼看Win10
- App Tamer for Mac(節省電池和CPU電源)APPMac
- 電池、電容內阻手動計算
- RK3288 手動設定電池電量
- iPhone 7電池容量是多少?蘋果7電池容量猛增?iPhone蘋果
- lenovothinkpadt460sopensuselinux保護電池設定電池充電閥值ThinkPadLinux
- 電池 並聯、串聯、充電、放電
- 蘋果手錶外形不變 電池容量增加35%蘋果
- 【新能源】從“材料”到“電池組”一文讀懂動力電池生產全流程!
- 蘋果iPhone XR電池續航能力詳解 iPhone XR電池容量多大?蘋果iPhone
- Batteries for Mac(電池電量管理軟體)BATMac
- 新型iPhone電池充電只需5秒iPhone
- 1.5V電池多少伏沒電
- 電池管理系統(BMS)
- 紐扣電池分類
- win10電腦電池不充電怎麼回事 win10電池連線電源不充電如何處理Win10
- 怎麼保護電腦電池,AlDente免fei版讓Mac電腦不會過度充電Mac
- 聯想筆記本電池0%充不進電怎麼辦 聯想電腦電池顯示0充不進電筆記
- 蘋果電池新政策:不再需要進行額外的電池檢測蘋果
- 為什麼電池正負極短接會導致電池燒燬
- MySQL 非同步驅動淺析 (三):連線池改進方案MySql非同步
- win10電池不充電怎麼處理_win10電源接通電池不充電的解決教程Win10
- win10電池損耗怎麼看_如何檢視win10電腦電池損耗Win10
- 筆記本主機板CMOS電池怎麼放電?膝上型電腦主機板電池放電圖解教程筆記圖解
- 遠端Jenkins新增Mac電腦節點JenkinsMac
- Battery Indicator 電池指示燈工具BATIndicator
- Dealroom:2023 年英國電動汽車電池技術報告OOM
- DIY多快充協議太陽能充電器!----鋰電池充電電路協議
- win10電池報告怎麼看_win10如何檢視電池報告Win10
- Win10系統怎麼檢測電池和檢視電池檢測報告Win10
- FruitJuice for mac電池最佳化工具UIMac
- Endurance for Mac電池續航提升工具Mac
- FruitJuice Mac(電池管理工具)UIMac
- Mac上怎麼管理電池呢?Mac