2009-07-09 57 views
1

我在PXA310上有一個CE 6.0項目,我需要能夠通過Wi-Fi下載操作系統更新(nk.bin)並將新操作系統安全地閃存到我的設備。我接受關於如何做到這一點的其他建議,但我正考慮將nk.bin保存到我的文件系統中的NAND閃存中,然後重新啓動並讓引導加載程序在文件系統中找到文件並將其閃存到BINFS劃分。這是可能的,如果是這樣,你能給我一個我需要做什麼的概述嗎?我可以創建一個可從CE 6.0和我的引導加載程序訪問的文件系統嗎?

一個需要注意的是,由於設備部署在現場並且不能現場維修,因此這需要非常強大。我需要確定,如果操作系統閃存失敗(由於電源故障等),重新啓動後,引導加載程序可以再次嘗試。這就是爲什麼我想將下載的圖像存儲在持久性閃存中,並避免重新下載圖像。

回答

0

從技術上講,任何事情都是可能的。對於這種策略,您需要的是用於引導加載程序的代碼,將NAND閃存裝入驅動器並具有FAT驅動程序,以便它可以遍歷該文件系統並查找映像。如果您尚未擁有它,那麼這是很多工作。

另一種選擇是將其僅存儲在文件系統之外的閃存中的已知地址位置。從bootloader的角度來看,這很容易,因爲您只需映射到地址並複製即可。當然,這會使寫入更加具有挑戰性,因爲這是從操作系統開始的,而且在寫入時必須完全禁用其他任何閃存訪問,以防止兩個線程同時向閃存芯片發送閃存命令時發生損壞。

在任何一種情況下,如果您有空間,最好在其他地方存儲「已知良好」的圖像,以便在新圖像出現問題時(校驗和失敗或x次加載嘗試失敗)那麼你有一個工作的操作系統,引導程序可以回退到。

+0

感謝您的快速響應,克里斯! 對於我們基於PXA270/NOR的產品,我正在關閉MSFLASH,然後使用RFD將新操作系統刷新到輔助分區,然後引導加載程序將其閃爍到真正的操作系統分區中。這很好,但它消耗了很多閃光燈。這就是爲什麼我希望FATFS能夠擔當雙重任務。 您能否告訴我關於如何在引導加載程序中將NAND閃存裝入驅動器的任何信息?我計劃從Zylonite BSP的SD/MMC下載選項開始,因爲這是FATFS。那有意義嗎? – rjones54 2009-07-09 21:19:32

+0

SD驅動程序或USB閃存驅動程序將有意義,因爲它們都將具有FAT。您仍然需要提取低級別閃存訪問片斷,但是如果它已經在讀取和寫入閃存,則應該已經存在。 – ctacke 2009-07-10 01:42:17

0

顯然很大程度上取決於您的硬件設置,但我們已經做到了這一點,但沒有使Bootloader支持Flash文件系統。

在我們的產品中,操作系統映像從Flash加載到內存中執行 - 我認爲現在大多數WinCE設備都以這種方式工作。因此,爲了更新操作系統,我們使用了一個特殊的Flash驅動程序,它允許在WinCE下運行的應用程序更新Flash中的操作系統塊,然後您需要進行硬重啓,Bootloader會將新的閃存映像加載到RAM中執行它。我們發現在現場非常可靠(有些技術不太專業的最終用戶!)。

需要一個特殊的Flash驅動程序,因爲MS Flash文件系統驅動程序無法訪問Flash的操作系統映像扇區,以防止意外丟棄操作系統。

您確實需要將NK.BIN加載到OS編程應用程序可以讀取的一些內存中,通常是NAND閃存,但是如果您有足夠的內存,它可以進入文件存儲的根目錄。但是,無論哪種方式,您可以在重新啓動之前完成對OS扇區的編程時將其刪除,因此這只是一個臨時要求。

相關問題