DSP_定义一个大的全局数组_探索之路

news/2024/11/27 8:55:33/

前言

最近在做基于dsp平台的无通信接口系统辨识,辨识的时候会有很大的数据需要存到一个数组当中,而dsp如果定义一个很大的全局数组,编译会报错。 本文将探索如何解决这个报错以及全局数组的大小极限。

正文

首先,我们定义了一个长度为50000的float的数组,float y[50000]; 然后编译报错如下:

83998a4757a14b0d866575d0ab1f7365.png

 熟悉dsp的朋友应该知道,这个时候就需要修改.cmd文件了, 另外,管全局变量的section名称叫做'.ebss', 说白了,我们要去改 2837xD_FLASH_lnk_cpu1.cmd(其他型号的dsp请对号入座)里面的这一行(红色)。

b5af501d25ad4e9f8cab4d665c3b8b0a.png

 为了达到想要的目的,本人是经过几番摸索的,愚蠢的过程就省略了,直接给出关键信息,我参考了以下博文:

CCS软件报错:“第0页“.text”大小为0x1041的节的对齐/分块放置失败。”_css 仿真 1041error_渡己之道的博客-CSDN博客

 其中,最让我受启发的是下面我截的这段话。

0a3c2901beea4e8f88c5947b624bc32a.png

 float y[50000];是一个很大的数据块 size = 5w * 2 = 10w(dsp一个size 16位,float32位需要2个size), 而.ess的分区最大的也才 0x1000 = 4096(d),  4096是远远小于10w的。 所以我们需要搞一个大的分区分配给.ess。.cmd的关键修改如下

//   RAMGS2      : origin = 0x00E000, length = 0x001000
// Δ                                             ↓ 分区大小改大RAMGS2      : origin = 0x00E000, length = 0x00C000/*RAMGS3      : origin = 0x00F000, length = 0x001000RAMGS4      : origin = 0x010000, length = 0x001000RAMGS5      : origin = 0x011000, length = 0x001000RAMGS6      : origin = 0x012000, length = 0x001000RAMGS7      : origin = 0x013000, length = 0x001000RAMGS8      : origin = 0x014000, length = 0x001000RAMGS9      : origin = 0x015000, length = 0x001000
//   RAMGS10     : origin = 0x016000, length = 0x001000RAMGS11     : origin = 0x017000, length = 0x001000RAMGS12     : origin = 0x018000, length = 0x001000     // Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices.RAMGS13     : origin = 0x019000, length = 0x001000     // Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices.
*/

我把 从 RAMGS2 到 RAMGS13 这 12个分区,合并成了1个分区,都合并成了RAMGS2。分区大小从0x1000改成了0xC000 = 49152,这应该是可以合并的分区极限了。

另外一处,.ebss section的分区分配也需要做相应的修改。

SECTIONS
{/* Allocate program areas: */.cinit              : > FLASHB      PAGE = 0, ALIGN(4).pinit              : > FLASHB,     PAGE = 0, ALIGN(4).text               : >> FLASHB | FLASHC | FLASHD | FLASHE      PAGE = 0, ALIGN(4)codestart           : > BEGIN       PAGE = 0, ALIGN(4)/* Allocate uninitalized data sections: */.stack              : > RAMM1        PAGE = 1//.ebss               : >> RAMLS5 | RAMGS11 | RAMGS12	PAGE = 1// Δ                                   ↓ 这个分区大小是0xC000.ebss               : >>  RAMLS5  | RAMGS2  PAGE = 1.esysmem            : > RAMLS5       PAGE = 1... 省略 ...

现在,我们给全局变量分配的分区最大size是49152,float数组的极限应该是49152/2 = 24576。但实验证明,float数组极限大小最多达到24544, 分区保留64个size。 

也就是说float数组极限大小为:(最大分区大小 - 64)/ 2

对上述结论,我们有做了一组对比测试,把分区大小改为0xB000, [ 0xB000(h) - 64(d)] / 2 = 22496。

分别测试定义 22496大小的数组和22497的数组,编译结果如下:

25c8675d907d49ec9621b9860d46a658.png

d29fdf1b25504d18b29dc14fa6d29585.png 

 22496大小的数组通过了编译,而22497大小的数组未通过编译,说明结论是成立的。

 

那么本文讨论的内容就到此结束了,感谢您的阅读,欢迎留言讨论、收藏、点赞、分享。

 


http://www.ppmy.cn/news/22206.html

相关文章

【JVM】Java类加载机制详解

【JVM】Java类加载机制详解 文章目录【JVM】Java类加载机制详解一:类加载子系统1:类加载器子系统的作用2:加载器 ClassLoader 的角色二:类的加载过程1:加载阶段2:验证阶段:确保被加载的类的正确…

Acwing——第 89 场周赛

题目链接 4803. 满足的数 简单 4804. 构造矩阵 中等 4805. 加减乘 困难 题目描述 4803. 满足的数 给定 n个不超过 5 的正整数 a1,a2,…,an。 不妨设 Sa1a2…an。 请你统计,一共有多少个不同的整数 x 能够同时满足以下所有条件: 1≤x≤51≤x≤51≤x≤…

GcExcel-JAVA 6.0.3-Documents for Excel

在更短的时间内生成 Excel 电子表格,不依赖于 Excel! 在任何应用程序中转换、计算、格式化和解析电子表格。快速高效:其轻巧的尺寸意味着 Documents for Excel 针对快速处理大型 Excel 文档进行了优化使用适用于 Windows、Linux 和 Mac 的 J…

【数据结构(5)】2.3 线性表的类型定义

文章目录1. 线性表的抽象数据类型定义2. 线性表的基本操作1. 线性表的抽象数据类型定义 数据对象:就是一些元素,元素的个数大于等于 0。数据关系:ai-1 是 ai 的前驱,同时 ai 是 ai-1 的后继,他们都属于集合 D 2. 线性…

第六章——CSS元素显示模式(网页布局),块元素、行内元素、行内块元素

文章目录6.1 块元素6.1.1 块级元素的特点6.2 行内元素6.3 行内块元素6.4 元素显示模式总结6.5 元素显示模式转换选择不同的标签元素,以更好的布局我们网页的整体结构元素显示模式就是元素(标签)以什么方式进行显示,比如自己占一行…

若依框架 -------- vue3+element-plus(三)

后端管理系统,前后端分离的框架若依管理后台,来看下vue3element-plus版本。 静态文本 assets assets 静态img、svg、style main.js import /assets/styles/index.scss // global css 引入了全局样式 组件 components breadcrumb 面包屑 从路由中获取…

【C++】多态——实现、重写、抽象类、多态原理

文章目录一、多态概念二、多态定义及实现三、析构函数的重写四、重载、重写、重定义总结五、C11 override 和 final六、抽象类七、多态原理八、单继承和多继承关系的虚函数表1.单继承虚函数表2.多继承虚函数表3.菱形继承、菱形虚拟继承九、经典题目十、总结一、多态概念 多态的…

「自控元件及线路」1.2 电机中的磁性材料与磁场

本节介绍磁性材料的性能、分类 本节介绍电机中永磁材料的工作曲线 本节介绍电机中主磁极、电枢的磁场及电枢反应 文章目录磁性材料的基本概念磁性材料的磁性能高导磁性 饱和性 磁滞性 非线性温度特性 电阻率特性铁耗磁性材料的分类电机中的永磁材料永磁电机概述永磁材料的磁性能…