第 6 章 - Azure RTOS LevelX NOR API

可用于应用程序的 Azure RTOS LevelX NOR API 函数如下所示。

  • lx_nor_flash_close:关闭 NOR 闪存实例
  • lx_nor_flash_defragment:对 NOR 闪存实例进行碎片整理
  • lx_nor_flash_extended_cache_enable:启用/禁用扩展 NOR 缓存
  • lx_nor_flash_initialize:初始化 NOR 闪存支持
  • lx_nor_flash_open:打开 NOR 闪存实例
  • lx_nor_flash_partial_defragment:NOR 闪存实例的部分碎片整理
  • lx_nor_flash_sector_read:读取 NOR 闪存扇区
  • lx_nor_flash_sector_release:释放 NOR 闪存扇区
  • lx_nor_flash_sector_write:写入 NOR 闪存扇区

lx_nor_flash_close

关闭 NOR 闪存实例

原型

UINT lx_nor_flash_close(LX_NOR_FLASH *nor_flash);

说明

此服务关闭先前打开的 NOR 闪存实例。

输入参数

  • nor_flash:NOR 闪存实例指针。

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_ERROR:(0x01) 关闭闪存实例时出错。

允许来自

线程数

示例

/* Close NOR flash instance "my_nor_flash". */  
status = lx_nor_flash_close(&my_nor_flash);  
  
/* If status is LX_SUCCESS the request was successful. */

另请参阅

  • lx_nor_flash_defragment
  • lx_nor_flash_extended_cache_enable
  • lx_nor_flash_initialize
  • lx_nor_flash_open
  • lx_nor_flash_partial_defragment
  • lx_nor_flash_sector_read
  • lx_nor_flash_sector_release
  • lx_nor_flash_sector_write

lx_nor_flash_defragment

对 NOR 闪存实例进行碎片整理

原型

UINT lx_nor_flash_defragment(LX_NOR_FLASH *nor_flash);

说明

此服务对先前打开的 NOR 闪存实例进行碎片整理。 碎片整理进程最大限度地增加可用扇区和块的数量。

输入参数

  • nor_flash:NOR 闪存实例指针。

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_ERROR:(0X01) 对闪存实例进行碎片整理时出错。

允许来自

线程数

示例

/* Defragment NOR flash instance "my_nor_flash". */  
status = lx_nor_flash_defragment(&my_nor_flash);  
  
/* If status is LX_SUCCESS the request was successful. */

另请参阅

  • lx_nor_flash_close
  • lx_nor_flash_extended_cache_enable
  • lx_nor_flash_initialize
  • lx_nor_flash_open
  • lx_nor_flash_partial_defragment
  • lx_nor_flash_sector_read
  • lx_nor_flash_sector_release
  • lx_nor_flash_sector_write

lx_nor_flash_extended_cache_enable

启用/禁用扩展 NOR 缓存

原型

UINT lx_nor_flash_extended_cache_enable(
    LX_NOR_FLASH *nor_flash,  
    VOID *memory, 
    ULONG size);

说明

此服务使用应用程序提供的内存在 RAM 中实现 NOR 扇区缓存层。 提供的每个 512 字节的内存都转换为可以缓存的一个 NOR 扇区。 缓存的扇区是包含块控制信息的扇区,例如清除计数、可用扇区映射和扇区映射信息。 数据扇区不存储在此缓存中。

输入参数

  • nor_flash:NOR 闪存实例指针。
  • memory:缓存内存的起始地址,为 ULONG 访问而对齐。 LX_NULL 值禁用缓存。
  • size:提供的内存的大小(以字节为单位,应为 512 字节的倍数)。

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_ERROR:(0X01) 一个 NOR 扇区的内存不足。
  • LX_DISABLED:(0x09) 配置选项禁用的 NOR 扩展缓存。

允许来自

线程数

示例

/* Enable the NOR flash cache for the instance "my_nor_flash". */  
status = lx_nor_flash_extended_cache_enable(&my_nor_flash,  
    &my_memory, sizeof(my_memory));  
  
