2009-07-09 41 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扇区的编程时将其删除,因此这只是一个临时要求。

相关问题