测试时发现软件执行时,有很多变量非0值,而是随机值,想问一下如何上电把所有RAM片先清0?
谢谢大家了
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
void Main_RamDataClear(int StarAddr, int DataLen)
{
// 将DSP RAM的起始地址转换为32位整数指针
volatile uint32_t *ram_ptr = (volatile uint32_t *)StarAddr;
// 计算RAM的大小(以32位字为单位)
uint32_t ram_size_in_words = DataLen / sizeof(uint32_t);
// 遍历RAM并清零
for(uint32_t i = 0; i < ram_size_in_words; ++i)
{
*ram_ptr++ = 0;
}
}使用这种方式给RAM初始化完全不起作用
全局变量属于.bss段(uninitialized),.cinit段(initialized)是用于初始化全局变量的表。初始化时,全局变量的值被从.cinit段复制出来并存储到.bss段。
如果使用了 --rom_model 选项,这个过程就在 _c_int00 函数中被执行。 _c_int00 函数在main函数之前被调用。