第 2 章 - 安装和使用 Azure RTOS LevelX

本章的以下各节介绍了 Azure RTOS LevelX 的安装和使用,这两项操作起来非常简便。

分发

LevelX 分布在 ANSI C 中,其中每个函数包含在其自己单独的 C 文件中。 LevelX 分布文件如下所示。

  • lx_api.h
  • lx_nand_flash_256byte_ecc_check.c
  • lx_nand_flash_256byte_ecc_compute.c
  • lx_nand_flash_block_full_update.c
  • lx_nand_flash_block_reclaim.c
  • lx_nand_flash_close.c
  • lx_nand_flash_defragment.c
  • lx_nand_flash_extended_cache_enable.c
  • lx_nand_flash_initialize.c
  • lx_nand_flash_logical_sector_find.c
  • lx_nand_flash_next_block_to_erase_find.c
  • lx_nand_flash_open.c
  • lx_nand_flash_page_ecc_check.c
  • lx_nand_flash_page_ecc_compute.c
  • lx_nand_flash_partial_defragment.c
  • lx_nand_flash_physical_page_allocate.c
  • lx_nand_flash_sector_mapping_cache_invalidate.c
  • lx_nand_flash_sector_read.c
  • lx_nand_flash_sector_release.c
  • lx_nand_flash_sector_write.c
  • lx_nand_flash_system_error.c
  • lx_nor_flash_block_reclaim.c
  • lx_nor_flash_close.c
  • lx_nor_flash_defragment.c
  • lx_nor_flash_extended_cache_enable.c
  • lx_nor_flash_initialize.c
  • lx_nor_flash_logical_sector_find.c
  • lx_nor_flash_next_block_to_erase_find.c
  • lx_nor_flash_open.c
  • lx_nor_flash_partial_defragment.c
  • lx_nor_flash_physical_sector_allocate.c
  • lx_nor_flash_sector_mapping_cache_invalidate.c
  • lx_nor_flash_sector_read.c
  • lx_nor_flash_sector_release.c
  • lx_nor_flash_sector_write.c
  • lx_nor_flash_system_error.c

还有适用于 LevelX NAND 和 NOR 实例的模拟器和 FileX 驱动程序示例,如下所示。

  • demo_filex_nand_flash.c
  • fx_nand_flash_simulated_driver.c
  • lx_nand_flash_simulator.c
  • demo_filex_nor_flash.c
  • fx_nor_flash_simulated_driver.c
  • lx_nor_flash_simulator.c

当然,如果只要求 NAND 闪存,则只需要 LevelX NAND 闪存文件 (lx_nand_*.c)。 同样,如果只要求 NOR 闪存,则只需要 NOR 闪存文件 (lx_nor*.c)。

配置选项

可在编译时通过下面所述的条件定义来配置 LevelX。 只需将所需的定义添加到每个 LevelX 源的编译即可使用此选项。

  • LX_DIRECT_READ:已定义,此选项绕过 NOR 闪存驱动程序读取例程,或直接读取 NOR 内存,从而显著提高性能。
  • LX_FREE_SECTOR_DATA_VERIFY:已定义,它会导致 LevelX NOR 实例开放逻辑验证可用的 NOR 扇区是否全部为一。
  • LX_NAND_SECTOR_MAPPING_CACHE_SIZE:默认情况下,此值为 16 并定义映射缓存大小的逻辑扇区。 较大的值可提高性能,但会占用内存。 最小大小为 8,并且所有值必须是 2 的幂。
  • LX_NAND_FLASH_DIRECT_MAPPING_CACHE:已定义,它会创建直接映射缓存,这样就不会出现缓存未命中的情况。 它还要求 LX_NAND_SECTOR_MAPPING_CACHE_SIZE 表示闪存设备中的总页数。
  • LX_NOR_DISABLE_EXTENDED_CACHE:已定义,它禁用了已扩展 NOR 缓存。
  • LX_NOR_EXTENDED_CACHE_SIZE:默认情况下,此值为 8,表示最多可以在 NOR 实例中缓存 8 个扇区。
  • LX_NOR_SECTOR_MAPPING_CACHE_SIZE:默认情况下,此值为 16 并定义映射缓存大小的逻辑扇区。 较大的值可提高性能,但会占用内存。 最小大小为 8,并且所有值必须是 2 的幂。
  • LX_THREAD_SAFE_ENABLE:已定义,它通过在整个 API 中使用 ThreadX 互斥对象,确保 LevelX 线程安全。
  • LX_STANDALONE_ENABLE:已定义,允许在独立模式下使用 LevelX(无 Azure RTOS)。 默认未定义此符号。

重要

在独立模式下使用 LevelX 时(必须定义 LX_STANDALONE_ENABLE),不需要 ThreadX 文件/库。 在此模式下,禁用 LevelX 线程安全功能。

使用 LevelX

要单独使用 LevelX 或与 FileX 一起使用 LevelX,请在引用 LevelX API 的代码中包含文件 lx_api.h。 同时还要确保在链接时可以使用 LevelX 对象代码。 请检查文件 demo_filex_nand_flash.c 和 demo_filex_nor_flash.c 以获取有关如何使用 LevelX 的示例。