我可以创建一个可从CE 6.0和我的引导加载程序访问的文件系统吗?

时间:2009-07-09 16:20:20

标签: filesystems windows-ce

我在PXA310上有一个CE 6.0项目,我需要能够通过Wi-Fi下载操作系统更新(nk.bin)并安全地将新操作系统刷新到我的设备。我对其他有关如何执行此操作的建议持开放态度,但我正在考虑将nk.bin保存到NAND闪存中的文件系统,然后重新启动并让引导加载程序在文件系统中找到该文件并将其闪存到BINFS划分。这是可能的,如果可以的话,你能概括一下我需要做什么吗?

有一点需要注意,这需要非常强大,因为设备部署在现场并且不能现场维修。我需要确保如果操作系统闪存失败(由于电源故障等),重启后引导加载程序可以再次尝试。这就是为什么我想将下载的图像存储在持久闪存中,避免重新下载图像。

2 个答案:

答案 0 :(得分:0)

技术上几乎任何事情都是可能的。对于这种策略,您需要的是引导加载程序的代码,以将NAND闪存作为驱动器安装并具有FAT驱动程序,以便它可以遍历该文件系统并查找映像。如果您还没有这项工作,那将是很多工作。

另一种选择是将其存储在已知地址位置的文件系统外部的闪存中。从引导加载程序的角度来看,这更容易,因为您所要做的就是映射到地址和副本。当然,它使写入更具挑战性,因为那时你是从操作系统那里完成的,你必须在写入时完全禁用任何其他闪存访问,以防止两个线程同时向芯片发送闪存命令而导致损坏。

在任何一种情况下,如果你有空间,最好在其他地方存储“已知良好”的图像,这样如果新图像有问题(校验和失败或x次加载尝试失败)那么你有一个工作的操作系统,引导程序可以回退。

答案 1 :(得分:0)

显然很大程度上取决于您的硬件设置,但我们已经做到了这一点,而没有让Bootloader支持Flash文件系统。

在我们的产品中,操作系统映像从Flash加载以从RAM执行 - 我认为现在大多数WinCE设备都以这种方式工作。因此,要更新操作系统,我们使用一个特殊的Flash驱动程序,它允许在WinCE下运行的应用程序更新Flash中的操作系统块 - 然后您需要的只是硬重启,然后Bootloader将新的Flash映像加载到RAM中以便执行它。我们发现这在现场非常可靠(有一些不是非常技术的最终用户!)。

需要一个特殊的Flash驱动程序,因为MS Flash Filesystem驱动程序无法访问Flash的操作系统映像扇区,以防止意外破坏操作系统。

你需要将NK.BIN加载到OS编程应用程序可以读取的某个内存中,通常是NAND Flash,但是如果你有足够的RAM,它就可以进入文件存储的根目录。但是,无论哪种方式,您都可以在重新启动之前完成对OS扇区的编程时将其删除,因此这只是一个临时要求。