2018年2月12日 星期一
[旅遊] 冬季北海道穿搭筆記
2018年1月25日 星期四
[工作] quota介紹(轉)
https://source.android.com/devices/storage/faster-stats
鳥哥的介紹:
http://linux.vbird.org/linux_basic/0420quota.php
2018年1月10日 星期三
[工作] Pixel(Google手機) 更換factory image的方法
https://developers.google.com/android/images
2. 在Settings -> Developer option裡面開啟OEM unlock
3.
解壓縮下載的image,
fastboot flashing unlock,
flash_all.sh
4. 等燒完重開機就ok了
2018年1月8日 星期一
[工作] Command的方式將package增加系統管理權限
dpm set-device-owner com.mycompany.deviceowner/.DeviceAdminReceiver
2017年12月21日 星期四
[工作] Android pm取的package name跟path的用法
pm list packages
取得package的path
pm path PACKAGE_NAME
ex:
$ pm path com.android.example
$ /system/app/Example/Example.apk
取得所有package with path
pm list packages -f
2017年12月13日 星期三
[工作] Access PMIC from fastboot command (UEFI)
找了一下之後發現xbl裡面已經有提供進shipmode的function,
所以我們只需要把這個function加進protocol,
讓bootloader能access這個protocol.
xbl的部份:
Include/Protocol/EFIPmicSchg.h
增加新的定義:
+typedef
+EFI_STATUS(EFIAPI *EFI_PMIC_SCHG_ENABLE_SHIP_MODE)
+(
+ IN UINT32 PmicDeviceIndex
+);
struct _EFI_PMIC_SCHG_PROTOCOL {
...
+EFI_PMIC_SCHG_ENABLE_SHIP_MODE EnableShipMode;
...
};
Drivers/PmicDxe/PmicSchgProtocol.c
增加新的function:
+EFI_STATUS
+EFIAPI
+EFI_PmicSchgEnableShipMode
+(
+ IN UINT32 PmicDeviceIndex
+)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+
+ errFlag = pm_schg_batif_enable_shipmode(PmicDeviceIndex);
+ if (PM_ERR_FLAG__SUCCESS != errFlag)
+ {
+ return EFI_DEVICE_ERROR;
+ }
+
+ return EFI_SUCCESS;
+}
EFI_QCOM_PMIC_SCHG_PROTOCOL PmicSchgProtocolImplementation =
{
...
+EFI_PmicSchgEnableShipMode,
...
};
bootloader的部份:
把xbl裡面protocol的header檔copy過來,
Include/Protocol/EFIPmicSchg.h
Library/BootLib/BootLib.inf
加入protocol的guid:
[Protocols]
...
gPmicSchgProtocolGuid
XXXModulePkg.dec
更改description, 加入protocol的uuid
gPmicSchgProtocolGuid = { 0xxxxxxxxx } }
使用protocol function的方式:
EFI_STATUS Status = EFI_SUCCESS;
EFI_PMIC_SCHG_PROTOCOL *PmicSchgProtocol = NULL;
Status = gBS->LocateProtocol(&gPmicSchgProtocolGuid, NULL, (VOID **) &PmicSchgProtocol);
PmicSchgProtocol->EnableShipMode(PM_DEVICE_1);
2017年11月2日 星期四
[工作] addr2line用法
Trace程式crash時滿好用的.
在Android上, 有程式crash時,
通常會產生一串資訊, 重點如下:
10-31 22:50:29.231 F/DEBUG ( 5121): backtrace:
10-31 22:50:29.231 F/DEBUG ( 5121): #00 pc 00000000000ca8c4 /system/lib64/libsurfaceflinger.so (_ZNK4HWC25Layer11isAbandonedEv+56)
10-31 22:50:29.231 F/DEBUG ( 5121): #01 pc 00000000000be370 /system/lib64/libsurfaceflinger.so (_ZN7android5Layer11hasHwcLayerEi+372)
10-31 22:50:29.231 F/DEBUG ( 5121): #02 pc 00000000000bc33c /system/lib64/libsurfaceflinger.so (_ZN7android14SurfaceFlinger15setUpHWComposerEv+2312)
10-31 22:50:29.231 F/DEBUG ( 5121): #03 pc 00000000000bb03c /system/lib64/libsurfaceflinger.so (_ZN7android14SurfaceFlinger20handleMessageRefreshEv+108)
10-31 22:50:29.231 F/DEBUG ( 5121): #04 pc 00000000000bae3c /system/lib64/libsurfaceflinger.so (_ZN7android14SurfaceFlinger17onMessageReceivedEi+124)
10-31 22:50:29.231 F/DEBUG ( 5121): #05 pc 0000000000015e58 /system/lib64/libutils.so (_ZN7android6Looper9pollInnerEi+336)
10-31 22:50:29.231 F/DEBUG ( 5121): #06 pc 0000000000015c54 /system/lib64/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+60)
10-31 22:50:29.231 F/DEBUG ( 5121): #07 pc 000000000008f620 /system/lib64/libsurfaceflinger.so (_ZN7android12MessageQueue11waitMessageEv+92)
10-31 22:50:29.231 F/DEBUG ( 5121): #08 pc 00000000000b9990 /system/lib64/libsurfaceflinger.so (_ZN7android14SurfaceFlinger3runEv+20)
10-31 22:50:29.232 F/DEBUG ( 5121): #09 pc 0000000000002d08 /system/bin/surfaceflinger (main+960)
10-31 22:50:29.232 F/DEBUG ( 5121): #10 pc 000000000001ba78 /system/lib64/libc.so (__libc_init+88)
10-31 22:50:29.232 F/DEBUG ( 5121): #11 pc 00000000000028a8 /system/bin/surfaceflinger (do_arm64_start+80)
addr2line就是幫助你從這堆東西裡面,
找出在哪段程式碼出錯的工具.
ex:
./aarch64-linux-android-addr2line -e ~/work/BSP/android/out/target/product/Cell/symbols/system/lib64/libsurfaceflinger.so 00000000000ca8c4
注意, 必須是要在out/target/product/[project]/symbol下面的
他會顯示出錯誤的地方在哪個檔案, 第幾行.