/* If status is LX_SUCCESS the request was successful. */

另请参阅

  • lx_nor_flash_close
  • lx_nor_flash_defragment
  • lx_nor_flash_initialize
  • lx_nor_flash_open
  • lx_nor_flash_partial_defragment
  • lx_nor_flash_sector_read
  • lx_nor_flash_sector_release
  • lx_nor_flash_sector_write

lx_nor_flash_initialize

初始化 NOR 闪存支持

原型

UINT lx_nor_flash_initialize(void);

说明

此服务初始化 LevelX NOR 闪存支持。 必须在任何其他 LevelX NOR API 之前调用它。

输入参数

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_ERROR:(0x01) 初始化 NOR 闪存支持时出错。

允许来自

初始化、线程

示例

/* Initialize NOR flash support. */  
status = lx_nor_flash_initialize();  
  
/* If status is LX_SUCCESS the request was successful. */

另请参阅

  • lx_nor_flash_close
  • lx_nor_flash_defragment
  • lx_nor_flash_extended_cache_enable
  • lx_nor_flash_partial_defragment
  • lx_nor_flash_open
  • lx_nor_flash_sector_read
  • lx_nor_flash_sector_release
  • lx_nor_flash_sector_write

lx_nor_flash_open

打开 NOR 闪存实例

原型

UINT lx_nor_flash_open(
    LX_NOR_FLASH *nor_flash, 
    CHAR *name,  
    UINT (*nor_driver_initialize) (LX_NOR_FLASH *));

说明

此服务使用指定的 NOR 闪存控制块和驱动程序初始化函数打开一个 NOR 闪存实例。 请注意,驱动程序初始化函数负责安装各种函数指针,用于读取、写入和清除与此 NOR 闪存实例相关联的 NOR 硬件的块。

输入参数

  • nor_flash:NOR 闪存实例指针。
  • name:NOR 闪存实例的名称。
  • nor_driver_initialize:指向 NOR 闪存驱动程序初始化函数的函数指针。 有关 NOR 闪存驱动程序责任的详细信息,请参阅本指南的第 5 章。

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_ERROR:(0x01) 打开 NOR 闪存实例时出错。
  • LX_NO_MEMORY:(0X08) 驱动程序未提供用于将一个扇区读取到 RAM 的缓冲区。

允许来自

线程数

示例

/* Open NOR flash instance "my_nor_flash" with the driver "my_nor_driver_initialize". */  
status = lx_nor_flash_open(&my_nor_flash,"my NOR flash",  
    my_nor_driver_initialize);  
  
/* If status is LX_SUCCESS the request was successful. */

另请参阅

  • lx_nor_flash_close
  • lx_nor_flash_defragment
  • lx_nor_flash_extended_cache_enable
  • lx_nor_flash_initialize
  • lx_nor_flash_partial_defragment
  • lx_nor_flash_sector_read
  • lx_nor_flash_sector_release
  • lx_nor_flash_sector_write

lx_nor_flash_partial_defragment

NOR 闪存实例的部分碎片整理

原型

UINT lx_nor_flash_partial_defragment(
    LX_NOR_FLASH *nor_flash, 
    UINT max_blocks);

说明

此服务将以前打开的 NOR 闪存实例碎片整理到指定的最大块数。 碎片整理进程最大限度地增加可用扇区和块的数量。

输入参数

  • nor_flash:NOR 闪存实例指针。
  • max_blocks:最大块数。

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_ERROR:(0X01) 对闪存实例进行碎片整理时出错。

允许来自

线程数

示例

/* Defragment of one block in NOR flash instance* *"my_nor_flash". */  
status = lx_nor_flash_partial_defragment(&my_nor_flash, 1);  
  
/* If status is LX_SUCCESS the request was successful. */

另请参阅

  • lx_nor_flash_close
  • lx_nor_flash_defragment
  • lx_nor_flash_extended_cache_enable
  • lx_nor_flash_initialize
  • lx_nor_flash_open
  • lx_nor_flash_sector_read
  • lx_nor_flash_sector_release
  • lx_nor_flash_sector_write

