片外内存与计算 100,001 位圆周率
1. C++ 异常处理与内存扩展
在嵌入式软件开发中,C++ 异常处理能提高实时软件的可靠性,但可能会使项目代码大小增加几十 KB,这取决于编译器对异常处理的实现特性。因此,只有在资源充足时才应启用和使用 C++ 异常。
嵌入式软件项目常通过添加各种片外或总线外内存来增加可用内存,如非易失性 NVM、EEPROM、基于卡的内存、易失性 SRAM、视频 RAM 等。计算密集型应用往往需要比微控制器片内更多的 RAM,而如今微控制器的 RAM 因对硅使用和芯片面积要求高而十分有限。
为增加可用 RAM,可使用外部内存 IC。例如,通过使用外部内存 IC,可将 8 位微控制器目标系统的静态 RAM 扩展至约 2MB。
2. 圆周率计算与相关技术
扩展内存用于计算数学常数 π 的数千位小数,最多可达 100,001 位以上。在相关示例中,会运用多种先进技术:
- 复杂算法
- 将算法复杂度分布到状态机的调用中
- 创建专门的迭代器和容器模板,抽象片外 RAM 访问,使外部 SRAM 能像常规片内内存一样以 C++ 方式使用
- 构建硬件原型,需要注重细节和具备实验室技能
计算 π 采用了所谓的“抽头算法”。该算法能按顺序从左到右计算数学常数的数字序列,类似于水龙头滴水。其简化形式为:
[
\pi = 2 + \frac{1}{3}\left(2 + \frac{2}{5}\left(2 + \frac{3}{7}\left(2 + \cdots\right)\right)\right)
]
片外内存计算100001位圆周率
超级会员免费看
订阅专栏 解锁全文

1378

被折叠的 条评论
为什么被折叠?



