[FAQ04184] [NVRAM] 如何新增驅動訪問NVRAM的程序
[Description]
驅動訪問NvRAM資料,建議新增一個程序,並在init.rc裡面啟動。
這個做法的好處:NvRAM檔案有設訪問許可權,以避免不必要的訪問導致資料篡改。在init.rc新增程序,設定許可權,使得訪問變得可控。
[Solution]
1. 驅動如要訪問NVRAM,需要新增一個NVRAM Agent(程序),如下示意圖:
2. 舉例新增一個NVRAM Agent(nvram_customop),其對應的原始檔nvram_customop.c 簡述如下:
1) Read from Nvram(read_nvram) |
3. 編譯這個Agent為可執行檔案,在nvram_customop.c所在目錄新增android.mk檔案,並修改其內容如下:
LOCAL_PATH := $(my-dir) |
4. 在init.rc中啟動這個程序,這個訪問nvram的程序nvram_customop需要等待nvram 初始化完成才能工作
service nvram_daemon /system/bin/nvram_daemon service nvram_customop /system/bin/nvram_customop |
Note:
標紅部分,不同平臺可能會有所不同。
最早是用的user root,無group設定,不符合CTS要求。
因此在ICS2.MP之後修正了root的許可權問題,ICS2.MP需要打patch ALPS00292373,ICS.MP需要打patch ALPS00322643。
判斷nvram ready的條件:
KK(4.4)版本之前:on property:nvram_init=Ready
L(5.0)版本之後:on property:service.nvram_init=Ready