Mailbox Client Intel® FPGA IP用户指南

ID 683290
日期 12/04/2023
Public
文档目录

1.10.1.1. Mailbox Client Driver API

表 14.  mailbox_client_open
原型开发: mailbox_client_open(const char *name)
包括: <altera_s10_mailbox_client.h>
参数:
  • name – 字符串指针指向通过HAL寄存的Mailbox Client Intel® FPGA IP外围的名称。
返回: 如果成功返回non-NULL(非NULL),否则返回:
  • -NULL表示无效自变量(Invalid argument)。找不到器件或者错误的输入名称
描述: 检索指向Mailbox Client块实例的指针。在寄存的mailbox client实例列表中搜索具有所提供名称的实例。
表 15.  mailbox_client_send_cmd
原型开发: mailbox_client_send_cmd (intel_mailbox_client* fd, alt_u8 id, alt_u32 cmd, alt_u32* arg, int arg_length, int cmd_length, alt_u32* input_data, alt_u32* resp_buf, alt_u32 resp_buf_len) 12
包括: <altera_s10_mailbox_client.h>
参数:
  • fd – 指向flash器件结构的指针
  • id - 命令ID
  • cmd - mailbox client命令
  • arg - mailbox Client自变量 13
  • arg_length - 自变量数量
  • cmd_length - 命令长度 (arg_length + input_data length)
  • input_data - 输入数据
  • resp_buf - 响应缓冲区
  • res_buf_len - 响应缓冲区长度
返回: 如果成功则返回0,否则返回:
  • Error Code Responses中表示mailbox client的错误代码
  • -EINVAL表示无效自变量(Invalid argument)
  • -ETIME表示轮询超时并在5秒后跳过循环
  • -EBACK_TOUT表示背压定时器(back pressure timer)中断 14
  • -EEOP_TOUT表示数据包结束定时器中断 15
  • -ECMD_INVLD表示无效命令中断
  • -ENOBUFS表示响应缓冲区长度不足 16
  • -ENOSYS表示从SDM返回的命令ID不匹配
描述: 将命令和数据发送到Mailbox Client。当数据有效中断发生时,读回该响应。
表 16.  mailbox_client_flash_open
原型开发: Mailbox_client_flash_open(intel_mailbox_client* fd)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
返回 如果成功则返回0,否则返回:
  • -EINVAL表示无效自变量
  • -ENODEV表示无法识别的flash器件
描述: 向mailbox client发送命令以进行QSPI打开和QSPI片选。提供对quad SPI接口的专属访问。确定QSPI flash存储器大小。
表 17.  mailbox_client_flash_close
原型开发: Mailbox_client_flash_close(intel_mailbox_client* fd)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
返回: 如果成功则返回0,否则返回:
  • -EINVAL表示无效自变量
描述: 向mailbox client发送命令以关闭QSPI。停止对quad SPI接口的独占访问。
表 18.  mailbox_client_flash_get_info
原型开发: mailbox_client_flash_get_info(intel_mailbox_client* fd, flash_region** info, int* number_of_regions)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
  • info - 指向flash区域的指针
  • number_of_regions - 指向区域数量的指针
返回: 如果成功则返回0,否则返回:
  • -EINVAL表示无效自变量
  • -EIO表示可能的硬件问题
描述: 提供nCSO[0]的对应信息。

返回flash存储器偏移量、flash存储器大小、flash存储器件数量、扇区数量和扇区大小值。

表 19.  mailbox_client_flash_read
原型开发: mailbox_client_flash_read (intel_mailbox_client* fd, int offset, void* dest_addr, int length)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
  • offset - 读取flash存储器地址(未对齐访问)
  • dest_addr - 目标缓冲区(以字节大小为单位)
  • length - 读数据的大小(以字节大小为单位)
返回: 如果成功则返回0,否则返回:
  • -EINVAL表示无效自变量
描述: 从选定地址(以字节大小指定长度)读取数据。长度是一个非零值。
表 20.  mailbox_client_flash_erase_block
原型开发: Mailbox_client_flash_erase_block (intel_mailbox_client* fd, int block_offset)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
  • block_offset - 距被指定要擦除的flash扇区开头的地址偏移量
返回: 如果成功则返回0,否则返回:
  • -EINVAL表示无效自变量
  • -EIO表示擦除失败并且扇区可能受到保护
描述: 擦除单个flash扇区。
表 21.  mailbox_client_flash_write_block
原型开发: Mailbox_client_flash_write_block (intel_mailbox_client* fd, int block_offset, int data_offset, const void* data, int length)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
  • block_offset - 扇区地址。从指定要写入的flash扇区开始
  • data_offset - 写入到存储器的字节偏移(未对齐访问)
  • data - 要被写入的数据缓冲区(以字节大小为单位)
  • length - 写数据的大小(以字节大小为单位)
返回: 如果成功则返回0,否则返回:
  • -EINVAL表示无效自变量
描述: 将一个块或扇区的数据写入flash存储器。写数据的长度不能在相邻扇区之间分割。

该函数假设地址为空。您必须先将其擦除后才进行编程。

表 22.  mailbox_client_flash_write
原型开发: Mailbox_client_flash_write (intel_mailbox_client* fd, int offset, const void* src_addr, int length)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
  • offset - 写入flash存储器的flash地址(未对齐访问)
  • src_addr - 源缓冲区(以字节大小为单位)
  • length - 写数据的大小(以字节大小为单位)
返回:
如果成功则返回0,否则返回:
  • -EINVAL表示无效自变量
描述: 将数据编程到选定地址的flash存储器中。编程前根据需要自动擦除该块。
表 23.  mailbox_client_flash _erase_block
原型开发: mailbox_client_flash_erase_block(intel_mailbox_client* fd, int block_offset, int block_size)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
  • block_offset – 距被指定要擦除的flash扇区开头的地址偏移量
  • block_size – Quad SPI器件的扇区。输入以下值:
    • 4 Kb扇区大小为409632768表示
    • 32 KB扇区大小为32768
    • 64 KB扇区大小为65536
返回:
成功则返回0,否则返回:
  • EINVAL表示无效自变量
描述: 根据块的给定大小擦除单个flash存储器扇区。
表 24.  mailbox_client_flash _erase
原型开发: Mailbox_client_flash_erase(intel_mailbox_client* fd, int offset, int length)
包括: <altera_s10_mailbox_client_flash.h>
参数:
  • fd – 指向flash器件结构的指针
  • offset - 距被指定要擦除的flash扇区开头的地址偏移量
  • length – 擦除数据的大小是4096字节的倍数
返回:
成功则返回0,否则返回:
  • EINVAL表示无效自变量
描述: 根据给定的长度擦除flash
12 英特尔 Quartus Prime Pro Edition软件版本21.3之前,响应缓冲区的长度(resp_buf_len)被声明为指针而非整数。
13 自变量代表mailbox client操作需要的参数,不包括输入数据。
14 建议通过全系统重新配置实现错误代码恢复。
15 建议的错误代码恢复是复位Mailbox Client Intel® FPGA IP
16 如果响应缓冲区长度不足,HAL API会丢弃从Mailbox Client Intel® FPGA IP采集的数据并返回ENOBUFS。