- 博客(85)
- 资源 (2)
- 收藏
- 关注
原创 ERPC 在 HPM6E80 MCU 中的应用方法
eRPC是HPM6E80双核MCU上实现跨核调用的高效远程过程调用框架,基于RPMsg-Lite传输层与共享内存通信。通过IDL定义接口,使用erpcgen生成代码,实现Core0(Client)与Core1(Server)间函数调用。应用需遵循共享内存、cache管理、中断及外设访问等双核协作规则,适用于轻量级跨核交互,不适用于大批量数据传输。例程基于HPM-SDK v1.6.0,配置参考matrix_multiply示例,具体引脚与外设需按HPM6E00EVK实际调整。
2026-11-01 23:32:33
182
原创 AADL语言语法学习笔记
AADL(架构分析与设计语言)是用于嵌入式实时系统建模的标准化语言,核心为组件-连接器范式与类型-实现分离。通过数据、线程、进程、系统等构件定义系统结构,结合属性集(如Timing、Deployment)实现时序、资源、安全等语义扩展。关键概念包括端口类型(DataPort/EventPort/EventDataPort)、调度协议(Periodic/Sporadic)、流规范(Source-Path-Sink)及模式(Mode)建模运行状态切换。应用中需注意属性单位、连接类型区分、部署绑定及调度性分析(如
2026-09-26 12:15:37
359
原创 基于HPM6E80 MCU双核运行开发方案
本方案基于HPM6E80双核RISC-V MCU,实现高效双核协同:Core0负责通信与系统管理,Core1专注实时运动控制。通过BOOTROM启动、固件拷贝至ILM、核间共享内存与中断通信,确保低延迟交互。采用分层通讯架构,结合无锁环形缓冲区与消息协议,支持命令、状态、故障等数据高效传递。代码统一固化为镜像,支持XIP与RAM模式灵活选择。内存规划合理,利用ILM/DLM保障实时性,共享内存配置非缓存避免一致性问题。开发流程清晰,适配先楫SDK与J-Link调试工具,适用于伺服驱动等高实时场景。
2026-09-26 10:22:59
333
原创 Zynq7020 + USB3320 + FreeRTOS USB接口与上位机通信方案
本方案基于Zynq7020与USB3320PHY,结合FreeRTOS实现高速USB通信。硬件上通过ULPI接口连接PHY,支持480Mbps高速传输;软件采用分层架构,利用FreeRTOS多任务机制实现中断处理、数据收发与协议解析。设计自定义应用层协议,含帧头、校验与命令码,保障通信可靠性。通过DMA、双缓冲等优化,实测Bulk传输速率≥20MB/s。方案涵盖驱动开发、协议编制与调试流程,适用于嵌入式设备与上位机高效稳定通信。
2026-09-25 17:23:40
372
原创 使用AADL语言开展复杂嵌入式系统架构设计的意义与优势
AADL(Architecture Analysis & Design Language,体系结构分析与设计语言)作为一种标准化的架构建模语言,为嵌入式系统开发提供了系统性的解决方案。本文将详细阐述使用AADL开展复杂嵌入式系统架构设计的意义、优势及其带来的实际价值。
2026-09-24 23:32:07
352
原创 AADL语言学习计划-考核试题
本学习计划基于SAE AS5506B/ISO/IEC/IEEE 26553标准,分四阶段系统培养嵌入式实时系统架构设计能力。第一阶段聚焦AADL基础语法,涵盖类型、实现、线程、端口等核心概念;第二阶段通过建模实践,完成伺服驱动器控制系统的软件架构、硬件平台、部署绑定与流规范建模;第三阶段开展调度性、端到端延迟及安全性(EMV2)分析,验证系统实时性与可靠性;第四阶段综合项目评审,强调模型工程适用性、分析深度与跨平台可移植性,全面支撑高安全等级系统开发。
2026-09-22 17:49:34
179
原创 AADL语言学习计划
本学习计划为期16周,旨在培养嵌入式实时系统工程师掌握AADL语言(SAEAS5506B/ISO/IEC/IEEE26553)的全生命周期建模与分析能力。通过四阶段学习:基础入门、核心建模、分析验证与项目实战,系统掌握AADL语法、软硬件建模、部署绑定、调度性与端到端延迟分析,以及基于EMV2的安全性建模。结合OSATE2工具链,完成伺服驱动器控制软件的架构设计与性能评估。考核采用过程性评价,涵盖语法测验、建模评审、分析报告与综合答辩,总分达标者可胜任高安全等级系统架构设计工作。
2026-09-22 17:32:29
249
原创 RTOS(实时操作系统)的任务优先级设置原则
摘要:嵌入式RTOS任务优先级设置是确保系统实时性的关键。FreeRTOS等RTOS中,数值越大优先级越高(默认),但需注意不同系统的差异。设置原则包括:按任务实时性需求分配(紧急任务最高)、避免优先级倒置/饥饿、合理分布优先级层次。实现时通过API静态/动态设置,并注意与中断优先级协同设计(中断优先级高于任务优先级)。合理的优先级分配是嵌入式系统稳定运行的基石,需结合具体RTOS规则和系统需求进行优化。
2026-04-09 08:42:31
471
原创 zynq 以太网连接不稳定问题解决方案
摘要:EBAZ4205矿板与上位机以太网通信时出现PING不稳定现象。经排查发现程序频繁进入PHY芯片速度配置函数configure_IEEE_phy_speed()。调试发现L784行延时不足导致通信异常,延长延时后问题解决。根本原因是IP101GA PHY芯片需要10ms以上复位时间,而原代码基于666MHz主频的100000周期延时不足。将延时周期延长至100000000后通信恢复正常。该问题是由于PHY速度配置后的复位时间设置不足所致。(147字)
2025-08-04 16:30:46
362
原创 FreeRTOS 中消息队列空间监控的全面指南
FreeRTOS消息队列监控方法总结:提供核心API(uxQueueMessagesWaiting获取当前消息数、uxQueueSpacesAvailable检查剩余空间)、完整监控方案(含队列使用分析函数和周期性监控任务)及高级技术(事件触发监控、水线跟踪和预警系统)。通过实时统计队列利用率、峰值记录和阈值预警,有效预防队列溢出,保障系统稳定性。还支持动态容量调整和负载均衡策略优化队列性能。
2025-07-17 09:45:40
931
原创 Zynq-7000 NEON指令集深度解析
文章摘要:本文详细解析了Zynq-7000系列处理器的NEON SIMD协处理器技术架构与优化方法。主要内容包括:1)NEON的128位SIMD架构和寄存器组织;2)六大类核心指令(加载/存储、算术运算、比较选择、位操作、数据重排、特殊数学函数)的详细说明与示例;3)针对Zynq-7000的专项优化策略,包括内存双缓冲、多核协同、FFT向量化实现和PL协同加速;4)性能优化关键指标与典型算法加速比数据。通过寄存器级编程和系统级优化,可显著提升媒体处理、矩阵运算等计算密集型任务的执行效率。
2025-07-16 08:09:06
1376
原创 Zynq处理器C代码编译生成NEON指令的完整指南
Zynq处理器NEON优化指南:基于ARM Cortex-A9架构,本文详细介绍了如何利用NEON SIMD指令集加速计算密集型任务。主要内容包括:编译器配置(-mcpu=cortex-a9、-mfpu=neon等关键参数)、自动向量化实现方法(循环步长、内存对齐)、手动Intrinsics优化技巧(加载/存储/算术运算指令),以及Zynq特有的DMA协同、PL加速器接口等高级优化技术。文中提供了矩阵乘法等具体示例,并涵盖性能调试、功耗监控和混合编程等实战内容,最后列出常见问题解决方案。
2025-07-15 16:29:38
751
原创 基于构件的嵌入式系统开发-01-软件篇
嵌入式系统采用构件化设计(CBSE)可显著提升模块化和复用性。核心原则包括功能构件封装(如传感器驱动)和接口契约式开发(统一通信接口)。架构采用四层模型:硬件抽象层(外设驱动)、功能构件层(算法/协议栈)、服务构件层(系统服务)和应用层(业务模块)。关键技术涉及构件描述语言、动态加载机制和消息总线。优化策略包括静态绑定(实时控制)和按需加载(内存受限设备)。典型应用如汽车ECU系统,通过构件复用提高开发效率。该模式适合需要模块化、可维护性和团队协作的嵌入式项目。
2025-07-09 11:46:26
802
原创 软考高级系统架构设计师备考计划(嵌入式工程师专版)
本文为嵌入式工程师量身定制了系统架构设计师5-6个月的备考计划。计划分为四个阶段:基础巩固(1.5个月)、核心突破(2个月)、专题强化(1.5个月)和冲刺模考(1个月),强调将嵌入式经验(如硬件架构、实时系统)转化为架构设计优势。提供了详细的学习内容、时间分配、实战案例及嵌入式关联强化方法,包括论文选题方向、答题模板和应试技巧。特别推荐嵌入式相关学习资料和工具,建议通过项目案例结合架构理论进行备考,最后给出进度跟踪表和考前准备指南。
2025-06-24 10:54:32
1288
原创 SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案
摘要:本文介绍嵌入式C环境中SQLite3存储音频/视频文件的优化方案。推荐采用文件路径存储方式,数据库仅保存元数据,实现高效管理。详细对比了BLOB直接存储与文件路径存储的优缺点,提供数据库表设计、文件系统布局及操作封装代码示例(包括文件添加和播放实现)。针对小文件场景给出BLOB分块存储方案,并分享嵌入式优化技巧如LZ4压缩和专用内存池管理。方案兼顾存储效率、访问速度和资源限制,适合嵌入式系统处理媒体文件存储需求。
2025-06-24 09:57:48
1116
原创 IAR Workspace 中 Debug 与 Release 配置的深度解析
IAR Workspace中Debug与Release配置存在本质差异:Debug配置侧重调试友好性(保留符号信息、禁用优化、启用断言),而Release配置追求性能优化(高级编译优化、移除调试符号)。实际开发中,开发者需熟练掌握两种配置的创建切换、差异化设置和条件编译技巧。高级应用包括差异化链接脚本设计、Release模式下的有限调试能力保留,以及通过性能对比分析优化效果。最佳实践建议严格区分两种配置的预处理器宏、警告级别和依赖库版本,并提供常见问题的诊断方法和优化问题解决方案。
2025-06-24 09:38:18
1691
原创 Zynq + FreeRTOS + YAFFS2 + SQLite3 集成指南
本文介绍了基于Zynq平台集成FreeRTOS、YAFFS2文件系统和SQLite3数据库的实现方案。系统架构包含硬件层(Zynq PS/PL)、操作系统(FreeRTOS)、文件系统(YAFFS2)、数据库(SQLite3)和应用层。详细说明了环境配置要求,包括64MB RAM和QSPI/SD存储,以及各组件版本信息。重点展示了YAFFS2的挂载与优化方法,SQLite3的交叉编译配置和数据库初始化过程,并提供了完整的传感器数据采集存储应用示例,包含数据表创建、事务处理和定期查询功能。该系统适用于嵌入式数
2025-06-23 21:06:50
1410
原创 SQLite3 在嵌入式系统中的应用指南
SQLite3在嵌入式系统中应用广泛,主要因其轻量级(库大小500-700KB)、零配置和无服务器架构等优势。集成步骤包括交叉编译、精简配置(可减少40%体积)和内存优化。C语言操作示例展示了数据库创建、事务处理(可提高10倍写入速度)和断电安全配置。优化技巧涵盖自定义内存管理、只读模式设置和备份机制。对于资源受限环境(如内存<512KB),可通过禁用非必要功能、调整缓存大小和使用预编译语句实现高效运行,是嵌入式数据存储的理想解决方案。
2025-06-23 20:56:54
614
原创 嵌入式链表操作原理详解
本文详解了嵌入式开发中双向循环链表的原理与实现。核心数据结构为独立的list_head节点,通过嵌入自定义结构体实现泛型管理。重点剖析了初始化、插入删除、遍历等操作宏,特别是list_entry通过指针偏移获取父结构的实现机制。该设计具有类型无关、内存高效、O(1)操作等优势,广泛应用于内核开发。文章还涉及安全删除、多链表嵌入等技巧,并强调删除安全性和内存屏障等注意事项。这种链表范式以其通用性和高效性成为系统编程的重要基础。
2025-06-04 16:11:25
1344
原创 yaffs2目录搜索上下文数据结构struct yaffsfs_dirsearchcontext yaffsfs_dsc[] 详细解析
YAFFS2文件系统的struct yaffsfs_dirsearchcontext yaffsfs_dsc[]是管理目录遍历状态的核心数据结构。该静态数组预分配固定数量(默认8个)的上下文对象,每个对象包含当前目录指针、链表遍历位置、缓存对象等字段,支持多任务并发目录操作。通过魔数校验机制确保内存安全,并优化链表遍历性能。这种设计在保证嵌入式系统实时性的同时,实现了高效、安全的目录管理。当出现目录遍历崩溃或资源不足时,可通过调整配置参数或增加内存检测工具进行排查优化。
2025-06-04 15:30:31
1311
原创 YAFFS2 文件系统中`yaffs2_scan_chunk()`函数详解
在 YAFFS2 文件系统中,`yaffs2_scan_chunk()` 是一个底层核心函数,通常由 `yaffs2_scan_backwards()` 或类似的高层扫描函数调用。其核心功能是 **扫描单个 NAND 闪存页(Chunk)**,解析页内存储的元数据(即 `yaffs_ext_tags`)和数据内容,并更新文件系统的内存结构。此函数在文件系统挂载、恢复或垃圾回收阶段起关键作用。
2025-05-14 11:10:02
1020
原创 AFFS2 的 `yaffs_ext_tags` 数据结构详解
yaffs_ext_tags` 是 YAFFS2 文件系统中用于 **管理 NAND 闪存页的元数据** 的核心结构体,存储在 NAND 的 OOB(Out-Of-Band)区域。它记录了数据块的归属、状态、校验信息等关键元数据,是 YAFFS2 实现 **快速挂载**、**数据恢复** 和 **垃圾回收** 的基础。
2025-05-13 11:10:29
556
原创 YAFFS2 的 `yaffs_obj` 数据结构详解
yaffs_obj 是 YAFFS2 文件系统中用于表示文件系统对象(如文件、目录、符号链接等)的核心数据结构。它管理对象的元数据、数据存储位置及与其他对象的关系。主要成员包括 obj_id(对象唯一标识符)、variant_type(对象类型)、parent(父目录对象指针)、name(对象名称)、yst_mode(文件模式)等。variant 联合体根据对象类型存储特定数据,如文件对象的数据块链表、目录对象的子对象哈希表等。yaffs_obj 还包含对象状态与缓存信息,如脏标志、延迟加载标志等。
2025-05-12 11:18:25
1142
原创 ZYNQ处理器在发热后功耗增加的原因分析及解决方案
Zynq处理器在发热后功耗增大的现象,主要源于漏电流增加、动态功耗上升、散热设计不足、电压调节模块效率下降以及FPGA逻辑资源利用率高等原因。为应对这一问题,需从硬件、固件、软件和FPGA设计多维度进行优化。硬件层面,可通过增强散热器、改进热界面材料、优化电源设计等措施降低功耗;固件与软件层面,采用动态电压频率调整、负载均衡、温度监控等策略;FPGA设计层面,则通过逻辑综合优化、存储器访问优化和时序约束放松来减少功耗。系统级验证与调试,如热仿真分析和长期老化测试,也是确保系统稳定运行的关键。
2025-05-12 11:08:18
1543
原创 YAFFS2 文件系统的 `yaffs_dev` 数据结构详解
yaffs_dev 是 YAFFS2 文件系统的核心数据结构,用于管理 NAND 闪存设备的状态,涵盖硬件参数、文件系统元数据、垃圾回收(GC)策略和检查点机制等。其关键成员包括设备基础信息(如 param、os_context)、NAND 参数配置(如 yaffs_param)、文件系统元数据管理(如 root_dir、block_info)、垃圾回收相关成员(如 gc_urgent_threshold、gc_block)以及检查点机制(如 checkpt_page_seq、checkpt_sum)。
2025-05-12 11:05:43
827
原创 在 YAFFS2 文件系统中,`yaffs_pread` 函数详解
在 YAFFS2 文件系统中,`yaffs_pread` 函数用于 **从文件的指定位置读取数据,且不改变文件当前的读写偏移**。
2025-05-08 14:07:18
458
原创 基于FREERTOS 的YAFFS2文件系统掉电处理
确保数据及时同步到闪存、处理掉电前的紧急操作、手动调用文件系统sync函数、硬件电容备份等。同时,还要注意在FreeRTOS中任务的优先级设置,确保紧急任务在掉电中断时优先执行。
2025-04-27 09:27:37
668
原创 在LwIP协议栈中,断言 `pcb->snd_queuelen >= pbuf_clen(next->p)` 失败原因分析
在LwIP协议栈中,断言 `pcb->snd_queuelen >= pbuf_clen(next->p)` 失败表明 **TCP发送队列长度(`snd_queuelen`)与数据块(`pbuf`)的实际长度不一致**。
2025-04-25 14:12:29
1017
原创 LWIP中两种重要的数据结构pbuf和pcb详细介绍
LWIP(Lightweight IP)是为嵌入式系统设计的轻量级TCP/IP协议栈。`pbuf`(Packet Buffer)和`PCB`(Protocol Control Block)是LwIP中两个核心数据结构,分别负责数据包管理和协议状态维护。
2025-04-25 09:03:19
1400
原创 freeRTOS中互斥信号量释放过程中断言 `configASSERT(pxTCB == pxCurrentPCB)` 在 `xTaskPriorityDisinherit()` 函数中失败问题分析
在 FreeRTOS 中,断言 `configASSERT(pxTCB == pxCurrentPCB)` 在 `xTaskPriorityDisinherit()` 函数中失败,表明 **传入的任务句柄(`pxMutexHolder`)并非当前正在运行的任务**。
2025-04-23 19:32:59
977
原创 freeRTOS中configMAX_API_CALL_INTERRUPT_PRIORITY宏配置说明
在 FreeRTOS 中,`configMAX_API_CALL_INTERRUPT_PRIORITY` 是一个关键配置宏,用于定义 **允许调用 FreeRTOS API 的中断的最高优先级**。
2025-04-23 14:21:02
1031
原创 在设计使用 FPC软排线传输 NAND Flash 信号时的关键设计要点
通过 阻抗控制、等长布线、电源完整性优化 和 机械加固 的综合设计,可确保 FPC 软排线在 NAND Flash 高速信号传输中的可靠性。
2025-04-21 14:21:50
1830
原创 YAFFS2 的页缓存机制原理及配置优化方法详解
YAFFS2(Yet Another Flash File System 2)通过其独特的 **页缓存机制** 和 **日志结构设计** 优化了 NAND 闪存的读写性能与寿命
2025-04-18 17:26:25
678
原创 yaffs_write_new_chunk()函数解析
`yaffs_write_new_chunk()` 是 YAFFS(Yet Another Flash File System)文件系统中用于将数据写入新物理块(chunk)的关键函数。
2025-04-18 17:02:35
642
原创 IAR Embedded Workbench 中使用 lwIP 的 `lwip_write` 函数时,程序偶尔跳转到 Semihosting 代码并卡死
函数时,程序偶尔跳转到 Semihosting 代码并卡死,通常是由于代码或库函数隐式依赖了 Semihosting 机制。通过禁用 Semihosting、重定向标准库函数、调整 lwIP 配置,可彻底解决。遵循上述步骤后,程序将不再依赖 Semihosting,从而避免卡死问题。在 IAR Embedded Workbench 中使用 lwIP 的。替换所有依赖 Semihosting 的标准库函数(如。
2025-04-18 09:25:35
775
原创 C语言中,枚举类型(`enum`)的占用空间
在C语言中,枚举类型(`enum`)的占用空间(即内存大小)取决于 **编译器的实现** 和 **枚举成员的值范围**。
2025-04-14 09:57:18
1665
原创 基于Xilinx Zynq-7000/UltraScale+平台的双千兆以太网硬件设计
该设计已通过10小时满负荷压力测试(iperf3双向传输),丢包率<0.001%。建议量产前进行EMC测试(如IEC 61000-4-2 ESD ≥8kV)。
2025-04-03 11:37:19
1719
2
原创 ARM 协处理器(Coprocessor)功能及用法详解
ARM 协处理器(Coprocessor)是 ARM 架构中用于扩展处理器功能的模块,通过专用指令(如 `MCR`、`MRC`)与主处理器(CPU)协同工作。协处理器通常用于实现系统控制、浮点运算、硬件加速等高级功能。
2025-04-03 09:36:22
1589
原创 ARM Cortex-A7 处理器支持的汇编指令集全面总结
ARM Cortex-A7 处理器支持的汇编指令集的全面总结,涵盖 ARMv7-A 架构的核心指令及其扩展功能。此总结覆盖了 Cortex-A7 的主要指令集,实际开发中需结合具体芯片手册和优化指南进行深入应用。
2025-04-03 09:23:04
1252
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