您好!
我发现有两种不同的方法可以从 pflash 复制"zero_out_integrity"代码到 RAM、然后执行它来清除 pflash 校验和、如下所示。 哪种方法更好?
LLC 演示代码中的一种方法:
{
寄存器 uint32 * program_index =(uint32 *) 0x19000;//存储程序的目标地址
寄存器 uint32 * source_index =(uint32 *) zero_out_integration_word;//设置 pflash 的源地址;
寄存器 uint32计数器;
for (counter=0;counter < 32;counter++)//将程序从 pflash 复制到 RAM
{
*(program_index++)=*(source_index++);
}
}
{
寄存器 FUNC_PTR func_ptr;
func_ptr =(FUNC_ptr) 0x19000; //将函数设置为0x19000
func_ptr ();
DecRegs.MFBALR1.bit.RONLY = 1;//将其恢复为只读
DecRegs.MFBALR17.bit.RONLY = 1;//将其恢复为只读
SysRegs.SYSECR.bit.reset= 2;//重置设备
}
返回;
PFC 演示代码中的另一种方法是:
寄存器 uint32 * program_index =(uint32 *) program_area;//存储程序的目标地址
寄存器 uint32 * source_index =(uint32 *) zero_out_integration_word_start;//用于 pflash 的源地址;
寄存器 uint32计数器;
for (counter=0;counter < 32;counter++)//将程序从 pflash 复制到 RAM
{
*(program_index++)=*(source_index++);
}
zero_out_integration_word ();
返回;