完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我最近在做一些尝试,在现有的工程中添加AT模块,但在编译时出现如下错误提示:
section `.dram0.bss' will not fit in region `dram0_0_seg' DRAM segment data does not fit. region `dram0_0_seg' overflowed by 9568 bytes 从map文件来看,dram0_0_seg所占的大小的确已经超出的SRAM 2所允许的范围。 为什么dram0_0_seg允许的大小为0x0001e6a4?这个大小是否可以更改?如果可以更改的话应如何更改? 另外,目前我希望将.bss段中的部分数据放入SRAM 1中,以获取更多的RAM,这样的方案是否可行?如果可行的话,应如何使用SRAM 1? |
|
相关推荐
1个回答
|
|
从您提供的信息来看,dram0_0_seg的大小为0x0001e6a4,这可能是由于配置文件或编译器设置导致的。
要解决这个问题,您可以尝试以下方法: 1. **优化代码和数据结构**:检查您的代码,看看是否有可以优化的地方,例如减少全局变量的使用,使用更紧凑的数据结构等。 2. **调整分区方案**:您可以在`partitions.csv`文件中调整分区大小,以增加SRAM2的大小。但请注意,这可能会影响其他分区的大小。 3. **使用SRAM1**:将部分数据放入SRAM1中是一个可行的方案,但需要注意的是,SRAM1主要用于存储程序代码,其可用空间有限。您可以使用以下方法将数据放入SRAM1: a. 使用`__attribute__((section(".sram1_bss")))`将.bss段的数据放入SRAM1。例如: ```c uint8_t my_data[1024] __attribute__((section(".sram1_bss"))); ``` b. 在`ld`链接脚本中添加一个新的内存段,例如: ``` MEMORY { iram1 (rwx) : ORIGIN = 0x400C0000, LENGTH = 0x40000 } SECTIONS { .sram1_bss (NOLOAD) : { *(.sram1_bss) } > iram1 } ``` c. 在`makefile`或`project_config.h`中添加以下宏定义: ``` -DCONFIG_SPIRAM_SUPPORT -DCONFIG_SPIRAM_BOOT_INIT ``` 4. **调整编译器设置**:您可以在编译器设置中调整一些参数,例如增加优化级别(如`-Os`),以减少生成的代码大小。 5. **使用外部存储器**:如果以上方法仍无法解决问题,您可以考虑使用外部存储器(如SPI Flash)来扩展存储空间。 |
|
|
|
只有小组成员才能发言,加入小组>>
968 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
446浏览 5评论
447浏览 4评论
417浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 20:09 , Processed in 0.734961 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号