lx_nor_flash_sector_read

读取 NOR 闪存扇区

原型

UINT lx_nor_flash_sector_read(
    LX_NOR_FLASH *nor_flash,  
    ULONG logical_sector, 
    VOID *buffer);

说明

此服务从 NOR 闪存实例读取逻辑扇区,如果成功,则返回所提供的缓冲区中的内容。 请注意,NOR 扇区大小始终为 512 字节。

输入参数

  • nor_flash:NOR 闪存实例指针。
  • logical_sector:要读取的逻辑扇区。
  • buffer:指向逻辑扇区内容的目标的指针。 请注意,该缓冲区假定为 512 字节,并为 ULONG 访问而对齐。

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_ERROR:(0x01) 读取 NOR 闪存扇区时出错。

允许来自

线程数

示例

/* Read logical sector 20 of the NOR flash instance "my_nor_flash" and place contents in "buffer". */ 
status = lx_nor_flash_sector_read(&my_nor_flash, 20, buffer);  
  
/* If status is LX_SUCCESS, "buffer" contains the contents of logical sector 20. */

另请参阅

  • lx_nor_flash_close
  • lx_nor_flash_defragment
  • lx_nor_flash_extended_cache_enable
  • lx_nor_flash_initialize
  • lx_nor_flash_open
  • lx_nor_flash_partial_defragment
  • lx_nor_flash_sector_release
  • lx_nor_flash_sector_write

lx_nor_flash_sector_release

释放 NOR 闪存扇区

原型

UINT lx_nor_flash_sector_release(
    LX_NOR_FLASH *nor_flash,
    ULONG logical_sector);

说明

此服务在 NOR 闪存实例中释放逻辑扇区映射。 在未使用时释放逻辑扇区会使 LevelX 的损耗均衡更有效率。

输入参数

  • nor_flash:NOR 闪存实例指针。
  • logical_sector:要释放的逻辑扇区。

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_ERROR:(0x01) NOR 闪存扇区写入时出错。

允许来自

线程数

示例

/* Release logical sector 20 of the NOR flash instance "my_nor_flash". */  
status = lx_nor_flash_sector_release(&my_nor_flash, 20);  
  
/* If status is LX_SUCCESS, logical sector 20 has been released. */

另请参阅

  • lx_nor_flash_close
  • lx_nor_flash_defragment
  • lx_nor_flash_extended_cache_enable
  • lx_nor_flash_initialize
  • lx_nor_flash_open
  • lx_nor_flash_partial_defragment
  • lx_nor_flash_sector_read
  • lx_nor_flash_sector_write

lx_nor_flash_sector_write

写入 NOR 闪存扇区

原型

UINT lx_nor_flash_sector_write(
    LX_nor_FLASH *NOR_flash,
    ULONG logical_sector, 
    VOID *buffer);

说明

此服务在 NOR 闪存实例中写入指定的逻辑扇区。

输入参数

  • nor_flash:NOR 闪存实例指针。
  • logical_sector:要写入的逻辑扇区。
  • buffer:指向逻辑扇区内容的指针。 请注意,该缓冲区假定为 512 字节,为 ULONG 访问而对齐。

返回值

  • LX_SUCCESS:(0X00) 成功的请求。
  • LX_NO_SECTORS:(0X02) 没有更多可用扇区来执行写入操作。
  • LX_ERROR:(0x01) 释放 NOR 闪存扇区时出错。

允许来自

线程数

示例

/* Write logical sector 20 of the NOR flash instance "my_nor_flash" with the contents pointed to by "buffer". */ 
status = lx_nor_flash_sector_write(&my_nor_flash, 20, buffer);  
  
/* If status is LX_SUCCESS, logical sector 20 has been written with the contents of "buffer". */

另请参阅

  • lx_nor_flash_close
  • lx_nor_flash_defragment
  • lx_nor_flash_extended_cache_enable
  • lx_nor_flash_initialize
  • lx_nor_flash_open
  • lx_nor_flash_partial_defragment
  • lx_nor_flash_sector_read
  • lx_nor_flash_sector_release