最近有个疑问,CH32V307系列的用户程序下载到Flash的零等待区,有种说法是存在同样大小的RAM,用于分割,一部分做RAM,一部分做Flash,Flash这部分代码厂商程序会自动将其上载至RAM。
那么用户程序相当于就烧录在RAM中了,读写速度已经可以了,为什么在启动文件中还要将data段和bss段拷贝至作为RAM的区域呢? 这样不是浪费空间吗,这块很很不理解,官方大大可以解释一下吗
2: /* Load data section from flash to RAM */ la a0, _data_lma la a1, _data_vma la a2, _edata bgeu a1, a2, 2f 1: lw t0, (a0) sw t0, (a1) addi a0, a0, 4 addi a1, a1, 4 bltu a1, a2, 1b 2: /* Clear bss section */ la a0, _sbss la a1, _ebss bgeu a0, a1, 2f 1: sw zero, (a0) addi a0, a0, 4 bltu a0, a1, 1b