加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何强制链接器将字符串数组的const数组存储到flash(而不是RAM)

发布时间:2020-12-15 07:22:10 所属栏目:百科 来源:网络整理
导读:最近我收到了一些有一些问题的遗留代码.在一些代码中,我注意到许多状态报告存储为3d char数组.踢球者是很多这个空间实际上是未使用过的.例如: const char txt[60][6][150] ={ {"This is a very very long string of text","The others are empty","",""},{"
最近我收到了一些有一些问题的遗留代码.在一些代码中,我注意到许多状态报告存储为3d char数组.踢球者是很多这个空间实际上是未使用过的.例如:

const char txt[<60>][6][150] =
{
    {"This is a very very long string of text","The others are empty","",""},{"The text is different,but similarly a lot of unused space",etc...}
};

(60不存在,但有60个条目).

然后使用以上声明通过QSPI将此代码放入闪存中

__attribute__((section(".ExtQSPIFlashSection")))

此部分在链接器中定义如下:

QSPI (rx)       : ORIGIN = 0x90000000,LENGTH = 64M
.ExtQSPIFlashSection : { *(.ExtQSPIFlashSection) } >QSPI

作为一种更有效的内存方法,我想重写它:

const char **txt[] =
{
    (const char*[]) {"This is a very very long string of text",(const char*[]){"The text is different,etc...}
};

但是,现在将数组(或任何正确的术语)写入RAM,这会导致它溢出.

'._user_heap_stack' will not fit in region RAM  
region 'RAM' overflowed by 6888 bytes

这个6888字节比删除部分部分的原始方法更少,但不是所需的结果.

我如何告诉(我认为)链接器还将字符串写入闪存?

一切都是永恒不变的,不会做任何改变,让它成为指针或指向的值.

编辑:我注意到我的标题可能不完美,请告诉我要改变它的内容.

解决方法

你需要const char * const * const …

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读