完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由于我们的程序比较大,有些经常用的函数比较大,放在iram1_0_seg,超出了iram1_0_seg的大小,从资料上看eagle.flash.bin是放在iram1_0_seg,eagle.flash.bin在FLASH中最大可以到64KB,我们就把iram1_0_seg的大小修改成64KB,如下:
MEMORY { dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x14000 iram1_0_seg : org = 0x40100000, len = 0x10000 irom0_0_seg : org = 0x40240000, len = 0x38000 } 但是程序运行一直是打印乱码,修改成48KB大小也一样,请问应该怎样增加iram1_0_seg的大小? 如果把函数全部加ICACHE_FLASH_ATTR属性,iram1_0_seg大小不需要修改,但是会报如下错误: Goto init led_card_start Fatal exception 9(LoadStoreAlignmentCause): epc1=0x4010070a, epc2=0x00000000, epc3=0x40100f28, excvaddr=0x00000003, depc=0x00000000 我们没有使用中断函数,也没有中断处理函数加了ICACHE_FLASH_ATTR(定时器回调函数加了ICACHE_FLASH_ATTR) 请问这是什么原因? |
|
相关推荐
1个回答
|
|
要增加iram1_0_seg的大小,您需要修改链接脚本(通常是.ld文件)。以下是一些步骤来帮助您实现这个目标:
1. 找到链接脚本文件:首先,您需要找到用于编译项目的链接脚本文件。这个文件通常以.ld结尾,例如esp32.ld或esp8266.ld。 2. 定位iram1_0_seg定义:在链接脚本文件中,找到与iram1_0_seg相关的部分。它可能看起来像这样: ``` iram1_0_seg : org = 0x40100000, len = 0x8000 ``` 这里,org表示iram1_0_seg的起始地址,len表示其长度。 3. 修改iram1_0_seg的大小:根据您的需求,将len的值修改为所需的大小。例如,如果您希望将其大小修改为64KB,可以将len的值更改为0x10000: ``` iram1_0_seg : org = 0x40100000, len = 0x10000 ``` 4. 调整其他内存段:如果增加iram1_0_seg的大小导致与其他内存段重叠或冲突,请相应地调整其他内存段的大小和/或起始地址。 5. 保存并重新编译:保存修改后的链接脚本文件,并重新编译项目。这将应用新的iram1_0_seg大小设置。 6. 测试:在编译并烧录新的固件后,测试您的程序以确保新的大小设置没有引入任何问题。 请注意,增加iram1_0_seg的大小可能会影响其他内存段的可用空间,因此请确保在整个系统中平衡内存使用。此外,根据您的硬件平台和编译器,具体的步骤和语法可能略有不同。 |
|
|
|
只有小组成员才能发言,加入小组>>
429浏览 6评论
362浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
343浏览 5评论
349浏览 4评论
327浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 07:32 , Processed in 0.614011 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191