登录社区云,与社区用户共同成长
邀请您加入社区
本文是Arm Ethos-U65学习笔记第五篇,聚焦于YOLOv8n目标检测示例的硬件验证阶段。文章详细介绍了将Vela编译生成的命令流导入芯片仿真环境执行推理验证的完整流程。整个过程不仅适用于芯片仿真验证,对裸机环境下的软件开发也具有参考价值,为嵌入式AI加速器部署提供了实用指导。
本文是 Arm Ethos‑U65 解析的第四篇。接下来的两篇将基于 U65 实现一个 YOLOv8n 目标检测示例,该示例通过导入 Vela 工具生成的命令流来触发 U65 NPU 执行推理运算,最终在芯片仿真验证环境中输出结果,示例同时对裸机环境下的软件开发也有一定参考价值。
本文介绍了NPU编程模型和实现流程,分为离线工具链(模型训练、量化、Vela编译生成命令流)和运行流程(Arm NN驱动执行)。详细说明了NPU的寄存器配置(BASE、BASE_POINT、ID和PMU区域)、命令流结构(32位cmd0和64位cmd1指令)及其分类(运算、配置、DMA等)。最后提及权重采用无损压缩算法(零值序列编码和Golomb-Rice编码),确保与tflite模型结果一致。整
Arm Ethos-U65是一款面向边缘计算的NPU IP核,专为低功耗机器学习推理设计,算力达1TOPS,支持8bit量化TensorFlow Lite模型。硬件架构包含控制单元、DMA控制器、MAC运算单元等模块,采用NHWC/NHCWB16数据格式,支持多种数据精度和卷积/深度卷积等算子。典型应用场景如恩智浦i.MX93处理器,需搭配Cortex-M处理器完成前后处理。该IP通过Vela编译
李述铜10课集合嵌入式,其中包含Linux+RTOS+汇编+编译器使用Linux:1.李述铜虚拟机设计:从0写8051虚拟机2.李述铜从0手写自己的Linux x86操作系统3.李述铜从0手写TCP-IP网络协议栈
本文为RTOS/嵌入式系统面试模拟卷,涵盖七个部分:单选题(20分)考察RTOS核心概念如优先级反转、内存分配等;多选题(15分)测试任务通信、低功耗设计等知识;判断题(10分)检验FreeRTOS调度规则等细节;简答题(25分)要求解释优先级反转、上下文切换等原理;代码分析题(15分)指出互斥锁使用问题;系统设计题(20分)需设计智能输液泵系统的任务划分与可靠性方案;编程题(15分)实现线程安全
本文记录了在UOS20系统上搭建ARM编译环境的过程。作者使用KVM虚拟机安装Debian10arm系统,详细描述了四个关键步骤:1)通过Jidgo脚本动态生成安装ISO;2)KVM虚拟机配置要点(包括输入设备、存储控制器和显示设置);3)安装过程中避免光盘更换问题的技巧;4)解决安装后无法启动的EFI引导问题。整个过程突出了ARM架构下系统安装的特殊性,特别是对硬件虚拟化配置的精确要求和EFI引
李述铜10课集合嵌入式,其中包含Linux+RTOS+汇编+编译器使用Linux:
摘要:本文介绍了嵌入式系统中UID(芯片唯一ID)和MD5算法的应用场景及实现方法。UID用于设备身份识别、加密授权等,STM32/ESP32等芯片均支持。MD5算法用于固件校验、数据签名,建议使用mbedtls等精简库实现。文中提供了STM32和ESP32读取UID并计算MD5哈希的具体代码示例,其中STM32通过寄存器地址读取96位UID,ESP32通过API获取64位UID。RDP协议在嵌入
寄存器 > Cache > RAM > ROM / 闪存;掉电不丢数据的是:ROM、闪存哈佛结构(数据 / 指令分开存,速度快)满减栈(满栈 + 减栈)专用寄存器核心考点:PC 指向下下条指令、LR 存函数返回地址、SP 指向栈顶、SPSR 是 CPSR 的备份Cache 提效率、MMU 做虚拟 / 物理地址映射电源 + 时钟让 ARM 跑起来,CPU 用寄存器和 Cache 快速算数据,RAM
嵌入式系统硬件主要由CPU、RAM、Flash/ROM、时钟和复位电路五大核心部件构成。其中,CPU作为核心执行单元,包含多种类型(MCU/MPU/DSP等),ARM处理器分为Cortex-A/R/M三大系列;存储器采用分层设计,从高速寄存器到低速Flash形成速度-成本平衡;SOC架构整合CPU与各类总线(AHB/APB)。系统采用冯诺伊曼或哈佛结构,通过流水线技术提升指令吞吐率,并支持7种工作
例如,编写一个UART驱动程序,需要配置UART的寄存器以实现正确的通信波特率、数据位、停止位等参数设置,并处理接收和发送中断,确保数据的准确传输。- 开发者需要熟悉所选RTOS的内核机制,如任务创建、删除、挂起和恢复,以及如何利用信号量、互斥锁等同步机制来实现任务间的通信和资源共享,以构建高效、稳定的嵌入式应用程序。总之,嵌入式开发的底层逻辑涵盖硬件基础、软件层面以及系统设计与集成等多个相互关联
UART(通用异步收发器)是一种全双工串行通信协议,通过TXD和RXD两根信号线实现数据传输。本文系统介绍了UART的工作原理、通信参数(波特率、数据位、校验位等)、电平标准(TTL/RS232/RS485)及数据校验方式(奇偶校验/CRC)。针对51单片机,详细讲解了串口初始化、波特率计算及收发编程方法,并简要介绍了工业常用的Modbus协议框架。这些知识为嵌入式系统开发中的串口通信应用提供了技
前面介绍完了FreeRTOS的一些核心功能,如任务切换,创建任务等等,并将煮包从ARM内核以及内存的视角的相关思考进行了分享,从这里开始介绍FreeRTOS的另外一个板块,就是任务间通信机制,如队列、信号量、互斥量、事件组这些,今天分享的是FreeRTOS队列的学习笔记;是关于标题中的互斥访问、休眠唤醒以及环形缓冲区都会在文章中一一介绍到~~~~关于队列,数据结构里面的描述就不做介绍啦~,最重要的
ARM内核分为A核、R核和M核三大类,分别针对不同应用场景。A核(Cortex-A)面向高性能计算,用于智能手机、服务器等设备;R核(Cortex-R)专注实时控制,应用于汽车电子、工业自动化;M核(Cortex-M)主打低功耗微控制器,适用于物联网、医疗设备等。三者差异体现在性能、功耗和实时性上,A核性能最强但功耗高,R核平衡实时性,M核功耗最低。各核广泛应用于Qualcomm、STMicroe
新增Allwinner H728/A523/A527/T527芯片Linux 6.18内核支持,GPU/VPU默认开启(Radxa Cubie A5E测试通过)ARM系统、飞牛播放器、百度网盘及QWRT应用重磅升级!:电影/电视剧/混合媒体库优先读取本地NFO/图片,新媒体库默认开启,可关闭设置。:无法上传NAS文件到“来自:飞牛私有云”默认文件夹问题。:切换至6.18.6内核,解决PHY易掉线/
摘要:本文探讨了Zynq SoC FPGA的诞生背景及其在嵌入式系统中的应用优势。传统方案中CPU与FPGA分立使用存在硬件复杂、通信带宽有限等问题。Zynq将ARM处理器与FPGA逻辑集成在同一芯片内,通过片内高速互连实现高效协同:ARM负责复杂控制与交互,FPGA处理高速并行任务。这种异构架构既简化了硬件设计,又提升了系统性能,为嵌入式开发提供了更优解决方案。理解Zynq的设计理念是学习ARM
围绕 Android patch、补丁、GMS、mainline 包四大高频技术概念,从技术本质、应用场景出发,清晰拆解四者核心区别。补丁是通用软件修复概念,适用于所有软件;Android patch 是补丁在 Android 系统的具体落地,仅针对系统层面的漏洞与功能优化;mainline 包是 Android 10 及以上的模块化更新载体,可独立更新系统特定组件,无需全量 OTA;GMS 是谷
嵌入式中间件(Embedded Middleware)是介于嵌入式操作系统和应用软件之间的软件层,主要目的是屏蔽底层硬件和操作系统的复杂性,为上层应用提供统一的开发接口,使开发者能够专注于业务逻辑,而无需直接处理底层细节。嵌入式中间件(Embedded Middleware)是指运行在嵌入式系统操作系统和应用程序之间的软件层,提供一组通用的服务和功能,简化应用开发,增强系统的模块化、可复用性和扩展
针对汽车焊接生产线柔性不足的问题,提出基于树莓派CM5工业主板和CAN总线的创新控制方案。该方案通过开源硬件替代传统PLC,利用CAN总线实现机器人同步控制,显著降低硬件成本(树莓派CM5成本低于高端PLC)和软件授权费用。系统采用Linux实时系统运行主控程序,通过CANopen协议实现微秒级同步精度,支持快速扩展新设备(只需挂接CAN节点)。方案突破传统控制系统的封闭性,实现生产数据透明化,便
2003年嵌入式Linux基金会成立,推动内核裁剪工具(如BusyBox)和跨平台编译器(如GCC for ARM)的成熟。Linux在嵌入式领域占据主导地位,约70%的嵌入式系统基于Linux内核。实时性补丁(如PREEMPT_RT)和轻量化发行版(如Buildroot)进一步强化了其在实时控制和资源受限场景下的优势。:Yocto项目提供从内核编译到OTA升级的全套工具,优于裸机开发的手动移植。
本文详细介绍了在ARM架构(aarch64)系统上安装MySQL 8.0的完整步骤。主要内容包括:1) 系统环境检查与依赖安装;2) 下载并解压ARM版MySQL二进制包;3) 创建mysql用户和授权目录;4) 配置环境变量和my.cnf文件;5) 设置systemd服务;6) 初始化数据库并修改root密码;7) 创建远程访问用户。特别针对ARM架构进行了优化配置,包含存储引擎、字符集、日志等
本文详细介绍了在Ubuntu 20.4和银河麒麟V10 SP1系统上部署Qt虚拟键盘(5.12.12和5.13.0版本)的完整流程。主要包括源代码获取、环境配置、编译安装等步骤,重点说明了中文/英文语言支持设置、权限管理及安装验证方法。文章还提供了Qt项目中集成虚拟键盘的具体实现方案,包括QML界面设计、环境变量设置和手动调用键盘的方法。针对银河麒麟系统,特别强调了依赖包安装和编译环境配置的注意事
g_Count++
你可以把栈想象成一个伸缩尺向下拨动尺子:就是在内存里占位。尺子划过的这段空间,现在属于当前函数,别人不能用。向上收回尺子:就是宣布这段内存“我用完了”。虽然内存里的数据还在(并没有被抹除),但因为 SP 已经移走了,下次调用别的函数时,SP 再次向下移动,就会直接覆盖掉旧数据。这就是为什么你理解的“自动释放”是如此高效。运行逻辑:RTOS 并不是让多个任务真正同时运行,而是让每个任务运行一小段时间
本文章适合有MCU和FreeRTOS的使用基础,进一步学习FreeRTOS内核与单片机底层。
软件定时器是 FreeRTOS 提供的一种功能模块,它允许用户在指定的时间间隔后执行特定的回调函数。与任务不同,软件定时器不具有独立的执行上下文,也不占用系统资源来维持运行状态。任务是 FreeRTOS 的核心调度单元,具有独立的栈空间和优先级,可以主动运行和被调度。而软件定时器仅在设定的时间点触发回调,依赖任务或其他机制来执行实际操作,更适合用于简单的定时需求,如周期性检查或延迟操作,相比任务更
本文对比分析了通用操作系统(GPOS)与实时操作系统(RTOS)的核心特性。GPOS采用虚拟内存、公平调度等机制实现多任务并发,强调系统整体效率;RTOS则通过固定优先级抢占式调度保证实时性。同时详细介绍了内存管理硬件单元:MPU提供轻量级内存保护,适用于资源受限系统;MMU实现虚拟内存管理,支持地址转换、内存隔离和高级特性(如写时复制)。文章阐明了不同操作系统架构的设计理念及适用场景,为系统选型
CMSIS 6是ARM推出的新一代嵌入式标准,相比CMSIS 5进行了架构重构和功能增强,主要特性包括:统一仓库管理、组件模块化、支持最新Cortex-M内核、移除旧编译器支持、新增CMSIS-Toolbox等核心组件。在RTOS方面,CMSIS-RTOS2提供统一API接口,支持进程隔离功能,兼容多种RTOS内核。文章详细介绍了在Keil MDK环境下创建基于CMSIS 6和RTOS2的工程配置
本文展示了通过重载new运算符和重写malloc函数,将STM32H743的堆内存分配到FMC的SDRAM区域(0xC0000000起始的256MiB空间)。通过异常处理测试,捕获异常对象地址0xC000D560并转换为16进制字符串输出,证实异常对象确实被创建在指定的堆内存区域。实验结果表明内存重定向方案成功实现,为嵌入式系统内存管理提供了参考方案。
ARM32与ARM64虽同属ARM家族,但在指令集、寄存器、内存模型和ABI上存在本质差异。嵌入式Linux开发者需在全软件生命周期中贯彻架构感知(Architecture-Aware)开发理念——从编译器选项的选择,到运行时行为的调优,每一步都影响着系统的性能、功耗与稳定性。未来,随着RISC-V等架构的兴起,多架构协同优化将成为常态。掌握ARM32/ARM64的优化精髓,不仅是应对当下需求的关
本文解析了ARM Cortex-M3内核中CONTROL寄存器和EXC_RETURN异常返回值的作用。CONTROL寄存器通过bit0和bit1控制处理器操作模式(特权级/用户级)和堆栈指针选择(MSP/PSP),与handler模式和线程模式组合形成三种运行状态。特权级可直接修改CONTROL寄存器,而用户级需通过异常服务例程修改。EXC_RETURN作为32位异常返回值,其低四位决定中断返回行
在嵌入式系统中,实现高效、低功耗的温度采集是许多项目的共性需求,而DS18B20正是满足这一需求的理想选择。它通过单根DQ引脚实现双向通信,依赖严格的时序控制完成复位、命令传输与数据读写。理解其初始化序列、跳过ROM指令、温度转换与暂存器读取等关键步骤,是确保稳定采集的前提。本文将结合协议规范与典型时序图,深入讲解DS18B20的工作流程,并提供可落地的编程思路。
vTaskSuspendAll() 是 FreeRTOS 中的一个重要函数,用于挂起任务调度器。
Protocol Buffers (Protobuf) 是 Google 开发的二进制序列化格式,适合嵌入式设备上的数据交换,因为它高效、紧凑。但在资源受限的嵌入式系统(如 ARM-based MCU)上,标准 Protobuf 库可能太大(内存占用高),推荐使用轻量版如 **nanopb**(C 语言实现,易移植到 C++)。如果你的设备资源充足(如运行 Linux 的嵌入式板,如 Raspbe
Protocol Buffers(简称 protobuf)是 Google 开发的一种语言无关、平台无关的数据序列化协议,广泛应用于网络通信和数据存储领域。在嵌入式系统中使用 protobuf 可以实现高效的数据交换,特别是在物联网设备、传感器网络和跨平台通信场景中。
搞懂STM32的内存映射机制和启动文件,是ARM开发落地的关键一步。它决定了程序如何加载、栈和堆怎么分配、中断向量表放哪——每处配置都直接影响嵌入式系统的稳定运行。结合实际启动流程讲解,帮你避开常见链接脚本和复位处理坑点,夯实ARM开发底层功底。
小端序(Little-Endian, LE):低位字节存于低地址0x12345678大端序(Big-Endian, BE):高位字节存于低地址0x12345678🌐现实分布小端主导:Intel/AMD x86/x64、绝大多数现代 ARM(可配置但默认小端)大端场景:网络协议(“网络字节序” = 大端)、Java 虚拟机、部分 DSP/嵌入式系统:平台为小端:平台为大端:当前平台的实际字节序(等
本文基于i.MX6ULL处理器,详细探讨了I2C总线通信优化与ADC模数转换应用方案。在I2C方面,提出多字节寄存器地址兼容处理方案,通过增强型传输结构体和通用传输函数提高代码复用性;针对LM75温度传感器,展示了精确的温度读取实现方法。在ADC方面,详细介绍了控制器配置、校准流程及光敏传感器数据采集实战,采用均值滤波算法提高数据稳定性。文章还提供了FPU启用优化、温度补偿等高级技巧,为构建稳定精
深入剖析STM32中USART通信机制,结合arm开发实际需求,详解配置流程与常见问题解决策略,提升嵌入式系统串口通信稳定性与效率,是arm开发过程中不可或缺的核心技术环节。
总体来说,Radxa"星睿O6"在 WOA 上的表现尚可,但仍存在驱动不全和性能问题。日常办公和网页浏览表现良好,但网卡驱动较为繁琐,且缺乏显卡驱动。我使用了两天,比起xiaomi 8和树莓派的WOA,体验好很多,浏览网页很流畅,VS开发也能没问题,算是能用的水平。期待后续官方的版本吧。希望能把网卡,WIFI,GPU和声卡驱动起来,这样基本就是一个很好的办公设备了。
arm-none-eabi-size 是 GNU 工具链的一部分,用于分析 ARM Cortex-M 等嵌入式系统可执行文件的内存占用情况。
本文介绍了SPI总线和I2C总线在嵌入式系统中的驱动实现。首先详细讲解了SPI总线的基本原理、时序模式以及IMX6ULL处理器的ECSPI控制器特性,并以ADXL345三轴加速度传感器为例,阐述了SPI模式3下的驱动开发过程。其次介绍了I2C总线的主从架构和应答机制,重点分析了GT9147电容触摸屏的I2C驱动实现,包括中断处理、坐标校准等关键技术。文章还提出了嵌入式串行总线开发的通用思想:总线与
思维转变:从"一切自己实现"到"充分利用框架"掌握特色:设备框架、组件化、Shell调试规范开发:遵循RT-Thread的设备和驱动模型利用生态:通过Env工具快速集成第三方组件RT-Thread的学习曲线比FreeRTOS稍陡,但一旦掌握其框架思想,开发效率会大幅提升。建议从一个小项目开始,逐步熟悉各个组件,最终能够构建复杂的物联网系统。
立即使用<charconv>需要最高性能的数值转换要求无异常(如嵌入式、实时系统)追求确定性行为(无 locale 干扰)希望避免堆分配处理结构化数据(JSON、CSV、二进制协议)需要locale 格式化(如货币、本地化数字)输入包含千位分隔符等非标准格式项目仍使用 C++14 或更早标准🚀行动建议:在你的下一个 C++17+ 项目中,将所有sprintfstoi替换为<charconv>——
本文介绍了Linux内核驱动开发的基础知识和环境搭建方法。首先讲解了驱动开发必备的C语言关键字(static、extern、const、volatile)和指针应用(函数指针、指针数组等)。其次分析了嵌入式系统内存模型,包括RAM、ROM等内存类型的特性和用途。然后详细阐述了Linux启动流程的三个阶段:Bootloader引导程序、Linux内核和根文件系统。最后提供了NFS挂载搭建驱动开发环境
摘要: 在将Qt项目从Windows移植到ARM系统时,出现Qt3DExtras模块缺失的编译错误。通过sudo apt install qt3d5-dev qt3d-dev-tools安装相关模块后,仍可能缺少Qt3DExtras。解决方法是手动从Windows的Qt安装目录复制Qt3DExtras和Qt3DQuickExtras文件夹到ARM系统的Qt路径(如/usr/include/aarc
freeRtos操作系统软件定时器源码级详解
在ARM开发实践中,RTC实时时钟驱动是嵌入式系统精准计时的关键环节。本文结合硬件寄存器配置、Linux内核设备模型与中断处理机制,手把手带你完成RTC驱动移植与校准,覆盖ARM开发常见坑点与调试技巧,助力稳定可靠的实时时钟功能落地。