<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    靈活更新固件——IoT設備的關鍵

    發布時間:2019-9-3 16:25    發布者:eechina
    關鍵詞: 物聯網 , IoT , 固件
    作者:Microchip Technology Inc.存儲器產品部主任應用工程師Hardik Patel

    物聯網(IoT)設備正迅速引入各大市場,從家用電器到醫療設備、再到汽車,應用范圍十分廣泛;制造商必須通過不斷創新和靈活地采用或集成新技術來領先于競爭對手。為了滿足新功能的需求和新法規的要求,設計人員必須將靈活性納入其產品中,以適應不斷發展的IoT生態系統。固件更新不僅能夠在客戶現場的初始部署期間進行定制,還可以在產品部署到現場后添加新功能/特性,并且支持在使用過程中修復任何固件問題。NOR閃存等非易失性存儲器件具有可重復編程能力且可靠性極高,通?捎米鞴碳a存儲介質。通過重新編寫器件固件代碼(位于器件使用的非易失性存儲器中)的一部分,制造商可輕松更新器件功能。想要更新固件時,有三件事情需要考慮:更新哪些/多少代碼、更新頻率以及執行更新所需的時間(速度)。

    更新哪些/多少固件代碼

    在IoT設備的初始設計階段,必須考慮更新哪些/多少固件代碼。相對于不可更新部分,固件的可更新部分必須存儲在NOR閃存器件的獨立區域中。更新NOR閃存的任何片段都需要先擦除存儲器的這一部分,然后將新信息編程到該部分中。NOR閃存分為稱為扇區和塊的多個部分,它們的大小各有不同。NOR閃存器件(如采用SST SuperFlash®技術的器件(部件編號SST26VF064B(64 Mb)))分為多個均一的4 KB扇區,各個扇區可單獨擦除和重新編程(4 KB = 4 * 1024 * 8位 = 32,762位)。它還可分為更大的8 KB、32 KB和64 KB塊,這些塊也可單獨擦除。因此,一個8 KB塊有2個扇區,一個32 KB塊有8個扇區,一個64 KB塊有16個扇區。圖1給出了采用8 KB/32 KB/64 KB塊的SST26VF064B的存儲器構成。各個塊也可以單獨進行保護。在對閃存的任何部分執行任何更新前,必須取消保護該部分中的塊,以允許擦除和編程操作。完成更新后,謹慎地再次對這些塊進行保護,以避免意外寫入或擦除這些區域。固件的可更新部分必須以足夠靈活的方式劃分為扇區和塊,以便同時支持有限數量和最大數量的特性/功能更新。由于執行更新的速度由需要擦除和重新編程的扇區和塊數決定,因此在組織固件的可更新部分時,最好同時考慮速度和靈活性。圖2給出了將存儲器組織為可更新和不可更新部分的示例。引導代碼等不可更新部分存儲在受保護區域中。固件的可更新部分(如特性/功能)根據靈活性要求分為較小的塊或較大的塊?筛碌溺R像文件存儲在較大的塊中,可更新的變量/參數存儲在較小的塊中。


    Flexibility to Update Firmware Memory Map        靈活更新固件存儲器映射
    Top of Memory Block        存儲器塊頂部
    2 Sectors for 8 KB Blocks 8 Sectors for 32 KB Blocks 16 Sectors for 64 KB Blocks        8 KB塊對應2個扇區,32 KB塊對應8個扇區,64 KB塊對應16個扇區
    Bottom of Memory Block        存儲器塊底部
    圖1:SST26VF064B的存儲器構成(映射)——由8個8 KB塊、2個32 KB塊和126個64 KB塊組成


    Organizing the memory in non-updatable portions        將存儲器組織為多個不可更新部分
    Non-updatable area e.g. boot code (keep it protected)        不可更新區域,例如引導代碼(進行保護)
    Updatable area e.g. features/functions code        可更新區域,例如特性/功能代碼
    Updatable area e.g. images files        可更新區域,例如鏡像文件
    Updatable area e.g. parameter/variable data (Allocate enough blocks to increase endurance)        可更新區域,例如參數/變量數據(分配足夠的塊以提高耐擦寫次數)
    圖2:將存儲器組織為多個不可更新部分(例如:引導代碼)和可更新部分(例如:功能/特性代碼、鏡像文件代碼和參數變量代碼)

    更新頻率
    固件更新頻率的主要限制是應用中所使用存儲器的耐擦寫次數限制。SuperFlash技術存儲器(如SST26VF064B)的耐擦寫次數可達100,000次,這意味著每個扇區可編程和擦除100,000次。固件可以更新100,000次聽起來很多;然而,許多IoT設備會在使用期間收集數據并將信息存儲在NOR閃存中,因此在計算最大耐擦寫次數限制時必須考慮這一點?紤]到耐擦寫次數,必須在存儲器中分配足夠多的扇區。下面將舉例說明:假設IoT設備正在收集和存儲16個字節的信息,并且信息預計在產品的使用壽命期間收集和存儲1億次?梢园慈缦路绞接嬎銘敺峙涞纳葏^數:

    1個扇區 = 4 KB

    假設扇區中的所有地址單元用于存儲信息(一次存儲16個字節的數據),然后寫入到一個新的地址單元,直至達到扇區末尾(例如,0x0000-0x000F、0x0010-0x001F、0x0020-0x002F等)

    由于4 KB/16字節 = 256,這即是達到扇區容量并擦除扇區中任何數據之前可以寫入存儲介質的次數

    1個扇區的耐擦寫限值 = 100,000次

    因此,如果1個扇區可以寫入256次且耐擦寫次數為100,000次,則可以收集和存儲數據2560萬次

    如果一個應用需要收集和存儲數據1億次,則要分配的扇區數量為100,000,000/25,600,000 = 3.9。因此,在本例中,需要分配4個扇區以在應用的生命周期內存儲16個字節的數據。

    IoT設備工程師需要進行類似的計算,以便為數據記錄參數分配足夠多的扇區和塊,以免超出其NOR閃存器件的耐擦寫限值。
      
    更新速度

    可根據需要擦除和重新編程的塊和扇區數來計算更新速度。假設需要重新編程SST26VF064B的幾個64 KB塊中存儲的1 Mb、2 Mb或4 Mb固件代碼/數據。代碼/數據可以由固件代碼、鏡像文件或需要更新的其他代碼組成。更新過程涉及對閃存執行一系列命令指令。序列將從取消保護存儲器塊開始,然后擦除這些塊、用更新的數據/代碼進行編程,最后重新進行保護。對于SST26VF064B,更新1 Mb/2 Mb/4 Mb存儲器所需的指令序列如表1所示。從表1中可以看出,兩個最重要的時間是擦除時間和編程時間。SST26VF064B采用可提供出色擦除性能的SuperFlash技術。SuperFlash技術與傳統閃存的擦除和編程性能的比較如表2所示。與傳統閃存相比,SuperFlash技術提供的優異擦除性能對于縮短更新時間非常有用。SST26VF064B支持的最大時鐘頻率為104 MHz,最大扇區擦除時間為25 ms,最大塊擦除時間為25 ms,最大頁編程時間為1.5 ms。此外,從發出每條命令指令到閃存以104 MHz時鐘頻率工作,中間還需要12 ns延時(CE高電平時間)。表1所示的命令序列與編程和擦除時間的知識結合使用時,可計算更新1 Mb/2 Mb/4 Mb SuperFlash技術存儲器和傳統閃存所需的時間,具體方法分別如表3和表4所示。這些計算必須由IoT設備工程師完成以估算執行更新的速度,目的是最大程度縮短更新期間的IoT設備停機時間。

    表1:更新1 Mb/2 Mb/4 Mb存儲器的閃存命令指令序列
    步驟命令指令序列時鐘數
    1
    SPI_WREN
    8
    2
    SPI_Enable_Ouad_IO
    8
    3
    SQI_WREN
    2
    4
    SQI_寫塊保護寄存器(取消保護閃存的某個部分)
    38
    5
    SQl_塊擦除64 KB塊
    2
    6
    SQI_WREN
    8
    7
    等待25 ms來完成SuperFlash技術存儲器的擦除(對于傳統閃存的擦除,需等待3000 ms) 
     重復執行步驟5、6和7,直到所需大小的存儲空間擦除完畢 
     要擦除1 Mb的數據,步驟5、6和7需要重復(1024*1024)/(64*1024*8) = 2次 
     要擦除2 Mb的數據,步驟5、6和7需要重復(2*1024*1024)/(64*1024*8) = 4次 
     要擦除4 Mb的數據,步驟5、6和7需要重復(4*1024*1024)/(64*1024*8) = 8次 
    8
    SQI_WREN
    2
    9
    SQI_頁編程命令后將編程256字節的數據(260乘以2)
    520
    10
    等待1.5 ms來完成SuperFlash技術存儲器的頁編程(對于傳統閃存的擦除,需等待5 ms) 
     重復步驟8、9和10,直到寫入所有數據 
     要編程1 Mb的數據,步驟8、9和10需要重復1024*1024/8/256 = 512次   
     要編程2 Mb的數據,步驟8、9和10需要重復2*1024*1024/8/256 = 1024次 
     要編程4 Mb的數據,步驟8、9和10需要重復4*1024*1024/8/256 = 2048次 
    11
    SQI_WREN
    2
    12
    SQI_寫塊保護寄存器(用于再次保護閃存的某一部分)
    38

    表2:SST26VF064B和傳統閃存的編程和擦除時間 
      
      
    SST26VF064B
    傳統閃存
    扇區擦除
    25 ms(最長)
    150 ms至3000 ms
    塊擦除
    25 ms(最長)
    750 ms至3s
    芯片擦除
    50 ms(最長)
    15s至80s
    頁編程
    1.5 ms(最長)
    1 ms至5 ms

    表3:更新1 MB/2 Mb/4 Mb SuperFlash技術存儲器所需的時間
    計算時間
    最長塊擦除時間25 ms
    最長頁編程時間1.5 ms
    104 MHz頻率下的時鐘周期9.6 ns
    104 MHz頻率下各指令間的CE高電平時間12 ns
    時間A. 指令1至指令4的時間 = (56個時鐘  * 周期) + (3 * CE高電平時間)573.6 ns
    時間B. 指令5至指令7的時間 = (10個時鐘  * 周期) + (2 * CE高電平時間) + (25 ms塊擦除等待時間)25000120 ns
    時間C. 指令8至指令10的時間 =1505023.2 ns
    (522個時鐘 * 周期) + (1 * CE高電平時間) + (1.5 ms頁編程等待時間)
    時間D. 指令11至指令12的時間 = (40個時鐘  * 周期) + (1 * CE高電平時間)396 ns
    總時間(即,塊擦除和編程1 Mb數據的全部指令的時間)= (時間A) +  (時間B * 2) + (時間C * 512) + (時間D)0.820573088 s
    塊擦除和編程2 Mb數據的全部指令的總時間 = (時間A)  + (時間B * 4) + (時間C * 1024) + (時間D)1.641145206 s
    塊擦除和編程4 Mb數據的全部指令的總時間 = (時間A)  + (時間B * 8) + (時間C * 2048) + (時間D)3.282289443 s

    表4:更新1 MB/2 Mb/4 Mb傳統閃存所需的時間
    計算時間
    最長塊擦除時間3000 ms
    最長頁編程時間5 ms
    104 MHz頻率下的時鐘周期9.6 ns
    104 MHz頻率下各指令間的CE高電平時間20 ns
    時間A. 指令1至指令4的時間 = (56個時鐘  * 周期) + (3 * CE高電平時間)597.6 ns
    時間B. 指令5至指令7的時間 = (10個時鐘  * 周期) + (2 * CE高電平時間) + (3000 ms塊擦除等待時間)3000000136 ns
    時間C. 指令8至指令10的時間 = (522個時鐘  * 周期) + (1 * CE高電平時間) + (5 ms頁編程等待時間)5005031.2 ns
    時間D. 指令11至指令12的時間 = (40個時鐘  * 周期) + (1 * CE高電平時間)404 ns
    塊擦除和編程1 Mb數據的全部指令的總時間 = (時間A)  + (時間B * 2) + (時間C * 512) + (時間D)8.562577248 s
    塊擦除和編程2 Mb數據的全部指令的總時間 = (時間A)  + (時間B * 4) + (時間C * 1024) + (時間D)17.12515349 s
    塊擦除和編程4 Mb數據的全部指令的總時間 = (時間A)  + (時間B * 8) + (時間C * 2046) + (時間D)34.25030599 s

    結論

    IoT設備設計工程師需要在更新應用程序代碼和數據時提供一定的靈活性。更新哪些/多少代碼、更新頻率和更新速度是設計IoT設備時需要解決的問題。非易失性存儲器的選擇會影響這些問題,并在計算代碼更新的時間和速度方面起到關鍵作用。
    本文地址:http://www.portaltwn.com/thread-568106-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • 我們是Microchip
    • 利用模擬開發工具生態系統進行安全電路設計
    • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設計風險
    • 想要避免發生災難,就用MPLAB SiC電源仿真器!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