Bootloader.ld文件的iram_seg范围是多大

Kx_Kevin
Posts: 27
Joined: Mon Jul 25, 2022 2:33 am

Bootloader.ld文件的iram_seg范围是多大

Postby Kx_Kevin » Thu Aug 11, 2022 11:13 am

Hi

我在IDF-4.4.2调试自定义的bootloader程序,发现iram_seg和dram_seg经常不够用,找到了bootloader/subproject/main/ld/esp32c3下面的bootloader.ld,调试iram和dram的org和len可以解决问题。因此,我有一个疑问。

iram_seg和dram_seg的范围分别是什么呢?
我尝试往前调整过org地址,发现也可以编译通过,那我就不知道哪里才是边界了,我想要最大化利用boot可以使用的ram空间,请问是否有范围可以参考,有什么注意事项吗?

期待回复
Last edited by Kx_Kevin on Fri Aug 12, 2022 5:52 am, edited 1 time in total.

Kx_Kevin
Posts: 27
Joined: Mon Jul 25, 2022 2:33 am

Re: 关于Bootloader.ld文件的疑问

Postby Kx_Kevin » Thu Aug 11, 2022 12:35 pm

我把iram_seg的org调整到往前4k,也就是0x403CB000,这样设备可以正常运行的。dram_seg的len从0x5000调到0x6000也没有问题。

是否有文档描述这些ram_seg的范围?我再根据编译报错的大小来调整,这样更安全。

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: Bootloader.ld文件的iram_seg范围是多大

Postby ESP_Gargamel » Tue Aug 16, 2022 9:32 am

你可以看下 ESP32-C3 TRM 的第三章《系统和存储器》。
有几个原则:
1、不要超过手册上说明的空间。
2、iram 和 dram 空间不要重叠,因为 C3 的 SRAM 被映射到不同的总线地址是不同的,但实际物理空间是相同的。
3、dram 不要超过 0x3FCDF060,因为这后面是保留给 ROM code 用的。
其他地方你就用吧,300 K+ 也够用了。

Kx_Kevin
Posts: 27
Joined: Mon Jul 25, 2022 2:33 am

Re: Bootloader.ld文件的iram_seg范围是多大

Postby Kx_Kevin » Wed Aug 17, 2022 6:37 am

Hi

感谢答复

根据你的提示我修改了bootloader.ld文件,编译通过,烧录验证设备完全可以跑。

现在iram_seg应该很充足了。只有iram_loader_seg,当org给到0x403D3000地址,再向后到0x403D4000,len为0x4000时,虽说编译通过了,但设备运行就会出现不断重启的现象,log中看到复位原因有RTCWDT_RTC_RST,也有TG0WDT_SYS_RST。这部分还不清楚原因,能否解答一下?

再次感谢

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: Bootloader.ld文件的iram_seg范围是多大

Postby ESP_Gargamel » Thu Aug 18, 2022 3:00 am

你可以把 ld 文件给出来,把 log 给出来,log 要带时间戳,是串口工具打印出来的那种。
WDT 这两个都是看门狗复位了,你的 boot 里有长时间的 while,如果不喂狗,会导致看门狗复位。

Who is online

Users browsing this forum: No registered users and 17 guests