- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 嵌入式秋招必备项目(四):Marvell88w8801WIFI模块
本文介绍了基于Marvell 88W8801 WiFi模块的驱动开发过程。作者通过多次重构实现了模块的SPI驱动架构,主要包括以下几个部分:SPI驱动子系统采用类似Zephyr的设计,支持同步和异步传输;WiFi模块通过SPI模拟SDIO协议传输数据;实现了CMD52/53指令封装、固件加载、WiFi功能封装等核心功能。文章重点分析了SPI驱动的实现细节,包括控制器结构体设计、同步/异步传输机制、互斥锁管理等内容,并指出可能存在因连接方式导致的速率限制问题。整体架构实现了从底层SPI传输到上层LWIP协议栈
2026-04-23 10:57:13
407
原创 嵌入式秋招必备项目(三):调试组件开发
本文介绍了嵌入式系统开发中常用的调试组件实现方案。主要内容包括:1)基于串口的Shell组件实现,详细讨论了串口驱动的两种接收方案(RXNE中断+环形缓冲区 vs 空闲中断+DMA)及其优缺点,并提供了Shell命令解析与执行的核心代码实现;2)多级日志打印系统,设计了5级日志等级(从NONE到DEBUG)及对应的宏定义实现,支持运行时动态调整日志级别;3)HardFault异常处理机制,通过分析栈指针和异常返回标志判断故障发生上下文,并保存完整寄存器状态用于后续调试。这些组件为嵌入式开发提供了高效的调试手
2026-04-22 10:46:12
439
原创 嵌入式秋招必备项目(二):Bootloader
Bootloader是单片机应用程序启动前运行的一段代码,主要功能包括:1)对应用程序进行校验防止FLASH坏块;2)支持远程OTA升级。其工作原理基于STM32启动过程,通过模拟SP和PC指针赋值实现跳转。编写时需注意:中断向量表切换、外设环境清理、关中断等关键点。项目采用AB分区设计,将1MB FLASH划分为BOOT、A区、B区、参数区和WIFI固件区,需特别注意FLASH的扇区操作特性,避免跨扇区操作导致数据损坏。
2026-04-21 15:56:30
458
原创 嵌入式秋招必备项目(一):简单介绍
这是一个嵌入式系统开发项目合集,包含多个功能模块的实现。主要亮点包括:基于OV2640的网络图传摄像头(LWIP+QT+RTOS+自定义通信协议);微秒级时间同步系统;SPI驱动的Marvell88W8801 WiFi模块(支持RTOS和LWIP);支持A/B分区和加密验签的Bootloader(串口/以太网升级);以及一个综合性的SD卡日志系统(LittleFS+Shell+状态机按键驱动)。项目采用模块化设计,涵盖了RTOS应用、协议栈移植、外设驱动开发等嵌入式系统核心技术,可作为嵌入式开发的参考案例。
2026-04-20 10:48:43
418
原创 RTT-SMART学习(五):中断管理
本文介绍了ARM架构下的中断管理机制。首先阐述了ARM的4个异常等级(EL0-EL3)和7种异常模式(SVC/ABORT/IRQ等),包括异常向量表的定义方式。重点分析了Cortex-A和Cortex-M处理中断嵌套的差异:Cortex-A需要手动保存上下文且不支持硬件中断嵌套,而Cortex-M通过自动保存寄存器状态支持中断嵌套。文章还涉及GIC中断控制器和RT-Thread Smart多核环境下的中断处理,展示了任务切换和系统调用的汇编实现细节,包括上下文保存、中断使能控制等关键操作。最后说明了系统调用
2026-04-18 16:26:50
410
原创 RTT-SMART学习(四):进程调度
进程调度与COW技术实现分析 本文档详细分析了轻量级进程(LWP)的数据结构设计和fork系统调用中写时复制(COW)技术的实现机制。struct rt_lwp结构体完整定义了进程的内存管理、组织结构、资源管理、线程控制等核心要素。fork系统调用通过五个关键步骤实现COW:1)分配PID和基础内存;2)初始化用户空间;3)复制地址空间时保留父进程VMA但不拷贝页表;4)切换地址空间寄存器;5)拷贝进程元数据。其中第三步通过取消MMF_PREFETCH标志避免提前分配物理页,实现了真正的写时复制语义。该设计
2026-04-18 11:30:50
392
原创 RTT-SMART学习(三): MMU与内存管理
本文介绍了内存管理与MMU的相关概念。主要内容包括:缓存机制(dCache与iCache)及其一致性问题,内存排序与乱序执行原理,内存屏障指令(ISB、DSB、DMB)的作用,以及MMU的功能与TLB缓存机制。重点分析了多核环境下的缓存一致性问题、DMA传输时的缓存同步方法,并探讨了ARM架构下的内存类型特性。最后提及了RT-Thread操作系统中的内存管理数据结构。
2026-04-15 10:48:56
760
原创 RTT-SMART学习 (二):启动过程
这篇文章分析了Cortex-A架构下RTT_SMART操作系统的启动过程,重点研究了链接脚本link_smart.lds的内存布局设计以及具体的启动过程
2026-04-14 20:23:45
431
原创 RTT-SMART学习(一):环境搭建
摘要:RT-Thread Smart多核环境搭建与实践 本文记录了在WSL2(Ubuntu18.04)环境下搭建RT-Thread Smart多核开发环境的过程。主要内容包括: 环境配置:使用VSCODE+Qemu搭建Cortex-A9双核模拟环境 工具链准备:下载musl交叉编译工具链并配置环境变量 源码编译:通过修改env_arm.sh和menuconfig配置SMP支持及CPU数量 Qemu脚本调整:配置多核启动参数(-smp cpus=2) VSCode调试环境:配置c_cpp_properties
2026-04-14 20:18:39
416
原创 FreeRTOS实现微秒级时间同步(基于1588V2)
本文介绍了基于FreeRTOS+STM32F4平台的PTPD同步协议(基于1588V2)的具体实现
2025-10-06 21:15:05
1182
原创 Linux内核:内存管理系统
介绍了Linux内存管理的关键概念和机制。从物理内存管理入手,讲解了memblock算法、页(Page)和区(Zone)的数据结构,以及伙伴系统和SLAB两种内存管理算法。在虚拟内存部分,重点分析了mm_struct和vm_area_struct结构体,解释了页表的作用和地址转换过程。文章还对比了kmalloc和vmalloc的区别,并简要说明了进程创建时PGD的分配过程。整体内容涵盖了Linux内存管理的核心知识点,适合嵌入式开发人员快速了解内存管理机制。
2025-09-19 15:51:23
707
原创 WevServer实现:异步日志写与HTTP连接
异步日志与HTTP连接实现摘要 本文介绍了Reactor核心模块的配套实现,主要包括异步日志系统和HTTP连接处理。 异步日志系统采用生产者-消费者模型,通过阻塞队列实现日志的异步写入。日志类包含专用写入线程、API封装接口,并采用单例模式确保唯一性。实现中注意了线程安全问题和日志文件的轮转管理。 HTTP连接处理部分重点关注socket通信的实现细节,包括正确处理客户端关闭连接时的情况。对于水平触发的epoll模式,需要及时关闭连接以避免持续触发事件。当前实现还存在改进空间,如处理大报文的分批读写等。 代
2025-06-21 15:27:40
988
原创 嵌入式八股RTOS与Linux---进程间的通信与同步篇
嵌入式八股关于进程的通信和同步 区分了RTOS和Linux进程通信IPC的常用手段,并汇总了面试可能问到的问题
2025-03-24 20:00:20
1268
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1