登录社区云,与社区用户共同成长
邀请您加入社区
脏区信息 = LVGL 告诉驱动"这一帧只有这块矩形区域变了,只刷这里就行"的坐标范围。你的系统里这个信息被disp_flush的"整帧提交"策略覆盖了,所以每帧都变成全屏 1.8MB 软件 memcpy——这就是帧率只有 3~7fps 的直接原因。放弃多帧轮换的"每帧完整"要求,改成按area局部更新当前帧(需要帧池管理配合,较复杂);保留整帧提交,但用 GDMA/DMA2D 硬件搬运替代COP
本文系统梳理嵌入式实时操作系统(RTOS)的设计核心——在资源受限(KB RAM、MHz CPU、固定外设)与硬实时确定性要求的矛盾下,构建可预测的响应机制。通过“六轴框架”(调度模型、内核架构、内存模型、隔离强度、原语集、许可证)统一分析各类RTOS,揭示其设计本质:所有“反直觉”特性(如无进程、无GC、静态配置)皆源于对约束的妥协。结合决策树,指导开发者根据项目需求精准选型,实现从裸机到seL
本文深入解析操作系统内核架构的三大形态——宏内核、微内核与混合内核,揭示其本质是目标函数的权衡:性能(宏内核)与隔离性(微内核)。通过Liedtke最小性原理,阐明微内核并非越小越好,而是“小到能强制外部服务无法破坏隔离”。结合Mach的失败、L4的性能突破与seL4的形式化验证,论证微内核在安全关键领域(如QNX、seL4)的复兴。文章强调,内核选择关乎系统设计的根本,嵌入式开发者需据此匹配应用
在Linux内核开发中,延时操作是实现进程同步、设备驱动交互的核心技术之一。内核延时本质是让程序在特定条件满足前暂停执行,根据资源占用方式可分为忙等待与休眠等待两大类。本文详细解析两种延时方式的特点、适用场景及核心函数,重点阐述休眠等待的局限性,并深入讲解等待队列机制的原理、应用场景及完整编程实现,帮助开发者根据实际需求选择合适的延时方案,提升内核程序的效率与稳定性。内核中的延时,又称等待,指程序
在Linux内核开发中,中断机制是保障系统高效响应外设请求的核心,而顶半部与底半部机制,则是优化中断处理、平衡系统性能的关键手段,本文就介绍了这部分相关的内容。在深入探讨这一机制之前,我们先梳理几个内核中断相关的基础概念,为后续理解做好铺垫。结合上述内容,我们可以总结出三种底半部实现方法的适用场景,方便大家在实际开发中快速选择:tasklet基于软中断实现,工作队列基于进程实现,二者是实际开发中最
通过适配设备树,泰山派成功运行Linux 5.10内核,关键功能均通过验证。后续可针对具体应用场景进行深度优化,如配置WIFI,网卡,NPU,GPU等。
切换前保存CPU中的TSS段到原进程TSS(PS:TSS存在于X86架构中,而在ARM架构中没有像 x86 那样的 TSS(Task State Segment)机制,而是通过直接保存和恢复 CPU 寄存器的状态来实现上下文切换)这里只是一个简单的优先级时间片轮转调度算法,其他调度算法(先来先服务FCFS、短作业优先SJF、最短剩余时间优先SRTN、多级反馈队列等)均可在这里进行实现;选择下一个执
一文详细了解Linux内核中的同步与互斥的实现。
再次编译,编译完成以后就会在 arch/arm/boot 这个目录下生成一个叫做 zImage 的文件, zImage 就是我们要用的 Linux 镜像文件。SOC厂商也是从官网下载一个版本的Linux内核,根据自己的情况对这个版本的Linux内核进行修改,并且自己维护,一般推荐使用SOC厂商提供的Linux内核在根据自己的开发板进行编译和修改。官网提供各个版本的Linux内核,可以下载一个版本的
芯片:Exynos4412实验流程:通过sd卡启动uboot;将uboot装载到开发板的EMMC;通过tftp加载内核,nfs挂载根文件系统。
当有操作系统时,我们可以通过代码手动来存储R4-R11,从而保存一个完成的任务快照,那么没有操作系统裸机运行时,如果有中断触发,除了硬件自动保存的中断,R4-R11保存吗?如果不保存,那么中断服务函数如果改动了R4-R11中任意一个寄存器,运行现场不就破坏了吗?TaskA 的这些寄存器是它的“私有财产”,如果现在不把它们封存在 TaskA 的栈里,等一会儿切回 TaskA 时,它的 $R4-R11
本文系统剖析五大通用操作系统(Unix、Linux、Windows NT、Darwin/XNU、Android)的核心设计哲学与取舍,揭示其背后的目标函数:从Unix的“减法抽象”到Linux的“宏内核工程胜利”,再到Windows NT的“兼容性至上”与Darwin的“混合妥协”。重点阐明Linux CFS调度与RTOS优先级抢占的本质对立,指出“Android新不在内核在治理”,并强调嵌入式开
本文构建操作系统设计的“目标函数框架”,揭示OS本质为五件事:硬件抽象、资源复用、隔离、调度与权限模型,每项均有其必要性来源。通过对比GPOS与RTOS在五项上的权重差异,阐明二者非高低之分,而是目标函数基因级分野——前者优化吞吐与生态,后者追求实时性与确定性。核心论点:架构是目标函数的函数,不可兼得;选型关键在于问题与目标函数的匹配,而非“最好”。
本系列从操作系统本质出发,梳理其在资源约束下的设计演进,聚焦嵌入式实时系统(RTOS)与通用操作系统(GPOS)的根本分野——前者优化最坏情况可预测性,后者追求吞吐与公平。通过“目标函数”“六维权衡”“设计变量”等框架,构建选型与调优的统一坐标系,助力中高级工程师实现从“用”到“懂”的跃迁。
第一位数码管显示数字 → 快速切换,第二位显示数字 → 高速循环轮询。:对应 bit 位,相同为 0,相异为 1,常用于电平翻转。最小系统:能够让单片机正常运行工作,需要的最少元器件集合。周期:T = 1/(2.1*10^9)≈0.5ns。:对应 bit 位,有 1 则 1,全 0 才 0。:对应 bit 位,全 1 才 1,有 0 则 0。,高速轮询每一位数码管,人眼视觉上看到多位同时点亮。频率
本专栏结合STM32项目实践,介绍嵌入式软件AI编程的实战路径。本文介绍 VS Code与STM32扩展工具 的安装与检查。VS Code是开发环境的主要操作界面,STM32扩展工具则将STM32工具链集成到VS Code中,使其具备工程管理、编译构建、程序下载和在线调试等能力。
本专栏结合STM32项目实践,介绍嵌入式软件AI编程 的实战路径。本节介绍安装STM32Programmer。
《嵌入式系统AI编程》本节介绍STM32 VS Code开发环境中基础工具的安装,说明STM32CubeMX的获取、安装及配置要点。安装完成后需通过固件支持包管理器在线或离线安装目标芯片对应的HAL库,以保障工程代码生成。
本节将介绍Claude Code的安装与初始配置,重点完成CLI安装、账号登录、环境验证和模型服务配置。完成本节后,读者即可在本地终端中启动Claude Code,并为后续基本操作和VS Code集成做好准备。
本文介绍了中断嵌套的核心原理与实现方法。中断嵌套允许高优先级中断打断低优先级中断,其流程包括中断执行、触发、现场保护、处理及恢复五个阶段。Cortex-M架构通过硬件自动完成优先级管理和现场保护。文章详细阐述了中断优先级规则、STM32代码实现示例,并重点分析了中断嵌套导致的共享数据错乱问题及其解决方案,包括原子操作和选择性中断屏蔽两种保护策略。最后强调合理配置中断优先级和临界区保护的重要性,在保
本文深入解析了C语言结构体对齐的原理与应用。首先阐述了内存对齐的必要性,即通过保证数据起始地址为对齐值的整数倍来提升CPU访问效率。文章详细介绍了结构体对齐的核心规则,包括成员对齐、整体对齐和填充机制,并通过实例演示了结构体大小的计算方法。其次,重点讲解了通过调整成员顺序优化内存占用的技巧,特别强调了在嵌入式开发中的重要性。最后,针对跨平台通信场景,分析了不同架构下的对齐差异和端序问题,提供了三种
本文针对国产段码屏驱动芯片YL1621的datasheet阅读方法进行系统讲解。该芯片支持32SEG×4COM显示,集成蜂鸣、WDT、低功耗等功能,广泛应用于仪表设备。文章提出分阶段阅读策略:先确认版本和选型参数,再研究引脚定义和电气特性,最后掌握时序命令和封装设计。重点剖析了RAM映射、时钟模式、LCD偏置配置等核心功能,并给出硬件设计规范和软件开发流程。通过典型错误案例分析(如休眠失效、屏幕乱
本文总结了C语言在嵌入式开发中的核心优势: 高效性:C作为编译型语言生成纯机器码,执行效率高且内存占用极低,支持手动内存管理,适合资源受限的单片机。 硬件操控能力:通过指针直接访问寄存器,支持位操作和内嵌汇编,精准控制内存布局(如volatile、const)。 数据类型适配:结构体、联合体、枚举等特性完美匹配嵌入式场景(如协议帧、寄存器操作)。 跨平台生态:所有MCU厂商均提供C标准库,编译器工
LVGL是嵌入式领域最流行的开源轻量GUI库,最低64KB Flash、16KB RAM就能跑起来,C语言开发,支持按钮、图表、动画等丰富控件。本文从零教你跑通第一个Demo,再过渡到MVP分层架构,最后搞定图片资源的工程化处理,完整走通全流程
一文彻底读懂 Buildroot:从原理到实践的深度解析-CSDN博客
本文介绍了TriCore TC387嵌入式芯片的内存架构与开发基础。主要是在项目中遇到的一些问题,和学习的文档记录。
mcu
——mcu
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net