96SEO 2026-02-20 07:41 0
。

内存主要分为随机存储器#xff08;RAM#xff09;,只读存储器#xff08;ROM#xff09;以及高速缓存#xff08;Cache#xff09;。
仅仅雷达的原…内存Memory是计算机中最重要的部件之一计算机运时的程序以及数据都依赖它进行存储。
内存主要分为随机存储器RAM,只读存储器ROM以及高速缓存Cache。
仅仅雷达的原始回波数据Radar
cube就可能达MByte级别的数据体量这对MCU的内存来说尺寸很大。
本篇文章主要介绍了在雷达嵌入式编程中会遇到的MPU(Memory
Unit)、Cache以及不同数据格式在内存中的存储格式和雷达基带涉及的加速核与内存区的映射。
总而言之与内存相关的嵌入式编程以及优化方式会在本文中对其进行说明并从内存优化的角度对可以应用的诸如同址复用等思路进行说明。
MPUCacheCache一致性问题一般发生在多核处理器上单核处理器基本不用考虑这个问题。
现在的处理器一般都有两级L1cacheL2cache甚至三级缓存当核0读写外部存储器如DDR内的数据时会将数据保存在L2cache和L1Dcache中。
后续如果该数据一直在cache中那么对该数据的读写都会直接操作cache内的数据而不会去修改DDR中的数据。
以此提高CPU的读写速度。
但是这可能导致其他主机如其他核读取DDR的数据与核0中cache中的数据不一致。
例如核0已经将位于DDR中的变量num从11修改为56了但是其他核读取num时依然有可能读取到的是11。
最新的num数据56可能依旧在核0的cache中没有写回到DDR中。
一般来说多级缓存之间的一致性不需要我们来维护我们主要维护不同核之间的数据一致。
CacheP_TYPE_ALL);上面的代码为将对应地址空间执行了Writeback-Invalidate操作其的作用是将Cache写回到DDR中之后Cache中的数据将会无效。
这种操作多用于读取核间共享的存储区域之前。
除了Writeback-Invalidate操作还有Invalidate将CACHE中的数据视为无效数据以及Writeback将CACHE中的数据写回存储器中如DDR等操作。
MPU定义了存储器不同地址空间的属性和存储器的访问权限。
MPU不会提升嵌入式应用的性能而是用于系统中问题的检测(比如试图访问非法或者不允许的存储器位置所导致的应用错误)。
如果检测到有错误则会触发HardFault异常。
实际上许多微控制器用不到MPU但MPU可以提高嵌入式系统的健壮性使得系统更加安全。
/**
上述代码将0x31C00000为起点的32MB数据区域设置为了non-cacheable意味着所有observers都可以观察该内存的实际值not
shareable如果被多个observer使用Non-shareable内存,无序的读写的操作顺序会导致异常。
当然在设置MPU
regions时建议将cache与MPU失能配置完成之后再使能。
Data
representation在基带模块中主要涉及的数据类型如下定点实数/复数浮点复数伪浮点复数定点实数/复数下图是一个8位定点实数的Bit图高四位是整数第四位是小数。
实数1.5对应表示为00011000。
定点的复数如下图为高32位为实部低32位为虚部。
0-12bit位为虚部的小数部分13-31bit为虚部的整数部分。
32-44bit为实部小数部分45-63bit为实部的整数部分。
浮点复数如下图所示浮点复数的实部和虚部是由两个符合IEEE754标准的单精度短浮点数的标准的32位数表示。
单精度短浮点数的由1位符号位8位指数位和23位有效数字位构成。
实际上有效数字位是24位因为第一位有效数字总是“1”不必存储。
有效数字位是一个二进制纯小数。
8位指数位中第一位是符号位这符号位和一般的符号位不同它用“1”代表正用”0“代表负。
整个单精度短浮点数的符号位用“1”代表负“0”代表正。
指数位为正代表有效数字位需要右移指数1为负则代表需要左翼左移指数按位取反。
距离举个转换的例子伪浮点复数伪浮点复数这种数据存储格式能够有效的减少内存压力它将需要64位存储的浮点复数用32位来存储。
结构如下实部和虚部都以14位数表示他们的浮点位置由高4位计算得出。
复数的实数部分数值,复数的虚数部分数值。
下面举个例子复数-74i在内存中以伪浮点复数存储为0x34002400。
Memory
Map雷达的MCU一般都是多核的成本高一点的会是多个ARM核与DSP核成本低一点的也会有ARM核与各种加速核。
这些核心都有对RAM进行读写的需要。
我们针对低成本芯片集成电路蓝本大约简化以下几个主体。
Bus
MasterARM核我们编写的代码就是跑在这个核心。
PREP:主要用于原始的AD回波数据的存储组织。
BB_DMA:Direct
Access.它可以解放核心提供内存间拷贝的功能。
也可以为诸如FFT这种核心提供内存块数据的逐条/个数据的读取等操作。
P1:提供在距离维之前的数据处理功能包括幅相等校准与Zeros的工作。
P2:提供在速度维之前的数据处理工作包括复数的累加求信号均值等操作。
FFT:提供快速傅里叶变化算法实现。
CFAR:提供各种恒虚警算法实现。
我们把RAM分为两部分BUF1和BUF2BUF1存储包括FFT的原始与结果数据BUF2存储一些窗口数据。
MCU中的每个核心都对RAM有不同位宽的读写需求核心直接也有相互写入的需求。
我们把数据想象成水流而各个加速核想象成水处理池而我们嵌入式工程师就像是水管工将核心根据需要用RAM中的数据连接起来来搭建一个信号处理流程。
下表是这些核心与RAM不同位宽的读写关系图纵向表头为请求方表格中的读写是请求方的读写横向为响应方。
P1_ZOP1_MULFFTP2CFARBUF1BUF2BUS
Master32/64读/写32/64读/写BB_DMA16写32写32写8/16/32/64读8/16/32写8/16/32/64读8/16/32写PREP64写P132写32写FFT32写16/32读32写P232写32读32写32读32写CFAR32读64写BUF1可以根据存储的数据种类进一步划分比如可以划分为存储AD回波数据的区域存储距离维FFT结果数据区速度维FFT结果数据这么存储可以进行更好的调试信号处理调试以及更灵活的信号处理流程搭建但是一旦流程固定之后我们完全可以将一些数据区域复用比如ADC_SAMPLE_ADDR与FFT1D_CACHE_ADDR可以指向一个地址这样处理可以大大减少对内存空间的压力。
除了上述的可供ARM核心读写的BUF1BUF2内存区域我们称之为原始数据区具有加速核的雷达SOC还有一些影子RAM,这么称呼是因为他们仿佛是原始数据区域的影子一样这些区域ARM核心并不能直接写但是可以读每当我们向原始数据区写入的后不同的影子RAM会自动写入对应原始数据经过一种固定运算或者更改存储格式后的数据.正如上图第一个影子RAM是对应原始复数数据经过i.e.abs,log2,log运算之后的幅度实数数据CFAR加速核进行相应算法的原始数据就来自这里。
第二个影子RAM是对应以伪浮点数存储的原始数据以符合IEEE754标准的浮点数进行存储P1/2的涉及的一些复数运算来源于这里。
十六宿舍
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback