关于嵌入式的一些概念
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 连接的维护:
- 快速定时器 (tcp_fasttmr):
- 触发频率:通常每 250 毫秒触发一次(在默认配置下)。
- 主要职责:用于处理 TCP 的快速任务,比如:
- ACK 确认包的发送。
- 保持活动的连接管理。
- 处理 TCP 重传计时器(当重传定时器超时时会触发重传操作)。
- 调整滑动窗口,处理延迟确认(delayed ACK)。
- 慢速定时器 (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 的优点:
- Quad-SPI (X4):每个 QSPI 闪存使用 4 条数据线,并通过 I/O 线传输 4 位数据。
- Dual Parallel:两个 QSPI 闪存并行工作,组合成 8 位数据宽度(X8 模式)。
所以每个时钟周期传输 8 位数据。
AXI (Advanced eXtensible Interface)
总线接口协议,广泛用于嵌入式系统和片上系统(SoC)中,特别是在FPGA设计中。AXI作为数据传输协议,负责处理不同设备间的通信,比如处理器、外设、存储器等硬件模块之间的数据传输。
DMA (Direct Memory Access)
- 直接存储访问, 一种在嵌入式系统、计算机系统中用于提高数据传输效率的技术。它允许设备直接访问内存,而不需要经过 CPU 的参与,从而大幅减少 CPU 的工作负荷,特别是在数据传输任务频繁的系统中。