<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 高通平臺讀寫(xiě)nv總結

高通平臺讀寫(xiě)nv總結

發(fā)布人:電子禪石 時(shí)間:2023-09-23 來(lái)源:工程師 發(fā)布文章

一,引言
      1. 什么是NV
       高通平臺的NV,保存了系統運行過(guò)程中各個(gè)模塊可能用到的一些參數值,它是以單個(gè)文件的形式保存在EFS中,但用戶(hù)是不能隨意訪(fǎng)問(wèn)的,只能通過(guò)QXDM來(lái)進(jìn)行讀寫(xiě)。對于60X0平臺,NV就有將近5千多項。
      
      2. 為什么要備份恢復NV
      NV值是需要通過(guò)校準和終測才能使手機硬件達到最佳工作狀態(tài),特別是其中的RF相關(guān)的NV項,經(jīng)過(guò)校準及終測后,每臺手機的這些NV值基本上都不一樣,又加上NV數據是是存儲在EFS,而EFS的數據很可能遭到破壞(如:重新燒寫(xiě)版本),這時(shí)的NV數據也將被破壞,之前校準和終測后的NV數據也將無(wú)法恢復,使得手機將面臨重新走校準、終測的生產(chǎn)流程。

      3. 備份恢復的原則      
      備份:首先要確定需要備份的NV有那些項(一般是RF相關(guān)的),一旦檢測到對NV項的修改,則在EFS中創(chuàng )建一個(gè)標志文件,在每次開(kāi)機時(shí)判斷這個(gè)標志文件是否存在而執行是否做備份。
      恢復:同樣在每次開(kāi)機的時(shí)候判斷EFS中是否存在恢復標志文件,如果不存在則恢復NV,然后創(chuàng )建這個(gè)標志文件,創(chuàng )建成功后,下次開(kāi)機就會(huì )不進(jìn)行恢復。
      
二,NV的備份

      1. 備份的區域
      由于所需要備份的NV項不是很多(一般就幾十項),所以我們可以在FLASH上開(kāi)辟一塊區域專(zhuān)門(mén)用于保存NV備份數據。備份區域是以一定的組織格式來(lái)存放數據的(如圖):
      

      其中每個(gè)Item都是以:Item號+內容大小(Byte)+內容   的形式來(lái)存放的。比如第10項NV可能有2個(gè)值,分別是0x11,0x22,則它在FLASH中存放的形式就是:
      0a 00 00 00  02 00 00 00  11 22 --------(這里Item號、內容大小都是UINT32 類(lèi)型)。

      2. 備份的時(shí)機
      一般一臺機器在出廠(chǎng)前,都要通過(guò)終測儀進(jìn)行校準、終測。這個(gè)過(guò)程就會(huì )修改到一些RF相關(guān)的NV項,也就是我們需要備份的NV。對于軟件上來(lái)說(shuō),不管是用終測儀,或則高通的QPST,QXDM工具來(lái)修改NV項,最后都會(huì )調用到寫(xiě)NV的函數:nvdiag_write(),我們可以在這個(gè)函數里面創(chuàng )建備份標志文件,在下次系統啟動(dòng)時(shí)讀取這個(gè)文件是否存在來(lái)判斷是否要做備份。

      3. 備份的方法
      之前說(shuō)過(guò),高通的NV都是以單個(gè)文件的形式存放在EFS中,每個(gè)文件的文件名就是NV項的序列號,所以我們可以直接調用EFS的讀函數nv_read來(lái)讀取某個(gè)特定的NV項的值。

三,NV的恢復

      1. 恢復的時(shí)機
      恢復就是備份的逆過(guò)程,即把存放在FLASH中的備份數據恢復到EFS中對應的NV項中去。如果手機出廠(chǎng)以后一旦要進(jìn)行軟件升級,并且同時(shí)需要破壞EFS,則就不得不進(jìn)行NV項的恢復。所以系統在每次開(kāi)機運行時(shí),都會(huì )檢查文件系統中是否存在恢復標志文件,如果不存在則進(jìn)行恢復并創(chuàng )建;反之則不恢復。這就要求我們每次發(fā)布的軟件版本中打包的EFS不能包含這個(gè)標志文件。

      2. 恢復的方法
      進(jìn)行恢復的時(shí)候就要讀取備份區域中備份的每項NV,然后同樣調用EFS的寫(xiě)函數nv_write把數據寫(xiě)到對于的NV項中。


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: mbn

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>