
嵌入式
文章平均质量分 94
akluse
失业老程序员求打赏买包子
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)12. Zephyr RTOS Wi-Fi 应用
Wi-Fi 帧主要分为三种类型:管理帧控制帧数据帧管理帧数据包用于发现接入点(AP)并加入基本服务集(BSS),包括信标帧、探测请求与响应帧、认证与解除认证帧、关联与解除关联帧等。控制帧数据包用于确认成功传输并预留无线介质。控制帧数据包用于传递管理和数据信息。常见的控制帧子类型包括确认帧(ACK)、请求发送(RTS)和清除发送(CTS)。数据帧数据包包含实际数据,是唯一会从无线网络转发到有线网络的数据包。数据帧类型包括数据帧和空功能数据包。原创 2025-07-02 11:45:08 · 664 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)11. 理解并在应用开发中使用 Zephyr ZBus
ZBus 子系统提供了针对通道和观察者的可迭代分段实现,并支持 API 函数如 zbus_iterate_over_channels()、zbus_iterate_over_channels_with_user_data()、zbus_iterate_over_observers() 以及 zbus_iterate_over_observers_with_user_data()。此函数打印通道信息,从通道名称和消息大小开始,接着是字符串 "观察者:",后跟一个后递增的计数值,以及该通道上的观察者。原创 2025-07-02 11:28:01 · 871 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)10. 使用 Renode 构建 Zephyr RTOS 应用程序
在物联网嵌入式应用开发中,Zephyr RTOS 的使用正快速增长,这些应用涉及组成网络的多个设备,可能包含有线和无线通信链路。此时,可以在日志窗口中查看大量关于模拟环境运行的信息,提取额外数据,并通过 Monitor(或 Wireshark 等插件)操作正在运行的模拟环境 —— 同时还能与模拟机器的外部接口(如 UART 或以太网控制器)进行交互。要在 Renode 中运行应用程序代码,需要先启动 renode,然后在监控窗口中输入单独的命令,或者调用包含多个命令的 renode 脚本文件。原创 2025-07-02 10:58:22 · 806 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)9. 全面理解设备树及其在 SPI 和 I2C 中的具体应用
当开发涉及定制板卡的应用,或向现有板卡添加 I2C、SPI 等外设时,需要理解 Zephyr 设备树及其在应用开发中的使用方法。Zephyr 中使用的设备树概念源自 Linux 系统,其主要目的是提供一种描述非可探测硬件的方法,即通过 I2C、SPI、UART 和 GPIO 等非可探测协议连接的硬件。控制硬件的内核需要了解连接的设备信息以及如何与这些接入设备进行通信。在引入设备树方法之前,此类设备的信息必须硬编码在源代码中。设备树方法本身起源于 Sun Microsystems 的 OpenBoot 框架原创 2025-07-02 10:28:06 · 978 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)8. Zephyr RTOS 与以太网、Wi-Fi 及 TCP/IP
支持的 BSD 函数包括:socket()、close()、recv()、recvfrom()、send()、sendto()、connect()、bind()、listen()、accept()、fcntl()(用于设置非阻塞模式)、getsockopt()、setsockopt()、poll()、select()、getaddrinfo()和 getnameinfo()。向开发板烧录代码也可能存在问题。可以通过调用 net_if_up() 开启网络接口 ,调用 net_if_down() 关闭接口。原创 2025-07-02 09:07:43 · 672 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)7. 开发 Zephyr BLE 应用程序
Zephyr RTOS 作为开发物联网(IoT)应用的实时操作系统正变得日益重要,不仅适用于智能传感器,也适用于边缘计算设备。在物联网生态系统中,BLE(蓝牙低功耗)的重要性在于其作为短距离无线通信链路,例如将可穿戴传感器连接到移动设备,以及用于无线连接的计算机外设,如 BLE 鼠标和 BLE 键盘 。因此,BLE 支持及其 API 是 Zephyr 框架中非常重要的组成部分。本章将首先介绍 BLE(蓝牙低功耗)的概念、术语和编程,并概述 BLE 4 与较新的 BLE 5 标准之间的差异。接下来将探讨 No原创 2025-07-02 08:44:22 · 979 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)6. 在 Zephyr 应用中使用文件系统
具体的负错误码取决于所使用的文件系统后端。如图 6-4 所示。flags 可以是 0 或以下一个或多个标志位的二进制组合:FS_O_READ 表示以读方式打开,FS_O_WRITE 表示以写方式打开,FS_O_RDWR 表示以读写方式打开(即 FS_O_READ | FS_O_WRITE),FS_O_CREATE 表示当文件不存在时创建文件,FS_O_APPEND 表示每次写入前移动到文件末尾。应用程序需确保构建时安装正确的库和驱动程序,但对应用开发者而言,使用的是标准 API,底层物理介质的细节被隐藏。原创 2025-07-02 08:06:26 · 777 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)5. 消息队列、管道、邮箱与工作队列
此外,通过邮箱交换的消息采用非匿名方式处理,参与交换的线程知道对方线程的身份。通过多个示例分析,我们探讨了可用于生产者和消费者(发送方与接收方)之间同步的编程范式,必要时实现数据临时存储的模式,以及将数据信息从中断处理程序传递到消费线程的方法。例如,当线程 A 专门向线程 B 发送消息时,如果线程 B 表明它愿意接收来自线程 A 的消息或愿意接收任何消息,那么线程 B 就可以接收该消息。即使线程 C 愿意接收来自线程 A 的消息或愿意接收来自任何线程的消息,线程 C 也无法接收专门发送给线程 B 的消息。原创 2025-07-02 08:05:51 · 664 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)4. Zephyr RTOS 多线程
构建 Zephyr 应用程序需要对 Zephyr 构建系统有基本了解。这包括能够理解示例项目中使用的 Kconfig 和设备树文件,然后以这些文件作为自己项目的起点。大多数情况下,项目特定文件相对简单,并建立在 Zephyr 源代码树各部分的 Kconfig 文件和设备树文件基础上。使用 west 工具可以隐藏大部分底层复杂性。Zephyr 项目不仅提供操作系统内核,还包含用于开发、发布和维护固件应用程序的工具。这些工具包括 CMake、带有编译器的工具链、烧录和调试工具,以及包含内核本身、协议栈、设备驱动原创 2025-07-02 08:05:21 · 703 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)3. Zephyr RTOS 应用开发环境与 Zephyr 应用程序构建原理
在尝试理解构建 Zephyr 应用程序时 CMake 的用法时,一个好的方法是学习如何"阅读和理解"CMake 文件,然后逐步探索 Zephyr 的各种 CMake 文件。从应用程序实时性能的角度来看,需要记住的是 printk() 的输出不会被延迟,而是立即发送到控制台,没有任何互斥或缓冲机制,并且 printk() 在消息的所有字节发送完毕之前不会返回。不用担心,不需要理解和使用这些工具。最后,在介绍 Zephyr SDK 支持的嵌入式处理器时,若不提及基于 RISC-V 处理器的系统将是不完整的。原创 2025-07-02 08:04:52 · 609 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)2. RTOS 基础回顾
数字传感器 ,如温度传感器、压力传感器和加速度计端口扩展器数模转换器早期嵌入式系统中使用的微控制器通常是 8 位或 16 位微控制器,例如 AVR(现由 Microchip 所有,广泛用于早期 Arduino 设备)、Silabs 8051 处理器架构控制器以及 Microchip PIC16 和 PIC18 系列器件。这些设备属于 SoC(片上系统)器件 ,不仅包含处理器内核,还集成了存储器以及定时器、通用 IO(GPIO)、I2C、SPI、ADC(模数转换)和 PWM(脉宽调制) 等外设。这些器件指令集原创 2025-07-02 08:04:13 · 997 阅读 · 0 评论 -
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)1. 简介
由于 Zephyr 不依附于任何商业组织的独立性特质,以及其开发与采用完全基于开源 GitHub 仓库的开放模式,相较于亚马逊支持的 FreeRTOS 和微软主导的 Azure RTOS(ThreadX),Zephyr 吸引了更多开发者贡献。采用实时操作系统(RTOS)开发嵌入式应用的核心动机在于,它提供了一个框架及其相关抽象层和 API 接口,这些技术支持开发能够处理构成应用程序各项任务的时间、优先级和可抢占性的代码,从而满足任务时限要求并使系统表现出确定性行为。协议支持多路复用的情况很常见。原创 2025-07-01 12:57:29 · 940 阅读 · 0 评论