英文原文地址: https://ardupilot.org/dev/docs/learning-ardupilot-storage-and-eeprom-management.html
存储和 EEPROM 管理
ArduPilot 支持的每个板都有某种形式的持久性存储。它用于保存用户参数,航路点,集会点,地形数据和许多其他有用的信息。为了提供对此存储的访问,ArduPilot 具有4种基本机制 :
- the AP_HAL::Storage object, accessed as hal.storage (存储对象,作为 hal.storage 访问)
- the StorageManager library to give a higher level abstraction layer on hal.storage(StorageManager 库以在 hal.storage 上提供更高级别的抽象层)
- DataFlash for storing to an on-board logging area(DataFlash,用于存储到板载日志记录区域)
- Posix IO functions to traditional filesystems (for example VFAT on a microSD card), on boards that support it(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的EEPROM,而Pixhawk具有16k的FRAM。所有这些都隐藏在 AP_HAL :: Storage API 之中。
hal.storage API 非常简单,它只有3个功能:
- init() to start up t