U-Boot

常见的 开源引导加载程序,用于嵌入式系统。它支持多种架构,包括 ARM、x86、PowerPC、RISC-V 等。U-Boot 提供了启动嵌入式系统的关键功能,如加载操作系统内核、引导文件系统、硬件初始化和系统调试。

b: Byte 8bit
w: Word 字 16bit(嵌入式)
I: 整型 interge 32bit

BSP

板级支持包(BSP):BSP 是嵌入式系统开发中的一个重要概念,指的是为特定的硬件平台或开发板提供的软件支持包。BSP 包含了针对特定硬件平台的驱动程序、操作系统适配层、外设控制库以及其他必要的软件组件。它的目的是为嵌入式开发人员提供一个统一的接口和工具集,简化针对特定硬件平台的软件开发过程。BSP 可以包括针对处理器、内存、外设(如串口、GPIO、SPI、I2C 等)、中断控制等的底层驱动程序和库。

PS and PL

PS : Processing System

PS端通常指的是处理系统部分,即嵌入式处理器或CPU。这个部分通常运行软件,执行高层次的应用程序代码和控制任务。
在Xilinx的Zynq系列FPGA中,PS端通常指的是内嵌的ARM Cortex-A9处理器。

FATFS文件系统库

f_mount函数

将逻辑驱动器(如 SD 卡、USB 闪存等)挂载到文件系统,通过它可以访问存储设备上的文件。
一般步骤是先将驱动器(sd等)初始化,再将驱动器挂载到文件系统

f_mkfs函数

对物理存储设备(如 SD 卡、eMMC、USB 闪存等)进行格式化操作。
它会在存储设备上创建一个新的 FAT 文件系统(如 FAT12、FAT16 或 FAT32),从而使该设备可以被文件系统管理,并用于读写文件操作。

emmc (embedded multiMediaCard)

通常焊接在主板上

一个嵌入式 Linux 系统可能会将 eMMC 分为多个分区:

Boot 分区:存储启动加载器和内核映像。
RootFS 分区:存储根文件系统。
Data 分区:用于用户数据存储。

lwip

在 lwIP 中,TCP 协议使用两种定时器来处理 TCP 连接的维护:

  1. 快速定时器 (tcp_fasttmr):
  • 触发频率:通常每 250 毫秒触发一次(在默认配置下)。
  • 主要职责:用于处理 TCP 的快速任务,比如:
  • ACK 确认包的发送。
  • 保持活动的连接管理。
  • 处理 TCP 重传计时器(当重传定时器超时时会触发重传操作)。
  • 调整滑动窗口,处理延迟确认(delayed ACK)。
  1. 慢速定时器 (tcp_slowtmr):
  • 触发频率:通常每 500 毫秒触发一次。
  • 主要职责:处理超时重传、连接超时检测和断开连接等操作。

tcp_recv(struct tcp_pcb *pcb, tcp_recv_fn recv)

提供了一种在应用程序中注册接收数据回调函数的机制。当 TCP 连接上有新数据到达时,系统会调用这个回调函数,以便用户代码可以处理接收到的数据。

  • pcb 代表 Protocol Control Block (协议控制块),是 lwIP 中用来维护一个 TCP 连接状态的数据结构。
  • tcp_recv_fn 指向接收回调函数的指针

struct tcp_pcb

  • struct tcp_pcb 是 lwIP(Lightweight IP)协议栈中的一个数据结构,用于表示一个 TCP 协议控制块(PCB,Protocol Control Block)。
    它是 lwIP 中管理 TCP 连接的核心数据结构,包含了 TCP 连接的状态、控制信息、缓冲区和回调函数等。
  • 每个 TCP 连接都有一个对应的 tcp_pcb 结构,用来存储连接的相关信息。这些信息包括连接的本地和远程地址、端口号、连接状态
    (如 LISTEN、ESTABLISHED、CLOSED 等),以及与 TCP 协议相关的控制参数(如滑动窗口、超时时间、重传计数等)。

xemacif_input

Xilinx 的以太网接口驱动程序中的一个函数,用于处理接收到的以太网数据包。该函数通常在基于 lwIP(Lightweight IP)协议栈的嵌入式系统中使用,
特别是在 Xilinx Zynq 和 Zynq Ultrascale+ 平台上,它负责将接收到的以太网数据包传递给上层协议栈进行处理。
该函数主要用于与 AXI Ethernet 或 Ethernet Lite 这样的硬件接口进行通信,通过 DMA 或中断的方式获取数据包,并将其交给 lwIP 处理。

nagle算法

一个lwip中的优化算法,用于减少网络传输中小包的数量,将小包数据包缓冲起来,等到一定数量后一起发送。关闭后可以让每个数据包尽快发送而不是等待。

tcp_arg(newpcb, (void *)(UINTPTR)conn)

为指定的 TCP 连接设置用户自定义的数据指针。
tcp_err() 注册错误处理回调函数,用于处理连接中的异常情况。

flash type

-flash-type
QSPI-X8 Dual Parallel 是一种 Quad-SPI(QSPI) 闪存模式,在嵌入式系统中经常用于提高存储器的读写速度和带宽.

QSPI-X8 Dual Parallel 模式结合了 Quad-SPI 和 Dual Parallel 的优点:

  1. Quad-SPI (X4):每个 QSPI 闪存使用 4 条数据线,并通过 I/O 线传输 4 位数据。
  2. Dual Parallel:两个 QSPI 闪存并行工作,组合成 8 位数据宽度(X8 模式)。
    所以每个时钟周期传输 8 位数据。

AXI (Advanced eXtensible Interface)

总线接口协议,广泛用于嵌入式系统和片上系统(SoC)中,特别是在FPGA设计中。AXI作为数据传输协议,负责处理不同设备间的通信,比如处理器、外设、存储器等硬件模块之间的数据传输。

DMA (Direct Memory Access)

  • 直接存储访问, 一种在嵌入式系统、计算机系统中用于提高数据传输效率的技术。它允许设备直接访问内存,而不需要经过 CPU 的参与,从而大幅减少 CPU 的工作负荷,特别是在数据传输任务频繁的系统中。

i2c