前言
ArduPilot 支持的每个板子都有某种形式的永久性存储可用。这是用来保存用户参数、航点、集结点、地形数据和许多其他有用的东西。为了提供对这种存储的访问,ArduPilot 有 4个 基本机制:
- AP_HAL::Storage对象,通过 hal.storage 访问;
- StorageManager库,在 hal.storage 上提供一个更高层次的抽象层;
- 用于存储到板载记录区的 DataFlash;
- 在支持 Posix IO 功能的板子上,将 Posix IO 功能与传统的文件系统(例如 microSD 卡上的VFAT)结合起来。
其他需要永久性存储的库和函数都建立在这些基本系统之上。例如,AP_Param 库(处理用户可设置的参数)是建立在 StorageManager 之上的,而 StorageManager 又是建立在 AP_HAL::Storage 之上的。AP_Terrain 库(处理地形数据)是建立在 Posix IO 函数之上的,用于保存地形数据库。
1 AP_HAL::Storage库
AP_HAL::Storage 对象在所有平台上都可用。在 ArduPilot 支持的主板上,通过这个接口可用的最小存储空间是 4096 字节。有些主板提供了更多的空间 - 例如 PX4v1 有 8k