[原创]WCF技术剖析之十一:异步操作在WCF中的应用(上篇) 📅 发布时间:2026/7/14 2:36:22 👁️ 浏览次数: 友烁吹抗在这里会较为详细的阐述各种类型的存储器的特点及其之间的差别以及我们会在STM32单片机上面使用一种超级便捷的方式来管理我们所使用到的内存。理清 xxRAM、xxROM、xxFlash 的核心作用三种不同存储器RAM、ROM、Flash这三个总的概括就使用一个表格来说明吧表格如下内存 存储类型 核心功能 数据保持 单片机对应硬件 典型存储内容RAM 易失性 存放动态数据、临时变量 掉电丢失 DTCM/AXI SRAM / 普通 SRAM 全局变量、局部变量、栈 / 堆ROM概念 非易失性 只读存储功能 掉电不丢 由 Flash 实现 无独立硬件功能同 FlashFlash 非易失性 存放程序代码、常量 掉电不丢 片上 Flash一般0x08000000 起 代码段、const 常量、复位向量表四种 RAMDRAM、SRAM、SDRAM、MRAMDRAM(Dynamic RAM动态随机存取存储器)原理 利用电容存储电荷来表示数据0/1但电容会漏电需要定期 “刷新”每隔几毫秒充电一次才能保持数据。特点 结构简单一个晶体管 一个电容密度高相同体积下容量更大速度中等比 SRAM 慢功耗较高刷新需要耗电价格便宜单位容量成本低。应用 PC 的内存DDR4/DDR5 都是 DRAM 的改进型、智能手机的运行内存RAM等需要大容量临时存储的场景。SRAM(Static RAM静态随机存取存储器)原理 利用触发器由多个晶体管组成存储数据无需刷新只要供电就能保持数据。特点 速度极快访问时间纳秒级比 DRAM 快 10~100 倍结构复杂一个 bit 需要 6~8 个晶体管密度低容量小价格高单位容量成本是 DRAM 的几倍功耗中等无需刷新但晶体管本身耗电。应用 CPU 内部的高速缓存L1/L2/L3 Cache、STM32 片上 RAM如 DTCM、SRAM1~4 都是 SRAM等需要高速访问的场景。SDRAM(Synchronous DRAM同步动态随机存取存储器)原理 属于 DRAM 的一种工作时与 CPU 时钟同步数据读写按时钟节拍进行需要定期刷新。特点 速度比传统异步 DRAM 快容量大常见 128MB~2GB需外部控制器如 STM32 的 FMC 接口时序配置复杂。应用 嵌入式系统扩展大容量临时存储如 STM32 H7 系列外接 SDRAM 用于存放视频帧、大型缓存数据等。MRAM(Magnetoresistive RAM磁阻式随机存取存储器)原理 利用磁阻效应存储数据通过磁场变化改变电阻状态表示 0/1非易失性无需刷新。特点 速度接近 SRAM容量接近 DRAM非易失性掉电不丢数据功耗低无需刷新和电荷维持寿命长理论无限次擦写成本高目前还未大规模普及。应用 高端嵌入式系统如工业控制、汽车电子需要 “高速 非易失” 的场景替代部分 SRAM 和 Flash 的组合使用对比特性 DRAM SRAM SDRAM MRAM易失性 掉电丢失 掉电丢失 掉电丢失 掉电不丢失速度 中等(几十纳秒) 极快(几纳秒接近 CPU 速度) 比 DRAM 快(同步时钟优化) 接近 SRAM(几纳秒)大小 GB 级 MB 级 数百 MB~ 数 GB 目前可达 GB 级逐步提升功耗 较高 中等 略低于 DRAM 低成本 低 高 与 DRAM 接近 高(未大规模普及)应用 早期 PC 内存、低端嵌入式设备 CPU 缓存、STM32 片内 RAM 嵌入式扩展内存 工业控制、汽车电子两种 FlashNAND Flash、NOR FlashNOR Flash(或非闪存)原理 同样基于浮栅晶体管非易失性但内部结构与 NAND 不同。特点 随机访问速度快可直接 “按地址读取”类似 RAM支持 “代码在 Flash 中直接运行”XIPeXecute In Place密度低容量小价格高单位容量成本高擦写速度慢尤其大容量擦除。应用 嵌入式系统的 “程序存储器”如 STM32 片上 Flash 几乎都是 NOR Flash用于存储程序代码、启动程序路由器、交换机的固件存储等STM32 中片内 Flash如 0x08000000 起始地址的存储区域均为 NOR Flash支持程序直接在 Flash 中运行无需加载到 RAM。NAND Flash(与非闪存)原理 基于浮栅晶体管存储电荷通过电荷是否存在表示数据属于非易失性存储掉电不丢数据。特点 结构简单密度极高相同体积下容量远大于 NOR Flash读写速度 “页级快、随机慢”适合连续读写随机访问速度差价格低单位容量成本是 NOR Flash 的 1/5~1/10但有 “坏块” 和 “擦写次数限制”通常 10 万次以上。应用 大容量存储场景如 U 盘、SD 卡、固态硬盘SSD、嵌入式系统的 “硬盘”如存储固件、日志、用户数据STM32 中部分型号支持外接 NAND Flash如 F4/F7/H7 系列用于扩展大容量非易失性存储。对比特性 NOR Flash NAND Flash存储结构 并行结构地址线可直接寻址单个字节 串行 / 页式结构需按 “块 - 页” 层级寻址速度 随机访问快(10~100ns)支持按地址读单个字节连续读写速度慢 随机访问慢(需先找块、再找页)连续读写快页级操作几十 MB/s执行能力 支持 XIP(就地执行)程序可直接在 Flash 中运行无需加载到 RAM 不支持 XIP代码需先加载到 RAM 才能运行擦写特性 支持小粒度擦除(扇区级如 4KB/8KB)部分支持字节级修改 必须 “先擦除再写入”擦除粒度大(块级如 128KB/256KB)仅支持页级写入容量与密度 密度低单芯片容量小(通常 1MB~1GB) 密度高单芯片容量大(通常 8GB~1TB甚至更高)成本 单位容量成本高(约为 NAND 的 5~10 倍) 单位容量成本低性价比高引脚与接口 引脚多(需地址线、数据线分离)接口复杂 引脚少(地址 / 数据复用)接口简单(如 SPI/NAND、ONFI 接口)应用 小型嵌入式设备的程序存储、交换机 硬盘、手机、平板的内置存储EEPROM原理 通过电信号擦除和写入数据非易失性可字节级擦写无需按块擦除。特点 擦写方便支持单个字节修改无需整块擦除容量小通常 KB 级最大几 MB速度慢擦写时间毫秒级寿命有限通常 10 万次擦写。应用 存储少量需要频繁修改的非易失性数据如设备参数波特率、地址、校准数据传感器零点、用户配置等STM32 中部分型号内置 EEPROM如 F1/F4 系列或通过 “Flash 模拟 EEPROM” 功能实现类似效果如 H7 系列无独立 EEPROM需用 Flash 特定区域模拟。H7 系列内存详解参考文章[ST] STM32H7的TCM,SRAM等五块内存基础知识H7的内部内存分为了ITCMDTCMAXI SRAMSRAM1SRAM2SRAM3SRAM4和备份SRAM。下图中分为了三个域D1 DomainD2 Domain和D3 Domain。TCM 区(Tightly-Coupled Memory 紧密耦合内存)ITCM用于运行指令也就是程序代码。DTCM用于数据存取特点是跟内核速度一样而片上RAM的速度基本都达不到这个速度所以有降频处理。AXI SRAM 区位于D1域数据带宽是64bit挂在A线上。除了D3域中的BDMB主控不能访问其它都可以访问此RAM区。AXI SRAM地址0x2400 0000。速度200MHz。大小512KB。用途用途不限可以用于用户应用数据存储或者LCD显存。SRAM1SRAM2和SRAM3 区位于D2域数据带宽是32bit挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM其它都可以访问这几个RAM区。SRAM1地址0x3000 0000。速度200MHz。大小128KB。用途用途不限可用于D2域中的DMA缓冲也可以当D1域断电后用于运行程序代码。SRAM2地址0x3002 0000。速度200MHz。大小128KB。用途用途不限可用于D2域中的DMA缓冲也可以用于用户数据存取。SRAM3地址0x3004 0000。速度200MHz。大小32KB。用途用途不限主要用于以太网和USB的缓冲。SRAM4 区位于D3域数据带宽是32bit挂在AHB总线上大部分主控都能访这块SRAM区。地址0x3800 0000。速度200MHz。大小64KB。用途用途不限可以用于D3域中的DMA缓冲也可以当D1和D2域进入DStandby待机方式后继续保存用户数据。Backup SRAM 区备份RAM区位于D3域数据带宽是32bit挂在AHB总线上大部分主控都能访问这块SRAM区。SRAM4地址0x3880 0000。速度200MHz。大小4KB。用途用途不限主要用于系统进入低功耗模式后继续保存数据Vbat引脚外接电池。内存时钟问题AXI SRAMSRAM4ITCM和DTCM可以在上电后直接使用。而SRAM1SRAM2SRAM3是需要使能的但是实际测试发现不使能也可以正常使用。不过建议用到时候开启下时钟防止意想不到的问题发生。RAM 的 DMA 问题Bus Master总线主控端和Bus Slave设备端的控制互联加粗字体是64位总线ITCMDTCMFlash AFlashAXI SRAMFMC等普通字体是32位总线。访问通路每个小方块里面的字符任何有数字的表示有访问通路。短横杠“-”表示不可访问。有灰色阴影的表示有实用价值的访问通路。表格中具体数值所代表的含义Ddirect,1via AXI bus matrix,2via AHB bus matrix in D2,3via AHB bus matrix in D3,4via AHB/APB bridge in D1,5via AHB/APB bridge in D2,6via AHB/APB bridge in D3,7via AHBS bus of Cortex-M7,多个数值组合 互连路径以数字的顺序经过多个矩阵或/和桥。总线访问类型普通字体表示32位总线。斜体表示32位总线主机端/ 64位总线从机端。粗体表示64位总线。超便捷的内存区域管理方法参考文章【STM32H7教程】第26章 STM32H7的TCMSRAM等五块内存的超方便使用方式一般的内存管理方式不太注意的话一般都是在target dialog这里简单管理内存。这种情况下所有管理工作都是编译来处理的。分散加载式管理内存区域使用分散加载的方式来管理内存会超级灵活想用哪一块就用哪一块。下面就是超级教程在魔术棒的OutPut配置中会生成一个相同名字的 .sct 文件这个就是这个方法的关键找到它。第一步取消勾选Use Memiry Layout from Target Dialog。点击...找到与输出文件同名的 .sct 文件假如你这里没有显示的话。点击Edit打开这个 .sct 文件。第二步使用 STM32H7 系列的可以直接将以下程序复制进去。其他系列的单片机则需要稍加修改。假如不同你需要修改的有内存(ROM 或者 RAM)首地址内存大小点击查看代码注意STM32H743系列的单片机的RAM都是992KB的故AXI SRAM区域最终计算出来只有288KB并非512KB。可以看出RW区也是要存储到ROM/Flash里面的在执行映像之前必须将已初始化的 RW 数据从 ROM 中复制到 RAM 中的执行地址并创建ZI Section初始化为0的变量区。上面的程序注释中已经详细说明了这一段程序的作用其中的加载区域就是程序在Flash中的实际存储而运行区域是芯片上电后的运行状态通过下面的框图可以有一个感性的认识博客导航
从汇编入手,探究泛型的性能问题 认烈钨质二次封装组件需要考虑的3个重要的问题 1,props 如何进行传递 2,插槽如何穿透 3,暴露实例以及实例中的方法 在vue3中的$attrs的变化 vue3中$listeners已被删除合并到$attrs中。 vue3的$attrs现在包括class和style属性。 vue2中不包含c… 2026/7/12 11:53:01
开发通知短信接口方案:从零开始构建企业内部短信API发送服务的技术路径 在企业级开发中,开发通知短信接口是实现系统消息触达、用户通知的核心技术环节,多数开发者在对接短信API时会遇到参数校验失败、状态码解析错误、接口调用规范不清晰等问题。本文将从接口对接原理、常见错误排查、实战开发实现三个维度,拆解企… 2026/7/12 4:56:08
北京俱乐部第三次技术活动 墙谅穆于3.2 REINFORCE: 最早的策略梯度算法 在完成策略梯度定理的推导后,我们获得了梯度的理论形式: 然而,这个期望本身仍然无法直接计算。我们面临的根本问题是:轨迹空间是高维甚至连续无限的,无法枚举所有可能的 组合。策略优化的实践核心在于用有限采样近似期望:与环境交互… 2026/7/13 4:37:43
AI+IoT城市噪音治理:声学传感网络+AI降噪+智能执法 AIIoT城市噪音治理:声学传感网络AI降噪智能执法 引言 世界卫生组织将环境噪音列为仅次于空气污染的第二大健康杀手。长期暴露在65分贝以上的噪音中,心血管疾病风险增加20%,听力损伤风险增加30%。城市噪音投诉占环保投诉总量的40%以上… 2026/7/14 19:17:20
零基础学pcie--Bus / Device / Function 编号规则(PCIe 的“身份证”) 目录 四、Bus / Device / Function 编号规则(PCIe 的“身份证”) 1️⃣ 为什么需要这么复杂的编号? 2️⃣ Bus Number(总线号) 3️⃣ Device Number(设备号) 4️⃣ Function Number(功能号) 5️⃣ 一个真实的例子拆解 6️⃣ 配置空间访问的本质 7️⃣ 为什么 D… 2026/7/14 19:17:19
【信息科学与工程学】信息科学领域——第一百三十五篇 射频/天线09 📶 WiFi CSI 射频计算(A1127-A1141) 编号 类型 领域 子领域 问题 问题的数学分析及数值分析 参数列表及数值范围/各类常量 关联知识 A1127 物理问题 射频/WiFi 6GHz WiFi7 320MHz CSI 子载波处理 FEM-DEM-BEM-IEM分析WiFi7 6GHz(5925-6425MHz,BW=320MHz)C… 2026/7/14 19:15:19
C++17多态内存资源(PMR)实战:原理、性能优化与工程应用 1. 项目概述:为什么我们需要多态内存资源? 如果你写过几年C,尤其是在处理高性能网络服务、游戏引擎或者嵌入式系统时,肯定不止一次为内存管理头疼过。标准库的容器,比如 std::vector 或者 std::string ,… 2026/7/14 19:15:19
工业物联网设备电源管理方案:MAX77654与STM32L496ZG实战 1. 项目背景与核心挑战在工业物联网和便携式设备设计中,电源管理系统往往决定着产品的成败。我最近为一个环境监测终端设计的电源方案,就遇到了这样的挑战:设备需要在-40℃~85℃环境下稳定工作,同时要求单次充电续航达到72小时以上… 2026/7/14 19:13:19
TI DRA77P SoC电气特性与电源时序设计实战解析 1. 项目概述与核心价值在嵌入式硬件设计领域,尤其是汽车电子和工业控制这类对可靠性要求极高的场景,一颗复杂的SoC(片上系统)能否稳定工作,一半取决于软件,另一半则牢牢掌握在硬件工程师手中。这个“另一半… 2026/7/14 19:13:19
XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南 1. 项目概述:当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”,我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏,却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am… 2026/7/14 0:05:14
2026普通文员学数据分析的价值 一、2026年普通文员学习数据分析的必要性随着数字化转型加速,数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力,并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公:通过数据分析工具&a… 2026/7/14 0:05:14
2026从计划员到主管,生产管理者学数据分析有用吗? 一、生产管理领域的职业发展路径 从计划员到主管的角色转变,是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作,而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&… 2026/7/14 0:05:14
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41